Isaac SDK入门教程-首次使用
Isaac SDK入门教程-首次使用
说明:
- 介绍Isaac SDK中包含的示例和教程应用程序以及如何运行应用程序。
教程和示例
Isaac SDK提供了30多个教程和示例,可帮助您入门。
//apps/tutorials
中的教程演示了干净环境中的基本概念。//apps/samples
中的示例应用程序演示了各种GEM。许多教程都有硬件要求。
大多数示例和教程都附带一个BUILD文件和一个JSON文件。
JSON文件包含一个定义应用程序功能的计算图。
例如,相机示例应用程序具有相机节点和查看器节点。
相机节点获取图像并将它们发送到查看器节点以进行可视化。
JSON文件还可以包含用于指定各种配置参数的配置部分。
有时您可能必须根据硬件设置或平台调整配置。
有关如何在桌面上运行应用程序,请参阅运行应用程序一节。
将应用程序部署到Jetson设备并在Jetson上运行它将在Jetson上部署和运行一节中介绍。
以下部分介绍了一系列教程和示例,以帮助您入门。
ping示例
- 介绍应用程序和codelet概念的教程。
- 它展示了如何使用codelet创建一个简单的应用程序。
- 您可以在本文档的“开发Codelet in C ++”部分中找到此应用程序的分步教程。
- 适合平台: Desktop, Jetson TX2, Jetson Xavier, Jetson Nano
- 硬件要求:无
ping_pong示例
- 基本ping教程的开发,它展示了如何将消息从一个节点传递到另一个节点。
- 适合平台: Desktop, Jetson TX/2, Jetson Xavier, Jetson Nano
- 硬件要求:无
proportional_control_cpp示例
- 一个中级教程,解释了如何为差分机器人基础编写基本比例控制器。
- 适合平台:Jetson TX2, Jetson Xavier, Jetson Nano
- 硬件要求:Segway
v4l2_camera示例
- 一个基本的示例应用程序,使用适用于Linux的视频(V4L2)连接到摄像机。
- 可以在Sight中看到摄像机图像。
- 您必须在Sight中添加一个窗口才能看到图像。有关详细信息,请参阅Windows菜单(左上角)。
- 确保在应用程序文件的配置部分中设置有效的分辨率。
- 适合平台:Desktop, Jetson TX2, Jetson Xavier, Jetson Nano
- 硬件:需要相机,例如Realsense或ZED相机。
- 一般的网络摄像头也可以工作。
april_tags示例
- 演示GPU加速AprilTag基准检测GEM。
- 需要连接的Realsense相机和打印的AprilTag。
- (如果需要,可以在屏幕上显示ApriTag。)
- 如果您没有Realsense摄像头,可以切换到与v4l2_camera教程相似的其他摄像头。
- 适合平台:Desktop, Jetson TX2, Jetson Xavier, Jetson Nano
- 硬件:需要相机和AprilTag
stereo_vo示例
- 一个基本的示例应用程序,连接到ZED相机,提供立体视觉测距。
- 适合平台:Desktop,Jetson TX2,Jetson Xavier,Jetson Nano
- 硬件:需要相机。
realsense_camera示例
连接到Realsense相机的基本示例应用程序。
可以在Sight中看到摄像机图像。
确保在应用程序文件的配置部分中设置有效的分辨率。
适合平台: Desktop,Jetson TX2,Jetson Xavier,Jetson Nano
硬件:需要Realsense相机。
zed_camera示例
- 连接到ZED相机的基本示例应用程序。 可以在视线中看到摄像机图像。 确保在应用程序文件的配置部分中设置有效的分辨率。
- 适合平台: Desktop,Jetson TX2,Jetson Xavier,Jetson Nano
- 硬件:需要ZED相机。
image_undistortion示例
- 一个示例应用程序,用于纠正使用ZED相机拍摄的图像中的失真。
- 可以在Sight中看到校正的效果。
- 您必须在Sight中添加一个窗口才能看到图像。有关详细信息,请参阅Windows菜单(左上角)。
- 适合平台: Desktop,Jetson Xavier
- 硬件:需要相机。
hgmm_matching示例
- 一个示例应用程序,演示使用Realsense相机进行点云匹配。
- 适合平台: Desktop,Jetson Xavier
- 硬件:需要Realsense相机。
stereo_matching_depth示例
- 演示粗到精立体匹配GEM的示例应用程序。
- 它适用于立体图像并计算深度图像。
- 适合平台: Desktop,Jetson TX2,Jetson Xavier
- 硬件:需要ZED相机。
运行应用程序
本节介绍如何在桌面上运行stereo_dummy示例应用程序。
通过使用应用程序的相应bazel目标名称,可以在类似的事情中运行所有其他应用程序。
例如,bazel目标名称具有以下形式:
//app/samples/stereo_dummy
。这是指
app/samples/stereo_dummy
文件夹中的应用程序stereo_dummy。如果要运行其他应用程序,则必须相应地更改目标名称。
请注意,所有bazel build和bazel run命令都应该在代码库的根文件夹中执行。
例如,如果您的根文件夹是/home/bob/isaac,则首先转到目录/home/bob/isaac,然后运行下面提到的命令。
- 在主机系统上使用以下命令构建示例应用程序:
bob@desktop:~/isaac$ bazel build //apps/samples/stereo_dummy
- 使用以下命令运行示例应用程序:
bob@desktop:~/isaac$ bazel run //apps/samples/stereo_dummy
- bazel run命令首先构建然后运行应用程序。
- 如果你想运行一个应用程序bazel运行就足够了。
- 如上所述,请记住在代码库的根文件夹中运行bazel run。
- 运行应用程序后,通过在浏览器中打开
http://localhost:3000
来打开可视化前端。
- 如果要运行具有其他配置参数的应用程序,可以在命令行上传递这些配置文件,如下所示:
bob@desktop:~/isaac$ bazel run //apps/samples/stereo_dummy -- --config more_config.json
- 注意双破折号 -- 将bazel的参数与应用程序的参数分开。
以下bazel命令很有用:
- 使用以下命令在GDB中构建并运行应用程序以进行调试(在此示例中为pose_tensorrt_inference):
bob@desktop:~/isaac$ bazel build -c dbg //apps/samples/pose_tensorrt_inference
bob@desktop:~/isaac$ gdb --args bazel-bin/engine/alice/tools/main --app apps/samples/pose_tensorrt_inference/pose_tensorrt_inference.app.json
- 构建全部程序:
bob@desktop:~/isaac$ bazel build ...
- 构建单一目标:
bob@desktop:~/isaac$ bazel build //engine/gems/filters/examples:ekf_sin_exp
- 运行所有测试:
bob@desktop:~/isaac$ bazel test ... --jobs=1
- 运行单一测试:
bob@desktop:~/isaac$ bazel test //engine/gems/optimization/tests:pso_ackley
- 运行linter检查:
bob@desktop:~/isaac$ bazel test --config=lint ...
- linter需要Python 2.7。
- 如果所有文件都没有通过linter测试,那么Python路径可能就是问题所在。
- 尝试:
bob@desktop:~/isaac$ bazel test --python_path=/usr/bin/python2.7 --config=lint ...
在Jetson上部署和运行
本节简要介绍如何将应用程序从台式机部署到机器人以及如何运行它。
Isaac SDK完全支持Jetson的交叉编译。
不建议在Jetson本身上编译源代码。
以下两个步骤只需运行一次:
1.确保桌面计算机上有SSH密钥。
- 使用用于在机器人上登录的用户名和IP将SSH身份复制到机器人,命令类似于以下命令:
bob@desktop:~/isaac$ ssh-copy-id ROBOTUSER@ROBOTIP
- 您可能需要将机器人连接到屏幕以获取其IP地址。
- 要在机器人上运行stereo_dummy示例应用程序,请首先使用以下命令将程序包部署到机器人:
bob@desktop:~/isaac$ ./engine/build/deploy.sh --remote-user ROBOTUSER -p //apps/samples/stereo_dummy:stereo_dummy-pkg -d jetpack42 -h ROBOTIP
- -d jetpack42选项指定我们使用Jetpack 4.2版构建和部署到Jetson设备。
- 登录到机器人以运行应用程序:
bob@jetson:~/isaac$ ssh ROBOTUSER@ROBOTIP
- 转到部署文件夹并运行应用程序:
bob@jetson:~/$ cd deploy/bob/stereo_dummy-pkg
bob@jetson:~/deploy/bob/stereo_dummy-pkg$ ./apps/samples/stereo_dummy/stereo_dummy
- 这里“bob”是您在主机系统上使用的用户名。
- 通过在步骤3中将-u OTHER_USER指定为deploy.sh,可以在不同的文件夹下进行部署。
- 应用程序运行后,在浏览器中连接到它并使用websight检查正在运行的应用程序。
- 为此,请在浏览器中导航到
http://ROBOTIP:3000
。 - 如果要运行具有其他配置参数的应用程序,可以在命令行上传递这些配置文件,如下所示:
bob@desktop:~/isaac$ ./apps/samples/stereo_dummy/stereo_dummy --config more_config.json
- 请注意,配置文件直接通过--config命令行参数传递。
Python应用程序支持
- Isaac SDK提供基本的Python支持。
- 但是,在此版本中,对Python的支持处于实验状态。
- API不稳定或功能不完整。
//apps/samples/ping_python
中的教程类似于C++的ping教程,但是用Python实现。它适用于所有平台,不需要任何硬件。
在桌面系统上运行Python应用程序与运行C ++应用程序相同,如运行应用程序一节中所述。
将部署Python应用程序部署到Jetson与部署C ++应用程序相同,如在Jetson上部署和运行中所述。
但是,在Jetson上运行Python应用程序略有不同。
必须使用运行脚本来设置Python所需的某些环境变量。
在Jetson上部署和运行的步骤5中,使用以下命令运行应用程序:
bob@jetson:~/$ cd deploy/bob/ping_python-pkg
bob@jetson:~/deploy/bob/ping_python-pkg$ ./run ./apps/tutorials/ping_python/ping_python.py
- “bob”是您桌面系统上的用户名。
获取最新文章: 扫一扫右上角的二维码加入“创客智造”公众号