Ask Your Question

# Revision history [back]

### What ist the difference between the inverse kinematics service and the kinematics plugin?

Since Diamondback, it is possible to configure a planner with a kinematics plugin (see e.g. this tutorial). This allows to send cartesian pose goals to the planner. An alternative way to send cartesian pose goals is to provide a GetPositionIK service to move_arm.

My question is: What is the difference between these two approaches (service/plugin)? Are they completely interchangeable (in other words, do I need to provide only one of them)? Any advantages/disadvantages?

### What ist the difference between the inverse kinematics service and the kinematics plugin?

Since Diamondback, it is possible to configure a planner with a kinematics plugin (see e.g. this tutorial). This allows to send cartesian pose goals to the planner. An alternative way to send cartesian pose goals is to provide a GetPositionIK service to move_arm.

My question is: What is the difference between these two approaches (service/plugin)? Are they completely interchangeable (in other words, do I need to provide only one of them)? Any advantages/disadvantages?

EDIT: I still don't quite get how all the parts (move_arm, ompl, kinematics plugin inside ompl, kinematics service) play together. For example, the kinematics plugin is configured in pr2_arm_navigation_planning/ompl_planning.yaml. At the same time, pr2_3dnav/right_arm_navigation.launch includes pr2_arm_navigation_kinematics/launch/right_arm_collision_free_ik.launch, which starts a (collision-free) IK service. So in which cases will the plugin be used, and in which cases the service?