目录
[1 场景搭建](#1 场景搭建)
[1.1 学习目标](#1.1 学习目标)
[1.2 设置场景属性](#1.2 设置场景属性)
[1.3 创建物理场景](#1.3 创建物理场景)
[1.4 添加地面](#1.4 添加地面)
[1.5 添加灯光](#1.5 添加灯光)
[2 搭建简易机器人](#2 搭建简易机器人)
[2.1 学习目标](#2.1 学习目标)
[2.2 给场景添加物体](#2.2 给场景添加物体)
[2.2.1 创建机器人主体](#2.2.1 创建机器人主体)
[2.2.2 创建轮式机器人](#2.2.2 创建轮式机器人)
[2.3 添加物理属性](#2.3 添加物理属性)
[2.3.1 赋予物理属性的步骤](#2.3.1 赋予物理属性的步骤)
[2.3.2 原理解析:Rigid Body与Collision API](#2.3.2 原理解析:Rigid Body与Collision API)
[2.3.3 如何管理已分配的API](#2.3.3 如何管理已分配的API)
[2.4 检查碰撞网格](#2.4 检查碰撞网格)
[2.5 添加接触与摩擦参数](#2.5 添加接触与摩擦参数)
[2.6 材质属性](#2.6 材质属性)
该专题将会讲解虚拟世界的搭建、并利用NVIDIA Isaac Sim的各种功能构建机器人的"数字孪生(Digital Twins)。在此过程中,将学习到:常用属性、设置和工具的具体位置;熟悉工具栏、图标以及 OpenUSD 标准。
教程被设计为一个由浅入深(从初学者到高级)的渐进式学习路径。建议从 "设置轮式机器人(Setup a Wheeled Robot)" 章节开始学习,因为它涵盖了所有机器人类型都必须掌握的基础概念,包括:环境搭建 (Environment Setup)、基础机器人组装 (Basic Robot Assembly)、核心骨骼绑定技术 (Fundamental Rigging Techniques)。
1 场景搭建
Isaac Sim是基于NVIDIA Omniverse并使用Omniverse Kit提供的工具构建的。Omniverse Kit自带的默认界面让你可以轻松编辑USD场景(Stage)。在本教程中,将学习设置环境、在 USD 场景中添加和编辑简单物体及其属性、为刚体绑定关节和关节链,以及添加摄像头和传感器的基础步骤。其目标是培养你导航Isaac Sim的基础技能,熟悉常用术语,并能够使用 GUI 搭建环境和设置机器人。
1.1 学习目标
本教程教你如何使用Isaac Sim图形用户界面(GUI)提供的工具构建一个启用物理特性的虚拟世界,包括:
设置全局场景属性 (Setup global stage properties)
设置全局物理属性 (Setup global physics properties)
添加地面 (Add ground plane)
添加光照 (Add lighting)
1.2 设置场景属性
在向场景中添加任何物体之前,先验证当前的场景属性设置是否符合预期规范。
(1)打开首选项
依次点击Edit > Preferences(编辑 > 首选项)以打开首选项面板。
(2)浏览设置
在面板左侧的列中,可以浏览按类别分组的各类 Omniverse Kit 设置。
(3)选择场景 (Stage)
从左侧列中选择Stage并检查以下属性:
**朝上轴 (Up Axis):**决定"上方"的坐标轴。Isaac Sim的默认设置是Z。如果模型资产是在使用不同朝上轴的程序中创建的,导入时可能会发生旋转;
**场景单位 (Stage Units):**Isaac Sim 2022.1之前的版本使用厘米作为单位,但现在的默认单位是米 (meters)。然而,Omniverse Kit的默认单位仍为厘米。如果发现USD单位似乎偏移了 100 倍,请留意这一点;
**默认旋转顺序 (Default rotation order):**默认设置为按照Z、Y、最后X的顺序执行旋转。
1.3 创建物理场景
(1)创建物理场景
前往菜单栏,点击Create > Physics > Physics Scene。
(2)验证添加
确认PhysicsScene已添加到右侧的场景树(Stage Tree)中。
(3)检查重力属性
点击该节点以查看其属性。会看到重力被设置为地球重力加速度,即9.8m/s^2。当前的默认长度单位是米(meters)。
(4)配置物理引擎设置
除非正在模拟数百个刚体和机器人,否则使用CPU进行物理计算效率更高:
打开Physics Scene的Property(属性)面板;
取消勾选 Enable GPU dynamics(启用 GPU 动力学);
将Broadphase(宽相检测)类型设置为MBP。
PS.Broadphase(宽相检测)类型设置
a.Multi-Box Pruning(MBP多盒剪裁)
将整个3D空间划分为多个"格子"或"盒子"区域。物理引擎只会在同一个盒子或相邻盒子内的物体之间进行精细的碰撞检查。适用于物体分布在一个广阔的平面(如工厂、实验室)上,且物体的活动范围是可以预测的。在处理大量动态物体或物体分布不均时,通常能提供更稳定的CPU性能。
b.Sweep-and-Prune(SAP扫描裁剪)
适用于物体数量少 (1-2个机器人或几个小方块),物体分布非常分散 或物体大多处于静止状态。
c.GPU
适用于大规模并行仿真、复杂软体/粒子、高密集碰撞。
1.4 添加地面
地面(Ground Plane)可以防止任何启用了物理特性的物体从其下方坠落。虽然该平面的可视范围在每个方向上仅为25米,但其碰撞属性是无限延伸的。
要在虚拟环境中添加地面:
(1)添加地面节点
前往顶部菜单栏,点击 Create > Physics > Ground Plane;
(2)开启网格显示
点击视口顶部的眼睛图标并选择Grid(网格)以开启网格线,这样可以更清楚地看到地面。
1.5 添加灯光
每一个新场景(Stage)都会预先填充一个默认光照(defaultLight),否则你将无法看到任何物体。此默认光照是场景中Environment Xform的子节点,可以在场景上下文树(Stage Tree)中找到。
以下是创建额外聚光灯(Spotlight)的步骤:
(1)添加地面
如果场景中还没有地面,请先添加一个,以便观察光线的反射。点击Create > Physics > Ground Plane。
(2)创建球形灯
点击Create > Light > Sphere Light。
(3)调整灯光在场景中的位置
在右上角的Stage 标签页中,从场景树里选中新创建的灯光。在下方的Property(属性)标签页中,找到Transform 部分,使用Translate(位移)工具将其移动到地面上方的位置,例如
(0, 0, 3)。在同一部分的Orient(朝向)工具中,将旋转设置为(0, 0, 0)。(4)修改灯光的颜色、亮度和范围属性
在Property标签页中,通过点击Main > Color的色条来更改颜色,选择你喜欢的颜色。例如淡绿色
(RGB: 0.5, 1.0, 0.5)。同样在Property标签页中,将Main > Intensity(强度)更改为1e6(1000000);将Main > Radius(半径)更改为0.05。在Shaping(塑形)部分,将cone:angle(锥角)更改为45度,将cone:softness(锥角软化)更改为0.05。(5)减弱默认光照
为了让新的聚光灯效果更明显,需要降低默认光照的强度。选中defaultLight,在其Property 标签页中将Main > Intensity设置为
300。
2 搭建简易机器人
本教程将引导你通过基础GUI功能向场景(Stage)中添加物体,并介绍如何检查和修改它们的物理属性及材质属性。
2.1 学习目标
(1)添加并操作基础形状;
(2)启用物体的物理属性;
(3)检查碰撞属性;
(4)编辑物理属性,例如摩擦力;
(5)编辑材质属性,例如颜色和反射率。
2.2 给场景添加物体
向场景"添加物体"有多种方式,但其本质都是在场景树(Stage Tree)中定义一个USD 原始单元(Primitive)。本教程的目标是创建一个基础的双轮机器人,我们将从创建基础形状并修改其属性开始,使用立方体作为车体,圆柱体作为车块。
2.2.1 创建机器人主体
(1)创建Xform
在场景(Stage)面板中右键点击,选择Create > Xform;
(2)重命名
右键点击该Xform,选择Rename,将其重命名为
body;(3)设置位置
在属性(Property)面板的Translate部分,将坐标设置为 (0, 0, 1)(即 X=0, Y=0, Z=1);
(4)创建立方体
点击顶部菜单栏的Create > Shape > Cube。此时能在视口中看到立方体以及移动轴向工具(Gizmo)(红、绿、蓝三个箭头);
(5)手动移动
点击并拖动蓝色箭头,将立方体抬升到地面之上;
(6)激活缩放工具
在软件左侧工具栏点击Scale(缩放)图标(或者在选中立方体的情况下按 R 键);
(7)手动缩放
点击并拖动工具上的红色部分,在 X 轴方向缩放立方体;
(8)精确设置尺寸
在属性面板的Transform > Scale 中,直接输入数值 (1, 2, 0.5);
(9)层级整理
将立方体(Cube)拖拽到名为
body的Xform节点下。
2.2.2 创建轮式机器人
(1)创建左轮Xform
在场景(Stage)面板中右键点击,选择Create > Xform;
(2)设置位置与旋转
在属性面板中,将Translate(平移)设置为 (1.5, 0, 1),并将 Orient(旋转)设置为 (90, 0, 0),使轮子绕 X 轴旋转 90 度;
(3)重命名
右键点击该Xform 并选择Rename,将其重命名为
wheel_left;(4)创建圆柱体
点击顶部菜单栏的Create > Shape > Cylinder;
(5)修改几何属性
在右下角的属性面板中,向下滚动到Geometry(几何)部分。将Radius(半径)更改为 0.5,并将Height(高度)更改为1.0;
(6)建立层级关系
将圆柱体拖拽到
wheel_leftXform节点下,注意轴与圆柱体参数设置;(7)克隆并移动右轮
在场景树中右键点击
wheel_left,右击选择Duplicate(克隆),将克隆出的物体移动到 X = -1.5,同时保持所有其他参数不变;(8)重命名右轮组件
将克隆出的Xform重命名为
wheel_right。
2.3 添加物理属性
目前为止,添加的立方体和圆柱体仅作为**视觉原始单元(Visual Prims)**存在,尚未附加任何物理或碰撞属性。当你按下 Play(播放)开始模拟并施加重力时,这些物体不会移动,因为它们不受物理系统影响。
2.3.1 赋予物理属性的步骤
(1)选择物体
在场景树(Stage Tree)中,按住Ctrl键依次点击立方体(Cube)和两个圆柱体(Cylinders)进行多选;如果它们是连续列出的,仅按住Shift键即可;
(2)添加预设
在属性(Property)面板中,点击 + Add 按钮;
(3)应用物理预设
选择Physics > Rigid Body with Colliders Preset(刚体与碰撞体预设);
(4)验证模拟
按下Play按钮,确认这三个物体都会受重力影响掉落到地面上。
2.3.2 原理解析:Rigid Body与Collision API
"Rigid Body with Colliders Preset" 预设会自动为物体添加Rigid Body API(刚体接口) 和 Collision API(碰撞接口)。这两个API可以分开单独应用,因为在仿真中可能存在以下特殊需求:
仅有质量受重力影响,但无碰撞:物体会下落,但你可以穿过它。
仅有碰撞,但不收重力影响:物体可以被撞击,但会悬浮在空中不会下落。
2.3.3 如何管理已分配的API
若要验证、添加或删除选定物体的API:
查看状态:在物体的属性(Property)面板中,向下滚动找到标有Rigid Body和Collider 的部分。
单独添加:若需分别添加API,可在同一个+Add按钮下找到它们。
删除属性:若要移除某个API,点击该属性栏右上角的X即可删除该部分。
PS.
对于动态物体(Dynamic objects),其碰撞形状只能从Convex Hull(凸包)、Convex Decomposition(凸分解)、Sphere Approximation(球体近似)或SDF mesh(仅限GPU后端)中选择。Triangle mesh(三角网格)碰撞形状仅适用于静态物体。
2.4 检查碰撞网格
为了直观地检查物体碰撞网格的轮廓,请执行以下操作:
(1)找到视口图标
在视口(Viewport)窗口顶部找到眼睛图标;
(2)开启碰撞显示
点击Show By Type > Physics > Colliders > All;
(3)验证紫色轮廓
确认所有应用了碰撞API的物体周围都出现了紫色轮廓。例如,检查并确认长方体(车身)、圆柱体(轮子)以及地面(Ground Plane)都有这些轮廓。
2.5 添加接触与摩擦参数
若要修改摩擦属性,必须创建一个不同的物理材质 (Physics Material),然后将其分配给目标物体。
(1)创建材质
前往菜单栏,点击Create > Physics > Physics Material;
(2)选择类型
在弹出的对话框中选择Rigid Body Material(刚体材质),此时一个新的
PhysicsMaterial会出现在场景树(Stage Tree)中;(3)调整参数
在其属性(Property)面板中调整摩擦系数 (Friction Coefficients) 和弹性/恢复原状系数 (Restitution) 等参数;
如何将分配好的物理材质应用到物体上:
(1)选择物体
在场景树中选中你想要修改的物体(如轮子或车身);
(2)查找菜单
在属性面板中找到Materials on Selected Model(已选模型的材质)菜单项;
(3)下拉分配
在下拉菜单中选择刚才创建的那个物理材质。
2.6 材质属性
物体可能会反射早前添加的聚光灯颜色,但实际上它们并未被分配任何颜色。你可以通过关闭聚光灯来确认这一点。
若要更改物体的颜色,需要创建不同的材质并将其分配给物体,操作流程与物理材质类似。例如,可以创建两种不同的材质,分别用于车身和轮子。
(1)创建材质
点击菜单栏的Create > Materials > OmniPBR两次;
(2)重命名
在场景树(Stage Tree)中右键点击新添加的材质,分别重命名为
body(车身)和wheel(轮子);(3)分配材质
在场景树中选中对应的刚体物体。前往其属性(Property)面板,找到Materials on selected models选项,在下拉菜单中选择匹配的材质;
(4)修改材质属性
在场景树中选中其中一个新材质,在Material and Shader > Albedo部分更改其基础颜色(Base Color),还可以尝试调整反射率(Reflectivity)、粗糙度(Roughness)或其他感兴趣的参数;
(5)验证效果
确认小车对应部件的颜色已随之发生变化。
PS.该部分仅对视觉要求较高的仿真场景才需设置。










