Nvidia Isaac Sim组装机器人和添加传感器 入门教程 2024(5)

Nvidia Isaac Sim 入门教程 2024

版权信息

Copyright 2023-2024 Herman Ye@Auromix. All rights reserved.

This course and all of its associated content, including but not limited to text, 
images, videos, and any other materials, are protected by copyright law. 
The author holds all rights to this course and its contents.

Any unauthorized use, reproduction, distribution, or modification of this course 
or its contents is strictly prohibited and may result in legal action. 
This includes, but is not limited to:
Copying or distributing course materials without express written permission.
Reposting, sharing, or distributing course content on any platform without proper attribution and permission.
Creating derivative works based on this course without permission.
Permissions and Inquiries

If you wish to use or reproduce any part of this course for purposes other than personal learning, 
please contact the author to request permission.

The course content is provided for educational purposes, and the author makes no warranties or representations 
regarding the accuracy, completeness, or suitability of the course content for any specific purpose. 
The author shall not be held liable for any damages, losses, 
or other consequences resulting from the use or misuse of this course.

Please be aware that this course may contain materials or images obtained from third-party sources. 
The author and course creator diligently endeavor to ensure that these materials 
are used in full compliance with copyright and fair use regulations. 
If you have concerns about any specific content in this regard, 
please contact the author for clarification or resolution.

By enrolling in this course, you agree to abide by the terms and conditions outlined in this copyright notice.

学习目标

  • 熟悉Isaac Sim中机器人的关节及关节驱动配置
  • 了解Isaac Sim中关节树的概念
  • 熟悉Isaac Sim中的传感器配置
  • 熟悉Isaac Sim的视口调整

难度级别

初级中级高级

预计耗时

25 mins

学习前提

对象类型状态
Ubuntu22.04操作系统软件已确认
Isaac Sim环境软件已配置
Isaac Sim基本概念知识已了解
Isaac Sim图形界面知识已了解

组装机器人

在Isaac Sim中组装一个带传感器的机器人需要一些基本的步骤:

  1. 创建各部件的3D模型
  2. 将各部件组建起来

在本章节中,我们将学习如何组装最简单的一个两轮差速机器人,下图中的机器人可以视作由三个杆件(links)和两个转动关节(revolute joints)组成的。
请添加图片描述

导入测试环境

机器人组装需要一个带有正常光照和物理的环境,因此我们导入Isaac Sim自带的Small Warehouse作为基本的测试环境。

注意:该地图可能需要一定的资源导入时间,测试环境并非重要性的决定因素,你可以使用诸如FlatGrid或者此前你制作的地图更简单的环境。

注意: 为避免误操作环境中的对象,例如地板等,你可以在舞台中右键将环境及其子项设置为锁定状态。

在这里插入图片描述

创建各部件的3D模型

创建机器人的3D模型是机器人设计过程中的关键步骤。你可以使用专业的3D建模软件,例如SolidWorks来创建和导出机器人的各个部件。
在本章节中我们不使用从其他专业软件中制作的机器人部件,而是使用Isaac Sim自带的一些基础模型(立方体、圆柱)来作为机器人的零部件。
这里我们创建三个杆件作为机器人的零部件,分别是身体body,左轮left_wheel,右轮right_wheel,他们都作为fqnvidia机器人的一部分,并且为他们添加材质、刚体和碰撞体等属性。

primtranslationrotationscalevisual materialphysics material
body0,0,0.50,0,01.5,1.0,0.5OmniGlassdefault
left_wheel0,1,0.590,0,01.0,1.0,1.0OmniPBRdefault
right_wheel0,-1,0.590,0,01.0,1.0,1.0OmniPBRdefault

在这里插入图片描述
此时启动PLAY,按下shift鼠标左键按下来拖拽机器人运动,观察效果。

创建关节joint

机器人和人类相似,人类手臂的伸展需要上臂、前臂和肘部的协调工作。同样地,机器人的两个相邻活动杆件(link)也需要通过关节(显式的约束)进行旋转、平移等动作。

Stage中,按下Ctrl,先选中父杆件Parent Link(此处为body)再选中子杆件Child Link(此处为right_wheel),随后选中Create->Physics->Joint->Revolute Joint,创建一个新的Joint对象,并重命名为right_wheel_joint,并修改转动轴系(通常修改到Z)使得轮子的旋转正确。

同理,再创建身体到左轮的关节。

