moveit2 icon indicating copy to clipboard operation
moveit2 copied to clipboard

The MoveIt 2 Motion Planning Framework for ROS 2.0

MoveIt 2 Logo

The MoveIt! Motion Planning Framework for ROS 2.0

Milestones

  1. Official announcement, commitment from Acutronic Robotics to allocate PMs and fund PickNik
  2. Why MoveIt 2 and approach
  3. Porting and understanding moveit_core
  4. First demonstrator in ROS 2, planning to a joint-space goal
  5. Sensorless collision detection with ROS 2
  6. Announcing MoveIt 2 alpha release

Progress

Update/setup infrastructure for development
  • [x] Upgrade continuous integration for ROS 2.0
    • [x] Simple CI with Travis (Linux and OS X)
    • [x] moveit_ci https://github.com/AcutronicRobotics/moveit_ci/tree/ros2
  • [x] Convert all headers and link it to HRIM (contributed by @ibaiape)
  • [x] Update/setup infrastructure for development
    • [x] Delete metapackages
    • [x] Upgrade continuous integration for ROS 2.0
    • [x] Refactor/cleanup folder hierarchy
Dependencies on other packages
  • [x] Dependencies on other packages
    • [x] tf2_kdl https://github.com/ros2/geometry2/pull/90
    • [x] eigen_stl_containers https://github.com/AcutronicRobotics/eigen_stl_containers/tree/ros2
    • [x] geometric_shapes https://github.com/ros-planning/geometric_shapes/pull/96
    • [x] random_numbers https://github.com/ros-planning/random_numbers/pull/12
    • [x] srdfdom (contributed by @anasarrak, @vmayoral and @ahcorde) https://github.com/ros-planning/srdfdom/pull/45
    • [x] urdf_parser_py https://github.com/ros/urdf_parser_py/pull/41
    • [x] Created a ROS 2 version (with package.xml) of urdfdom_headers https://github.com/AcutronicRobotics/urdfdom_headers/tree/ros2
    • [x] octomap https://github.com/AcutronicRobotics/octomap
      • [x] octomap
      • [ ] octovis
      • [ ] dynamicEDT3D
Convert moveit_core packages to ROS 2.0
  • [x] Convert moveit_core packages to ROS 2.0
    • [x] version
    • [x] macros
    • [x] backtrace
    • [x] exceptions
    • [x] profiler
    • [x] logging
    • [x] background_processing
    • [x] kinematics_base
    • [x] controller_manager
    • [x] sensor_manager
    • [x] robot_model
    • [x] transforms
    • [x] robot_state
    • [x] robot_trajectory
    • [x] collision_detection
    • [x] collision_detection_fcl
    • [x] kinematic_constraints
    • [x] planning_scene
    • [x] constraint_samplers
    • [x] planning_interface
    • [x] planning_request_adapter
    • [x] trajectory_processing
    • [x] distance_field
    • [x] collision_distance_field
    • [x] kinematics_metrics
    • [x] dynamics_solver
    • [x] utils
Other moveit packages (e.g. moveit_ros, ...)
  • [ ] moveit_ros
    • [x] moveit_ros_planning_interface (dummy interface for now)
      • [ ] py_bindings_tools
      • [ ] common_planning_interface_objects
      • [ ] planning_scene_interface
      • [ ] move_group_interface
      • [ ] robot_interface
      • [ ] test
    • [ ] move_group
    • [ ] planning
      • [x] collision_plugin_loader https://github.com/ros-planning/moveit2/pull/69
      • [x] rdf_loader https://github.com/ros-planning/moveit2/pull/71
      • [x] kinematics_plugin_loader https://github.com/ros-planning/moveit2/pull/74
    • [x] moveit_ros_perception
      • [x] occupancy_map_monitor
      • [ ] lazy_free_space_updater
      • [ ] point_containment_filter
      • [ ] pointcloud_octomap_updater
      • [ ] mesh_filter
      • [ ] depth_image_octomap_updater
      • [ ] semantic_world
    • [ ] moveit_ros_manipulation
      • [ ] move_group_pick_place_capability
Necessary for a Minimal Working Example
  • [ ] Necessary for a Minimal Working Example
    • [x] moveit_core
    • [x] moveit_ros_perception
      • [x] occupancy_map_monitor
    • [x] move_group
    • [x] moveit_ros_planning
      • [x] rdf_loader
      • [x] collision_plugin_loader
      • [x] kinematics_plugin_loader
      • [x] robot_model_loader
      • [x] constraint_sampler_manager_loader
      • [x] planning_request_adapter_plugins
      • [x] planning_pipeline
      • [x] planning_scene_monitor
      • [x] trajectory_execution_manager
      • [x] plan_execution
    • [ ] planning_interface
      • [x] common_planning_interface_objects
      • [x] planning_scene_interface
      • [ ] move_group_interface (partially)
      • [x] test
    • [ ] moveit_planner
      • [x] ompl
    • [ ] moveit_kinematics
      • [x] kdl_kinematics_plugin
    • [ ] moveit_plugins
      • [x] moveit_fake_cotroller_manager
      • [x] moveit_simple_controller_manager
