December 17, 2021

MoveIt Sprint Report

by Tyler Weaver

Nov 26 - Dec 16

We have just finished our third MoveIt sprint using ZenHub for planning and would like to share with you what the PickNik team is doing to improve MoveIt. From a high level the major efforts of each of the team members did:

MoveIt 2

In this sprint, we landed the port of the Pilz Industrial Motion Planner into MoveIt 2.

The merge of this introduced a circular dependency we are working on resolving before we can release for Galactic and Rolling. There are two approaches in PRs and we are working out which approach will work best. henningkayser did this port over the last few sprints and was especially careful to make sure many of the tests were ported and working before we merged it.

In this sprint, we also landed the Hybrid Planner into MoveIt 2 which was the project of sjahr this last summer. AndyZe lead the effort to get it finished so it can be merged.

We look forward to releasing both of these into Galactic and Rolling.

MoveIt Setup Assistant

The last large missing feature from MoveIt on ROS 2 is the MoveIt Setup Assistant. It is a wizard that assists users in getting their robot working with MoveIt. The primary reason it has been held back as long as it has is we are not net content with the state of configs and launch files in MoveIt on ROS 2. Meanwhile though DLu has prepared a draft PR here that modularizes MSA in a way that should make it much easier to contribute and develop the various steps of MSA. Hopefully, shortly we can finish what he started and get this landed into MoveIt.

Infrastructure

vatanaksoytezer has continued to the config for the Mergify bot. This was the first sprint where it automated a few backports and it is already saving a bunch of time.

As an unintended consequence of merging the Pilz Planner the build times when building with the clang-10 compiler greatly increased. In CI for a few days, it was normal for it to take greater than three hours to finish the workflow that builds with the clang compiler. tylerjw profiled this and discovered that the ld linker was essentially hanging for a long while. He was able to decrease not only the CI times for the clang workflow but all workflows by switching us to using the LLD Linker in CI.

New team member

This sprint ParthasarathyBana joined our team and merged his first PR into MoveIt. The PR added helped make MoveIt follow modern C++ best practices by getting rid of our use of std::endl. Here is a link to his PR: Get rid of “std::endl”.

Good First Issues for Modern C++ Best Practices

tylerjw created an epic in ZenHub to moderize MoveIt’s use of C++ based on the advice from Jason Turner’s github repo cppbestpractices. This epic contains issues that range from trivial find and replace tasks to ones that are much more nuanced. The exciting part of this is several new contributors have already contributed changes to MoveIt during this sprint. In the past, we tried creating good-first-issue issues and struggled to find tasks that were both meaningful and well enough defined for new contributors. This new approach is both really good for the project and provides new contributors with very well-structured tasks they can submit PRs for.