在这里插入图片描述

随后,点击左侧工具栏中的Play检查,会发现此时身体和两个轮子已经正确地绑定了。

注意:除了关节,Isaac Sim还提供了肌腱(Tendons),它对于灵巧手来说更有意义,因此此处不讨论肌腱相关内容,如果您需要,请参考Isaac Sim 肌腱。

创建关节树Articulation

从数学上讲,关节可以在全局(相对于世界空间)或简化(相对于其他物体)坐标中建模。

使用全局法相对简单直观,特别是在处理全局运动和碰撞检测时,但在处理复杂的关节约束时可能更加困难,例如人形机器人,因为需要考虑到世界坐标系中的旋转和平移以及一些计算上忽略的微小量在长链路时带来的影响。

使用局部坐标系会更容易处理相对运动,尤其是在需要多个物体相对运动时,可以减少复杂性,并且在数值上更加精确,比如关节。
但可能需要更多的计算来转换坐标系,特别是在需要将局部坐标系转换为全局坐标系时。

这也就引入了关节树Articulation的概念,关节树的根部被称为关节根(Articulation root),当一个基本对象(prim)被标记为关节根时,这告知仿真系统,在它的子树中找到的任何关节应优先使用简化坐标方法进行仿真,实现了两种方法的折中。

将机器人组织成关节树可以实现更高的模拟保真度,减少关节误差,并能够处理关节体之间更大的质量差异。这些设计具有零关节误差,同时能够处理关节体之间更大的质量比。

Any prim of the USD scene graph hierarchy may be marked with an UsdPhysicsArticulationRootAPI. This informs the simulation that any joints found in the subtree should preferentially be simulated using a reduced coordinate approach.

要使用关节树,需要指定关节根(Articulation root),指定关节根的标准是:
对于固定的机器人,它应当是和世界直接连接的根关节的父对象(root joint’s parent prim)或根关节(root joint)上,此处推荐将属性添加到根关节(root joint)上,例如固定在桌面上的单个机械臂的基座和世界相连的关节。
对于移动的机器人,它应当是根杆件对象(root link prim),例如四旋翼无人机的机身,移动小车的底盘,人形机器人的头或者脚。

对于更深入的内容,可参考关节树、Omniverse刚体动力学和USDPhysics。

在这里插入图片描述

在这个小车的案例中,body是根杆件对象(root link prim),因此可以作为Articulation Root

选中Primbody并依次点击Add->Physics->Articulation Root来将关节链转化为关节树

在这里插入图片描述

创建关节驱动joint drive

添加关节会添加机械上的连接。但为了能够控制和驱动关节,必须添加关节驱动的属性 API。

按下Ctrl选中Stage里的两个joint并依次点击Add->Physics->Angular Drive来添加角度驱动器。
在这里插入图片描述

对于关节的位置控制模式,应当设置高刚度和相对低(或零)阻尼。

对于关节的速度控制模式,应当设置高阻尼和零刚度。

驱动力的公式是:

stiffness * (position - target_position) + damping * (velocity - target_velocity)

你可以根据实际体验来给出经验值,也可以使用此处给出的测试值:

关节驱动阻尼Damping刚度Stiffness目标速度Target Velocity
left_wheel_joint100000200
right_wheel_joint100000200

在这里插入图片描述
随后按下Play查看效果,应该发现小车开始以指定的目标速度运动(在给定测试值下是原地转动)。

添加传感器

Omniverse Isaac Sim 提供了多种传感器,可用于感知环境和机器人的状态,例如激光雷达、深度相机。此处以最为常见的Camera为例。

确定传感器轴系

在添加以相机为例的传感器前需要先确定轴系,参考Isaac、USD、ROS的传感器轴系说明。

添加相机

依次点击Create->Camera来添加相机,并重命名为robot_camera,将他拖动到body下新创建的Xformcamera_link下,来和机器人的身体绑定,并通过调整Xformcamera_link的位置和姿态来感受合适的位置,你也可以使用测试的姿态。

primtranslationrotationscale
camera_link-0.7,0,20,15,1801,1,1
robot_camera0,0,090,90,01,1,1

在这里插入图片描述

添加一个视口(Viewport),使得共计有两个视口(Viewport),设置其中一个为Perspective视角,另一个是相机视角,方便进行观察。
在这里插入图片描述

修改第二个视口的相机为robot_camera
在这里插入图片描述

