Motoman control two groups asynchronously

asked 2021-01-15 16:32:08 -0500

AlecPath gravatar image

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.

edit retag flag offensive close merge delete

Comments

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.

gvdhoorn gravatar image gvdhoorn  ( 2021-01-16 06:56:10 -0500 )edit

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

Aborting Trajectory.  Failed to send point (#0): Invalid message (3) : Trajectory start position doesn't match current robot position (3011)

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.

AlecPath gravatar image AlecPath  ( 2021-01-20 14:46:58 -0500 )edit

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.

AlecPath gravatar image AlecPath  ( 2021-01-20 15:45:07 -0500 )edit

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.

AlecPath gravatar image AlecPath  ( 2021-02-26 13:18:14 -0500 )edit