-
Notifications
You must be signed in to change notification settings - Fork 197
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
driver: assertion in joint_relay_handler when controller has < 4 motion groups configured #91
Comments
Alright, so here's what is happening under the hood: Therefore, |
Not really 'trash', an all-zeros That causes all bits in The currently implemented work-around makes |
@gavanderhoorn, is the work-around in a PR? |
@shaun-edwards: The workaround is not in a PR, but a working version can be found on my fork. I just need to revert the whitespace changes so everybody can see what has been changed :) |
No there is no associated PR. As @jettan commented, we have a version that works, but we should probably take a look at cleaning up some of the work-arounds so that we can consider them proper fixes. Apart from the deserialisation issue, there is also a problem with the code that matches ROS joint names to simple message indices and vice versa. I'll report that in a separate issue. @jettan and another colleague have fixed that as well, but I thought it might make sense to re-use some of the code in the IRCv2 that @JeremyZoss wrote some time ago. IIRC, that was pretty concise and worked for arbitrary numbers of groups and joints per group (at least in the application(s) that we tested). |
Somebody probably missed that SimpleMessage undload() functions extract from the back of the buffer, e.g. write forward, read backward, as done in the standard messages, for example JointFeedback::load() and JointFeedback::unload() -> Arrays therefore also need to be unloaded in reverse order. Since simple messages have a fixed size unused elements at the end of an array have to be ignored before the actual interesting values can be read. Multiple fixes are available, e.g. A or B. (Side note: ByteArray since 2015 uses a deque and the whole reverse decoding is no longer important to save memcopy calls - e.g. unloadFront() could be used everywhere if it existed for the standard messages...) |
Yes, thanks for the pointers. The fix in your |
(@gavanderhoorn I would be fine with the solution by @jettan (as it is already a PR). In my quickpatch I preserved the order of groups (and it is shorter) but both is not important since the the joint-state messages contain |
I completely agree with you (#42). We could definitely see which patches make the most sense to integrate. I'm only interested in getting this fixed. |
Always deserialise all submsgs, but keep only those with valid data.
As reported in #89: the code hits the following assertion quickly after connecting to a controller:
Observed on a system with an FS100 with two motion groups:
motoman_driver
based on the code in #89.The text was updated successfully, but these errors were encountered: