-
Notifications
You must be signed in to change notification settings - Fork 196
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
Problem operating multiple robot groups at the same time (CSDA10F) #251
Comments
Sorry to tag you guys but I still dont have any clue how to fix this, @gavanderhoorn @ted-miller, any possible help. |
Hello Danfoa. In regard to moving the two arms without a base, it is the same issue. There are two types of motion commands to the robot. The first a single-group message that will only move one arm and ignore the rest. The other is a multi-group message that will always command all 4 groups. So, even though you don't want to move the torso, your motion command will still contain the position data for the two torso groups. This will result in the error since the 4th group is zeroed out. |
Hello, |
Good day, I understand the issue comes from ROS not generating trajectory plans for non-actuated joints (which make sense), but then we need to ask:
|
I only have time for a short reply now, but yes, full body control (to put it like that) with SDA robots has been done before. A regression in this area may have been introduced in (recent) PRs, that would be something to investigate. |
Hi, I am also experience the same issues as @Danfoa and @carolMartinez mentioned above. I have the same error: start point of the Does any one know is there a walk-around to achieve 15-DOF motions on SDA10F robots? Thanks! |
@zzx9636 I haven't had time to experiment with this issue, I was told by Carol that indigo devel on 2016 was allowing full body operation, but I didn't see much difference between the scripts handling the trajectory generation. I will try to solve this in the next couple of months but If your or Carol have any hints where the problem could be, please share them here. |
It's very difficult for me to support this, as I don't have access to the hw and cannot simulate it. As I wrote in #251 (comment), a regression may have been introduced, but at this time I wouldn't know. |
@Danfoa Thanks for your hints. I can try to get a Ubuntu 14.04 with Indigo and test the full body operation on it. On the mean while, I will spend more time to look into the code and identify the issues. Thanks! |
I don't believe @Danfoa wrote that you need to install ROS Indigo. It is more than likely that you can build the But seeing as we synced Note also this comment by @Danfoa:
|
@gavanderhoorn Thanks for your comment! I will try it out on robot later today! |
Technically, yes I could modify MotoROS driver to ignore commands on the second base joint. But, if the motion planner in ROS is not aware of this, then it will lead to a conflict with the feedback positional data being streamed back to the PC.
You are correct that a zero value is not appropriate. Instead, the motion planner should monitor the feedback position and command it to remain stationary. |
@ted-miller And is it necessary for MotoROS to receive command for all DoF of the robot? Why just not send any data at all for Joints that are not desired to be operated, I believe this is how single-group trajectories (i.g. one arm, or the torso) are being send. Am I wrong ? |
Currently, there are two types of commands. A single-group command and a multi-group command. The single command will always leave the other groups stationary. But, the multi-group command will always control all groups. Currently, the multi-group command has a field to indicate the "number of groups" it is commanding, but it doesn't have a field to allow for non-sequential groups to operate. For example: This would require changes on both the MotoROS and ROS-I side to treat the numberOfValidGroups field as a bitfield instead of an integer. |
Hey to all, I found a solution to the problem, by changing the default behavior of the Motoman driver when processing a
This is done by changing the lines: motoman/motoman_driver/src/industrial_robot_client/joint_trajectory_action.cpp Lines 276 to 282 in 80c5299
for:
By using the @carolMartinez @zzx9636 Please test this and tell me if this solves your problems. @ted-miller @gavanderhoorn, As soon as I have confirmation from @carolMartinez or @zzx9636 I will create a PR, but I wanted to ask you if you see any way this line of code could affect current behavior for other users...I believe it can be problematic for the ones using on the fly point streaming, but that is only my perception. |
Hi @Danfoa, I have just tested on my robot and confirmed that I will able to move the robot with individual arms, torso, both arms and entire 15 DOF without any issues. Earlier today, I have also generated a simple node to modify the moveit trajectory as @ted-miller and @gavanderhoorn suggested and enabled all 15 DOF motions. I will keep you guy noticed if I found any issues in the future! Thanks you all for your input and help! |
@Danfoa Sorry for the confusion. I basically write another node to subscribe original joint_path_command and use the current position to replace 0 at motion group 3 and publish it in another topic. It is essentially same idea behind your solution. I have tested your modification and it works great in my application. |
I was also curious to know if the solution would allow for single arm + torso trajectory execution while keeping the other arm still (obviously relative to the torso joint), as described above:
so I test it and it does indeed allow it. Currently I tested motion planning and execution for:
All of the above seem to work. |
Hello @Danfoa, Thank you guys for all your help. |
Let's keep this open until #259 is reviewed and merged. |
As an update I happen to recognize that the action controller is setting the multi-group trajectories commands as ABORTED, right after the new goal has been processed and send to the Yaskawa controller. Even do the real controller is performing the motion as expected, the motion execution is returning:
I will try to address this issue in the following weeks but right now I am a little busy. Ps: Just to be clear, motion planning and execution is working properly, the issue is (I believe) with the action server for the controller of multi-group motions. I believe the change I introduced is making the action server to not return the goal result, thus the watchdog timer is setting the goal as lost. |
@carolMartinez @zzx9636 If you happen to have a little spare time, could you please try PR #259 and verify that multi groups motion execution (start, stop, abortion) are working properly, or if you detect something is missing in the functionality?. |
Good day,
After following the configuration instructions to use a dual arm Motoman Robot, the CSDA10F, we have encountered a small problem while operating the 15 DOF at the same time, we get an error stating that the start point of the
joint_path_command
is not the same as the start pose of the robot.After digging into the problem I know the source of the issue but not how to solve it. The
joint_path_command
always cero one or the two torso joints (one is a mirror of the other in the URDF). Which triggers the error when themotion_streaming_interface
checks the start state.The support package of the CSDA10F was uploaded by us and can be found here, where the joint_names_csda10f.yaml, and csda10f_motion_interface.yaml are.
Also the moveit controller.yaml configuration we use is here.
Here is the planning command for a 15 DOF motion with the move group
csda10f
, as you see the last group, which corresponts to one of the torso joints, is cero out.And when I use a motion group that plans only for the two arms (not base), the same error ocures but this time the
/joint_path_command
topic sends a message just like the one above but with both torso joints cero out. I am not even sure if the torso joints should appear in this case since we are not planning for them.Can anyone please enlight me on the source of the issue?
PS: Joint states are currently working perfectly, I can acquire the complete robot state, and we are able to move the move groups of 'arm_right', 'arm_left' and 'torso' separately but not combined.
This issue is related to #217,but this time I am personally at the robot and noticed the error source.
The text was updated successfully, but these errors were encountered: