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

news2024/10/7 10:19:40

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

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

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

相关文章

椭圆的几何要素

椭圆的几何要素 flyfish 椭圆的方程为 x 2 a 2 y 2 b 2 1 \frac{x^2}{a^2} \frac{y^2}{b^2} 1 a2x2​b2y2​1。 长半轴 a a a(绿色虚线)和短半轴 b b b(紫色虚线)。 焦点 F 1 ( − c , 0 ) F1(-c, 0) F1(−c,0)&#…

【C语言】解决C语言报错:Segmentation Fault

文章目录 简介什么是Segmentation FaultSegmentation Fault的常见原因如何检测和调试Segmentation Fault解决Segmentation Fault的最佳实践详细实例解析示例1:未初始化指针示例2:数组越界示例3:使用已释放的内存示例4:递归导致栈溢…

vscode安装所需插件 个人记录版

vscode安装所需插件 个人记录版 仅做参考 设置

LangChain入门学习笔记(六)—— Model I/O之Output Parsers

当大模型产生输出返回后,它的内容更像是一段平铺的文字没有结构。在传给下游节点处理时可能并不能符合输入要求,LangChain提供了一套机制使得模型返回的内容可以按照开发者定义的那样结构化。 在官网文档中可以看到LangChain提供了丰富的输出解析器&…

Solana链,什么是sol跟单机器人、pump跟单机器人、sol狙击机器人、sol夹子机器人、sol聪明钱筛选

Solana Sol跟单机器人🤖 SOL跟单机器人(Copy Trading Bot)是一种自动化交易工具,允许用户复制其他成功交易者的交易行为。这种机器人通常用于加密货币市场、外汇市场等金融市场。以下是SOL跟单机器人的一些关键特性和功能&#xf…

优维“态势感知监控”产品:像“上帝”一样掌控应用系统

什么是态势感知? 态势感知是一种基于环境的、动态、整体地洞悉全网安全风险的能力。它以安全大数据为基础,从全局视角对全网安全威胁进行发现识别、理解分析展示和响应处置,并预测发展趋势,为后续网络安全的相关决策与行动提供数据…

重学java 81.类的加载时机

不破不立,人类最宝贝的品质就是勇敢和过去告别 —— 24.6.21 一、类的加载时机 1.new对象 2.new子类对象(new子类对象先初始化父类) 3.执行main方法 4.调用静态成员 5.反射,创建Class对象 这五种情况就可以让类加载到内存 类加载过程 1.问题:谁将class文件加载到了…

爬虫逆向实战(41)-某花顺登陆(Cookie、MD5、SHA256)

一、数据接口分析 主页地址:某花顺 1、抓包 通过抓包可以发现在登陆时,网站首先请求了pwdRangeCalcRegular.json、getGS两个接口,接着请求dologinreturnjson2进行登陆,但是此接口会返回请先完成滑块验证码校验的响应。然后网站…

U盘容量变0字节:详解原因、恢复方案与预防措施

一、U盘容量变0字节的现象 在日常工作和学习中,U盘作为一种便携式存储设备,被广泛用于数据交换和存储。然而,有时我们可能会遇到一种奇怪的现象:原本容量正常的U盘,在插入电脑后突然显示容量为0字节。这种情况意味着我…

unity-调用讯飞星火语音唤醒-新版windowsSDK

调用讯飞星火语音唤醒-新版windowsSDK 先贴一张在unity中 wins系统下成功调用新版的讯飞windowsSDK的运行截图 为什么要用讯飞的语音唤醒? 项目中需要在unity和win系统下进行语音唤醒开启语音对话,而语音唤醒比较成熟的方案大多都是在linux系统下的&…

CocosCreator 微信小游戏上架流程准备工作

前言 事前准备非常重要,因为有creator的助力,实际上开发小游戏往往很快,但是如果准备不足,上架及审核过程非常慢,往往游戏做好了,还得各种排队等审核,大多数开发者又不是腾讯白名单之内&#x…

甘肃的千层烤馍:传统面点的魅力绽放

千层烤馍,作为甘肃美食文化的重要象征,以其独特的外形和丰富的口感,吸引着众多食客。它的外观犹如一件精美的艺术品,层层叠叠,金黄酥脆,散发着诱人的香气。 在甘肃平凉地区制作千层烤馍&#xff0c…

windows10 编译libevent2.1.12

windows10 编译libevent2.1.12 nmake 编译libevent使用vs命令行工具2.编译命令3.编译出现问题 cmake 编译libevent nmake 编译libevent 使用vs命令行工具 2.编译命令 nmake /f Makefile.nmake3.编译出现问题 cmake 编译libevent cmake -S . -B build32 -A Win32 cd build32…

NXP i.MX8系列平台开发讲解 - 3.15 Linux 之USB子系统(一)

专栏文章目录传送门:返回专栏目录 Hi, 我是你们的老朋友,主要专注于嵌入式软件开发,有兴趣不要忘记点击关注【码思途远】 目录 Linux 之USB子系统(一) 1. USB基础简介 1.1 USB的传输模式 1.2 USB 的设备描述符 1.3 USB 类的定义分类 2…

IK分词器热刷新词库实践分享

目录 前言 什么是分词器? ik分词器简介 ik分词器和默认分词器的对比 ik分词器介绍 ik分词器的分词问题 自定义词库 主配置解说 通过配置文件自定义词库 Step1: 新建自定义分词库 Step2: 将我们的自定义词添加到ik的配置文件中 Step3: 重启es,…

DSP C6000教学实验箱操作教程_数字图像处理:5-3 图像缩放

一、实验目的 学习图像缩放的原理,掌握图像的读取方法,并实现图像缩放。 二、实验原理 图像缩放 在计算机图像处理和计算机图形学中,图像缩放是指对数字图像的大小进行调整的过程。图像缩放是一种非平滑的过程,需要在处理效率以…

通过“BOSS”精通比特币,深入认识私钥、账户和钱包

来源:币界原创 作者:636Marx 无论当今数字货币技术如何发展,认识区块链技术幕后的关键机制至关重要。无论您是新手还是经验丰富的数字货币从业者,掌握钱包地址、公钥和私钥的复杂性都有无可替代重要性。进入 BOSS Wallet,这是一款尖端的 Web…

Kubernates容器化JVM调优笔记(内存篇)

Kubernates容器化JVM调优笔记(内存篇) 先说结论背景思路方案 先说结论 1、首先如果是JDK8,需要使用JDK8_191版本以上,才支持容器化环境和以下参数,否则就更新到JDK10以上,选择对应的镜像构建就行了 2、在容…

day01-anaconda的安装

Anaconda的安装 参考地址: http://t.csdnimg.cn/mUmSp 安装完毕,可以卸载电脑中的其他python版本,在控制面板中进行卸载。 在命令行指令中输入 pythonPython 3.8.3 (default, Jul 2 2020, 17:30:36) [MSC v.1916 64 bit (AMD64)] :: An…

【React 】折叠面板,点击展开时再请求数据

需求背景:使用折叠面板的形式展示数据,面板内部数据需要在打开时请求接口获取。 遇到问题:最开始使用Antd 的折叠面板组件,它对于数据直接渲染是没问题的,但是不好满足打开面板时再动态加载数据的需求,于是…