计算机视觉/视频分析

使用 NVIDIA Isaac 模拟和本地化 Husky 机器人

 

由 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)。

Husky motor control graph screenshot.
图 1.从 ROS 2 主题加载 Husky 时自动生成的电机控制动作图

脚本会为每个摄像头生成一个图形,以便在 ROS 2 主题中发布输出。每个摄像头都有 ROS 2 图像消息和摄像头信息。

Husky camera control graph screenshot.
图 2.具有分辨率配置的摄像头图形和发布 ROS 2 主题

加载所有图形并成功导入 URDF 后,新的 Husky 机器人将出现在 Isaac Sim 中,如图 3 所示。

Husky robot on NVIDIA Isaac Sim screenshot.
图 3.具有 Husky 和所有摄像头输出的 NVIDIA Isaac Sim 2023.1.0

成功加载 Husky 后,将提供适用于 ROS 2 的不同选项,包括摄像头流、电机控制器和其他辅助输出。您可以使用以下命令快速检查其他终端中的运行内容:

ros2 topic list
Husky ROS 2 topics on terminal screenshot.
图 4.所有 Husky ROS 2 主题列表

当 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.

3D-generated map on rviz2 with Husky robot.
图 5.正在移动的 Husky 生成 3D 地图

设置演示

运行此演示有两种方法:直接从工作站运行,或使用硬件在环 (HIL) 配置。本节介绍每个选项的设置要求。

在选择任何选项之前,请确保安装了最新版本的 Isaac Sim。要查看详细的安装说明,请访问开始使用 NVIDIA Omniverse页面。

注意:下载完成后,请勿启动 Isaac Sim.

Husky 演示工作站版本

要运行 Husky 演示,您需要一台配备 NVIDIA RTX GPU 的工作站,并且已安装最新版本的 NVIDIA Isaac SimROS 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 正在运行,环境已完全加载。

Screenshot of terminal with Isaac ROS prompt.
图 6.终端带有带有 Isaac ROS 提示的 Docker 容器,等待命令
Screenshot of Isaac Sim with empty environment loaded
图 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 地址。如果您使用主机名,则需要通过工作站进行远程连接。

我们所需的组件使用以下配置运行:

图 8 展示了如何配置硬件环境。

Diagram of hardware setup. From the left is a desktop with an NVIDIA RTX graphic card, router (center), and an NVIDIA Jetson Orin Nano Developer Kit (right).
图 8.硬件设置: NVIDIA RTX 显卡(左)、路由器(中)和 NVIDIA Jetson Orin Nano 开发者套件(右)内的桌面

安装并运行

系统准备就绪后,请克隆该演示,并使用以下命令在工作站上试用:

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)。

Remote terminal to Jetson Orin Nano with Isaac ROS running.
图 9.在 Jetson Orin Nano 上运行并传输数据的 Isaac ROS

驾驶您的哈士奇

假设 Isaas Sim 和 Isaac ROS 都已启动并运行(根据您的偏好在工作站或 Jetson 上运行),且没有任何问题,您应该能够在rviz完成本地化后,应可开始构建 3D 地图(图 10)。

Husky localized on rviz.
图 10.基于rviz并使用 NvBlox 绘制 3D 地图的第一部分

现在,您可以使用键盘、操纵杆或 Nav2 驱动 Husky.只需简单几步,即可控制 Husky 在环境中的移动。

总结

本文介绍了如何使用 NVIDIA Isaac ROS 操作 Husky 机器人,包括如何加载由机器人描述衍生的 URDF,以及如何在rviz.此演示可以各种方式运行,可以直接从带有 NVIDIA RTX 显卡的工作站运行,也可以在硬件在环配置中运行,Isaac ROS 在 NVIDIA Jetson 上运行。

想要深入了解 Isaac Sim 和 Isaac ROS?请查看我们新推出的 Isaac ROS 办公时间 视频系列,在 YouTube 上观看。同时,欢迎访问 NVIDIA 开发者机器人论坛

 

标签