ROSCon 2024: Highlights from Odense

I first tried out the Robot Operating System (ROS) in 2010 for a homework assignment. As a MATLAB-slinging mechanical engineer, I … just didn’t get it. When I was finishing up my Master’s degree, my advisor offered to put me in touch with someone she knew at Willow Garage and I flat-out declined her offer to even have that first conversation.

Joke’s on me.

I (re)started using ROS in earnest in late 2015 when MathWorks released its Robotics System Toolbox, which contained the first official ROS interface to MATLAB and Simulink. Since then, I’ve used ROS professionally for a great part of my jobs and personal projects.

Despite this, the first ROS conference I attended was only last year: ROSCon 2023 in New Orleans, USA. I had such a good time that I was deeply committed to finding my way to the next one… and sure enough, it happened!

This year, ROSCon 2024 in Odense, Denmark was eventful enough that I felt the need to write about it. My biggest takeaway is that going to the conference due to personal side projects vs. representing a company totally changed my experience. Plus, the more you work in this area, the more people you know and look forward to spending some time with. I mean… look at all these people!

Almost 1000 attendees this year, making it the largest to date!
Photo taken from the official ROSCon 2024 web site.

My (Biased) Highlights

Zenoh was on everybody’s mind. The Zenoh presentation at the beginning of the conference got a ridiculous amount of applause at the end of every major talking point. I, too, sympathize with the good old days of ROS 1 when the default settings “just worked” out of the box. Sadly, the configurability of the default middleware for ROS 2, Data Distribution Service (DDS), also brought with it a complexity that left a lasting dark mark on the user experience. It remains to be seen whether Zenoh can provide all that is promised, or will come with its own set of tradeoffs that will make the networking landscape in ROS 2 even more confusing to newcomers.

The corporate presence didn’t seem too overwhelming this year. Maybe it was because this year, ROSCon was partially funded by the city of Odense? Or maybe it was that the booths were spread out across 3 distinct areas in the venue? Either way, some highlights for me include:

  • Universal Robots and MiR — both of which are based in the host city of Odense, Denmark. Perhaps more interesting than their booths was that there was a UR arm in downtown Odense in an interactive tic-tac-toe exhibit, and the city of Odense sponsored a post-conference afterparty in which beer was served by another UR arm (yes, I had one of those beers).
  • Dexory brought their giant robot to the exhibit hall, which many people originally mistook for part of the building. These robots are large mobile bases with vertically telescoping structures that get up to 12 meters tall for inspecting warehouse racking. They had two great talks: a keynote by Guillaume Doisy and Marcus Scheunemann on scaling production systems based on ROS 2, plus a DevOps talk by Ruffin White which unearthed many great tips, including Docker wizardry to streamline ROS 2 CI pipelines.
  • PAL Robotics brought their new Kangaroo robot, which is an impressive (partial) humanoid design consisting of several linear actuators and closed kinematic chains. Their CTO, Luca Marchionni, gave a very nice talk outlining their hardware and software design, which is heavily based on ROS and undoubtedly pushes the boundary of what is possible with these tools. If you look at repos like ros2_control, you will find PAL’s footprint everywhere (congrats to Sai Kishor for recently becoming a maintainer!).

One extremely cool talk that embodied ROSCon was by Michael Ferguson. The story is that he found a robot from his previous startup (Unbounded Robotics, 2013-2014) on Craigslist, and over the last 4 years restored it and made it work on the latest release of ROS 2. Luckily for us, Michael has been documenting his entire process and making several open-source contributions along the way. Much respect!

Lastly, I want to point out the new presentation track on AI, which I found quite disappointing, by no fault of the speakers. It was evident that the ROS community found itself sucked into the vortex of the current AI hype cycle. Most of the relevant presentations signaled a swarming on “the one LLM wrapper to rule them all”, which I found a bit intellectually mind-numbing as someone with non-zero machine learning experience. On a more serious note, I acknowledge that it will probably take a few years until the community is past this hype cycle and moves on to more compelling applications of machine learning. Next year, I encourage both reviewers and submitters to set the chatbots aside and place a higher premium on other applications. Here are a few ideas:

  • Learned perception: Using machine learning to improve insights extracted from sensor data such as camera and lidar. Applications may include object detection, semantic mapping, and pose estimation for navigation and manipulation, to name a few.
  • Embodied intelligence: Training and deploying policies on real robots, using ROS as the platform to accelerate this deployment. Right now, approaches like action transformers (AcT) and diffusion policy are all the rage, but that may be obsolete by next year. It’s a fickle field.

