Installing & Running TurtleBot3 on UNO Q 4GB via DOCKER/ROS2 Container

In December 2025, ROBOTIS releases a new installation procedure for TurtleBot3 (TB3) that is based on a DOCKER image that contains (Ubuntu 24.0.4 + ROS2 Jazzy + TB3). Consequently, it is big (5 GB) but it is easy to install and use, and I had installed this image on RPi5 and Jetson Orin Nano successfully.

Thus, in this project, I tried to reproduce this procedure for the UNO Q 4GB. I am enclosing a PDF that has all the progresses made so far. It has 3 parts:

  1. PART A shows how to move DOCKER ROOT DIR from the “/” drive (with 2.9 GB available) to the “/home/arduino” drive (with 17 GB available) to get more space to install larger DOCKER containers. PART A should be of interest to other users of DOCKER and ROS2 JAZZY also.
  2. PART B shows the detailed steps to install the TB3 package itself onto the “/home/arduino” drive.
  3. PART C shows the procedures to “bring up” the TB3 BURGER robot and run the ROBOTIS provided “teleop via keyboard” example.

PART A and PART B just used the UNO Q connected to a Windows 11 PC via a USB cable and an ADB shell to access its MPU’s Linux.

PART C has the UNO Q set up in SBC mode with a Lidar and the OpenCR module hooked up to a USB C hub.

Using_TB3_on_UNO_Q4.pdf (2.4 MB)

Nice! How are you going to put Uno Q with hub and webcam to Burger bot? Will it fit?

Nice job on getting it up and running. And yep ros2 does work. I had success in sending slam data to the pc for plotting.

Great work!

Thank y’all for the kind words!

Probably I’ll put in an additional layer/deck in the BURGER bot for the UNO Q hardware and push the Lidar to the very top deck. Hopefully it won’t topple over when moving it around! Or remove the existing RPi and put UNO Q in the RPi deck. I have plenty of 3M Dual Lock tape!

Any updates to this?

I am sort of starting to play with this, and for example thinking of also replacing the OpenCR board with the Robotis Shield, although there may be a voltage issue with the IO pins, so may use instead a different way to convert Serial to DXL...

Thanks again
Kurt

But I have at least been able to go through your instructions and now
I have my old Burger with the wheels turning :smiley:

Sorry for the delayed response, I was also thinking about replacing the OpenCR with the Arduino side of UNO-Q, but according a previous posting from you, the data rate across the UNO-Q bridge was only around 112 Kbps? So I figured that I better stay with DXL communication via the USB-C connections as I would need 1 Mbps for the DXLs to work properly.

or 115.2 Kbps?

I hear you. I believe @Merlin513 got faster speeds with SPI between the two, some of the conversation is up at:
SPI3/SE5 interface from MCU to MPU available? - UNO Family / UNO Q - Arduino Forum
But I don't remember what speeds he achieved.

I know the OpenCR has other capabilities as well: Gyroscope 3Axis Accelerometer 3Axis Magnetometer 3Axis (MPU9250), and I believe there are ROS topics created for some of this.
Easier to see this in the ROS burger sketch as it is in the sketch versus the ROS2 version, where all of it is in libraries and the like:

nh.subscribe(cmd_vel_sub);
  nh.subscribe(sound_sub);
  nh.subscribe(motor_power_sub);
  nh.subscribe(reset_sub);

  nh.advertise(sensor_state_pub);  
  nh.advertise(version_info_pub);
  nh.advertise(imu_pub);
  nh.advertise(cmd_vel_rc100_pub);
  nh.advertise(odom_pub);
  nh.advertise(joint_states_pub);
  nh.advertise(battery_state_pub);
  nh.advertise(mag_pub);

The interesting question will be, how much actual throughput do we actually need to control the two servos (wheels).

Right now playing more simple partial stuff without ROS to see if I can use a Game controller to drive the burger around some...

Its been a while - if I remember right I ran it at spi.max_speed_hz = 20000000 which is what the posted example was running at. Of course I modified to test it with my specific use case. Didn't do actual timing tests.