The MoveIt 2 motion planning framework is an open source software for motion planning, manipulation, 3D perception, kinematics, control and navigation. It’s built on top of the Robot Operating System (ROS 2) and altogether, remains the third most popular package in the ROS world. MoveIt provides an easy-to-use platform for developing advanced robotics applications, evaluating new robot designs, and building integrated robotics products for industrial, commercial, R&D, and other domains. MoveIt 2 is is the ROS 2 version of MoveIt.
This is the second of a series of articles to describe our learning experience and contributions with the MoveIt 2 and ROS 2 communities. The complete series is listed below:
- why MoveIt 2?
- porting and understanding
In this second part we will discuss
moveit_core, one of the most relevant elements of the MoveIt motion planning framework.
moveit_core includes the core libraries used by MoveIt 2. Mainly and as described on its original README:
- representation of kinematic models
- collision detection interfaces and implementations
- interfaces for kinematic solver plugins
- interfaces for motion planning plugins
- interfaces for controllers and sensors
These capabilities do not depend on ROS 2 (except ROS messages) and can be used independently.
Status of the port
At the time of writing, the actual status of the port is available here. Review the README to get a peek into the latest updates:
Continuous integration and unit tests
We are developing both in both OS X and Linux. To get initial support for both platforms and ensure good development practices, we decided to set up some initial (simple) CI with Travis https://github.com/AcutronicRobotics/moveit2/issues/4 for both, Linux and OS X. This CI worked nicely and basically replicated the flow of the official installation instructions provided by Open Robotics in Travis. Unfortunately, this never got merged and we instead moved into a more sophisticated CI the moveit team has been maintaining: https://github.com/ros-planning/moveit_ci.
At the time of writing and while efforts have been put into enabling this for ROS 2 (credit to MoveIt maintainers), the moveit_ci isn’t yet ready to process
moveit_core and other modules of moveit2. In an attempt to get aligned, our team has been working on an extension of moveit_ci particularized for our infrastructure which successfully builds and tests
moveit_core and all other packages we’re currently porting. This work is available at https://github.com/AcutronicRobotics/moveit_ci/tree/ros2 and hopefully, it’ll eventually be merged and integrated https://github.com/ros-planning/moveit_ci/pull/56.
At the time of writing, a first version of
moveit_core is available and ported to ROS 2 in our development fork. Most
moveit_core submodules depend on a number of other ROS packages that had to be similarly ported to ROS 2 and fetched into a workspace:
octomap(only octomap submodule ported)
To ensure alignment with the community, Pull Requests have been submitted to MoveIt 2 official repository for the different
moveit_core submodules as follows:
Lots of possibilities to contribute
Our investment in the MoveIt 2 project is made with a vision of long term. We hope to be involved with it for a very, very long time. However, nowadays, we have very limited resources and our commitment has been to put effort into contributing to deliver a first working prototype of MoveIt 2 with MARA. We hope this will drive the community to get involved faster in the project. At the same time, this means that sometimes we won’t fully port all dependencies nor all modules within each package. We’ll aim to port the minimum set of packages for creating a demonstration and then re-iterate on all the MoveIt 2 code, improving things on spirals as much as time and our resources allow for it.
There’s still work to do including finalizing the port of unit tests or optimizing certain parts of the code with new ROS 2 primitives. If you have bandwidth to contribute and would like to get involved in a new fast growing project, we encourage you to jump in to any of those open pull requests or to create a new one with your contribution.
How to reproduce the work so far
In order to facilitate the involvement of third parties, we’ve generated simple instructions on how to reproduce our current setup in OS X and Linux:
Moreover, we’ll be generating tutorials and guides for MoveIt 2. Furthermore, to reproduce the CI work locally, do so from the instructions at https://github.com/AcutronicRobotics/moveit_ci#running-locally-for-testing.
We’d like to credit our partners at PickNik for their support in the process and the MoveIt maintainers. Similarly, we’d like to thank William Woodall, Dirk Thomas and Tully Foote for their input.