Advice wanted for ROS 2 development of AGX Orin

We want to use our AGX Orin with ROS 2 to educate our students in robotics. I am unsure how we can make the development more sustainable. On one hand, the current version of Jetpack (5.1) is based on Ubuntu 20.04 and thus ROS 2 Foxy by default. On the other hand, the Isaac ROS Developer Preview is programmed on ROS 2 Humble, which was developed for Ubuntu 22.04 (and thus should not be directly usable on the Orin).
Since most of our students have never worked with ROS before, I think using Docker is too much for now.

Can you recommend an approach?

Translated with DeepL Translate: The world's most accurate translator (free version)

Hi @s.stapperfend, in theory you can compile ROS2 Humble from source outside of container in a similar way that it’s done in container (see this Humble dockerfile for Jetson), however it could be time-consuming if you have multiple Jetson’s and building it on each one of your boards (you could make a script that did it though - AGX Orin is pretty fast at compiling).

JetPack 6.0 will bring support for Ubuntu 22.04, and at that point you’ll be able to install the pre-built Humble packages from ROS’s apt repo the same way that you can today with Foxy on 20.04 (see Jetson Software Roadmap for 2023 for more info)

For now, the other solutions would be to use Foxy on 20.04, build Humble from source, or to use one of the Humble containers (i.e. from or the ISAAC ROS container)

Thank you for the fast response.
We have currently 4 AGX Orins, so building Humble from source on these shouldn’t be too time consuming. Do you know if there will be any known issues by using Humble on ROS 20.04? I am thinking of classical errors like wrong CUDA version and such stuff.

Hi @s.stapperfend, I’ve not encountered core errors like that (with CUDA/ect) when building Humble for 20.04. When Humble was first released, I did have some trouble building it’s desktop packages on 20.04, but those were later resolved. If you encounter any issues, let me know - good luck!

we tried building ROS 2 Humble from source on our AGX Orin DevKit with Ubuntu 20.04 and Jetpack 5.1.1 on a freshly flashed system.
Sadly, we always encounter the same error while executing the colcon build --symlink-install command.

We strictly followed this procedure.

The command fails:

tarting >>> rosidl_typesupport_introspection_c
--- stderr: orocos_kdl_vendor                 
Cloning into 'orocos_kdl-507de66'...
HEAD is now at 507de66 Fix CMake warning on Windows (#392)
Submodule 'python_orocos_kdl/pybind11' ( registered for path 'python_orocos_kdl/pybind11'
Cloning into '/home/orintwo/ros2_humble/build/orocos_kdl_vendor/orocos_kdl-507de66-prefix/src/orocos_kdl-507de66/python_orocos_kdl/pybind11'...
Finished <<< orocos_kdl_vendor [4min 17s]
Starting >>> python_orocos_kdl_vendor         
--- stderr: python_orocos_kdl_vendor          
CMake Error at /usr/share/cmake-3.16/Modules/FindPackageHandleStandardArgs.cmake:146 (message):
  Could NOT find Python3 (missing: Python3_LIBRARIES Python3_INCLUDE_DIRS
  Development) (found version "3.9.5")
Call Stack (most recent call first):
  /usr/share/cmake-3.16/Modules/FindPackageHandleStandardArgs.cmake:393 (_FPHSA_FAILURE_MESSAGE)
  /usr/share/cmake-3.16/Modules/FindPython/Support.cmake:2214 (find_package_handle_standard_args)
  /usr/share/cmake-3.16/Modules/FindPython3.cmake:300 (include)
  CMakeLists.txt:26 (find_package)

Failed   <<< python_orocos_kdl_vendor [3.34s, exited with code 1]

We have python3 installed:

orintwo@ubuntu:~/ros2_humble$ ls -ls /usr/bin/python*
   0 lrwxrwxrwx 1 root root       7 Apr 15  2020 /usr/bin/python -> python2
   0 lrwxrwxrwx 1 root root       9 Mar 13  2020 /usr/bin/python2 -> python2.7
3540 -rwxr-xr-x 1 root root 3621752 Jul  1  2022 /usr/bin/python2.7
   0 lrwxrwxrwx 1 root root      34 Jul  1  2022 /usr/bin/python2.7-config -> aarch64-linux-gnu-python2.7-config
   0 lrwxrwxrwx 1 root root      16 Mar 13  2020 /usr/bin/python2-config -> python2.7-config
   0 lrwxrwxrwx 1 root root       9 Mar 13  2020 /usr/bin/python3 -> python3.8
5120 -rwxr-xr-x 1 root root 5238800 Mar 13 11:26 /usr/bin/python3.8
   0 lrwxrwxrwx 1 root root      34 Mar 13 11:26 /usr/bin/python3.8-config -> aarch64-linux-gnu-python3.8-config
   4 -rwxr-xr-x 1 root root     407 Feb 20  2020 /usr/bin/python3.8-coverage
5380 -rwxr-xr-x 1 root root 5506160 Nov 23  2021 /usr/bin/python3.9
   0 lrwxrwxrwx 1 root root      16 Mar 13  2020 /usr/bin/python3-config -> python3.8-config
   4 -rwxr-xr-x 1 root root     403 Feb 20  2020 /usr/bin/python3-coverage
   4 -rwxr-xr-x 1 root root     384 Jan 25 09:33 /usr/bin/python3-futurize
   4 -rwxr-xr-x 1 root root     388 Jan 25 09:33 /usr/bin/python3-pasteurize
   4 -rwxr-xr-x 1 root root    2555 Apr 14  2020 /usr/bin/python-argcomplete-check-easy-install-script3
   4 -rwxr-xr-x 1 root root     314 Apr 14  2020 /usr/bin/python-argcomplete-tcsh3
   0 lrwxrwxrwx 1 root root      14 Apr 15  2020 /usr/bin/python-config -> python2-config

Python3.8.10 is the current active python version, as seen by $ python3 --version
We tested removing python3.8 and python3.9, but didn’t get far with that approach.

Any ideas on why we fail?

I upgrade cmake and remove Python 3.9:

If it involves pybind, you could try upgrading pybind11, but I haven’t had to do that for JetPack 5 (I do for JetPack 4 though)
I also only build this in the containers to keep my environment sane (and to be able to distribute the builds)

Some packages seem to require the use of Python3.9. So at this point we continue with Foxy and switch to Humble once Jetpack 6.0 is released.
Thanks for the fast help!