目录
[1 构建基础机器人](#1 构建基础机器人)
[1.1 学习目标](#1.1 学习目标)
[1.2 前期准备](#1.2 前期准备)
[1.3 添加关节](#1.3 添加关节)
[1.4 添加关节驱动](#1.4 添加关节驱动)
[1.5 添加关节体](#1.5 添加关节体)
[1.6 添加控制器](#1.6 添加控制器)
[2 给机器人添加相机和传感器](#2 给机器人添加相机和传感器)
[2.1 学习目标](#2.1 学习目标)
[2.2 添加相机](#2.2 添加相机)
[2.3 检查相机](#2.3 检查相机)
[2.4 将相机绑定到机器人](#2.4 将相机绑定到机器人)
1 构建基础机器人
NVIDIA Isaac Sim的GUI界面功能与NVIDIA Omniverse™ USD Composer基本相同。本教程重点介绍与机器人相关的GUI功能。教程将为一个由三个连杆和两个旋转关节组成的基础"机器人"安装骨架,以引入关节(Joints)和组织结构(Articulations)的概念。你将利用之前添加的物体(长方形车身和两个圆柱体轮子)来制作一个模拟移动机器人。
对于通过Onshape或URDF导入器导入的机器人,通常不需要手动执行此过程,但理解这些概念对于调试机器人和组装具有关节的物体至关重要。
1.1 学习目标
本教程详细介绍了如何安装双轮移动机器人的骨架,内容包括:
组织场景树层级结构
在两个刚体之间添加关节
添加关节驱动(Joint Drives)和关节属性
添加组织结构(Articulations)
通过组织结构速度控制器移动机器人
1.2 前期准备
完成具身智能入门Isaac Sim------机器人设置-初级设计轮式机器人1
或者从内容浏览器(Content Browser)加载:
Isaac Sim/Samples/Rigging/MockRobot/mock_robot_no_joints。注意:不要以"引用(Reference)"方式加载,因为需要对文件进行永久性修改。
1.3 添加关节
(1)打开文件
打开上一节
XXX.usd,或加载上述的示例资源。(2)创建范围(Scope)
为了方便管理,在场景树右键点击Create > Scope,并重命名为
Joints,用于存储所有关节。(3)选择连接对象
要添加关节,必须先同时选中两个刚体。在场景树中先点击车身立方体
body,然后按住Ctrl 键选择左轮圆柱体wheel_left,注意直接选中立方体/圆柱,不要选轴!(4)创建旋转关节
在两者都高亮的状态下,右键选择Create > Physics > Joints > Revolute Joint(旋转关节)。此时
RevoluteJoint会出现在wheel_left下方,将其重命名为wheel_joint_left。(5)验证连接关系
在属性(Property)选项卡中确认
body0为
/XXX/body/cube(立方体车身)body1为
/XXX/wheel_left/wheel_left(圆柱体轮子)*重点(6)调整局部旋转
Local Position 0:关节在车身哪个位置
Local Position 1:关节在轮子哪个位置
Local Rotation 0:关节轴相对于车身怎么偏
Local Rotation 1:关节轴相对于轮子怎么偏
(7)设置关节轴
将关节的 Axis(轴)更改为 X。由于机器人没有局部旋转 0,关节的姿态将与车身保持一致。
(8)整理层级
将新创建的关节拖入
Joints范围内。(9)重复操作
对右轮关节重复上述最后五个步骤。
(10)样例
点击play后小车整体落下,拖拽车身前后移动小车整体运动。
1.4 添加关节驱动
添加关节只是建立了机械连接。若要控制和驱动关节,必须添加关节驱动API。
(1)添加驱动属性
同时选中两个关节(
wheel_joint_left和wheel_joint_right),点击Property(属性) 面板中的+Add按钮,选择Physics > Angular Drive,即可同时为两个关节添加驱动。(2)控制模式设置
位置控制 (Position Control):适用于需要精确角度的关节。设置高刚度 (High Stiffness) 和较低或零阻尼 (Damping)。
速度控制 (Velocity Control):适用于轮子等持续转动的关节。设置高阻尼 (High Damping) 和零刚度 (Zero Stiffness)。
(3)针对轮子的具体参数
对于轮子上的关节,使用速度控制更合理。将两个轮子的Damping(阻尼)设为
1e4(即 10000)。将Target Velocity(目标速度)设为200rad/s(弧度/秒)。(4)限位设置
如果你操作的是有活动范围限制的关节(如摆臂),可以在Property面板的Raw USD Properties > Lower (Upper) Limit中进行设置。
(5)测试
按下Play(播放),观察移动机器人模拟模型加速驶离。
1.5 添加关节体
虽然直接驱动关节可以移动机器人,但这不是计算效率最高的方法。将物体设为关节体 (Articulations) 可以获得更高的仿真精度、减少关节误差,并能处理连接物体之间巨大的质量比。欲了解更多背后的物理仿真原理,参阅Physics Core: Articulation。
要将一系列连接的刚体和关节转变为关节体,需要设置一个 关节体根节点 (Articulation Root) 来锚定整个关节树。根据Physics Core: Articulation中关于定义关节树的指令:
(1)对于固定底座关节体
将Articulation Root Component添加到连接"机器人基座"与"世界(环境)"的那个固定关节 (Fixed Joint) 上,或者该固定关节在USD层级中的任何祖先节点 (Ancestor)。
(2)对于移动/漂浮底座关节体
将Articulation Root Component添加到根刚体连杆或者该根连杆在USD层级中的任何祖先节点。
在层级树(Stage)中选择:选中名为cube的祖先节点,即XFrom。
在属性栏(Property)中点击:找到右下方的Property标签页,点击绿色的
+Add按钮。选择组件:在弹出的菜单中依次选择
Physics>Articulation Root。
1.6 添加控制器
(1)创建 Scope
通过右键点击Create > Scope创建另一个Scope,并将其重命名为Graphs。这将用于存储 ActionGraphs。
(2)层级调整
将Graphs Scope拖动到场景树中mock_robot Xform的下方。
(3)添加控制器
前往Tools > Robotics > Omnigraph Controllers > Joint Velocity,向场景中添加一个速度控制器图(Velocity Controller Graph)。该图允许通过设置每个关节的目标速度来控制机器人的运动。
(4)设置机器人 Prim
点击 "Robot Prim" 的Add按钮,选择带有Articulation Root API的Prim,在本例中即为 /Body。
(5)设置图路径 (Graph Path)
在Graph Path中填写/World/Body/Graphs/Velocity_Controller,以便将ActionGraph放置在上述的Graphs Scope中。
(6)确认创建
点击OK创建图。
(7)移动机器人
按下Play开始仿真。如果你设置了任何默认的位置或速度目标,机器人会立即向这些目标运动。
(8)更改指令
若要更改关节指令,请在场景树中的 /Graphs/velocity_controller 下选择 JointCommandArray,并在属性窗口中修改参数input0和input1。
input0:机器人关节列表中的第一个关节的目标速度rad/s;
input1:机器人关节列表中的第二个关节的目标速度rad/s。
PS.
对于这台特定的机器人,它也可以使用差速控制器 (Differential Controller) 进行控制。欲了解更多关于Omnigraph控制器快捷方式的信息,请参阅Commonly Used Omnigraph Shortcuts。
2 给机器人添加相机和传感器
Isaac Sim提供了多种传感器,可用于感知环境和机器人状态。本教程将引导你如何将相机传感器安装到模拟机器人上,该过程同样适用于其他传感器。关于相机和其他类型传感器的详细信息,可以在"进阶教程"和"传感器扩展"中找到。
2.1 学习目标
本教程详细介绍了如何:
添加相机
将相机绑定到几何体上
2.2 添加相机
(1)前往菜单栏并选择Create > Camera。一个相机节点将出现在场景树(Stage Tree)中,同时场景中会出现一个代表相机视野的灰色线框。
(2)可以像移动和旋转场景中的其他物体一样,调整相机的变换属性(Transform)。
PS.
在视口(Viewport)中,相机图标默认是隐藏的。要查看相机图标,请前往视口上边缘的眼睛(Eye)菜单,选择Show By Type > Cameras。随后,相机图标便会出现在视口中。
2.3 检查相机
使用相机检查器扩展 (Camera Inspector Extension) 来查看相机图像并根据需要修改相机状态。
选择菜单Tools > Sensors > Camera Inspector。
确认你可以在下拉菜单中看到该相机。点击 Refresh 按钮可以查找新添加的相机。
选择你想要检查的相机。如果需要,可以创建新的视口(Viewport),并根据需要获取或设置相机的位姿(Pose)。
2.4 将相机绑定到机器人
(1)新建Xfrom,Create-Xfrom,命名为
car_camera;
car_camera变换参数(Transform)设置为:Translation (位移):
x=0, y=-1, z=0.44Orientation (旋转/朝向):
x=-90, y=0, z=180Scale (缩放):
x=1, y=1, z=1(2)将刚才创建的
Camera拖拽到car_camera下;(3)如果你能同时看到相机拍摄的流画面以及相机相对于机器人的外部视角,调整相机位置会更容易。通过菜单栏 Window > Viewports > Viewport 2 打开第二个视口窗口。将新视口停靠(Dock)在任何你喜欢的位置。
(4)保持其中一个视口为Perspective(透视)视角,将另一个视口更改为
car_camera视角。在视口上边缘找到Cameras 菜单,切换到 Camera > camera。(5)确认现在拥有一个"车载相机视角"和一个"场景全局视角"。
(6)通过在Stage树中将相机节点(Prim)拖动到
Body节点下方,将其绑定到机器人主体上。现在相机将随主体一起移动。可能需要再次为该视口切换一次相机视角。(为了确认相机视角正确,博主加了个小方块)(7)验证
在显示车载相机的视口中,画面应能平分机器人车身和地面;同时在Perspective视口中确认相机相对于机器人的位置和朝向是否正确。
按下 Play。机器人上的相机会随机器人同步移动。
其他车载传感器也可以采用类似的策略进行安装。