… or maybe I’m just a little salty because this AI track replaced the deliberation track from last year, which is the area that I primarily work in. Cue the next section.

I had to include the UR beer robot here somewhere!
Pictured at the Anarkist Brewery in Odense, Denmark.

ROS 2 Deliberation Workshop

As I mentioned in the introduction, this year I really wanted to secure a reason to attend ROSCon 2024… I just didn’t know what it would be.

When I was traveling in Europe during my time off, I had a few days in Stuttgart, Germany and not much planned to do. I messaged Christian Henkel, whom I’d met at the previous ROSCon, to see if he wanted to grab a beer or something. Christian had recently created the ROS Deliberation Community Group, which I had been attending because the group lines up very well with my professional interests. Instead of that beer, Christian invited me to his workplace, Bosch Research, where I gave a talk (yes, he made me give a talk on my vacation). More relevant to this post, he graciously invited me to collaborate on a potential workshop submission for ROSCon 2024.

Fast forwarding half a year, Christian was able to put together an all-star crew of 6 presenters. Our workshop, Hands-On with ROS 2 Deliberation Technologies, was sold out with 100 attendees, and fairly quickly. My contributions in this workshop were to provide a simulation environment that would be simple enough to not distract from the main objectives of showing deliberation tools (state machines, behavior trees, and task planning), yet complex enough to demonstrate the strength of these tools. I proposed my simulator, PyRoboSim, which I created in 2022 to teach task and motion planning, but making it ready for a full workshop centered around ROS 2 required some major updates.

The amazing ROS 2 Deliberation workshop crew.
Davide Faconti, David Oberacker, David Conner, Christian Henkel, Matthias Mayr, (honorary guest) Pontus Rosqvist, and… me!

Thankfully, my collaborators (pictured above) were amazing at providing feedback to improve the robustness of PyRoboSim, but also at suggesting meaningful features that helped make this simulator work for more realistic examples. Some concrete features that came from this workshop include:

  • Opening and closing storage locations and hallway doors.
  • Actions that can fail randomly and use up the robot’s battery.
  • Much better integration with ROS 2 build systems and interfaces.

You can find the workshop repository here, which includes example files and presentation slides. As for PyRoboSim, the 3.0.0 and 3.1.0 releases were brought to you by this workshop. There are always more things to do, and you should feel free to poke around the GitHub repo and submit your own issues or pull requests!

PyRoboSim teaser showing new functionality, next to the workshop description.

Remarks on MoveIt

Thanks to my last job at PickNik Robotics, I had the fortune of becoming a MoveIt maintainer. However, I’ve never been much of a direct developer of MoveIt; rather, my involvement has been primarily to fix bugs, help with tutorials, and mentor a few projects through the Google Summer of Code (GSoC) program. I still poke around here and there, but it’s far from my main project.

Speaking of Google Summer of Code, this worked out exceedingly well in 2024. These past few months, my former colleague Sebastian Jahr and I co-mentored Aditya Kamireddypalli, a PhD candidate at the University of Edinburgh that I met in person earlier this year. Sebastian and Aditya, who did most of the work, landed themselves a talk at ROSCon 2024, in which they presented an experimental integration of MoveIt and Drake. This specifically focused on making the state-of-the-art optimization capabilities in Drake available as MoveIt plugins for motion planning, trajectory post-processing, etc. You can see the code, and make your own contributions, in the moveit_drake repository.

Aditya Kamireddypalli taking over the stage at ROSCon 2024!

