全文 - Isaac ROS 02 - Getting Started
Isaac ROS 文档翻译(续)
页面 7:单目相机标定 (Monocular Camera Calibration)
原文:https://nvidia-isaac-ros.github.io/getting_started/hardware_setup/sensors/camera_calibration.html
单目相机标定
-
按照「开发环境设置」中的说明设置您的开发环境。
-
打印一个具有已知尺寸的大型棋盘格。
本教程使用 6×8 棋盘格,方格尺寸为 200mm。标定使用棋盘格的内部顶点,因此一个「7×9」的棋盘使用如下示例中的内部顶点参数「6×8」。可以在此处下载特定尺寸的棋盘格。
-
克隆 ROS 2
usb_cam包:
cd ${ISAAC_ROS_WS}/src && \
git clone -b ros2 https://github.com/ros-drivers/usb_cam
注意:您的相机厂商可能会提供特定的 ROS 2 兼容相机驱动包,可用于替代
usb_cam包。
- 使用
run_dev.sh脚本启动 Docker 容器:
cd ${ISAAC_ROS_WS}/src/isaac_ros_common && \
./scripts/run_dev.sh
- 在容器内,构建并 source 工作空间:
cd /workspaces/isaac_ros-dev && \
colcon build --symlink-install && \
source install/setup.bash
- 运行
usb_cam图像发布节点:
ros2 run usb_cam usb_cam_node_exe --remap __ns:=/my_camera --ros-args -p framerate:=30.0 -p image_height:=720 -p image_width:=1280
- 使用
run_dev.sh脚本将另一个终端附加到 Docker 容器:
cd ${ISAAC_ROS_WS}/src/isaac_ros_common && \
./scripts/run_dev.sh
- 运行相机标定器:
ros2 run camera_calibration cameracalibrator --size 6x8 --square 0.20 image:=/my_camera/image_raw camera:=/my_camera
-
完成此相机标定教程中的第 6-8 步。
-
确保您按下 Calibrate(标定)按钮,然后按下 Save(保存)按钮。
您应该在第二个终端中看到以下行:
('Wrote calibration data to', '/tmp/calibrationdata.tar.gz')标定文件将存储在
/tmp/calibrationdata.tar.gz。 -
标定文件保存后,在每个终端中输入
Ctrl+C以停止节点。 -
将标定文件移动到所需位置:
cd /workspaces/isaac_ros-dev/src/<isaac_ros_metapackage>/<isaac_ros_package>/config/ && \
tar -xvf /tmp/calibrationdata.tar.gz -C ./ ost.yaml && \
mv ost.yaml camera_info.yaml
页面 8:Isaac Sim 设置 (Isaac Sim Setup)
原文:https://nvidia-isaac-ros.github.io/getting_started/isaac_sim/index.html
Isaac Sim 是 NVIDIA 基于 Omniverse 的机器人仿真平台。
Isaac Sim 可用于运行和测试 ROS 2 应用。我们有两种配置系统的方式:
- 软件在环 (SIL):指被测软件不在目标硬件平台上运行。例如,在 x86 上测试 Isaac ROS 包,然后再部署到 Jetson 设备上。
- 硬件在环 (HIL):指被测软件在目标硬件平台上运行。例如,在 Jetson 设备上测试 Isaac ROS 包,然后再部署。
在这两种配置中,Isaac Sim 始终在 x86_64 机器上运行,提供传感器数据与世界信息。
Isaac Sim 5.0 与 5.1
-
安装 Isaac Sim,选择适当的工作环境:
- Native(原生)
- Docker
- Cloud(云端)
注意:本教程假设使用 Isaac Sim 的 Native 环境。
-
按照「Running Native ROS」说明,确保安装了 ROS 2 和所需包,以成功启用 Omniverse Isaac Sim 中的 ROS 2 Bridge。
-
按照说明启动 Isaac Sim App Selector 窗口,然后点击 Open in Terminal 按钮。
-
如果您没有系统级 ROS 2 安装,请按照此处
ROS 2 -> Humble下的步骤操作。可选地,如果需要
ROS_DOMAIN_ID来创建独立的逻辑网络,请在同一终端中运行以下命令:export ROS_DOMAIN_ID=<your_domain_id> -
启动 Isaac Sim:
./isaac-sim.sh -
按如下所示打开 Isaac ROS 示例场景。
-
继续执行您特定 Isaac ROS 包教程中的后续步骤。
注意:如果之前设置了
ROS_DOMAIN_ID环境变量,在运行示例应用前请确保已设置该变量。
页面 9:Docker 开发环境 (Docker Development Environment)
原文:https://nvidia-isaac-ros.github.io/concepts/docker_devenv/index.html
开发环境
Isaac ROS 开发环境在目标平台的 Docker 容器中使用 run_dev.sh 脚本运行。在您的机器上设置好包含您的包、第三方包以及一个或多个 Isaac ROS 包的 ROS 工作空间后,您可以使用此脚本启动一个包含所有系统库和依赖项的 Docker 容器,以进行构建。
run_dev.sh 设置了一个包含 ROS 2 和关键版本 NVIDIA 框架的开发环境,为 x86_64 和 Jetson 平台做好准备。此脚本为主机准备了一个支持配置的 Docker 镜像,并将您带入容器内运行的 bash 提示符。从这里,您可以执行 ROS 2 构建/运行命令,您的主机工作空间文件会被挂载到容器中,并可在主机和容器中编辑。注意:如果您在脚本运行时再次运行它,它会将一个新的 shell 附加到同一运行中的容器。
$PATH_TO_ISAAC_ROS_COMMON/scripts/run_dev.sh -d $PATH_TO_ROS_WORKSPACE
有关 run_dev.sh 参数的完整描述,请参阅此处。
镜像键 (Image Keys)
run_dev.sh 准备一个基础 Docker 镜像,并将您的目标工作空间挂载到运行中的容器。基础 Docker 镜像本身由 build_image_layers.sh 脚本组装,该脚本解析一个称为镜像键 (image key) 的点分隔字符串。镜像键指定了要按顺序构建为层的一系列匹配 Dockerfile。
build_image_layers.sh 将对应的 Dockerfile 与镜像键匹配。例如,镜像键 first.second.third 可以匹配 { Dockerfile.first, Dockerfile.second, Dockerfile.third },run_dev.sh 将构建 Dockerfile.first 的镜像,然后使用该镜像作为基础镜像构建 Dockerfile.second,依此类推。文件匹配会寻找最大子序列,因此 first.second.third 也可以匹配 { Dockerfile.first.second, Dockerfile.third },具体取决于搜索路径中存在哪些文件。
预构建镜像
作为调用 run_dev.sh 时构建镜像准备的一部分,Dockerfile 将与目标镜像键匹配。确定 Dockerfile 后,build_image_layers.sh 将检查远程 Docker 仓库中是否存在与匹配 Dockerfile 哈希值匹配的镜像。如果存在,它将拉取该镜像并使用它,而不是尝试在本地构建镜像。如果您更改了任何 Dockerfile 的内容,您可能会更改哈希值,并导致 build_image_layers.sh 在本地重新构建 Docker 镜像。
NVIDIA 在 NVCR (NVIDIA Container Registry) 上为标准镜像键 aarch64.ros2_humble 和 x86_64.ros2_humble 提供预构建的 Docker 镜像,以方便用户使用。如果您本地副本的 Dockerfile.x86_64、Dockerfile.aarch64 和 Dockerfile.ros2_humble 与这些预构建镜像的哈希内容匹配,run_dev.sh 将找到并下载它们作为构建基础,而不是从头开始。
以下在 .isaac_ros_common-config 中配置的键可让您确定将检查哪些远程仓库。示例 .isaac_ros_common-config 文件:
CONFIG_IMAGE_KEY=ros2_humble.mine
CONFIG_DOCKER_SEARCH_DIRS=(../ros_ws/src/isaac_ros_common/docker ../lib/src/gxf/docker)
CONFIG_CONTAINER_NAME_SUFFIX=mysuffix
BASE_DOCKER_REGISTRY_NAMES=("nvcr.io/isaac/ros" "some.other/image/name")
离线开发环境
如果您之前已经构建了基础镜像,并且希望 run_dev.sh 不要尝试重建基础镜像或执行任何可能需要互联网连接的操作,您可以使用 -b/--skip_image_build 参数以离线方式运行。
页面 10:Isaac ROS Common 仓库
原文:https://nvidia-isaac-ros.github.io/repositories_and_packages/isaac_ros_common/index.html
概述
Isaac ROS Common 仓库包含一系列用于构建、测试和使用 Isaac ROS 的基本包。
有关已知问题的解决方案,请参阅「故障排除」部分。
支持的平台
此包设计并测试为与在以下平台上运行的 ROS 2 Jazzy 兼容:
- Jetson
- 配备 NVIDIA GPU 的 x86_64 系统
- DGX Spark 工作站
其他基于 GB10 的平台可能可以运行,但不在测试矩阵中,我们无法保证其行为。
Isaac ROS 环境
为简化开发,我们强烈建议利用 Isaac ROS CLI,按照以下步骤操作。这可以简化所有支持平台上依赖项正确版本的开发环境设置。
注意:所有 Isaac ROS 快速入门、教程和示例都设计为以 Isaac ROS CLI 管理的环境为前提。
自定义开发环境
要自定义开发环境,请参阅本指南。
更新日志
| 日期 | 变更 |
|---|---|
| 2026-04-30 | 兼容性和集成更新,适用于 Isaac ROS 4.4.0 版本 |
| 2026-03-23 | 引入 SIPL 相机框架和 LI Eagle 立体 CoE/HSB 相机的早期支持 |
| 2026-02-19 | 支持 DGX Spark 和 JetPack 7.1 |
| 2026-02-02 | 支持两种新的 Docker 可选开发和部署模式 |
| 2025-10-24 | 支持 ROS 2 Jazzy,将 Docker 开发容器功能移至 Isaac ROS CLI |
| 2024-12-10 | 重构 Dockerfile |
| 2024-09-26 | 更新至 Isaac ROS 3.1 |
| 2024-05-30 | 更新以兼容 JetPack 6.0 |
| 2023-10-18 | 更新至 Isaac ROS 2.0.0 |
| 2023-05-25 | 刷新 ROS 2 Humble |
| 2023-04-05 | 实验性支持 WSL2,合并镜像键 humble 和 nav2 为 ros2_humble |
| 2022-10-19 | 次要更新和错误修复 |
| 2022-08-31 | 更新以兼容 JetPack 5.0.2 |
| 2022-06-30 | 支持 ROS 2 Humble 和杂项错误修复 |
| 2022-06-16 | 更新 run_dev.sh 并移除 isaac_ros_nvengine |
| 2021-10-20 | 迁移至 NVIDIA-ISAAC-ROS,添加 isaac_ros_nvengine 和 isaac_ros_nvengine_interfaces 包 |
| 2021-08-11 | 初始发布至 NVIDIA-AI-IOT |
页面 11:Isaac ROS Visual SLAM
原文:https://nvidia-isaac-ros.github.io/repositories_and_packages/isaac_ros_visual_slam/index.html
概述
Isaac ROS Visual SLAM 提供了一个高性能、同类最佳的 ROS 2 包,用于 VSLAM(视觉同步定位与建图)。此包使用一个或多个立体相机,并可选择性地使用 IMU 来估计里程计,作为导航的输入。它通过 GPU 加速,在机器人应用中提供实时、低延迟的结果。VSLAM 为移动机器人(地面)提供额外的里程计来源,并可作为无人机的主要里程计来源。
VSLAM 提供了一种视觉估计机器人相对于其起始位置位置的方法,称为 VO(视觉里程计)。这在 GPS 不可用(如室内)或间歇性可用(如城市环境中建筑物阻挡 GPS 卫星视线)的环境中特别有用。此方法设计为使用多个立体相机帧和 IMU(惯性测量单元)作为输入。它使用立体图像对来寻找匹配的关键点。利用相机对之间的基线,它可以估计到关键点的距离。使用连续的图像,VSLAM 可以跟踪关键点的运动以估计相机的 3D 运动——然后用于计算里程计作为导航的输出。与经典的 VSLAM 方法相比,此方法使用 GPU 加速来实时查找和匹配更多关键点,并进行微调以最小化整体重投影误差。
关键点依赖于图像中的独特特征,这些特征可以在尺寸、方向、视角、光照和图像噪声变化的情况下被重复检测。在某些情况下,关键点的数量可能有限或完全不存在;例如,如果相机视野只看着一堵大的纯色墙,可能不会检测到任何关键点。如果关键点不足,此模块将使用 IMU 感知的运动来提供运动传感器,当测量时,可以提供里程计的估计。这种方法称为 VIO(视觉惯性里程计),在场景中缺乏可跟踪运动的独特特征时,可以提高估计性能。
准确性
VSLAM 是一个同类最佳的包,在 KITTI Visual Odometry / SLAM Evaluation 2012 上测量,具有最低的平移和旋转误差,适用于实时应用。
| 方法 | 运行时间 | 平移误差 | 旋转误差 | 平台 |
|---|---|---|---|---|
| VSLAM | 0.007s | 0.94% | 0.0019 deg/m | Jetson AGX Xavier aarch64 |
| ORB-SLAM2 | 0.06s | 1.15% | 0.0027 deg/m | 2 cores @ >3.5 GHz x86_64 |
除了标准基准测试的结果外,我们还在超过 1000 米的序列上测试 VSLAM 的闭环检测,覆盖室内和室外场景。
包
isaac_ros_visual_slam- Quickstart
- Try More Examples
- Coordinate Frames
- Troubleshooting
- API
isaac_ros_visual_slam_interfaces
相机系统要求
向此包提供数据的相机系统必须遵守以下规范:
| 规格 | 要求规格 |
|---|---|
| 最低目标图像帧率 | 30 赫兹 |
| 图像帧率中允许的最大抖动 | +/- 2 毫秒 |
| 立体相机内图像之间的最大预期偏移 | +/- 100 微秒 |
| 立体相机之间图像的最大预期偏移 | +/- 100 微秒 |
支持的平台
此包设计并测试为与在以下平台上运行的 ROS 2 Jazzy 兼容:
- Jetson
- 配备 NVIDIA GPU 的 x86_64 系统
- DGX Spark 工作站
其他基于 GB10 的平台可能可以运行,但不在测试矩阵中,我们无法保证其行为。
Isaac ROS 环境
为简化开发,我们强烈建议利用 Isaac ROS CLI,按照以下步骤操作。这可以简化所有支持平台上依赖项正确版本的开发环境设置。
注意:所有 Isaac ROS 快速入门、教程和示例都设计为以 Isaac ROS CLI 管理的环境为前提。
自定义开发环境
要自定义开发环境,请参阅本指南。
商业支持与源码访问
有关商业支持和源码访问,请联系 NVIDIA。
翻译完成。以上文档基于 NVIDIA Isaac ROS 官方文档,仅供参考。
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐



所有评论(0)