3.Isaac入门

news2025/1/12 18:09:46

Isaac入门

本节提供有关如何开始开发和运行 Isaac 应用程序的指南。

文章目录

  • Isaac入门
    • 教程和示例应用程序
    • 运行应用程序
    • 应用程序控制台选项
    • 在 Jetson 上部署和运行
    • Python 应用程序支持
    • 使用分布式工作区
    • 使用 Docker
    • 安装依赖
    • 创建 Isaac SDK 开发镜像

在这里插入图片描述

教程和示例应用程序

有一个可用的 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,然后运行下面提到的命令。

  1. 在主机系统上使用以下命令构建示例应用程序:

    bob@desktop:~/isaac/sdk$ bazel build //apps/samples/stereo_dummy
    
  2. 使用以下命令运行示例应用程序:

    bob@desktop:~/isaac/sdk$ bazel run //apps/samples/stereo_dummy
    

    bazel run 命令首先构建然后运行应用程序。 如果你想运行一个应用程序 bazel run 就足够了。 记得如上所述在存储库的根文件夹中运行 bazel run

  3. 应用程序运行后,通过在浏览器中打开 http://localhost:3000 打开可视化前端。

    如果你想运行带有额外配置参数的应用程序,你可以在命令行上传递这些配置文件,如下所示:

    bob@desktop:~/isaac/sdk$ bazel run //apps/samples/stereo_dummy -- --config more_config.json
    

注意双破折号--将 bazel 的参数与应用程序的参数分开。

以下 bazel 命令很有用:

  • 使用以下命令在 GDB 中构建并运行用于调试的应用程序(在本例中为 pose_tensorrt_inference):
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

  • 运行 linter 检查:
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 -- <app_path> <options> 提供以下控制台选项。

注意
用 Python 或 C 编写的应用程序可能具有独特的控制台选项,而不是下面显示的那些。 可以使用 bazel run -- <app_path> --help 检索独特的选项。

  • --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:在应用程序停止之前写入性能报告的文件名

在 Jetson 上部署和运行

本节简要说明如何将应用程序从桌面计算机部署到机器人以及如何运行它。

Isaac SDK 完全支持 Jetson 的交叉编译。 不建议在 Jetson 本身上编译源代码。

以下两个步骤只需运行一次:

确保您的桌面计算机上有 SSH 密钥。

使用您用于登录机器人的用户名和 IP,使用类似于以下的命令将您的 SSH 身份复制到机器人:

  1. 确保您的桌面计算机上有 SSH 密钥。

  2. 使用您用于登录机器人的用户名和 IP,使用类似于以下的命令将您的 SSH 身份复制到机器人:

    bob@desktop:~/isaac/sdk$ ssh-copy-id <username_on_robot>@<robot_ip>
    

    其中 <username_on_robot> 是您在机器人上的用户名,<robot_ip> 是机器人的 IP 地址。

    您可能需要将机器人连接到屏幕以获取其 IP 地址。

  3. 要在机器人上运行 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>
    
    

    其中 <robot_ip> 是机器人的 IP 地址,<username_on_robot> 是您在机器人上的用户名。

    注意
    如果未使用 –remote_user 选项指定用户名,则使用的默认用户名是 nvidia。

    -d jetpack45 选项指定我们正在使用 Jetpack 版本 4.5.1 构建和部署到 Jetson 设备。

  4. 登录机器人运行应用程序:

    bob@jetson:~/isaac$ ssh ROBOTUSER@ROBOTIP
    
    
  5. 转到部署文件夹并运行应用程序:

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

  6. 应用程序运行后,在浏览器中连接到它并使用 websight 检查正在运行的应用程序。 为此,请在浏览器中导航至 http://ROBOTIP:3000。

如果你想运行带有额外配置参数的应用程序,你可以使用 --config 选项在命令行上传递这些配置文件,如下所示:

bob@desktop:~/isaac/sdk$ ./apps/samples/stereo_dummy/stereo_dummy --config more_config.json

Python 应用程序支持

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 并将其作为起点(如果需要)通过以下步骤:

  1. 下载 Isaac SDK 并将 TAR 存档解压缩到首选文件夹。

  2. 在上面的链接中下载 velodyne_lidar 存储库或根据需要进行分叉。

  3. 打开 velodyne_lidar 存储库中的 WORKSPACE 文件,根据需要更改工作区名称,并为 com_nvidia_isaac_engine 和 com_nvidia_isaac_sdk 指定 Isaac SDK 工作区的路径。

  4. 通过使用以下命令构建和运行工作区来测试设置:

bob@desktop:~/velodyne_lidar$ bazel build ...
bob@desktop:~/velodyne_lidar$ bazel run //packages/velodyne_lidar/apps:vlp16_sample
  1. 多写代码!

