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机器人的一部分,并且为他们添加材质、刚体和碰撞体等属性。

prim translation rotation scale visual material physics material
body 0,0,0.5 0,0,0 1.5,1.0,0.5 OmniGlass default
left_wheel 0,1,0.5 90,0,0 1.0,1.0,1.0 OmniPBR default
right_wheel 0,-1,0.5 90,0,0 1.0,1.0,1.0 OmniPBR default

此时启动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来添加角度驱动器。

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

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

驱动力的公式是:

bash 复制代码
stiffness * (position - target_position) + damping * (velocity - target_velocity)

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

关节驱动 阻尼Damping 刚度Stiffness 目标速度Target Velocity
left_wheel_joint 10000 0 200
right_wheel_joint 10000 0 200

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

添加传感器

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

确定传感器轴系

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

添加相机

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

prim translation rotation scale
camera_link -0.7,0,2 0,15,180 1,1,1
robot_camera 0,0,0 90,90,0 1,1,1

添加一个视口(Viewport),使得共计有两个视口(Viewport),设置其中一个为Perspective视角,另一个是相机视角,方便进行观察。

修改第二个视口的相机为robot_camera

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

结尾语

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

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

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

参考资料

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

相关推荐
禁默24 分钟前
第六届机器人、智能控制与人工智能国际学术会议(RICAI 2024)
人工智能·机器人·智能控制
Robot25114 小时前
Figure 02迎重大升级!!人形机器人独角兽[Figure AI]商业化加速
人工智能·机器人·微信公众平台
FreeIPCC17 小时前
谈一下开源生态对 AI人工智能大模型的促进作用
大数据·人工智能·机器人·开源
施努卡机器视觉20 小时前
电解车间铜业机器人剥片技术是现代铜冶炼过程中自动化和智能化的重要体现
运维·机器人·自动化
zhd15306915625ff1 天前
库卡机器人日常维护
网络·机器人·自动化·机器人备件
古月居GYH1 天前
ROS一键安装脚本
人工智能·机器人·ros
清流君1 天前
【运动规划】移动机器人运动规划与轨迹优化全解析 | 经典算法总结
人工智能·笔记·算法·机器人·自动驾驶·运动规划
Matlab程序猿小助手1 天前
【MATLAB源码-第218期】基于matlab的北方苍鹰优化算法(NGO)无人机三维路径规划,输出做短路径图和适应度曲线.
开发语言·嵌入式硬件·算法·matlab·机器人·无人机
xx小寂2 天前
ubuntu16.04在ros使用USB摄像头-解决could not open /dev/video0问题
ubuntu·机器人
啵啵鱼爱吃小猫咪2 天前
迭代学习公式
学习·机器人