由 Clearpath Robotics 开发的 Husky 机器人,是一款专为室内和室外研究用途设计的多功能四轮平台。通过添加其他传感器和更换高级主板,可以轻松进行升级改造。本文介绍了如何使用官方 ROS 2 Husky 软件包,将机器人导入到 NVIDIA Isaac Sim 并进行模拟创建。
在此演示中,Husky 机器人搭载了 NVIDIA Jetson Orin Nano,并使用最新版本的 Isaac ROS 2 驱动。该系统包含了多个 Isaac ROS 软件包,用于机器人定位的 NVIDIA Isaac ROS VSLAM、地图构建的 NVIDIA Isaac ROS NvBlox 以及 Apriltag 检测的 NVIDIA Isaac ROS Apriltag。
Isaac ROS 演示的工作原理
Husky 统一机器人描述格式 (URDF) 从 ROS 2 主题中动态加载。它用于在 ROS 可视化中可视化机器人(rviz
)并将其加载到 NVIDIA Isaac Sim 中。
加载机器人后,主 Isaac Sim 脚本会创建一个图形来驱动机器人,将速度和转向命令转换为每个轮子的速度,并在一个tf
(图 1)。
脚本会为每个摄像头生成一个图形,以便在 ROS 2 主题中发布输出。每个摄像头都有 ROS 2 图像消息和摄像头信息。
加载所有图形并成功导入 URDF 后,新的 Husky 机器人将出现在 Isaac Sim 中,如图 3 所示。
成功加载 Husky 后,将提供适用于 ROS 2 的不同选项,包括摄像头流、电机控制器和其他辅助输出。您可以使用以下命令快速检查其他终端中的运行内容:
ros2 topic list
当 ROS 2 启动器脚本启动时,所有必需的 ROS 2 节点和 Isaac ROS 节点都将运行。机器人将构建一个连接的工作流,其中来自`Husky description`的 husky URDF 将用于 Isaac Sim 和机器人本身。Isaac ROS VSLAM 和 Isaac ROS NvBlox 还将用于定位和构建实时地图。
所有必要的软件包现已运行,机器人可以完全本地化,并能够构建 3D 地图。现在,您可以使用 Nav2、键盘或操纵杆进行驱动。
下一步是设置工作站和 Jetson Orin (可选),以便在 Isaac Sim 2023 和 Isaac ROS 2 上测试 Husky.
设置演示
运行此演示有两种方法:直接从工作站运行,或使用硬件在环 (HIL) 配置。本节介绍每个选项的设置要求。
在选择任何选项之前,请确保安装了最新版本的 Isaac Sim。要查看详细的安装说明,请访问开始使用 NVIDIA Omniverse页面。
注意:下载完成后,请勿启动 Isaac Sim.
Husky 演示工作站版本
要运行 Husky 演示,您需要一台配备 NVIDIA RTX GPU 的工作站,并且已安装最新版本的 NVIDIA Isaac Sim 和 ROS 2 Humble。请确保安装的是桌面版本。
sudo apt install ros-humble-desktop
安装并运行
系统准备就绪后,您可以使用以下脚本克隆演示并在工作站上试用:
git clone https://github.com/NVIDIA-AI-IOT/husky_demo.git
cd husky_demo
运行 Isaac Sim 后,使用以下命令启动 Isaac Sim,并使用构建为 Isaac ROS 的 Docker 和演示所需的所有软件包打开新终端:
./husky_demo.sh
此命令将:
- 克隆所有必需的资源库
- 克隆 Isaac ROS Docker 镜像
- 构建新图像
构建完成后,终端将等待新命令(图 6)。图 7 显示 Isaac Sim 正在运行,环境已完全加载。
现在,您可以在第二个终端上运行此脚本:
bash src/husky_isaac_sim/scripts/run_in_docker.sh
脚本run_in_docker.sh
将在运行 Isaac ROS 启动文件之前执行一些步骤。第一阶段将更新和构建所有必需的 ROS 2 和 Isaac ROS 软件包。然后将执行启动文件:
ros2 launch husky_isaac_sim allinone.launch.py
此 ROS 2 脚本会启动所有 Isaac ROS 软件包,以定位机器人并开始映射和rviz
在地图上可视化哈士奇
该脚本还将在环境中加载 Husky,并自动设置摄像头和控制器。
Husky 演示 HIL 版本
对于 HIL 版本,您需要一个配备 NVIDIA RTX GPU 和最新版 NVIDIA Isaac Sim 2023.1.0 的工作站,以及一个路由器和一个 NVIDIA Jetson Orin Nano.(请注意,其他 Jetson Orin 型号也将完成这项工作。)
在工作站和 Jetson 之间建立有线连接非常重要,强烈建议在二者之间使用良好的路由器。请记住,工作站和 Jetson 之间会共享大量数据,因此 Wi-Fi 连接是不够的。
您的 NVIDIA Jetson Orin Nano 必须使用最新的 Jetpack 5.1.2 并已完全安装。保留 IP 地址。如果您使用主机名,则需要通过工作站进行远程连接。
我们所需的组件使用以下配置运行:
- 配备 Ubuntu 22.04 的 x86/64 机器
- NVIDIA RTX GPU
- 使用 Jetpack 5.1.2 的 NVIDIA Jetson Orin Nano 开发者套件
- 路由器和线缆
图 8 展示了如何配置硬件环境。
安装并运行
系统准备就绪后,请克隆该演示,并使用以下命令在工作站上试用:
git clone https://github.com/NVIDIA-AI-IOT/husky_demo.git
cd husky_demo
运行后,使用以下命令:
./husky_demo.sh --HIL
此脚本将自动执行以下操作:
- 克隆此演示所需的所有资源库
- 构建所有 ROS 2 软件包
- 启动 Isaac Sim
构建完成后,终端将等待新命令。运行以下脚本:
ros2 launch husky_isaac_sim robot_display.launch.py
您将在工作站上看到基于 Isaac Sim 的 Husky 图像。
接下来,打开一个新终端,以远程连接到 NVIDIA Jetson Orin 系列。
登录 Jetsterminal 后,克隆 Husky 演示资源库:
git clone https://github.com/NVIDIA-AI-IOT/husky_demo.git
cd husky_demo
运行后,使用以下命令:
./husky_demo.sh
此脚本将自动执行以下操作:
- 克隆此演示所需的所有资源库
- 克隆 Isaac ROS docker 镜像
- 构建新图像
接下来,从 Docker 容器中运行以下脚本:
bash src/husky_isaac_sim/scripts/run_in_docker.sh
此脚本将自动执行以下操作:
- 构建所有 ROS 2 软件包
- 启动 Isaac ROS
然后,您将看到终端上运行的所有 Isaac ROS 软件包(图 9)。
驾驶您的哈士奇
假设 Isaas Sim 和 Isaac ROS 都已启动并运行(根据您的偏好在工作站或 Jetson 上运行),且没有任何问题,您应该能够在rviz
完成本地化后,应可开始构建 3D 地图(图 10)。
现在,您可以使用键盘、操纵杆或 Nav2 驱动 Husky.只需简单几步,即可控制 Husky 在环境中的移动。
总结
本文介绍了如何使用 NVIDIA Isaac ROS 操作 Husky 机器人,包括如何加载由机器人描述衍生的 URDF,以及如何在rviz
.此演示可以各种方式运行,可以直接从带有 NVIDIA RTX 显卡的工作站运行,也可以在硬件在环配置中运行,Isaac ROS 在 NVIDIA Jetson 上运行。
想要深入了解 Isaac Sim 和 Isaac ROS?请查看我们新推出的 Isaac ROS 办公时间 视频系列,在 YouTube 上观看。同时,欢迎访问 NVIDIA 开发者机器人论坛。