Skip to content

moveit/moveit_drake

Repository files navigation

Experimental MoveIt 2 - Drake Integration

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.

Features

Docker Workflow (Preferred and tested)

Requirements

Docker and Docker Compose - Follow the instructions here. Also, run the Linux post-installation steps.

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

Local Installation

Install Drake

Follow these instructions

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

Examples

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

Development

Formatting

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

Some helper commands

To rebuild only the moveit_drake package:

rm -rf build/moveit_drake install/moveit_drake
colcon build --packages-select moveit_drake

Known issues

.stl support

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.