此时点击PLAY,观察两个画面中的机器人。

结尾语

恭喜你,已经学习了Isaac Sim的机器人组装以及添加传感器的相关内容,能够自主搭建一个简单的双轮差速机器人。

在下一章节,你将学习Isaac Sim中的OmniGraph图编程,对在本章节中的机器人进行控制。

如需企业内训定制、项目开发合作或个人学习支持,请联系:hermanye233@icloud.com

参考资料

USDPhysics
Isaac Sim 肌腱
关节树Omniverse刚体动力学
Isaac、USD、ROS的传感器轴系说明
USDPhysics

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

AI穿戴设备是未来手机的终结者?中国AI商业化的未来预测

AI技术的发展正处于商业化应用的关键阶段,而中国在互联网时代已凭借商业化应用逆袭。AI算法大模型虽强大,但真正普惠民众需与设备深度结合。穿戴式智能设备就成为了新战场,AI算法与穿戴设备结合能释放更大工作效率。私人助理AI将成趋势&#…

如何使用k8s安装nexus3呢

百度云盘地址 链接:https://pan.baidu.com/s/1YN1qc2RvzTU3Ba6L_zCTdg?pwd5z1i 提取码:5z1i 下载后上传到本地服务器 docker load -i nexus3 创建 nexus-deployment.yaml apiVersion: apps/v1 kind: Deployment metadata:name: nexus3-deployment spec…

我的Mac疯了!居然可以生成这样的奇葩AI图片!

