ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange
Ask Your Question

Revision history [back]

click to hide/show revision 1
initial version

Perhaps you can use the goal tolerance part of the planning request for this. See MotionPlanRequest: Setting up a Pose Request - Define a tolerance on the MoveIt wiki.

Perhaps you can use the goal tolerance part of the planning request for this. See MotionPlanRequest: Setting up a Pose Request - Define a tolerance on the MoveIt wiki.


Edit:

Hi, thanks for your answer! This solution really seems to be interesting. However the C++API described here seems to different to the one described on the moveit-c++-tutorial.

Can I use them side by side? Using the move-group-interface there I can just find the command group.setGoalTolerance(0.001), which sets both angle and position tolerance at the same time, I think

Oh! No I was wrong! There is also group.setGoalOrientationTolerance(). But there I can't limit the tolerance to one angle around an axis, can I?

The page I linked is a bit more low-level. The page you linked describes using moveit_msgs::OrientationConstraint, but as far as I know such a constraint will influence planning of the whole trajectory, not just the state at the end. The methods you mention don't seem to support what you want. From the moveit::planning_interface::MoveGroup::setGoalTolerance docs:

Set the tolerance that is used for reaching the goal. For joint state goals, this will be distance for each joint, in the configuration space (radians or meters depending on joint type). For pose goals this will be the radius of a sphere where the end-effector must reach. [..]

I don't think this can then be used to express a rotational tolerance around a single axis.


Perhaps you could use the Descartes planner from ROS-Industrial for your use case. Afaiu that does support 'toleranced frames', which could be used to indicate a "don't care" for orientation along a particular axis.

Perhaps you can use the goal tolerance part of the planning request for this. See MotionPlanRequest: Setting up a Pose Request - Define a tolerance on the MoveIt wiki.


Edit:

Hi, thanks for your answer! This solution really seems to be interesting. However the C++API described here seems to different to the one described on the moveit-c++-tutorial.

Can I use them side by side? Using the move-group-interface there I can just find the command group.setGoalTolerance(0.001), which sets both angle and position tolerance at the same time, I think

Oh! No I was wrong! There is also group.setGoalOrientationTolerance(). But there I can't limit the tolerance to one angle around an axis, can I?

The page I linked is a bit more low-level. The page you linked describes using moveit_msgs::OrientationConstraint, but as far as I know such a constraint will influence planning of the whole trajectory, not just the state at the end. The methods you mention don't seem to support what you want. From the moveit::planning_interface::MoveGroup::setGoalTolerance docs:

Set the tolerance that is used for reaching the goal. For joint state goals, this will be distance for each joint, in the configuration space (radians or meters depending on joint type). For pose goals this will be the radius of a sphere where the end-effector must reach. [..]

I don't think this can then be used to express a rotational tolerance around a single axis.


Perhaps you could use the Descartes planner from ROS-Industrial for your use case. Afaiu that does support 'toleranced frames', which could be used to indicate a "don't care" for orientation along a particular axis.

axis. See wiki/descartes_trajectory - AxialSymmetricPt.