本节提供有关如何开始开发和运行 Isaac 应用程序的指南。
有一个可用的 Isaac 网络研讨会,它解释了如何通过编写小代码和创建应用程序图来开发应用程序。
Isaac SDK 提供了 30 多个教程和示例来帮助您入门。 您可以在示例应用程序部分了解有关示例应用程序的更多信息。
例如,可以通过执行以下命令轻松运行示例应用程序:
bob@desktop:~/isaac/sdk$ bazel build //apps/samples/stereo_dummy
本节介绍如何在桌面上运行 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/sdk$ bazel build //apps/samples/stereo_dummy
使用以下命令运行示例应用程序:
bob@desktop:~/isaac/sdk$ bazel run //apps/samples/stereo_dummy
bazel run
命令首先构建然后运行应用程序。 如果你想运行一个应用程序 bazel run
就足够了。 记得如上所述在存储库的根文件夹中运行 bazel run
。
应用程序运行后,通过在浏览器中打开 http://localhost:3000 打开可视化前端。
如果你想运行带有额外配置参数的应用程序,你可以在命令行上传递这些配置文件,如下所示:
bob@desktop:~/isaac/sdk$ bazel run //apps/samples/stereo_dummy -- --config more_config.json
注意双破折号--
将 bazel 的参数与应用程序的参数分开。
以下 bazel 命令很有用:
bob@desktop:~/isaac/sdk$ bazel build -c dbg //apps/samples/pose_tensorrt_inference
bob@desktop:~/isaac/sdk$ gdb --args bazel-bin/engine/alice/tools/main --app apps/samples/pose_tensorrt_inference/pose_tensorrt_inference.app.json
bob@desktop:~/isaac/sdk$ bazel build ...
bob@desktop:~/isaac/sdk$ bazel build //engine/gems/filters/examples:ekf_sin_exp
bob@desktop:~/isaac/sdk$ bazel test ... --jobs=1
bob@desktop:~/isaac/sdk$ bazel test //engine/gems/optimization/tests:pso_ackley
bob@desktop:~/isaac/sdk$ bazel test --config=lint ...
linter 需要 Python 2.7。 如果所有文件都未通过 linter 测试,则 Python 路径可能是问题所在。 尝试:
bob@desktop:~/isaac/sdk$ bazel test --python_path=/usr/bin/python2.7 --config=lint ...
C++ 应用程序由 Isaac Alice 引擎运行,它通过 bazel run --
提供以下控制台选项。
注意
用 Python 或 C 编写的应用程序可能具有独特的控制台选项,而不是下面显示的那些。 可以使用 bazel run --
检索独特的选项。
--max_duration
:在 [s|m|h] 中运行应用程序的最长持续时间
--app
:用于应用程序定义的 JSON 文件的文件名
--application_backup
:在应用程序停止之前存储整个应用程序 JSON 的文件名
--asset_path
:搜索资产的路径
--component_info_out
:如果启用,包含所有已注册组件信息的 JSON 对象将写入指定文件。
--config
以逗号分隔的 JSON 格式的配置文件列表,用于指定其他配置。 配置参数按照加载顺序写入,所以最新的文件优先。 或者,您可以指定将应用于所有节点名称的前缀。 格式为 prefix_string:path_to_file.config.json。
--config_backup
:应用程序停止前存储当前配置的文件名。
--graph
:JSON 格式的节点图文件的逗号分隔列表。 这可用于创建其他节点。 请注意,此选项可能会产生意想不到的副作用,具体取决于已加载的节点。
--locale
应用程序语言环境
--minidump_path
:发生崩溃时写入minidump文件的路径
--module_paths
:以逗号分隔的路径列表,从中加载模块的共享库
--more
:要加载的 JSON 格式的附加应用文件的逗号分隔列表
--performance_report_out
:在应用程序停止之前写入性能报告的文件名
本节简要说明如何将应用程序从桌面计算机部署到机器人以及如何运行它。
Isaac SDK 完全支持 Jetson 的交叉编译。 不建议在 Jetson 本身上编译源代码。
以下两个步骤只需运行一次:
确保您的桌面计算机上有 SSH 密钥。
使用您用于登录机器人的用户名和 IP,使用类似于以下的命令将您的 SSH 身份复制到机器人:
确保您的桌面计算机上有 SSH 密钥。
使用您用于登录机器人的用户名和 IP,使用类似于以下的命令将您的 SSH 身份复制到机器人:
bob@desktop:~/isaac/sdk$ ssh-copy-id <username_on_robot>@<robot_ip>
其中
是您在机器人上的用户名,
是机器人的 IP 地址。
您可能需要将机器人连接到屏幕以获取其 IP 地址。
要在机器人上运行 stereo_dummy 示例应用程序,首先使用以下命令将包部署到机器人:
bob@desktop:~/isaac/sdk$ ./../engine/engine/build/deploy.sh --remote_user <username_on_robot> -p //apps/samples/stereo_dummy:stereo_dummy-pkg -d jetpack45 -h <robot_ip>
其中
是机器人的 IP 地址,
是您在机器人上的用户名。
注意
如果未使用 –remote_user 选项指定用户名,则使用的默认用户名是 nvidia。
-d jetpack45 选项指定我们正在使用 Jetpack 版本 4.5.1 构建和部署到 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 中指定:code:-u OTHER_USER
到:code:deploy.sh
文件夹。
注意
要在部署后自动在机器人上运行应用程序,请使用 --run(或 -r)选项运行 deploy.sh,如下所示(来自 sdk/ 子目录):
./../engine/engine/build/deploy.sh --remote_user <username_on_robot> -p //apps/samples/stereo_dummy:stereo_dummy-pkg \
-d jetpack45 -h <robot_ip> --run
在第 3 步中使用 --run 选项会使 deploy.sh 有效地为您执行第 4 步和第 5 步。
应用程序运行后,在浏览器中连接到它并使用 websight 检查正在运行的应用程序。 为此,请在浏览器中导航至 http://ROBOTIP:3000。
如果你想运行带有额外配置参数的应用程序,你可以使用 --config
选项在命令行上传递这些配置文件,如下所示:
bob@desktop:~/isaac/sdk$ ./apps/samples/stereo_dummy/stereo_dummy --config more_config.json
Isaac SDK 提供基本的 Python 支持。 但是,在此版本中,对 Python 的支持处于实验状态。 API 不稳定或功能不完整。
//apps/samples/ping_python
中的教程类似于 C++ 的 ping 教程,但在 Python 中实现。 它适用于所有平台,不需要任何硬件。
如运行应用程序部分所述,在桌面系统上运行 Python 应用程序与运行 C++ 应用程序相同。 将 Python 应用程序部署到 Jetson 与部署 C++ 应用程序相同,如应用程序控制台选项中所述。
然而,在 Jetson 上运行 Python 应用程序略有不同。 必须使用run
脚本来设置 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”是您在桌面系统上的用户名。
要在单独的工作区中管理您的代码,请参阅示例 https://github.com/nvidia-isaac/velodyne_lidar
并将其作为起点(如果需要)通过以下步骤:
下载 Isaac SDK 并将 TAR 存档解压缩到首选文件夹。
在上面的链接中下载 velodyne_lidar 存储库或根据需要进行分叉。
打开 velodyne_lidar 存储库中的 WORKSPACE 文件,根据需要更改工作区名称,并为 com_nvidia_isaac_engine 和 com_nvidia_isaac_sdk 指定 Isaac SDK 工作区的路径。
通过使用以下命令构建和运行工作区来测试设置:
bob@desktop:~/velodyne_lidar$ bazel build ...
bob@desktop:~/velodyne_lidar$ bazel run //packages/velodyne_lidar/apps:vlp16_sample
Isaac SDK 开发可以在 Docker 容器中完成,允许团队使用标准环境,并在非 Linux 操作系统(例如 Windows 和 Mac OS)中使用该环境。 本节介绍如何构建和运行 Isaac SDK Docker 容器。
bob@desktop:~/isaac/sdk$ ../engine/engine/build/docker/install_docker.sh
bob@desktop:~/isaac$ ./engine/engine/build/docker/create_image.sh
bob@desktop:~/isaac$ docker volume create isaac-sdk-build-cache
bob@desktop:~/isaac$ docker run --mount source=isaac-sdk-build-cache,target=/root -v `pwd`:`pwd` -w `pwd`/sdk --runtime=nvidia -it isaacbuild:latest /bin/bash
bob@docker-container:~/isaac/sdk$ bazel build ...