On MoveIt’s GitHub repositories, you mostly run into two extremes: the rare people who submit cool new pull requests, and the bulk of novices who are justifiably frustrated about the decaying state of tutorials, documentation, and frequent releases. This, in turn, leads to source builds that can crash your machine if you’re not careful (I certainly have to work around this on my own laptop). However, I believe there is also a silent majority of users who are getting things done with MoveIt in their ROS projects. I was pleasantly surprised by all the mentions MoveIt got at ROSCon 2024, and I wanted to highlight them here:

  • Deanna Hood at Vexev gave a great keynote speech about robots for medical imaging. She mentioned the use of the pick_ik solver to introduce custom cost functions for positioning a robot arm that performs ultrasound scanning on patients’ arms to map their vasculature for dialysis treatments.
  • Brandon Ong at Intrinsic presented his Fuzzy-matching trajectory cache feature, which was easily the biggest and coolest new feature added to MoveIt this year. Both the functionality and his presentation were fantastic. (By the way, Brandon also attended our deliberation workshop and submitted a bugfix PR live that day, so massive respect!)
  • Marc Bestmann at the University of Hamburg / DLR spoke about inverse kinematics (IK) solver benchmarking using the REACH tool. He mentioned several solvers compatible with MoveIt, and alluded to finding bugs in the process. Indeed, I recognized his name from a bug he submitted to pick_ik which took us a while to find. (tl;dr don’t store joint names and positions in separate containers that don’t preserve the same order!)
  • Vivek Cherian David from Maastricht University gave a lightning talk that mentioned using the Pilz Industrial Motion Planner to create extrusions for medical applications using a redundant robot arm. We chatted afterwards about some issues he had in following velocity profiles during the trajectory, and we were able to exchange tips we encountered in our attempts. Maybe some fixes will come from our talk?
  • I met two students from the Institute of Electronics and Computer Science (EDI) in Riga, Latvia. One of them was using MoveIt Servo, and the other was using my PyRoboSim simulator. Small world.

Maybe I’m a little jaded by knowing “how the sausage is made”, but once I left PickNik I thought about whether for my next project(s) I’d use MoveIt or abandon it for alternative solutions. To help educate myself on my time between jobs, I created PyRoboPlan, an educational tool that uses the Python bindings of the Pinocchio library to recreate some of the main elements of manipulator motion planning. I did this to solidify my understanding of the theory, and write about my learnings. However, I also used this opportunity to find out whether MoveIt truly needed to be this complex, or if it was a byproduct of technical debt over its 10+ years of existence. There are a handful of nice-to-have things in MoveIt that one takes for granted, such as the MoveIt Setup Assistant, MoveIt Task Constructor, and support for octomaps and filtering out the robot model from the collision map. However, I have to say I’m much less intimidated by the prospect of a custom solution now.

As a MoveIt maintainer, of course I’d still like to see the framework moving forward, but I fear that its complexity and age will be its downfall unless significant changes happen. My proposed changes are partially on the software side (moving to more modern tooling, decoupling ROS from the core implementation, making Python bindings first-class citizens, etc.), but also to dedicate more energy to keeping documentation, tutorials, and releases up to date. This is all in the spirit of creating an environment that is more welcoming to new contributors, which is crucial to the health of open-source projects.

Of course, this work is much easier said than done, and often goes unrewarded beyond recognition at places like ROSCon. The related space of mobile base navigation has recently pulled this off through a major refactor for ROS 2 (i.e., the Nav2 framework), and later having its top contributor establish his own company dedicated to its open-source maintenance via services. Even if it may not be the most lucrative business decision — time will tell — I applaud the commitment to open-source software. In contrast, PickNik (which began as a similar steward company for MoveIt in 2015), opted to make a proprietary product on top of its open-source base. While I initially hoped this could have been executed in a way that still embraced open source, in practice I encountered an abundance of decisions that I did not particularly agree with. Regardless of my own opinions on how to build trust, it will be an interesting experiment to see how the Nav2 vs. MoveIt directions play out going forward.

The fact is, MoveIt will remain an open-source project even if the landscape of contributors shifts a little over time. As such, I urge you all to either help breathe some life into the open source MoveIt project by contributing the changes you’d like to see, or take the step towards standing up new, fully open source tools for robot manipulator motion planning within the ROS ecosystem. Bonus points if you can also figure out mobile manipulation, legged robots, and online planning and control to keep up with the times. Whichever path you choose with your contributions, you will be doing the community a great service.


Summary

Even if it’s only been 2 consecutive years, I can firmly say I’m a big fan of ROSCon. The spirit of the open-source robotics community is largely collaborative and welcoming to newcomers. It’s always restorative to spend time among like-minded people that you normally only see on GitHub, and in my experience helps put some of the less glamorous and sometimes thankless work into perspective.

I’m already looking forward to ROSCon 2025 in Singapore. To all you wonderful people contributing to open source robotics, or considering your first contribution(s), let’s work hard to have more great things to show next year.

A handful of my great former colleagues from PickNik ❤️.

One thought on “ROSCon 2024: Highlights from Odense

Leave a Reply

Your email address will not be published. Required fields are marked *