Note
Experimental and will continue to have breaking changes until first release.
moveit_drake
brings together the vertical ROS integration of the MoveIt 2 motion planning framework, with the Mathematical Programming interface within Drake.
This allows the user to setup motion planning as an optimization problem within ROS, with the rich specification of constraints and costs provided by drake
.
- Exposes
KinematicTrajectoryOptimization
implementation indrake
as a motion planner. - Exposes
TOPPRA
implementation indrake
as a trajectory post-processing adapter.
Docker and Docker Compose - Follow the instructions here. Also, run the Linux post-installation steps.
The following steps clone and build the base image that you will require to test/build/run/develop with the repo.
git clone https://github.com/moveit/moveit_drake.git
cd moveit_drake
docker compose build
This should give you an image with drake
and moveit2
.
Next, create a container with the following and create shell access.
docker compose up
docker compose exec -it moveit_drake bash
Follow instructions below to build moveit_drake
Follow the MoveIt Source Build instructions to set up a ROS 2 workspace with MoveIt from source.
Open a command line and navigate to your workspace:
cd ${WORKSPACE}/src
Clone this repo to your workspace, including upstream dependencies:
git clone https://github.com/moveit/moveit_drake.git
vcs import < moveit_drake/moveit_drake.repos
rosdep install -r --from-paths . --ignore-src --rosdistro ${ROS_DISTRO} -y
Configure and build the workspace (this will take some time, as it builds MoveIt):
cd ${WORKSPACE}
colcon build --event-handlers desktop_notification- status- --cmake-args -DCMAKE_BUILD_TYPE=Release --parallel-workers 1
The planning pipeline testbench compares moveit_drake
planners with existing MoveIt planners such as OMPL and Pilz.
ros2 launch moveit_drake pipeline_testbench.launch.py
This interactive example shows constrained planning using the Drake KTOpt planner.
ros2 launch moveit_drake constrained_planning_demo.launch.py
We use pre-commit to format the code in this repo.
Within the container, you can run the following command to format the code:
cd src/moveit_drake
pre-commit run -a
To rebuild only the moveit_drake
package:
rm -rf build/moveit_drake install/moveit_drake
colcon build --packages-select moveit_drake
Unfortunately, Drake does not support .stl
files (11/28/2024, see drake#19408).
We're working around this by replacing the .stl
files in the urdf string with .obj
files in the plugin implementations.
Make sure that the moveit config you're using contains the relevant .stl
files.
If it doesn't, take a look into the scripts/ directory.
We've provided a simple python script to add additional .obj
files for given .stl
files. Usage:
./scripts/convert_stl_to_obj.py /PATH/TO/YOUR/MESH/DIR
Don't forget to rebuild your description package so the .obj
files are copied into the workspace's install directory.