Orin NX 16GB 的 package 安装命令清单 + Docker/工作区目录结构 + bringup 顺序

JetPack 6.2 + ROS 2 Humble + Isaac ROS 3.2.x + Isaac ROS Dev Docker 来写。组合的依据是:JetPack 6.2 是 Ubuntu 22.04 / CUDA 12.6 / TensorRT 10.3 的 production release;Isaac ROS 3.2 Update 1 明确加入了 JetPack 6.2 支持;Isaac ROS 3.2 的 Getting Started 明确写了 Jetson Orin + JetPack 6.1/6.2 + ROS 2 Humble ,并且强烈推荐用 Isaac ROS Dev Docker 。(NVIDIA Developer)

1)主机侧安装命令清单

这一步只做三件事:把 JetPack 刷好、把 Docker 装好、把 NVIDIA 容器运行时配好。Isaac ROS 文档推荐把 Jetson 工作区放到 SSD 上,并在 Jetson 上把实验工作区放在 /mnt/nova_ssd/workspaces/isaac_ros-dev。(NVIDIA Isaac ROS)

1.1 刷机和基础系统

如果你还没刷系统,先装 JetPack 6.2 。JetPack 6.2 官方页面说明它基于 Ubuntu 22.04 ,并且支持 Orin NX 的 Super Mode。(NVIDIA Developer)

1.2 安装 Docker Engine

如果你的 JetPack 安装方式没有自带 Docker,就按 Docker 官方 Ubuntu 22.04 方法装。Docker 官方文档明确支持 Ubuntu Jammy 22.04arm64 。(Docker Documentation)

bash 复制代码
sudo apt remove $(dpkg --get-selections docker.io docker-compose docker-compose-v2 docker-doc podman-docker containerd runc | cut -f1) || true

sudo apt update
sudo apt install -y ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc

sudo tee /etc/apt/sources.list.d/docker.sources <<EOF
Types: deb
URIs: https://download.docker.com/linux/ubuntu
Suites: $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}")
Components: stable
Signed-By: /etc/apt/keyrings/docker.asc
EOF

sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

sudo systemctl status docker
sudo docker run hello-world

这些命令来自 Docker 官方的 Ubuntu 安装页。(Docker Documentation)

1.3 安装 NVIDIA Container Toolkit,并把 Docker 配成可见 GPU

NVIDIA Container Toolkit 官方文档给了 Ubuntu/Debian 的 APT 源配置、安装命令,以及用 nvidia-ctk runtime configure --runtime=docker 把 Docker 接到 NVIDIA runtime 的方法。(NVIDIA Docs)

bash 复制代码
sudo apt-get update && sudo apt-get install -y --no-install-recommends \
  ca-certificates \
  curl \
  gnupg2

curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | \
  sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg

curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | \
  sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \
  sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list

sudo apt-get update

export NVIDIA_CONTAINER_TOOLKIT_VERSION=1.19.0-1
sudo apt-get install -y \
  nvidia-container-toolkit=${NVIDIA_CONTAINER_TOOLKIT_VERSION} \
  nvidia-container-toolkit-base=${NVIDIA_CONTAINER_TOOLKIT_VERSION} \
  libnvidia-container-tools=${NVIDIA_CONTAINER_TOOLKIT_VERSION} \
  libnvidia-container1=${NVIDIA_CONTAINER_TOOLKIT_VERSION}

sudo nvidia-ctk runtime configure --runtime=docker
sudo systemctl restart docker

1.4 把当前用户加入 docker 组

这一步不是 Isaac ROS 文档硬性要求,但在日常开发里很省事。

bash 复制代码
sudo usermod -aG docker $USER
newgrp docker
docker info

2)工作区和 Docker 目录结构

Isaac ROS 官方 Jetson 路径是把工作区建在 SSD 下,并导出 ISAAC_ROS_WS=/mnt/nova_ssd/workspaces/isaac_ros-dev/。我建议保留这个根路径,再往下加你自己的 bringupconfigbagsscripts。(NVIDIA Isaac ROS)

2.1 创建工作区

