moveit2 icon indicating copy to clipboard operation
moveit2 copied to clipboard

How to specify a controller to use when executing a trajectory through the MoveGroup ROS interface?

Open schornakj opened this issue 2 years ago • 8 comments

When the ExecuteTrajectoryAction MoveGroup capability pushes a new trajectory to the TrajectoryExecutionManager, it does not have a way to set what controller should be used to execute the trajectory. This results in the TrajectoryExecutionManager being left to figure out what controller should be used. In situations where there are multiple possible controllers for the same set of joints (for example, a JointGroupPositionController used for Servo and a JointTrajectoryController for regular trajectory execution), the TEM simply doesn't have enough contextual info to make the right decision, which results in undesirable results if the wrong controller is selected.

I think the solution to this is to add a field for controller names to the ExecuteTrajectory.action message to allow the code on the action client side to set the right controllers when the motion is planned. This would require an API change, though.

Does anyone have other ideas about this?

schornakj avatar Apr 14 '22 20:04 schornakj