在Kaya上运行IsaacSDK
构建自己的 NVIDIA Kaya 机器人后,请按照本页中的步骤在其上运行一些示例应用程序。
文章目录
- 在Kaya上运行IsaacSDK
- 安装和设置
- 操纵杆应用程序
- 跟随我的应用程序
- 物体检测应用
- 地图应用
安装和设置
在 Kaya 上运行应用程序之前完成这些先决条件步骤:
-
按照 Jetson Nano 入门指南中的说明在 Jetson Nano 上安装 Jetson 操作系统。
-
按照 Getting Started With Jetson Nano 指南中的说明获取机器人的 IP 地址。
-
按照安装指南在 Jetson Nano 上安装 Isaac SDK 及其所有依赖项。
-
按照“应用程序控制台选项”部分中的步骤使用 Kaya 注册您的 SSH 密钥。
操纵杆应用程序
以下步骤部署一个简单的操纵杆应用程序,该应用程序使用配对的 PS4 控制器来控制 Kaya。 相同的步骤可用于在您的机器人上部署和运行其他应用程序。
-
要在 Kaya 上运行
//apps/kaya:joystick
游戏杆应用程序,请使用以下命令将包从桌面部署到 Kaya:bob@desktop:~/isaac/sdk$ ./../engine/engine/build/deploy.sh --remote_user <username_on_robot> -p //apps/kaya:joystick-pkg -d jetpack45 -h <robot_ip>
其中 <robot_ip> 是机器人的 IP 地址,<username_on_robot> 是您在 Kaya 上的用户名。
注意
如果未使用
--remote_user
选项指定用户名,则用户名默认为nvidia
。-d jetpack45
选项指定您正在使用 Jetpack 版本 4.5.1 构建和部署到 Jetson 设备。 -
登录Kaya
bob@desktop:~/isaac/sdk$ ssh <username_on_robot>@<robot_ip>
-
转到 Kaya 上的部署文件夹并运行应用程序:
bob@jetson:~/$ cd deploy/<bob>/joystick-pkg/ bob@jetson:~/deploy/<bob>/joystick-pkg$ ./apps/kaya/joystick
<bob>
是您在主机系统上的用户名。
默认情况下,控制器上的 L1 按钮用作 deadman 触发器。 仅当按下触发器时,机器人才会执行操纵杆命令。
跟随我的应用程序
以下步骤部署 Follow Me 应用程序,它将 Kaya 自主移动到指定的 AprilTag 基准点。 此应用程序结合了 AprilTag 检测、路径规划、控制和 Kaya 驱动程序。 它需要一个工作的英特尔实感摄像头来进行 AprilTag 检测和路径规划,并需要一个操纵杆来启用自主模式。
-
将
//apps/kaya:follow_me-pkg
部署到 Kaya,如操纵杆应用程序的第 1 步所示。 -
切换到 Kaya 上的目录并使用以下命令运行应用程序:
cd deploy/<your_username>/follow_me-pkg/ ./apps/kaya/follow_me
-
在
<robot_ip>:3000
的桌面浏览器上打开 Isaac Sight。 在右侧的 Application Configuration 面板中,单击“fiducial_as_goal
”并将“target_fiducial_id
”值更改为正在使用的AprilTag
的 ID。
如果您将 AprilTag 放在 RealSense 摄像头的视野内,您应该会在 Follower Kaya - Camera
窗口中看到检测到 AprilTag 并且计划的路径(显示为蓝线)将 Kaya 连接到 AprilTag。
如果你按住控制器上的 R1 按钮,Kaya 将进入自主模式并向 AprilTag 移动。 将 AprilTag 四处移动,同时将其保持在摄像头的视野范围内,Kaya 将跟随它四处移动。
物体检测应用
此应用程序使用 Kaya 上的 DetectNetv2 来执行对象检测。 DetectNetv2 模型经过训练可以识别网球。 以下是运行此应用程序的步骤。
-
将
//apps/kaya:object_detection-pkg
部署到 Kaya,如操纵杆应用程序的第 1 步所示。 -
切换到 Kaya 上的目录并使用以下命令运行应用程序:
cd deploy/<your_username>/object_detection-pkg/ ./apps/kaya/object_detection_kaya
-
在
<robot_ip>:3000
的桌面浏览器上打开 Isaac Sight。 您应该会看到实时摄像机图像。
将一个网球放在 Kaya 的相机前,您应该会在标记为“tennis_ball”
的对象周围看到一个边界框。 此示例是在有限的数据集上训练的,不能保证在所有情况和光照条件下都能正常工作。 要提高自定义环境中的模型准确性,请参阅在 docker 中训练自定义模型的说明或目标检测训练文档
地图应用
GMapping 应用程序演示了如何使用 Kaya 构建其环境的占用地图。 Kaya 通过其 RealSense 摄像头感知障碍物的深度,并使用车轮里程计和 IMU 更新自身状态。 然后它将障碍物深度和机器人状态信息发布到主机,主机构建地图。
这个应用程序有两个部分:运行在 Kaya 上的 gmapping_distributed_kaya
和运行在主机上的 gmapping_distributed_host
。
-
将
//apps/kaya:gmapping_distributed_kaya-pkg
部署到Kaya
,如操纵杆应用程序的第 1 步所示。 -
切换到 Kaya 上的目录并使用以下命令运行应用程序:
cd deploy/<your_username>/gmapping_distributed_kaya-pkg/ ./apps/kaya/gmapping_distributed_kaya
在
<nano_ip>:3000
的桌面浏览器上打开 Isaac Sight。 您应该会看到相机 RGB 和深度图像,以及机器人状态图。 -
使用操纵杆驾驶卡亚四处走动。 您应该看到正在更新的机器人状态。
-
在桌面系统上,打开
app/kaya/gmapping_distributed_host.app.json
并将tcp-subscriber
主机从“YOUR_NANO_IP_HERE”
更改为 Kaya 上 Jetson Nano 的 IP 地址。 -
使用以下命令构建并运行主机应用程序:
bazel build //apps/kaya:gmapping_distributed_host bazel run //apps/kaya:gmapping_distributed_host
-
在
localhost:3000
的桌面上打开 Isaac Sight。 您应该会看到 Kaya 正在构建的地图。 使用操纵杆驾驶 Kaya 并观察地图更新。
如果您发现地图更新存在性能问题,请转到 Isaac Sight 上的 Kaya 页面并通过取消选中 Channels - viewer
来禁用相机 RGB 和深度可视化。