bash 复制代码
sudo mkdir -p /mnt/nova_ssd/workspaces/isaac_ros-dev/src
sudo chown -R $USER:$USER /mnt/nova_ssd/workspaces

echo 'export ISAAC_ROS_WS="${ISAAC_ROS_WS:-/mnt/nova_ssd/workspaces/isaac_ros-dev/}"' >> ~/.bashrc
source ~/.bashrc

2.2 推荐目录结构

text 复制代码
/mnt/nova_ssd/workspaces/isaac_ros-dev/
├── src/
│   ├── isaac_ros_common/
│   ├── your_robot_bringup/
│   ├── your_sensor_drivers/
│   └── your_localization_stack/
├── config/
│   ├── robot_localization/
│   ├── sensors/
│   ├── calibration/
│   └── nav2/
├── bags/
│   ├── calib/
│   └── runtime/
├── assets/
│   └── quickstarts/
├── scripts/
│   ├── install_inside_container.sh
│   ├── bringup_sensors.sh
│   ├── bringup_localization.sh
│   └── bringup_navigation.sh
├── logs/
└── docker/
    ├── Dockerfile.custom
    └── dev.env

这部分里,工作区根路径 是按 NVIDIA 文档来的;其余子目录是我建议你为可维护性加上的。(NVIDIA Isaac ROS)

2.3 先克隆 isaac_ros_common

Isaac ROS 的 quickstart 都默认先把 isaac_ros_common 克隆到 ${ISAAC_ROS_WS}/src,然后通过它的 run_dev.sh 启动 Dev Docker。(NVIDIA Isaac ROS)

bash 复制代码
cd ${ISAAC_ROS_WS}/src
git clone -b release-3.2 https://github.com/NVIDIA-ISAAC-ROS/isaac_ros_common.git isaac_ros_common

3)进入 Isaac ROS Dev Docker

Isaac ROS 3.2 Getting Started 明确写了:Isaac ROS 包已经按 ROS 2 Humble 测试,推荐用 Dev Docker,容器里会自动配置 ROS 和 Isaac APT Repository。Visual SLAM 和 Nvblox 的 quickstart 都是通过 run_dev.sh 进容器。(NVIDIA Isaac ROS)

bash 复制代码
cd ${ISAAC_ROS_WS}/src/isaac_ros_common
./scripts/run_dev.sh

进入容器后,建议先执行:

bash 复制代码
cd ${ISAAC_ROS_WS}
source /opt/ros/humble/setup.bash
[ -f install/setup.bash ] && source install/setup.bash || true

4)容器内 package 安装命令清单

4.1 核心 Isaac ROS 包

Visual SLAM 的官方 3.2 quickstart 给出了 ros-humble-isaac-ros-visual-slamros-humble-isaac-ros-examples 的安装命令;Nvblox 的官方 3.2 quickstart 给出了 ros-humble-isaac-ros-nvblox 的安装命令。(NVIDIA Isaac ROS)

bash 复制代码
sudo apt-get update

sudo apt-get install -y \
  ros-humble-isaac-ros-visual-slam \
  ros-humble-isaac-ros-examples \
  ros-humble-isaac-ros-nvblox

4.2 Nvblox 依赖补齐

Nvblox 的官方 quickstart 在 Debian 安装方式里还补了一步 rosdep update && rosdep install isaac_ros_nvblox。(NVIDIA Isaac ROS)

bash 复制代码
rosdep update
rosdep install isaac_ros_nvblox

Nav2 官方 Getting Started 里给出了 ros-$ROS_DISTRO-navigation2ros-$ROS_DISTRO-nav2-bringup 的安装命令;Nav2 的 robot_localization 教程里给出了 ros-$ROS_DISTRO-robot-localization 的安装命令。(Nav2)

bash 复制代码
sudo apt-get install -y \
  ros-humble-navigation2 \
  ros-humble-nav2-bringup \
  ros-humble-robot-localization

4.4 传感器适配包

如果你用 RealSense 跑 Isaac ROS Visual SLAM,Visual SLAM 3.2 quickstart 里给出的依赖包是 ros-humble-isaac-ros-realsense。(NVIDIA Isaac ROS)

