# Ported the arduinobot manipulator workspace from Humble to ROS 2 Jazzy — notes on what broke

**URL:** <https://discourse.openrobotics.org/t/ported-the-arduinobot-manipulator-workspace-from-humble-to-ros-2-jazzy-notes-on-what-broke/58225>\
**Category:** Projects\
**Created:** [September 17, 2026, 4:55pm UTC](https://discourse.openrobotics.org/t/ported-the-arduinobot-manipulator-workspace-from-humble-to-ros-2-jazzy-notes-on-what-broke/58225 "2026-09-17T16:55:17Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![Prasad\_Prabhu](https://sea2.discourse-cdn.com/flex022/user_avatar/discourse.openrobotics.org/prasad_prabhu/32/35323_2.png) [@Prasad\_Prabhu](https://discourse.openrobotics.org/u/Prasad_Prabhu)\
**Post date:** [September 17, 2026, 4:55pm UTC](https://discourse.openrobotics.org/t/ported-the-arduinobot-manipulator-workspace-from-humble-to-ros-2-jazzy-notes-on-what-broke/58225/1 "2026-09-17T16:55:17Z")

</div>

I teach ROS 2 at an engineering college in India, and this semester we moved to  
Jazzy on Ubuntu 24.04. A lot of the good learning material out there is written for  
Humble, so I’ve been porting AntoBrandi’s arduinobot workspace across and  
documenting it as I go.

Repo: [GitHub - prasad914/arduinobot\_ws: ros2 tutorial · GitHub](https://github.com/prasad914/arduinobot_ws)  
(Apache 2.0, original by Antonio Brandi — this is my Jazzy port.)

Status so far: arduinobot\_description builds and displays in RViz. Gazebo,  
ros2\_control and MoveIt 2 are still in progress.

Two things that cost me time, in case they save someone else:

1. Passing a URDF as a parameter from the CLI fails if the file has XML comments  
containing a colon. The ros2 CLI parses the value as YAML, and “” looks like a mapping. You get “ScannerError: mapping values are not  
allowed here”, which tells you nothing. Wrap it in single quotes or use  
–params-file with a block scalar.

2. Nothing in package.xml installs your urdf folder. It only declares dependencies.  
The install(DIRECTORY urdf DESTINATION share/${PROJECT\_NAME}) rule in  
CMakeLists.txt is what actually ships it. Obvious in hindsight, and a  
surprisingly common confusion among my students.

I also recorded a full walkthrough if it’s useful to anyone starting out:

[![](https://us1.discourse-cdn.com/flex022/uploads/ros/original/3X/6/6/66377b899b51636a3cbfc4f49a051b39b1c24eeb.jpeg "ROS 2 Jazzy URDF Tutorial: Build a Robot Description Package From Scratch") ](https://www.youtube.com/watch?v=ZTl-ZOoxAGc)

Happy to answer questions about the port.
