Isaac Sim 机器人简单组装及传感器了解
版权信息
Copyright 2023 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高级使用 | 知识 | 已了解 |
图中的机器人可以视作由三个杆件(links)和两个转动关节(revolute joints)组成的。
创建关节joint
在Stage
中,按下Ctrl
,先选中父杆件Parent Link
(此处为robot_body)再选中子杆件Child Link
(此处为wheel_right),随后选中Create
->Physics
->Joint
->Revolute Joint
,创建一个Joint,并重命名为wheel_right_joint
检查wheel_right_joint
这个prim属性中的父子关系和转动轴系是否正确,如果不正确就需要进一步调整。
点击左侧工具栏中的Play
检查,会发现右轮已经和身体绑定,而尚未设置joint的左轮正常掉落了。
随后以相同的方式设置身体到左轮的joint,重新点击左侧工具栏中的Play
检查,并拖动机器人身体Prim,检查轮子的转动情况是否正常。
创建关节驱动joint drive
添加了joint只能代表不同杆件间有了机械连接,但是还不能够控制和驱动,因此需要进一步添加关节驱动的API。
按下Ctrl
选中Stage
里的两个joint
并依次点击Add
->Physics
->Angular Drive
为两个关节设置一定的目标速度(Target Velocity)和阻尼(Damping),此处分别为200
和10000
,随后按下Play
查看效果,应该发现小车开始以指定的速度运动
创建关节树Articulation(可选的)
Articulation(关节树)是一种高级概念,它通过将多个刚体及其之间的关节连接成一个层次结构,构建了一个关节树。这个树结构包含一个关节根(articulation root),它负责连接整个树的各个部分,从而形成一个统一的系统。
关节树的优势在于能够更有效地模拟多体系统的相互作用、运动和碰撞,从而降低计算的复杂性。通过使用关节树,我们能够实现更高的仿真准确性,减少关节误差,处理具有不同质量比的刚体,同时提高仿真效率。
将物体组织成关节树可以实现更高的模拟保真度,减少关节误差,并能够处理关节体之间更大的质量差异。这些设计具有零关节误差,同时能够处理关节体之间更大的质量比。
举例来说,考虑一个机械手臂的树结构:根部位于地平面的底部,旋转关节将不同的连杆连接到机械手,整个树结构只有一个分支,通过棱柱关节将两个夹具部分连接到手臂,实现了线性接头。
对于布娃娃,我们可以将任何肢体作为根,从而构建的结构仍然是一棵树。例如,我们可以选择头部作为根,然后使用球形关节将躯干连接到头部,接着使用球形关节连接手臂,以此类推。这种方法使我们能够轻松创建不同的布娃娃结构。
能够提高效率的具体原因和解释可以参考articulations,此处不进一步解释。
在这个小车的案例中,robot_body
作为Articulation Root
,选中Primrobot_body
并依次点击Add
->Physics
->Articulation Root
来将关节链转化为关节树
添加传感器
Omniverse Isaac Sim 提供了多种传感器,可用于感知环境和机器人的状态。此处以最为常见的Camera
为例。
确定传感器轴系
在添加以相机为例的传感器前需要先确定轴系,参考Isaac、USD、ROS的传感器轴系说明
添加相机
依次点击Create
->Camera
来添加相机,并重命名为robot_camera
,将他拖动到robot_body
下和机器人的身体绑定,并通过调整相机的位置和姿态来感受合适的位置。
调整相机的视野方向,使得它位于机器人的前部头顶,略微朝下观察前方,此时Play,相机会随着机器人一起动。
相机检查器
将相机添加到场景中后,可以通过相机检查器扩展来管理我们的相机。
依次点击Isaac Utils
->Camera Inspector
,随后点击REFRESH
来刷新相机列表。
- 相机文本框
有时在代码中需要提供一个合适的视角来查看场景,通常可以用GUI里调整相机角度来尝试,文本则是相机位置和方向的文字描述,可以通过复制来移植到代码中,方便代码开发。
- 新建视口Viewport
当前Isaac Sim所看到的直接的窗口就是一个Viewport,可以通过相机检查器来创建一个视口,比如此时希望有世界顶部的一个相机,就可以选择Camera
->OmniverseKit_Top
,并点击CREATE VIEWPORT
来新增视口。
固定相机关系
有时候不小心移动了相机的视野,这个时候的相机Transform就会变化,调回去比较麻烦,如果在相机和父关节间加上一个固定的Transform关系,则每次不小心弄乱了相机的视野时,都可以通过将相机自身Transform全部置0来恢复原有状态。