bash 复制代码
sudo apt-get install -y ros-humble-isaac-ros-realsense

如果你不是 RealSense,而是 ZED、Hawk、自家双目或 USB/GMSL 相机,这一行就不要装,换成你自己的驱动包。

4.5 下载 quickstart 资产时的工具

Nvblox quickstart 明确要求 curl jq tar。(NVIDIA Isaac ROS)

bash 复制代码
sudo apt-get install -y curl jq tar

5)一个更省事的"容器内一键安装脚本"

把下面这个脚本存成:

/mnt/nova_ssd/workspaces/isaac_ros-dev/scripts/install_inside_container.sh

bash 复制代码
#!/usr/bin/env bash
set -euo pipefail

source /opt/ros/humble/setup.bash

sudo apt-get update

sudo apt-get install -y \
  curl jq tar \
  ros-humble-isaac-ros-visual-slam \
  ros-humble-isaac-ros-examples \
  ros-humble-isaac-ros-nvblox \
  ros-humble-navigation2 \
  ros-humble-nav2-bringup \
  ros-humble-robot-localization

# Optional: RealSense users only
# sudo apt-get install -y ros-humble-isaac-ros-realsense

rosdep update || true
rosdep install isaac_ros_nvblox || true

echo "Done."

执行方式:

bash 复制代码
cd ${ISAAC_ROS_WS}
bash scripts/install_inside_container.sh

这份脚本里用到的包名都来自上面的官方 quickstart 和官方 Nav2 文档。(NVIDIA Isaac ROS)


6)可选:如果你坚持在主机原生安装 ROS 2 Humble

Isaac ROS 官方建议容器内开发,所以这一步不是必须。ROS 2 Humble 官方 Ubuntu deb 安装页说明 Ubuntu Jammy 22.04 提供 deb 包,推荐先 apt upgrade,然后安装 ros-humble-desktop。(ROS Documentation)

bash 复制代码
sudo apt install software-properties-common
sudo add-apt-repository universe
sudo apt update && sudo apt install curl -y

export ROS_APT_SOURCE_VERSION=$(curl -s https://api.github.com/repos/ros-infrastructure/ros-apt-source/releases/latest | grep -F "tag_name" | awk -F'"' '{print $4}')
curl -L -o /tmp/ros2-apt-source.deb "https://github.com/ros-infrastructure/ros-apt-source/releases/download/${ROS_APT_SOURCE_VERSION}/ros2-apt-source_${ROS_APT_SOURCE_VERSION}.$(. /etc/os-release && echo ${UBUNTU_CODENAME:-${VERSION_CODENAME}})_all.deb"

sudo apt update
sudo apt upgrade
sudo apt install -y ros-humble-desktop

我对 Orin NX 16GB 的建议仍然是:主开发环境放在 Isaac Dev Docker,主机原生 ROS 只在你确实需要 GUI 工具或宿主调试时再装。 这也是顺着 Isaac ROS 官方建议来的。(NVIDIA Isaac ROS)


7)推荐 bringup 顺序

Isaac ROS Visual SLAM 的官方包是 双目 + 可选 IMU → 里程计 ;Nvblox 是 深度/3D LiDAR + 位姿 → 3D 重建和 2D costmap ;Nav2 官方又建议用 robot_localization 做平滑融合的 odom -> base_link。所以我建议 bringup 顺序是:驱动 → TF/标定 → robot_localization → Visual SLAM → Nvblox → Nav2 。(GitHub)

7.1 主机启动后先检查

bash 复制代码
docker info
ls /mnt/nova_ssd/workspaces/isaac_ros-dev

7.2 进入 Isaac Dev Docker

bash 复制代码
cd ${ISAAC_ROS_WS}/src/isaac_ros_common
./scripts/run_dev.sh

7.3 容器内先 source

bash 复制代码
cd ${ISAAC_ROS_WS}
source /opt/ros/humble/setup.bash
[ -f install/setup.bash ] && source install/setup.bash || true

7.4 bringup 顺序建议

我建议你把自己的系统拆成这 5 个 launch 层:

text 复制代码
1. sensors.launch.py
   - 相机驱动
   - IMU 驱动
   - LiDAR 驱动

