Covariant Hamiltonian optimization for motion planning (CHOMP) is a novel gradient-based trajectory optimization procedure that makes many everyday motion planning problems both simple and trainable (Ratliff et al., 2009c). While most high-dimensional motion planners separate trajectory generation into distinct planning and optimization stages, this algorithm capitalizes on covariant gradient and functional gradient approaches to the optimization stage to design a motion planning algorithm based entirely on trajectory optimization. Given an infeasible naive trajectory, CHOMP reacts to the surrounding environment to quickly pull the trajectory out of collision while simultaneously optimizing dynamical quantities such as joint velocities and accelerations. It rapidly converges to a smooth collision-free trajectory that can be executed efficiently on the robot. Integration into latest version of MoveIt! is work in progress. More info
If you haven’t already done so, make sure you’ve completed the steps in Getting Started.
You should also have gone through the steps in Visualization with MoveIt! RViz Plugin
- You must have the latest version of MoveIt! installed. On ROS Kinetic you will need to build MoveIt! from source. We will go through the steps for doing this below.
- To use CHOMP with your robot you must already have a MoveIt! configuration package for your robot already. For example, if you have a Panda robot, it’s probably called
panda_moveit_config. This is typically built using the MoveIt! Setup Assistant.
Installing MoveIt! from Source¶
As you add and remove packages from your workspace you will need to clean your workspace and re-run the command to install new missing dependencies. Clean your workspace to remove references to the system wide installation of MoveIt!:
cd ~/ws_moveit/src catkin clean
Now follow the instructions on the MoveIt! homepage for installing MoveIt! Kinetic from source. Note that you can skip the Prerequisites section since you should already have a Catkin workspace.
Re-source the setup files:
Using CHOMP with Your Robot¶
Note: if you are following this demo using the
panda_moveit_config from the ros-planning/panda_moveit_config repository, these steps are already done for you and you can skip this section.
Simply download chomp_planning_pipeline.launch.xml file into the launch directory of your MoveIt! config package. In our case, we will save this file in the
Adjust the line
<rosparam command="load" file="$(find panda_moveit_config)/config/chomp_planning.yaml" />to
<rosparam command="load" file="$(find <robot_moveit_config>)/config/chomp_planning.yaml" />replacing
<robot_moveit_config>with the name of your MoveIt! configuration package.
Download chomp_planning.yaml file into the config directory of your MoveIt! config package. In our case, we will save this file in the
chomp_planning.yamlin your favorite editor and change
animate_endeffector_segment: "panda_rightfinger"to the appropriate link for your robot.
demo_chomp.launch. Note that this file is also in the launch directory of your MoveIt! config package. In our case, the
Find the lines where
move_group.launchis included and change it to:
<!-- Replace <robot_moveit_config> with the name of your MoveIt! configuration package --> <include file="$(find <robot_moveit_config>)/launch/move_group.launch"> <arg name="allow_trajectory_execution" value="true"/> <arg name="fake_execution" value="true"/> <arg name="info" value="true"/> <arg name="debug" value="$(arg debug)"/> <arg name="planner" value="chomp" /> </include>
move_group.launchfile in your
<robot_moveit_config>/launch/folder and make two changes. First, add
<arg name="planner" default="ompl" />just under the
<launch>tag and second, within the
<include ns="move_group">tag replace
<arg name="pipeline" value="ompl" />with
<arg name="pipeline" value="$(arg planner)" />.
Open Source Feedback
See something that needs improvement? Please open a pull request on this GitHub page