How to Setup Isaac Ros Development Environment: Jetson orin NX

to set up the docker configuration on Jetson devices, the instruction’s (Developer Environment Setup — isaac_ros_docs documentation) say :

Follow this instruction to first set your Jetson up with SSD, then come back to this document and resume from Step 2.

if you click the this instruction link, it brings you to the instruction page it states :

To properly configure your Jetson with an NVMe SSD choose one of the following:

  • Physically install the NVMe SSD on a fresh Jetson developer kit, then use SDK Manager running on an Ubuntu PC to flash the entire L4T (Jetson Linux) on the SSD.

but I don’t understand this, my orin NX developer board already has the SSD formatted, partitioned and mounted. why, if it is already mounted and my file system is already using my SSD, are we reformatting it? im going to loose all of my files in the file system. im pretty sure one of the portions of my SSD is mounted as ‘/’, so why dont we do what we do with the x86 systems and do:

mkdir -p ~/workspaces/isaac_ros-dev/src
echo “export ISAAC_ROS_WS=${HOME}/workspaces/isaac_ros-dev/” >> ~/.bashrc
source ~/.bashrc

as this is within ‘/’ and ‘/’ is mounted from the SSD?

the documentations shows that we should see this when we run lsblk in terminal :

mmcblk1 179:0 0 59.5G 0 disk
├─mmcblk1p1 179:1 0 58G 0 part /
├─mmcblk1p2 179:2 0 128M 0 part
├─mmcblk1p3 179:3 0 768K 0 part
├─mmcblk1p4 179:4 0 31.6M 0 part
├─mmcblk1p5 179:5 0 128M 0 part
├─mmcblk1p6 179:6 0 768K 0 part
├─mmcblk1p7 179:7 0 31.6M 0 part
├─mmcblk1p8 179:8 0 80M 0 part
├─mmcblk1p9 179:9 0 512K 0 part
├─mmcblk1p10 179:10 0 64M 0 part
├─mmcblk1p11 179:11 0 80M 0 part
├─mmcblk1p12 179:12 0 512K 0 part
├─mmcblk1p13 179:13 0 64M 0 part
└─mmcblk1p14 179:14 0 879.5M 0 part

but this is not what I see, and when I run df -h in my home directory, it is giving me the free space of my SSD.

so if we already have the SSD being used as the root of our filesystem, what are the steps we need to set up the docker container? or is all we have to do is

  1. Restart Docker:

sudo systemctl daemon-reload && sudo systemctl restart docker

  1. Install Git LFS to pull down all large files:

sudo apt-get install git-lfs

git lfs install --skip-repo

and then we add the workspace as if we were using Jetson without SSD:

  1. Create a ROS 2 workspace for experimenting with Isaac ROS:

Jetson with SSDx86_64 and Jetson without SSD
mkdir -p ~/workspaces/isaac_ros-dev/src
echo “export ISAAC_ROS_WS=${HOME}/workspaces/isaac_ros-dev/” >> ~/.bashrc
source ~/.bashrc

if we do what step 4 says, do I need to do any additional configurations for docker? since the documentations doesn’t account for using our SSD with this workstation setup?

Hi @ballets-yaks-0x

Thank you for your post/

It’s generally suggested that you have enough space on your device to install and test the Isaac ROS package.

For example, I work directly on my Jetson devices without using an installed NVMe SSD.

additional note: im using jetpack 6.2

so you use the eMMC? if so, (Jetson Setup — isaac_ros_docs documentation)

states that the eMMC has much slower read and write times. and if I am using the eMMC as you state you are not using the installed NVMe SSD, then what is the installation process for the docker Isaac ros dev environment? im confused because I thought the new implementation of how the nvidia SDK manager flashes jetpack is, that the eMMC is not mounted as root? it is instead, the NVMe device that is. like I said, my NVMe is mounted as root, and I only have loop and zram showing up in my lsblk output. so if you’re not using SSD what are you using? if its the micro SD you’re using, the orin NX SoM doesnt have a slot for it.

so how do I set up the docker configurations? do I just set it up on my SSD as if I was using jetson without SSD? and creating a directory:

mkdir -p ~/workspaces/isaac_ros-dev/src
echo “export ISAAC_ROS_WS=${HOME}/workspaces/isaac_ros-dev/” >> ~/.bashrc
source ~/.bashrc

again, my NVMe is mounted as ‘/’. so doing the instructions of setting up jetson with SSD (which is step 4 – refer to my original post–)makes no sense because it seems like prior to jetpack 6.1 (or some version), the root ‘/’ was mounted to the eMMC, but after a certain version it changed it to be mounted to the NVMe SSD if flashed with a NVMe SSD connected. I don’t have SD slot and no output of eMMC devices in lsblk output.

so my question is, having my NVMe SSD mounted as root, is all I do is steps 2, 3 and 4 (where step 4 id follow the instructions for jetson without SSD – even though we are using SSD–)? in other words, are all dependencies installed when flashing jetpack 6.2 that when I run the run_dev.sh script from Isaac_ros_common package in the /workspaces/isaac_ros-dev/srcdirectory, will it work? all I’d be doing is steps 2, 3 and 4 (refer to my original post, where the numerical indexes in the block quotes is what im referring to as steps)