2. tf_and_calibration.launch.py
   - static_transform_publisher
   - camera_info / 标定参数

3. localization_ekf.launch.py
   - robot_localization ekf_node
   - 输出 odom -> base_link

4. visual_slam.launch.py
   - isaac_ros_visual_slam
   - 输出视觉/惯导 odom

5. reconstruction_nav.launch.py
   - isaac_ros_nvblox
   - nav2

7.5 典型启动命令

你自己的包名先假设叫 your_robot_bringup

bash 复制代码
# 终端 1:传感器
ros2 launch your_robot_bringup sensors.launch.py

# 终端 2:静态 TF 和标定
ros2 launch your_robot_bringup tf_and_calibration.launch.py

# 终端 3:EKF
ros2 launch your_robot_bringup localization_ekf.launch.py

# 终端 4:Visual SLAM
ros2 launch isaac_ros_visual_slam isaac_ros_visual_slam.launch.py

# 终端 5:Nvblox + Nav2(建议封装到你自己的 launch)
ros2 launch your_robot_bringup reconstruction_nav.launch.py

Visual SLAM 官方 API 页给出的基本用法就是 ros2 launch isaac_ros_visual_slam isaac_ros_visual_slam.launch.py。(NVIDIA Isaac ROS)


8)我建议你长期固定下来的目录和职责

text 复制代码
${ISAAC_ROS_WS}/
├── src/
│   ├── isaac_ros_common/        # NVIDIA 官方
│   ├── your_robot_bringup/      # 你自己的 launch / config / params
│   ├── your_sensor_drivers/     # 相机/IMU/LiDAR 驱动
│   └── your_localization_stack/ # EKF / 自定义桥接节点
├── config/
│   ├── calibration/
│   ├── robot_localization/
│   ├── nav2/
│   └── sensors/
├── scripts/
│   ├── install_inside_container.sh
│   ├── start_dev_docker.sh
│   ├── bringup_all.sh
│   └── record_bag.sh
├── bags/
└── logs/

其中 ${ISAAC_ROS_WS} 放到 SSD 是官方推荐;其余分层是为了后面你加 LiDAR-Camera-IMU 标定、录包、Nav2、目标检测时不把工作区搅乱。(NVIDIA Isaac ROS)


9)一条最实用的建议

先不要把 FAST_LIO / FAST-LIVO2 和这套主系统混装在同一个 OS 环境里。 Isaac ROS 3.2 文档明确写了:包按 ROS 2 Humble 测试,且 ROS 1 Noetic 不支持和 ROS 2 Humble 在同一 OS 环境里混用 。所以你先把 Orin NX 16GB 的主线跑成 Docker + Humble + Isaac ROS + Nav2 ,后面再单独给学术栈开一套环境,会省很多时间。(NVIDIA Isaac ROS)

如果基于源码安装,单独编写。以上容器内部分通过apt install安装。

相关推荐
EMTime39 分钟前
Docker运行OpenWRT
运维·docker·容器
lolo大魔王1 小时前
Linux 文件系统超全面详解(原理、结构、挂载、分区、inode、日志、管理命令)
linux·运维·服务器
zyl837214 小时前
Docker 使用手册
运维·docker·容器
古月方枘Fry4 小时前
MGRE实验
运维·服务器
stolentime4 小时前
FreeDomain 本地开发环境快速搭建指南
运维·服务器·网络
feasibility.5 小时前
ROS2+Gazebo+VLM服务:纯仿真环境下的具身智能闭环系统| 大脑-小脑分离控制
人工智能·机器人·ros·仿真·具身智能·vla·vlm
“码”力全开5 小时前
解耦异构算力与多协议接入:基于Docker与源码交付的开源企业级GB28181/RTSP边缘计算AI视频管理平台架构深度解析
人工智能·docker·开源
bush46 小时前
嵌入式linux学习记录四
linux·运维·学习
maomao大哥闯天下6 小时前
K8s如何实现滚动更新、健康检查与探测机制
docker·容器·kubernetes
kaisun646 小时前
Docker 构建网络问题排查
网络·docker·eureka