14.Isaac教程--Jetbot应用示例

news2024/10/6 10:37:01

Jetbot应用示例

ISAAC教程合集地址: https://blog.csdn.net/kunhe0512/category_12163211.html

本节介绍如何将 Isaac SDK 与 NVIDIA 新的高性能模拟平台 Omniverse 集成,以让 Jetbot 在模拟中跟随球。 本节作为使用三个 Jetbot 应用程序进入 Omniverse 和 Isaac SDK 的 Python API 的有价值的切入点。 所有示例应用程序都存在于 jetbot_jupyter_notebook

文章目录

  • Jetbot应用示例
    • 构建并运行 Jetbot Jupyter Notebook
    • 使用虚拟游戏手柄远程控制 Jetbot
    • 构建训练环境
    • 训练检测模型
    • 在模拟中运行推理
    • Jetbot 在模拟中自主跟随物体

构建并运行 Jetbot Jupyter Notebook

在 Isaac SDK 存储库中,运行 jetbot_jupyter_notebook Jupyter 应用程序:

bob@desktop:~/isaac/sdk$ bazel run apps/jetbot:jetbot_jupyter_notebook

您的 Web 浏览器应打开 Jupyter notebook 文档。 如果没有,请在控制台上搜索链接:它看起来像 http://localhost:8888/notebooks/jetbot_notebook.ipynb。 在浏览器中打开该链接。

使用虚拟游戏手柄远程控制 Jetbot

此示例演示如何使用 Omniverse 和 Jupyter notebook 远程控制 Jetbot。

  • Omniverse 中的 Jetbot:按照基于 NVIDIA Omniverse 构建的文档 Isaac Sim 启动模拟器并在 omni:/Isaac/Samples/Isaac_SDK/Robots/Jetbot_REB.usd 打开舞台。 启动仿真和 Robot Engine Bridge。

    在 Jupyter Notebook 中,按照单元格启动 SDK 应用程序。 一旦连接到模拟器,您就可以使用虚拟游戏手柄从 Omniverse 中的站点移动 Jetbot。

现在我们要在 Omniverse 中搭建一个训练环境。

构建训练环境

随着 Jetbot 模型正常工作并能够通过 Isaac SDK 控制它,我们现在可以训练检测模型,它允许机器人识别并随后跟随一个球。 当我们希望最终将经过训练的模型和随附的控制逻辑部署到真实的 Jetbot 时,在 Omniverse 中构建的训练场景能够在物理世界中重新创建非常重要。 本节中构建的模拟环境是为了模仿我们创建的真实世界环境,因此您可以选择以不同方式设计您的环境。 NVIDIA 建议使用纸板箱或枕头的边缘作为环境的边界。

我们通过导航到“菜单”工具栏中的“创建”>“网格”>“球体”,通过添加 5 个立方体网格(对应于 1 层和 4 面)来开始构建场景。 默认情况下,立方体的尺寸为 100 厘米,因此使用“详细信息”面板适当地缩放和平移它们以创建所需大小的盒子。 由于墙壁的银色默认网格颜色在现实中很难重现,我们创建了一种新材料,并将新 OmniPBR 材料的颜色和粗糙度属性调整为类似于纸,并将其应用于 5 个立方体网格。 生成的场景如下图所示:

然后可以添加资产以引入检测模型的障碍; 检测模型不能将这些资产误认为是球体。 从内容管理器中,一些代表普通家居用品的资产被拖放到舞台上。 添加资产的网格定位为不与地板相交。

接下来,我们在 Jetbot 将跟随的球的模拟中创建表示。 球体网格被添加到场景中并放置在 Xform 元素中以允许使用域随机化。 使用语义模式编辑器添加了用于目标检测检测的类标签。 最后,将 Sphere Lights 和 jetbot.usd 文件添加到场景中。

如果上面显示的场景用于生成训练数据和训练检测模型,那么除非部署 Jetbot 的物理环境与上述模拟场景完全匹配,否则真实 Jetbot 使用训练模型进行推理的能力将受到影响。 在物理世界中重建场景的复杂细节将非常困难。 因此,重要的是创建一个能够将其训练概括和应用到类似物理环境的检测模型。 为此,将域随机化 (DR) 组件添加到场景中的实体,创建更加多样化的训练数据集,从而提高检测模型的鲁棒性。

场景中显示的所有项目都可以在纸盒范围内自由移动,并分别使用 DR 移动和旋转组件绕其 Z 轴旋转。 颜色组件应用于球体网格,允许训练检测模型来检测任何颜色的球。 球体灯中添加了光和运动组件,因此可以使用各种阴影和光强度捕获训练数据。 请注意,Jetbot 模型可以移动和旋转,因此可以从多个位置和角度捕获训练数据。 所有域随机化组件的持续时间均设置为 0.3 秒。 将场景另存为 jetbot_inference.usd。 有了适当的模拟环境,现在可以收集数据并训练检测模型。

训练检测模型

