Rosanswers logo

Hello: I am looking for end-effector pose constrained planning for the manipulator. I know that such functionalities have been provided in "MoveIt!" where you set your kinematics constraints and then give command to plan a path.

I believe that this type of end-effector constrained planning (in MoveIt!) is done in end-effector cartesian degree of freedom using Inverse Kinematics.

Can anyone please point me to: where this task-constrained code sits in OMPL (as MoveIt uses OMPL), or any pointer to the research paper of this implementation in MoveIt!

I want to understand how it is done and what are the steps involved in ROS implementation.


Originally posted by Victor22 on ROS Answers with karma: 51 on 2014-06-19

Post score: 5

Original comments

Comment by Rob.Chen on 2019-01-08:
Hello! I am also very interested in manipulator constraint motion planning, and have some problem about how moveit sent constraint information to ompl, and how ompl deal with it, if you have solve it, please help me, any help is very greatful!

Comment by JohnDoe on 2023-07-18:
@Rob.Chen Hi! Did you make progress on your question? I have the same confusion as you.


1 Answer 1


Rosanswers logo

Here is an example of how to use path constraints (here orientation constraints) with Moveit in Python:

from moveit_msgs.msg import RobotState, Constraints, OrientationConstraint

def init_upright_path_constraints(self,pose):

    self.upright_constraints = Constraints()
    self.upright_constraints.name = "upright"
    orientation_constraint = OrientationConstraint()
    orientation_constraint.header = pose.header
    orientation_constraint.link_name = self.arm.get_end_effector_link()
    orientation_constraint.orientation = pose.pose.orientation
    orientation_constraint.absolute_x_axis_tolerance = 0.4
    orientation_constraint.absolute_y_axis_tolerance = 0.4
    orientation_constraint.absolute_z_axis_tolerance = 0.4
    #orientation_constraint.absolute_z_axis_tolerance = 3.14 #ignore this axis
    orientation_constraint.weight = 1


def enable_upright_path_constraints(self):

def disable_upright_path_constraints(self):

Originally posted by fivef with karma: 2756 on 2015-05-28

This answer was ACCEPTED on the original site

Post score: 3

Original comments

Comment by danjo on 2018-10-03:
from moveit_msgs.msg import RobotState, Constraints, OrientationConstraint is import line

Comment by Mehdi. on 2019-01-27:
what is pose here?

Comment by fivef on 2019-03-04:
pose is the geometry_msgs/Pose of the endeffector right before you enable the path constraints.

Comment by AdriaArroyo on 2021-02-10:
I can confirm that the pose var type is geometry_msgs/PoseStamped and not geometry_msgs/Pose. geometry_msgs/Pose has no header. :)


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.