When working with autonomous mobile robots, stability and compatibility across systems are just as critical as the robot’s physical hardware. One of the most impactful parts of my recent work involved upgrading the software stack on the UiAbot, a differential drive robot platform, from ROS 2 Galactic to ROS 2 Humble.
What initially sounded like a simple version bump turned out to be a significant architectural change with far-reaching consequences. The upgrade was necessary to take advantage of performance enhancements, long-term support, and better integration with the Jetson Orin Nano hardware, which replaced the older Jetson Nano in this setup.
________________________________________
Why Upgrade?
The objective of the upgrade was future-proofing and enhancing the platform. ROS 2 Humble offers more robust tools, improved security, and long-term support, all of which are essential for any autonomous robot operating in a real-world environment. Moreover, the Jetson Orin Nano required Ubuntu 22.04 for optimal support, and ROS 2 Galactic did not officially support this version of Ubuntu.
________________________________________
Navigating Compatibility Challenges
ROS 2 Humble introduced several breaking changes compared to Galactic. Many packages had to be rebuilt or replaced, and several dependencies required updated configurations. For example, some previously used nodes — like teleop_twist_keyboard — needed modified launch files or namespace adaptations to work within the Humble ecosystem. Additionally, remapping conventions in launch files required adjustments to ensure all topics were routed correctly between nodes.
One of the most time-consuming tasks was updating the robot’s custom packages (such as those for odometry, control, and IMU integration) to conform to Humble’s updated API. This included changes in node lifecycle handling, parameter loading syntax, and stricter message type enforcement.
________________________________________
Concrete Improvements
After the upgrade, I observed several tangible improvements. The robot’s motion control became more responsive thanks to reduced latency in the control loop, and the SLAM performance using slam_toolbox was noticeably more consistent, with fewer dropped scans and better map resolution. The navigation stack (Nav2) also benefitted from improved recovery behaviors and enhanced plugin stability.
Another key benefit was smoother integration with the Jetson Orin Nano, especially for sensor data processing. The additional compute power, paired with Humble’s more optimized middleware, allowed for better real-time performance when fusing data from the LiDAR, IMU, and wheel encoders using the Extended Kalman Filter (robot_localization package).
________________________________________
Final Thoughts
Upgrading to ROS 2 Humble has significantly improved the reliability and scalability of the UiAbot platform. While the process involved careful troubleshooting and in-depth knowledge of the ROS 2 ecosystem, the outcome proved well worth the effort. These kinds of software-level improvements are often less visible than hardware upgrades, but they are what enable cutting-edge autonomy to actually work in practice.