Using TB3 and OMX together in Docker on Jetson Orin Nano

In a previous posting, I have shown that I can use an OMX Test Rig with a Jetson Orin Nano (JON) running on JetPack 6.21 + Docker running on Ubuntu 24.04+ROS2-Jazzy and get the new ROBOTIS Physical AI tools working smoothly on the JON.

Moving on to this new project, I am exploring the possibility of integrating this OMX Test Rig to a TB3 Burger (to be exact the “essentials” of a TB3-Burger) on the SAME Jetson Orin Nano acting as the Remote PC component, and an RPi5 acting as the SBC component.

Previously in 2025, ROBOTIS updated the e-manual instructions for how to install TB3+Jazzy on the SBC and OpenCR (web links shown in previous picture). And I implemented those procedures without any problem: Ubuntu 24.04 Server + TB3-Jazzy on the RPi5; and I used Windows Arduino IDE to install the TB3 Firmware for the OpenCR. Then, I could use a Intel based Desktop on Ubuntu 24.04 to act as the Remote PC component, and all procedures went fine for me. But I really wanted the JON to act as the Remote PC for my TB3 system. But, at present, JON runs on Jetpack 6.2.1 (i.e. Ubuntu 22.04) and thus is not compatible with ROS 2 Jazzy, and I will have to wait until March 2026 for NVIDIA to release a JetPack 7 version that would work with Ubuntu 24.04 . Thus for me, the obvious solution is for the JON to run the TB3-Jazzy tools inside a Docker Container, along with Ubuntu 24.04. But my Docker+ROS2 skill levels are “fairly LOW” at present :shushing_face:. So I asked for help from ROBOTIS and HyunGyu Kim & Woojin Wie came to the rescue: within 2-3 days, they created a new TB3 branch named “feature-docker-update” which is in beta-testing phase for now - so very minimal usage information is available at present.

This “feature-docker-update” is set for 4 possible use scenarios: at first level - for either “humble” or “jazzy”, and at second level - “pc” or “sbc”. For my case, I only need the “jazzy”+“pc” scenario.

My SBC (RPi5) and OpenCR are already built using the “standard” Jazzy instructions. So my picture below lists the steps involved to setup a TB3-Jazzy Docker container on the JON: they are modified very slightly from the instructions provided by HyunGyu Kim on the DISCORD web site.

If you are following these instructions, make sure to check the results (on yours JON) regarding Step 6 and Step 7 (see picture below):

Essentially for Step 6, make sure that you see the “CONTAINER STARTED” message. For Step 7, make sure that the Prompt changed to “root”. I added a few “environment” update steps from the standard TB3 web instructions.

The next picture shows the steps that you can take to explore the folders structure inside the Docker Container:

And the “ROS2” command should work by now also.

The next picture is a screen capture of my JON desktop when all OMX tools are working at the same time; you can see that there are quite a few terminals running! 3 ROS2 nodes and 1 web browser.

To set up my JON as the TB3-SBC component, I had to read “between the lines” of the “relevant” and “standard” instructions already provided on the ROBOTIS e-manual, but adapted to my situation.

There were 3 Terminals that needed to be set up on the JON:

  1. Terminal 1 acts as an SBC Terminal to “bringup” the TB3, and then it is just left “alone”.
  2. Terminal 2 acts as another SBC Terminal to monitor “topic” and “service” as needed.
  3. Terminal 3 acts as Remote PC where the user can launch TB3 applications such as the “Keyboard Teleop” feature.

Terminal 3 is tricky to set up and has many “fancy” steps to go through and in a “certain order” and unfortunately the previous picture can only shows its “final look”. Basically, “ENTER” Docker first, then from that Docker workspace “SSH” to the RPi5, then from there “LAUNCH” any TB3 node that the user needs.

In the next picture, these steps are “reversed” so that the user can appreciate the multiple steps involved that changed the “prompt” in TERMINAL 3.

  1. CONTROL-C to quit the Teleop Node. The prompt still shows “roboteer@RPi5-TB3”
  2. The first EXIT to log out of the SSH session. The prompt changes to “root@jon-1” meaning that you are still in the Docker Container (i.e. still in Ubuntu 24.04).
  3. The second EXIT is to leave the Docker container, so the prompt is changed to “roboteer@jon-1”, i.e. back to the real Host OS which is Ubuntu 22.04).

The next picture shows the two main areas of the JON’s display for the OMX and TB3 systems when they work together. It took me a while to get to know which terminal should be used for the specific OMX or TB3 task that needed to be done! It will be challenging to get a Mobile OMX system that can operate autonomously!

The “memory” and “power” usage is shown in the next picture. The JON seemed to have lots of capacity left.

The next 3 pictures highlight the 3 tasks that I tried to capture in the later enclosed runtime video

Currently, all ROS2 messages are sent via Ethernet at 1 Gbps. It will be interesting when I can try this system via WiFi.

1 Like

UPDATE 11/4/2025
From the previous post, I could see that the JON still had quite a bit of spare computing resources, thus I wanted to “go further” and to get rid of the Co-Controller RPi5 altogether. Conceptually, this means that “PC” and “SBC” capabilities should be combined into a single file. I tried to combine PC+SBC Docker files but could not get them to work cleanly (blogs in DISCORD). But @Woojin-Crive got back from ROSCON 2025 and helped with a new version of the feature-docker-update branch see pictures below.

So I pulled out my second JON and prepared it for this “combined PC” version of TB3

The next 2 pictures show the revised installation steps for TB3 on JON-2

The next picture shows the steps for BRINGUP of the TB3 robot.

And the procedure for launching the TELEOP node is shown below

The previous EXPORT were executed with manual inputs, but the user can set them up inside the file ~/.bashrc file also - see picture below

And this “new” TB3 operated fine as shown in the video below:

Next, the OMX Test Rig is added to the TB3 robot

And they worked fine together too!!!

UPDATE 11/9/2025
I just applied the same procedures to an RPi5 16GB on TRIXIE OS, and everything worked for TB3 with RPi5 - same as for the JON. But RPi5 cannot run the OMX AI_Server tool as it required NVIDIA GPU (see the previous post mentioned at the beginning of this posting).

UPDATE 11/12/2025
This time around, I used an RPi5 8GB on TRIXIE OS and repeated the previous procedures. Because of less RAM, all installations took about twice longer than for the 16 GB configuration, but everything installed OK and most importantly operated OK!

This topic was automatically closed 3 days after the last reply. New replies are no longer allowed.