使用 Docker

Isaac SDK 开发可以在 Docker 容器中完成,允许团队使用标准环境,并在非 Linux 操作系统(例如 Windows 和 Mac OS)中使用该环境。 本节介绍如何构建和运行 Isaac SDK Docker 容器。

安装依赖

  1. 使用以下命令安装现成的 docker:
bob@desktop:~/isaac/sdk$ ../engine/engine/build/docker/install_docker.sh
  1. 按照安装指南中的步骤在现成的 Docker 上安装 NVIDIA docker。

创建 Isaac SDK 开发镜像

  1. 安装依赖项后,运行以下脚本创建用于 Isaac SDK 开发的 isaacbuild 镜像:
bob@desktop:~/isaac$ ./engine/engine/build/docker/create_image.sh
  1. 使用以下命令创建缓存卷以加快构建速度:
bob@desktop:~/isaac$ docker volume create isaac-sdk-build-cache
  1. 使用以下命令运行容器:
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

  1. 在容器内运行以下命令来构建 Isaac SDK:
bob@docker-container:~/isaac/sdk$ bazel build ...

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/143349.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【运维有小邓】实时告警通知

当网络上发生特定事件时&#xff0c;EventLog Analyzer可以通过多种方式进行响应。EventLog Analyzer可以实时生成告警 - 发送电子邮件或短信通知给指定的接收者 - 或运行由管理员提供的自定义脚本。通过所提供的多个选项&#xff0c;用户可以确保不会错过任何安全事件。EventL…

Python解题 - CSDN周赛第21期 - 接雨水

本期比赛都是比较基础的排序、查找&#xff0c;没有多少难度。不过有很多人反映第二题测试数据有问题&#xff0c;基本所有选手在本题上都没得分。最近官方每期比赛都会有类似的数据问题&#xff0c;虽然参赛者对数据有疑问&#xff0c;但从未得到解答&#xff0c;官方也未曾公…

十年云深时:天翼云的成长密钥

工业时代&#xff0c;我们通常以“用电量”作为指标&#xff0c;来衡量一个地方的经济发展水平。数字经济时代&#xff0c;“用云量”则与数字经济规模呈正相关。因此&#xff0c;中国数字化浪潮的持续推进&#xff0c;也让云计算行业的重要性与市场竞争性不断提升&#xff0c;…

【C语言】交换奇偶位和 offsetof 宏的实现

​&#x1f320; 作者&#xff1a;阿亮joy. &#x1f386;专栏&#xff1a;《阿亮爱刷题》 &#x1f387; 座右铭&#xff1a;每个优秀的人都有一段沉默的时光&#xff0c;那段时光是付出了很多努力却得不到结果的日子&#xff0c;我们把它叫做扎根 目录&#x1f449;交换奇偶…

2021年 APP个人信息使用态势分析报告

声明 本文是学习2021年APP个人信息使用态势分析报告. 下载地址 http://github5.com/view/55008而整理的学习笔记,分享出来希望更多人受益,如果存在侵权请及时联系我们 App违规行为处罚案例 某赚钱类App未明示信息收集规则被罚 经查公安机关调查&#xff0c;某网络科技公司开…

2023 CPA 会计-存货【刷题】

1. 存货的确认和初始计量 大元公司为增值税一般纳税人&#xff0c;增值税税率为13%。 这句话好像没有用 2019年购入材料300公斤&#xff0c;收到增值税发票注明价款1800万元&#xff0c;增值税税额是234万元。 增值税是在价款的基础上收取的&#xff0c;所以这批材料的价值就是…

【收集】缩写合集

AABB 全称&#xff1a;Axis Aligned Bounding Box参考 https://blog.csdn.net/qq_22822335/article/details/50930437AABB包围盒在游戏中&#xff0c;为了简化物体之间的碰撞检测运算&#xff0c;通常会对物体创建一个规则的几何外形将其包围。其中&#xff0c;AABB&#xff08…

【链表】关于链表,你该了解这些!

【链表】理论基础1 链表是什么1.1 单链表1.2 双链表1.3 循环链表2 链表的存储方式3 链表的定义3.1 C/C方式3.2 Java方式3.3 JavaScript方式4 链表的操作4.1 删除结点4.2 添加结点1 链表是什么 1.1 单链表 单链表是一种通过指针串联在一起的线性结构&#xff0c;每一个节点由两…

谷粒学苑项目-第一章数据库设计与项目结构