要生成数据集并训练检测模型,请参阅 Isaac SDK 文档中的使用 DetectNetv2 推理流程进行目标检测,注意以下差异。 与其使用 Unity3D 生成训练图像,不如使用 Omniverse。 Isaac SDK 中 packages/ml/apps/generate_kitti_dataset 下的 generate_kitti_dataset.app.json 文件被更改为生成 50000 个训练图像和 500 个测试图像。 在运行 generate_kitti_dataset 应用程序之前,确保将 Omniverse 视口中的相机切换到 Jetbot 的第一人称视角,创建 Robot Engine Bridge 应用程序,并启动模拟。 请注意,在使用迁移学习工具包 (TLT) 训练检测模型之前,您必须安装 TensorRT、CUDA 和 CuDNN,并确保遵循所有安装说明。

与迁移学习工具包一起使用的文本文件被修改为仅检测“球体”对象。 此外,由于在数据集生成过程中经常创建重复图像,epochs 的数量从 100 减少到 20。跟踪对象检测管道,直到导出训练模型(.etlt 文件)。 您现在可以在我们的 Isaac 应用程序中使用经过训练的模型来执行推理。

在模拟中运行推理

此示例演示如何使用现有的经过训练的模型、Omniverse 和 Jupyter Notebook 对目标进行推理。

  • Omniverse 中的 Jetbot:按照基于 NVIDIA Omniverse 构建的文档 Isaac Sim 启动模拟器并在 omni:/Isaac/Samples/Isaac_SDK/Scenario/jetbot_inference.usd 打开舞台。 启动仿真和 Robot Engine Bridge。

  • 在 Jupyter Notebook 中,按照单元格启动 SDK 应用程序。 连接到模拟器后,您可以在可视窗口中查看推理输出。

Jetbot 在模拟中自主跟随物体

此示例使用 Omniverse 和 Jupyter notebook 演示了 Autonomoulsy Follow Ball Object。

  • Omniverse 中的 Jetbot:按照基于 NVIDIA Omniverse 构建的文档 Isaac Sim 启动模拟器并在 omni:/Isaac/Samples/Isaac_SDK/Scenario/jetbot_follow_me.usd 打开舞台。 启动仿真和 Robot Engine Bridge

    在 Jupyter Notebook 中,按照单元格启动 SDK 应用程序。 一旦它连接到模拟器,您就可以在 Omniverse 中移动球并在观察窗口中检查 Jetbot 是否正在跟随球。

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

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

相关文章

国产的蓝光存储设备能算信创产品吗?