在当今人工智能领域,midjourney无疑是生成图片的王者,但是苦于付费才能使用,今天我就给大家分享一下midjourney平替stable diffusion,实现本地生成不逊色于midjourney的图片 效果图 先上一个我自己生成的效果(就是在我的Mac上用C…

DPDK与传统收发报文的区别

1.去除中断 传统的收发报文方式都必须采用硬中断来做通讯,每次硬中断大约消耗100微秒,这还不算因为终止上下文所带来的Cache Miss。 DPDK采用轮询模式驱动(PMD)。 PMD由用户空间的特定的驱动程序提供的API组成,用于对设备和它们相应的…

暴雨讲堂|通往AGI的必由之路—AI agent是什么?

在三月份英伟达的新品发布会上,黄仁勋反复提及一个词汇— Generalist Embodied Agent,意为“通用具身智能体”,给观众留下了深刻的印象。其实具身智能指的是不同形态的拥有主动感知交互能力的机器人。其实,业界对它还有一个更为熟…

[Vulnhub] Troll FTP匿名登录+定时任务权限提升

信息收集 IP AddressPorts Opening192.168.8.104TCP:21,22,80 $ nmap -sC -sV 192.168.8.104 -p- --min-rate 1000 Nmap scan report for 192.168.8.104 (192.168.8.104) Host is up (0.0042s latency). Not shown: 65532 closed tcp ports (conn-refused) PORT STATE SER…

php基础语法_面向对象

PHP php代码标记 多种标记来区分php脚本 ASP标记&#xff1a;<% php代码 %> 短标记&#xff1a; 脚本标记: 标准标记&#xff08;常用&#xff09;&#xff1a; 简写风格&#xff1a; ASP风格&#xff1a;<% php代码 %> 注意&#xff1a;简写风格和ASP风格…

VisualBox 虚拟机 Ubunut 18.04 在大显示器上黑屏的问题

在小屏幕上显示没有问题&#xff0c;但是移动到大显示器上就黑屏了&#xff0c;并且不能铺满&#xff0c;如下所示 如果我希望它铺满整个屏幕&#xff0c;如何解决呢&#xff1f; 下面是解决方法&#xff1a; 虚拟机底部这个按钮&#xff0c;右键 产生菜单&#xff0c;按这个选…

在寻找电子名片在线制作免费生成?5个软件帮助你快速制作电子名片

在寻找电子名片在线制作免费生成&#xff1f;5个软件帮助你快速制作电子名片 当你需要快速制作电子名片时&#xff0c;有几款免费在线工具可以帮助你实现这个目标。这些工具提供了丰富的设计模板和元素&#xff0c;让你可以轻松地创建个性化、专业水平的电子名片。 1.一键logo…

护眼必看!台灯怎么选对眼睛好的方法

家长们是否和我一样发现孩子时常作出眯眼的行为&#xff01;那就要小心了&#xff01;最近我注意到家中的孩子开始表现出眯眼的习惯。经过仔细观察后发现&#xff0c;这可能与她长时间晚上熬夜写作业导致的光线不足有关。随着孩子学习负担的增加&#xff0c;我作为家长开始担心…

【网络安全学习】漏洞扫描:-04- ZAP漏洞扫描工具

**ZAP(Zed Attack Proxy)**是一款由OWASP组织开发的免费且开源的安全测试工具。 ZAP支持认证、AJAX爬取、自动化扫描、强制浏览和动态SSL证书等功能。 1️⃣ 安装zap工具 现在的kali版本不一定会预装zap&#xff0c;我们可以自行安装&#xff0c;安装也十分简单。 apt-get …

构建个人文件上传服务:Python Flask实现上传和下载完整指南

介绍 在本教程中&#xff0c;我们将学习如何使用Python Flask框架将文件上传到服务器&#xff0c;并使用SQLite数据库来跟踪上传的文件。我们将提供后端代码和一个示例项目的Git链接&#xff0c;以便您可以轻松地跟随本教程。 准备工作 首先&#xff0c;您需要安装Python和F…

若依 ruoyi 排序 顺序 倒序 的实现

1. table标签新增排序相关属性 // :default-sort"defaultSort" 指定默认排序 // sort-change"handleSortChange" 指定排序点击事件 :default-sort"defaultSort" sort-change"handleSortChange" 2. 列上新增排序相关配置 自定义查询语…

API低代码平台介绍6-数据库记录删除功能

数据库记录删除功能 在前续文章中我们介绍了如何插入和修改数据库记录&#xff0c;本篇文章会沿用之前的测试数据&#xff0c;介绍如何使用ADI平台定义一个删除目标数据库记录的接口&#xff0c;包括 单主键单表删除、复合主键单表删除、多表删除&#xff08;整合前两者&#x…

【Android14 ShellTransitions】(六)SyncGroup完成

这一节的内容在WMCore中&#xff0c;回想我们的场景&#xff0c;是在Launcher启动某一个App&#xff0c;那么参与动画的就是该App对应Task&#xff08;OPEN&#xff09;&#xff0c;以及Launcher App对应的Task&#xff08;TO_BACK&#xff09;。在确定了动画的参与者后&#x…

Python武器库开发-武器库篇之Redis未授权漏洞扫描器(五十七)

Python武器库开发-武器库篇之Redis未授权漏洞扫描器(五十七) Redis未授权访问漏洞简介以及危害 Redis是一个开源的内存数据库&#xff0c;具有高性能和可扩展性。然而&#xff0c;由于配置不当或者默认设置&#xff0c;Redis服务器可能会存在未授权访问的漏洞。 未授权访问漏…

用Vite基于Vue3+ts+DataV+ECharts开发数据可视化大屏,即能快速开发又能保证屏幕适配

数据可视化大屏 基于 Vue3、Typescript、DataV、ECharts5 框架的大数据可视化&#xff08;大屏展示&#xff09;开发。此项目vue3实现界面&#xff0c;采用新版动态屏幕适配方案&#xff0c;全局渲染组件封装&#xff0c;支持数据动态刷新渲染、内部DataV、ECharts图表都支持自…

【目标检测】图解 DETR 系统框图

简略版本 Backbone&#xff1a;CNN backbone 学习图像的 2D 特征Positional Encoding&#xff1a;将 2D 特征展平&#xff0c;并对其使用位置编码&#xff08;positional encoding&#xff09;Encoder&#xff1a;经过 Transformer 的 encoderDecoder&#xff1a;encoder 的输出…

Python用于解析 XML 数据之untangle使用详解

概要 在处理 XML 数据时,解析和提取数据是一个常见的需求。虽然 Python 提供了多种处理 XML 的库,如 xml.etree.ElementTree 和 lxml,但它们通常需要编写较多的代码来解析和处理 XML 数据。untangle 库是一个轻量级的 Python 库,它提供了一种简单而直观的方式来解析 XML 数…

快速又不失灵活性的JeecgBoot框架

简介JeecgBoot 开源界 "小普元" 超越传统商业平台。引领低代码开发模式 (OnlineCoding-> 代码生成器 -> 手工 MERGE)&#xff0c;低代码开发同时又支持灵活编码&#xff0c; 可以帮助解决 Java 项目 70% 的重复工作&#xff0c;让开发更多关注业务。既能快速提…