一、数据库设计 1、数据库 guli2、数据表 CREATE TABLE edu_teacher (id char(19) NOT NULL COMMENT 讲师ID,name varchar(20) NOT NULL COMMENT 讲师姓名,intro varchar(500) NOT NULL DEFAULT COMMENT 讲师简介,career varchar(500) DEFAULT NULL COMMENT 讲师资历,一句话说…

6个实用的红米手机技巧

❤️作者主页&#xff1a;IT技术分享社区 ❤️作者简介&#xff1a;大家好,我是IT技术分享社区的博主&#xff0c;从事C#、Java开发九年&#xff0c;对数据库、C#、Java、前端、运维、电脑技巧等经验丰富。 ❤️个人荣誉&#xff1a; 数据库领域优质创作者&#x1f3c6;&#x…

盐湖提锂纳滤膜后钙镁离子深度处理技术

盐湖提锂&#xff1a;大规模、低成本&#xff0c;全球锂资源供应主体的理想来源锂作为自然界中轻、标准电极电势低、电化学当量大的金属元素&#xff0c;是天生理想的“电池金属”&#xff0c;因此在要求高比能的动力和储能应用场景中将具备长期的需求刚性&#xff0c;被誉为“…

Skywalking简单入门使用

&#x1f3c6;今日学习目标&#xff1a; &#x1f340;Skywalking简单入门使用 ✅创作者&#xff1a;林在闪闪发光 ⏰预计时间&#xff1a;50分钟 &#x1f389;个人主页&#xff1a;林在闪闪发光的个人主页 &#x1f341;林在闪闪发光的个人社区&#xff0c;欢迎你的加入: 林…

软件测试/测试开发丨 | 想做App测试就一定要了解的App结构

性能测试 所谓的性能测试要在功能测试之后。 功能测试&#xff1a;关注能不能用 性能测试&#xff1a;关注好不好用 常见的性能关注点有&#xff1a; 接口响应时间&#xff1a;50毫秒 ~ 1000毫秒 吞吐量&#xff1a;1000万每天&#xff0c;2000万每天 ......10亿每天 TPS&a…

java面试题基本部分

一、Java 基础 1.Java常见基本类型如下 整数类&#xff08;byte、short、int、long&#xff09; 浮点类&#xff08;float、double&#xff09; 字符类&#xff08;char&#xff09; 布尔型&#xff08;boolean&#xff09;大小&#xff1a; boolean(8位 1字节) byte(8位 1字…

【数据结构与算法】Manacher算法

Manacher算法 https://github.com/SongJianHIT/DataStructurs-Algorithm/tree/main/src/algorithms/manacher 基本介绍 Manacher 算法常用于 求一个字符串中的最长回文子串。如&#xff1a;abc123321def 的最长回文子串为 123321。 计算字符串的最长回文字串最简单的算法就是…

Lattice CrossLink-Nx LIFCL-40应用连载8:MIPI DSI接口驱动LCD显示器

作者&#xff1a;Hello&#xff0c;Panda 一、案例需求 使用LIFCL-40-7MG121I FPGA的MIPI DSI硬核接口驱动7寸LCD显示器&#xff1a; &#xff08;1&#xff09;显示器&#xff1a;7寸&#xff0c;1024*600横屏&#xff0c;60Hz&#xff1b; &#xff08;2&#xff09;MIPI物…

计算机网络实验---Cisco Packet Tracer 实验

直接连接两台 PC 构建 LAN 用交换机构建 LAN 交换机接口地址列表 生成树协议&#xff08;Spanning Tree Protocol&#xff09; 路由器配置初步 静态路由 动态路由 RIP 动态路由 OSPF 基于端口的网络地址翻译 PAT 虚拟局域网 VLAN 虚拟局域网管理 VTP VLAN 间的通信 …

功率放大器电路图集(多种类功率放大电路)

关于功率放大器电路图集的问题是很多工程师都感兴趣和想了解的&#xff0c;今天就请安泰电子来为大家介绍一下多种类功率放大电路的内容。 一、功率放大电路介绍 1、一般情况来说功率放大电路的主要作用是让负载在不使信号失真或轻微失真的情况下获得最大功率。因此&#xff0c…

JavaScript 语法

文章目录JavaScript 语法JavaScript 语法JavaScript 字面量JavaScript 变量JavaScript 操作符JavaScript 语句JavaScript 关键字JavaScript 注释JavaScript 数据类型数据类型的概念JavaScript 函数JavaScript 字母大小写JavaScript 字符集JavaScript 语法 JavaScript 是一个程序…

Docker - Docker Compose;Docker Swarm

一、Docker Compose &#xff08;一&#xff09;Docker Compose介绍 Docker Compose是用于定义和运行多容器Docker应用程序的工具。通过Compose&#xff0c;您可以使用YML文件来配置应用程序需要的所有服务。然后&#xff0c;使用一个命令&#xff0c;就可以从YML文件配置中创…