按 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.04 和 arm64 。(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/。我建议保留这个根路径,再往下加你自己的 bringup、config、bags、scripts。(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-slam 和 ros-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
4.3 Nav2 和 robot_localization
Nav2 官方 Getting Started 里给出了 ros-$ROS_DISTRO-navigation2 和 ros-$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安装。