New features in ROS 2.0 (not started)
  • [ ] New features in ROS 2.0 (see last survey for more insights)
    • [ ] Realtime support
    • [ ] Lifecycle management of the ROS nodes%
    • [ ] Replacing plugins with ROS 2 components
    • [ ] Security support
    • [ ] Improved namespace handling
    • [ ] Windows support
Documentation (not started)
  • [ ] Documentation
    • [ ] Tutorials for MoveIt2
    • [ ] Create tutorial on using ros1/ros2 bridge to support ros1 hardware drivers
    • [ ] Move install instructions to moveit.ros.org
Major refactoring and divergence from moveit2 (not started)
  • [ ] Major refactoring and divergence from moveit2
    • [ ] Run ROS2 C++ and python linters
    • [ ] Delete excesses packages that are left over from rosbuild stacks: moveit_runtime, moveit_plugins, moveit_ros
    • [ ] Rename non-package folders:
      • [ ] rename moveit_planners to planners
      • [ ] rename moveit_plugins to controller_interfaces
    • [ ] Restructure folder layout of moveit repo:
      • [ ] flatten moveit_ros folder to root of repo
      • [ ] rename all moveit_ros folders with moveit_ros prefix
    • [ ] Rename major classes
      • [ ] ControllerManagers become ControllerInterfaces
      • [ ] Rename related packages
    • [ ] Merge repos:
      • [ ] moveit 9.6 MB
      • [ ] moveit_task_constructor
      • [ ] moveit_tutorials 28.6 MB
      • [ ] moveit_msgs
      • [ ] moveit_resources 61 MB
      • [ ] moveit_visual_tools
      • [ ] moveit_advanced?
      • [ ] DELETE: moveit_kinematics_tests
    • [ ] Remove large binaries from moveit repo
    • [ ] Add gitlfs?

Install and Test MoveIt 2

Note that MoveIt 2 is a work in progress. Limited effort has been allocated to provide instructions on how to reproduce the available work.

Install and test options

Build From Source

Ubuntu 18.04

Install ROS 2 Dashing Diademata

Follow this to install ROS 2 Dashing

Compile MoveIt 2 and Dependencies:

Install additional build dependencies:

sudo apt-get install python-vcstool python3-colcon-common-extensions

Warning:--symlink-install flag is not compatible for now: https://github.com/AcutronicRobotics/moveit2/issues/112, https://github.com/AcutronicRobotics/moveit2/issues/104

Download and build MoveIt2:

mkdir -p ~/moveit2_ws/src
cd ~/moveit2_ws/src
git clone https://github.com/AcutronicRobotics/moveit2 -b master
cd ..
vcs import src < src/moveit2/moveit2.repos
export ROS_DISTRO=dashing
source /opt/ros/dashing/setup.bash
rosdep update && rosdep install -q -y --from-paths . --ignore-src --rosdistro ${ROS_DISTRO}
colcon build --merge-install

Using a Docker container

# Host machine
docker run -it ros:dashing
# Inside of the docker image
mkdir -p ~/moveit2_ws/src
cd ~/moveit2_ws/src
git clone https://github.com/AcutronicRobotics/moveit2 -b master
cd ..
vcs import src < src/moveit2/moveit2.repos
apt update
rosdep update && rosdep install -q -y --from-paths . --ignore-src --rosdistro ${ROS_DISTRO} --as-root=apt:false || true
colcon build --merge-install

OS X 10.14 (DEPRECATED)

Refer to https://acutronicrobotics.com/docs/products/robots/mara/moveit2/install/osx (outdated)

Using the CI infrastructure

Moveit uses a Docker-based CI infrastructure to run tests and validate commits. Such infrastructure adapted for MoveIt 2 is available at https://github.com/acutronicrobotics/moveit_ci.git.

Using the CI infrastructure, one can get access to MoveIt 2 current status and test its capabilities

Using the CI infrastructure in Ubuntu

Note: You need to have docker installed on your system.

cd ~ && git clone https://github.com/AcutronicRobotics/moveit2
cd ~/moveit2
git clone -q -b dashing --depth=1 https://github.com/acutronicrobotics/moveit2_ci.git .moveit2_ci
source .travis.linux.env
.moveit2_ci/travis.sh

Using the CI infrastructure in OS X

TODO

Continuous Integration

Build Status

Docker Containers

https://cloud.docker.com/u/acutronicrobotics/repository/docker/acutronicrobotics/moveit2