这个问题是客户前几天问我的,笔者只能实事求是的告诉他:目前还不能算!首先蓝光存储产品暂时未被列入信创名录,其次蓝光存储中最核心的读写设备(蓝光光驱)的技术专利和生产工艺基本被日本企业(索…

LeetCode 101. 对称二叉树

🌈🌈😄😄 欢迎来到茶色岛独家岛屿,本期将为大家揭晓LeetCode 101. 对称二叉树,做好准备了么,那么开始吧。 🌲🌲🐴🐴 一、题目名称 LeetCode 1…

高端运动耳机哪个品牌最好、公认最好的跑步耳机品牌排名

在健身、运动的时候,过程往往是很枯燥的,这时候,如果能有动感的音乐在旁,调动我们的积极性,就再好不过了,所以很多人在运动的时候都会选择佩戴一款运动蓝牙耳机。不过适合运动的蓝牙耳机少之又少&#xff0…

七、MySQL 多表查询详解(附练习题及答案----超详细)

文章目录一、笛卡尔积(或交叉连接)的理解二、多表查询分类讲解2.1 分类1:等值连接 vs 非等值连接2.2 分类2:自连接 vs 非自连接2.3 分类3:内连接 vs 外连接2.4 SQL99语法实现多表查询2.4.1 内连接2.4.2 左连接2.4.3 右…

System Description 步骤

纲要: 在有了Composition以后,下一步就是把它分配到ECU里面。 1. Create System Description Import DBC file, select ECUs and CAN Frames under the DBC. Then it will create "SystemDescription.arxml" file. [1] 2. Check the content…

地图下载器代码结构设计及功能实现

jcef包引入表结构设计后台关键代码结构前端关键代码结构功能展示启动页底图切换绘制选择下载区域行政区划切换选择下载区域下载关键代码import { InnerMqClient } from ../../rx/inner-mq.service;import { SubmitService } from ../../service/submit.service;import { MapBas…

马蹄集 字符判断

字符判断 难度:白银 时间限制:1秒 巴占用内存:64M 输入一个字符,判断是数字字符、大写字母、小写字母、算术运算符、 关系运算符、逻辑运算符,还是其他字符,分别输出Number?”, "Capital letter?”,…

Springboot集成knife4j文档时,接口信息没有显示

我使用的 SpringBoot、knife4j 版本jar包如下所示&#xff1a;<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.3.5.RELEASE</version><relativePath/> …

kube-bench初体验

kube-bench是一个通过运行CIS Kubernetes benchmark中记录的checker来检查Kubernetes是否安全部署的工具。测试&#xff0c;找gap&#xff0c;audit&#xff0c;都可以啊关于CIS k8s benchmark 参见 CIS Kubernetes Benchmarks (cisecurity.org)就是说&#xff0c;想做k8s加固&…

再学C语言32:函数——多源代码文件程序及其编译

使用多个函数时&#xff0c;最简单的方法是将所有函数放在同一文件中&#xff0c;就像编译单个函数的文件一样对该文件进行编译 具体的编译过程根据操作系统不同而具有差异性 Window系统下的编译器是面向工程的 工程&#xff08;project&#xff09;&#xff1a;描述了一个特…

【Linux】项目自动化构建工具—make/makefile

文章目录1. 什么是make/makefile&#xff1f;2. make/makefile的使用2.1 实例代码2.2 依赖关系和依赖方法2.3 项目清理2.4 make是如何确定是否编译的3. Linux第一个小程序—进度条3.1 \r 和 \n3.2 进度条小程序1. 什么是make/makefile&#xff1f; make是一个命令工具&#xf…

【Spring6源码・IOC】Bean的初始化 - 终结篇

前面两篇&#xff0c;我们着重讲解了一下《BeanDefinition的加载》和《bean的实例化》。 这一篇我们来讲解一下bean的初始化。 我们这里的案例依旧是以SpringBoot3.0、JDK17为前提&#xff0c;案例代码如下&#xff1a; Component public class A {Autowiredprivate B b;}Com…

Windows+iis+php+mysql搭建wordpress

准备工作 WindowsServer一台 IIS&#xff0c;在Server上开启 PHP:PHP: Downloads Mysql:MySQL :: MySQL Downloads wordpress下载 | WordPress.org China 简体中文 PHP程序在IIS上以fastcgi方式运行&#xff0c;在安装mysql和php之前确保vc库已安装。 IIS确保开启CGI模块…

JAVA开发(AOP之ProceedingJoinPoint)

我们在开发过程中经常使用到自定义注解来实现在一些类或者方法执行过程中切面&#xff0c;统一实现某些业务操作。例如自定义注解import java.lang.annotation.Documented; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang…

YOLOv7:面向实时检测的目标检测器 | 附结构图

YOLOv7 在 5 FPS 到 160 FPS 范围内的速度和准确度都超过了所有已知的目标检测器&#xff0c;并且在 GPU V100 上 30 FPS 或更高的所有已知实时目标检测器中具有最高的准确度 56.8% AP。 YOLOv7-E6 目标检测器&#xff08;56 FPS V100&#xff0c;55.9% AP&#xff09;比基于Tr…

小孩护眼灯什么牌子的好?分享四款最好的台灯品牌

最近发现&#xff0c;在接送我家神兽上下学时&#xff0c;小朋友们会揉眼睛&#xff0c;眼睛始终没睁开的感觉&#xff0c;还有不少小学就戴上了眼镜&#xff0c;我深知戴眼镜&#xff0c;真的很麻烦&#xff0c;所以更加看重孩子的护眼工作。市面上越来越多护眼灯&#xff0c;…

Java高手速成 | 实现人物拼图游戏

拼图游戏指将一幅图片分割成若干拼块&#xff0c;并随机打乱顺序&#xff0c;当将所有拼块都放回原位置时就完成了拼图(游戏结束)。 01、游戏介绍 在游戏中&#xff0c;拼块以随机顺序排列&#xff0c;网格上有一个位置是空的。完成拼图的方法是利用这个空位置移动拼块&#xf…

服务搭建常见问题

怎么将myeclipse项目部署到tomcat服务器 https://www.laike.net/article-162-238315-0.html eclipse提示错误&#xff1a;save could not be completed Dynamic Web Module 4.0 requires Java 1.8 or newer. https://blog.csdn.net/xixihaha_coder/article/details/118345378 …

微星 MPG B460I GAMING EDGE WIFI +i5-10400电脑 Hackintosh 黑苹果efi引导文件

硬件型号驱动情况主板微星 MPG B460I GAMING EDGE WIFI (MS-7C86)&#xff08;LPC Controller B460芯片组&#xff09;处理器英特尔 Core i5-10400 2.90GHz 六核已驱动内存16 GB ( 芝奇 DDR4 2666MHz 8GB x 2 )已驱动硬盘朗科科技 NVMe SSD 480GB (480 GB / 固态硬盘)已驱动显…

React学习笔记:实用又好用的Hooks函数

React框架以前是采用Class类编程&#xff0c;在类编程中使用生命周期比较方便&#xff0c;但是随着迭代更新&#xff0c;官方开始推荐使用函数式编程&#xff0c;但是函数式编程就没有状态这一个概念&#xff0c;于是乎官方就定义了一系列钩子函数来弥补在这一缺陷&#xff0c;…