Motoman control two groups asynchronously
I am using a YRC1000 controller which has several control groups. I am trying to send a command using moveit to one control group, then send a command to another control group. Whenever I do this, the piece of the system that was already in motion stops. Similarly, if I use a MoveIt planning group that contains more than one control group and send a motion command, only one of the control groups will move.
I understand I can create my own trajectory, convert it to a motoman_msgs/DynamicJointTrajectory
and send it out on the base level /joint_path_command
topic instead of on a specific controller and that will allow moving both control groups at once, but I am hoping there already exists a way to control two different groups - whether those groups are part of the same trajectory or part of two different ones sent at different points in time.
I don't believe this is currently supported. The multi-group action server does track goal status per server, and there are per-group action servers, but I'm not entirely sure if they don't interfere with each other in some way.
Asynchronous motions across multiple groups on the same controller is not very common use-case, as it is typically difficult to guarantee trajectories will be collision free (MoveIt fi will probably have an easier time planning if all groups involved are planned for simultaneously).
That's not to say it can't be supported, just that it's not unexpected there might be some rough edges in the driver for the use-case.
Is there an example of setting up moveit with a motoman robot such that it can utilize the combined group instead of the individual controllers? I can utilize moveit within a group just fine, but I cannot seem to set it up properly so that it works with the base combined control. I always seem to get an error stating
when trying to use the combined one. I've checked the request on the
/joint_trajectory_action/goal
topic, and the first joint state does seem to line up with the current robot state.It may actually be related to this value in the driver. Increasing that seems to make MoveIt work with the combined commands.
I do not seem to have the same issue when using the separate groups, which seems odd.
Just to loop back around to this in case anybody stumbles upon it. I believe part of the issue I was seeing was MoveIt! automatically stopping all active controllers when a new command is received. So if I tried to issue a multi-group command (synchronous or otherwise) without using the base
/joint_path_command
topic and instead used the individual controllers, one would start movement and then moveit would cancel it before sending the movement from the other controller.There's other barriers, but those are more driver specific.