The other day, I had the pleasure of attending ROSCon 2023 in New Orleans. This post summarizes some of the highlights of the event and my experience. It’s hard to believe, but this was my first in-person ROSCon, and I can’t wait for the next one.
ROSCon 2023 group photo. Source: Katherine Scott on ROS Discourse
The event was very well organized. All sessions were on time, and every presenter I have seen finished their talk on time. There was an event app that let you browse the schedule and build your own agenda that I highly recommend looking into if you are attending an event like this. Another exciting feature of the app was the ability to discuss with other participants, organize events, and look for jobs.
I signed up for two half-day workshops this year: Reach Study Analysis and ros2_control.
In the first one, Michael Ripperger and his colleague from Southwest Research Institute guided us through a tutorial on using the reach package. You can find the steps we followed in this repository that contains the steps to perform and solutions in case you get stuck. The framework allows for loading a part in STL and then run a reachability analysis that you can see below. Clicking on any of the markers you can see their score and move the robot’s kinematic chain to reach it
Reachability analysis using reach.
Bence Magyar and Denis Stogl delivered ros2_control workshop. I lost this one quite a bit because I downloaded all the materials beforehand and did not realize they were targeting Rolling and not Humble. It took me a significant part of the workshop to download all the packages due to connectivity issues. What I walked out with, though, is a solid understanding of the current state of ros2_control and knowing that I can return to the workshop materials when I need to implement this framework.
One hiccup during workshops was the WiFi speed. When pulling packages, I was seeing transfer rates of about 15 kB/s. With what seemed to be over one hundred people on a single network and most of them possibly running DDS discovery simultaneously, it’s no wonder there were issues.
There are a couple of talks/demos that caught my attention during the event that I wanted to share. I will link to the talks wherever applicable once they become available.
In a talk “Breaking Bots: Robustness Testing for ROS”, Chris Timperley showed a framework that, as far as I understand, allows you to feed it a bagfile of your system running in a nominal state and then define bad data to substitute at runtime to ensure that the system reacts appropriately. An example that was given during the talk was sending infinity velocity to the robot and making sure it was rejected. I can think of many uses for a framework like this, and I can’t wait to test it out in some hobby projects to start with.
Robotec Sim Demo
This demo blew my mind. Robotec created a photorealistic simulation of 36 robots in a warehouse setting, running over 700 nodes and 6,500 topics/services/actions. What you see in the video is not a visualization or doctored video. It’s a proper simulation with physics, collisions, and many robots. 🤯
On the 20th of October, Adrian Macneil from Foxglove talked about taking robotics projects from prototyping to production in terms of data logging and developing ‘observable’ systems. The talk was filled to the brim with good advice, and once the videos of the talks are uploaded online, I highly recommend you take a look at this one. In the meantime, you can find the slides here.
PostGIS + ROS 2
In the Data & Logging track, Marco Wallner presented a bridge between ROS 2 and PostGIS, a PostgreSQL extension for storing and manipulating spatial data. There were times when I would find this kind of setup handy for some of the projects. You can find some demos of this work in this repository.
Voxel Grid made with Bonxai. Source: Davide Faconti’s presentation.
Davide Faconti, the author of such packages as BehaviorTree.CPP and PlotJuggler, had a presentation on Bonxai, a single header file library for working with Voxel Grids. Davide’s implementation can be 19x faster than OctoMaps for some examples, and since it’s using a 32-bit datatype for addressing, it could fit a 40,000 km grid with a voxel size of 1cm.
Where are we heading
Here are some trends (subjective!!) I’ve been seeing in the presentations that I thought I would share with you:
- Some talks were discussing performance issues with DDS, and many seemed to be excited about the upcoming rollout of Zenoh support
- Many presentations used Foxglove as their visualization tool instead of RVIZ. I also saw quite some Steamdecks on the showroom floor that made use of it
- Behavior Trees are on the rise, and so is their usage
- Rust is coming. It will take a couple of years until it has all the required support, but until then, if you don’t mind parsing JSON as an intermediate step, you can settle with roslibrust
My biggest mistake about this event was not having enough time. I was home sick when booking the tickets and ended up arriving in the evening before the workshops and departing on the last day of the event. This caused me to be jet lagged, unable to catch up with people as much as I wanted and missing out on exploring the city or the swamps.
Plan your sessions carefully and build your agenda in the event app. It’s more than OK to skip talks and chat with people or attend some Birds of Feathers sessions. After all, this event is partially about meeting other robotic developers.
Consider attending workshops and apply early. Many people didn’t get to participate because the workshops sold out. I found this activity to be an easy way to get challenged and do something that’s outside of your robotic comfort zone. As I mentioned before, make sure you prepare a day early and have a correct ROS distro installed. Once you are on the hotel’s WiFi, it might be too late to pull stuff from the Internet.
The next ROSCon will be in Odense, Denmark, a city well known for its robotics hub. I’m looking forward to not being jet-lagged next time. See you there!