MENILY / LEARN具身仿真 · 从基础到后训练7 天课程 ↗
ENGINE FUNDAMENTALS · 第一课

让机器人读懂
一个三维世界。

这节课,我们让机械臂把一个边长 4 厘米的方块放进空盒子。
先不急着让它动:电脑需要知道方块长什么样、在哪里,以及盒子里面是不是真的空着。

讲解与交互 · 约 60 分钟实验与复盘 · 约 120 分钟无需安装仿真器
今天只追一件事

机器人仿真,就是在电脑中搭一个练习场,用模型和计算规则预演机器人的动作。它需要同时描述“看起来是什么样”和“碰到以后会怎样”。今天先学前面的基础:把场景描述清楚,运动和受力留到第二课。

直接进入动手实验 → · 查看一周实操路线 →

看懂方块的模型算对方块的位置找出盒口的隐形障碍

先搭一个练习场,
再教机器人做事。

想象一张桌子:左边放着一个方块,右边放着一个空盒子。机械臂的“手腕”上装着相机。任务是看见方块、夹住它、移到盒子上方,再松开夹爪。

  1. ① 搭场景今天学这个放好桌子、方块、盒子和相机;检查尺寸、位置和碰撞形状。
  2. ② 让机械臂动起来后续学习给机械臂发动作指令,计算方块会不会滑落、卡住或掉进盒子。
  3. ③ 检查并记录后续学习确认方块真的留在盒子里,再保存图像和动作,供训练或测试使用。

EmbodiChain 是我们后面要阅读和使用的机器人仿真工具。先理解这些基础概念,再看它的配置和教程,就能知道每个选项在解决什么问题。资产在这里指可重复使用的模型及相关设置,例如一个方块模型;策略指根据输入决定机器人下一步动作的程序或模型。

第一次学,按这个顺序走

先读 01–05 节,边读边动图里的开关和滑块;接着算一次相机成像,再做三个任务。标有“选读”的内容可以跳过,不影响完成本课。你不需要预先会矩阵、四元数或编程。

选读:为什么还会遇到 USD、Prim 和 Stage?

方块的模型可以重复放进不同场景。USD 是组织这类场景描述的一套技术:不仅保存形状,也能组织位置、层级和对其他文件的引用。

词用这张桌子来理解
Prim(场景元素)场景中的一个元素,例如代表桌子或相机的节点,可以带属性和关系。
Layer(层)保存一组场景描述。例如一层保存房间布置,另一层保存本次任务的修改。
Reference(引用)引用已有的方块资产,在新场景里继续使用它。
Stage(组合后的场景)程序读取各层和引用后,得到的场景视图。

这是帮助你阅读文档的入门解释。能正确组织文件,还不代表物体的运动一定准确。参见 OpenUSD 官方介绍。

工作中使用的任务与数据模板放在工作包里。先完成本课的场景说明卡,再尝试填写模板。

Mesh 不是物体本身,
而是它的表面描述。

可以把 Mesh(网格)想成用小三角形拼成的纸模型。把一个长方体的表面拆成三角形:三角形的角是顶点(vertex),连接顶点的是边(edge),围成的表面是面(face)。保存顶点坐标和面如何连接,就得到一个网格,也就是 Mesh。

我们的方块有 8 个角、6 个正方形表面。每个表面画一条对角线,就分成 2 个三角形,所以一共是 6 × 2 = 12 个三角形。下面的图只画出朝向我们的几个面,背面的角和面被挡住了。

交互 01

拆开一个表面

示意模型 · 非物理仿真
一个几何形状,多层表示

试着只保留顶点。你看到的是位置;加上连接关系,才知道这些位置怎样组成表面。

记住这一点

Mesh 主要回答“表面在哪里”。它没有自动回答“有多重”“碰到后怎样运动”“表面有多滑”。这些要另外描述。

法线、材质、纹理分别补了什么?

法线 Normal

可以想成垂直于表面的一支小箭头,告诉电脑这个面朝哪个方向。它会影响灯照过来时表面的明暗。

材质 Material

告诉电脑表面怎样反光:像磨砂木头,还是像亮金属?这里说的是外观,滑不滑还要另设物理参数。

纹理 Texture

像给纸模型贴花纹。贴上木纹会看起来像木头,但不会自动改变重量;画出一道凹槽,也不等于真的挖掉了材料。

先想一想:给零件贴上金属纹理,它会变重吗?

不会。外观变化与质量是两套描述。除非具体工具有额外规则根据材质设置物性,否则重量等物理属性需要另外设置。

“右边 30 厘米”,
是站在谁的位置说的?

你站在桌子南边,同事站在北边,你们的“右边”方向正好相反。机器人也会遇到这种问题:相机报告的位置,是从相机出发量的;机械臂需要的位置,可能是从机器人底座出发量的。直接照抄数字,就可能抓空。

坐标系可以理解为放好的一组尺子:先确定从哪里开始量(原点),再确定每个方向怎样算正数(坐标轴)。下面从上往下看桌面:世界坐标的 X 向右、Y 向上。“世界”只是给这组固定尺子起的名字。(0.60, 0.60) m 的意思是:从世界原点向右 60 厘米,再向上 60 厘米。括号里先写 X,再写 Y;m 表示米。

先看不旋转的情况:两个方向分别相加

相机在世界坐标 (0.60, 0.60) m。方块上的点 P 在相机坐标 (0.30, 0.10) m,也就是沿相机自己的 X 方向走 30 厘米、沿自己的 Y 方向走 10 厘米。当两套尺子方向一致时:

点 P 的世界位置

X:0.60 + 0.30 = 0.90 m
Y:0.60 + 0.10 = 0.70 m
所以 P 在世界坐标 (0.90, 0.70) m。

交互 02

同一个点,两种坐标

二维俯视切片 · 单位 m
世界 X世界 YO 世界原点XcYc

再把相机逆时针转 90°:先认方向,再相加

把旋转滑块调到 90°,相机 X 仍设为 0.6 m。原来相机的“向右”,现在朝世界的“向上”;原来相机的“向上”,现在朝世界的“向左”。于是,沿相机 X 走 30 厘米、沿相机 Y 走 10 厘米,就变成了向世界左边走 10 厘米、向上走 30 厘米。

一共两步
  1. 换方向:相机中的 (0.30, 0.10) m,换成世界方向的位移是 (−0.10, 0.30) m。负的 X 表示向左。
  2. 加起点:X = 0.60 − 0.10 = 0.50 m;Y = 0.60 + 0.30 = 0.90 m。最终位置是 (0.50, 0.90) m。

图中的 Xc、Yc 分别代表相机自己的 X、Y 轴;P 是待定位的点。本图约定 P 相对相机不动,所以移动或旋转相机时,P 也跟着移动。如果现实中的方块固定在桌上,相机移动后,改变的则是相机报告的方块坐标。

今天先记住这句话

换坐标系,就是把同一个位置改用另一套尺子描述。先把方向转对,再加上新起点的位置。传递位置时,至少说清“相对于谁”和“用什么单位”。

位姿(pose)比位置多一项:朝向。杯子可以在同一个位置正放,也可以倒放;位置相同,位姿不同。

选读:把刚才的两步写成公式,R、p、t 各是什么意思?
pworld = Rworld←camera · pcamera + tworld←camera
符号含义单位
pcamera点 P 在相机坐标里的位置。本例是 (0.30, 0.10)。小写 p 表示位置。米
Rworld←camera把相机方向转成世界方向的旋转矩阵。箭头读作“从 camera 到 world”。无单位
·这里是矩阵乘法,作用是换方向;不是把两组坐标逐个相乘。按列向量约定计算。—
tworld←camera相机原点在世界中的位置,本例是 (0.60, 0.60),也就是最后要加的起点。米
pworld计算得到的点 P 的世界位置。米

逆时针转 90° 时,R 的两行分别是 [0, −1] 和 [1, 0]。因此新 X = 0 × 0.30 − 1 × 0.10 = −0.10;新 Y = 1 × 0.30 + 0 × 0.10 = 0.30。接着加 t,就得到正文的答案。三维只是位置多了 Z 分量,旋转矩阵变成 3 行 3 列;本课不要求手算三维矩阵。

选读:文档里的 T 和四元数又是什么?

T 常用来把旋转 R 和平移 t 合在一个 4 行 4 列的表格里。三维点写成 [x, y, z, 1] 的列向量后,就能用一次矩阵乘法完成两步变换;最后的 1 是计算用的辅助数,不是第四个空间方向。

例如 Tworld←camera · Tcamera←object 表示:先把物体坐标变到相机坐标,再变到世界坐标。按本课的列向量约定,从右往左算,不能随意交换顺序。

四元数用四个满足特定约束的数字表示三维朝向,并不是四个角度。本文所引用的 EmbodiChain 接口按 [位置x, 位置y, 位置z, qx, qy, qz, qw] 排列七个数,其中 [0, 0, 0, 1] 表示没有旋转。其他工具可能换一种顺序,所以复制配置前要查接口说明。[来源见文末 1]

场景图告诉你:
谁属于谁,谁跟着谁。

现在把相机装到机械臂手腕上。手腕移动,相机也应该一起移动。电脑用场景图(scene graph)记录这种关系:把手腕叫作“父节点”,相机叫作“子节点”,再记录相机相对手腕的安装位置。文档中的末端指机械臂靠近夹爪的末梢部分;这里用“手腕”帮助理解。

交互 03

改变相机的父节点

平移关系示意
World 世界机器人末端桌面 / 零件Camera末端相机世界中的位置

先选“相机挂在末端”,拖动滑块,看相机是否跟着走。再选“相机固定在世界”,重新拖动:这次就像相机固定在房间的三脚架上,机械臂动,相机不动。切换按钮时,本图会把相机放到预设安装位置,因此可能突然跳一下;比较时看同一种安装方式下拖动前后的变化。

一个只平移、不旋转的例子

手腕在世界 X = 40 厘米处,相机装在它右侧 10 厘米处,那么相机的世界 X = 40 + 10 = 50 厘米。手腕移到 60 厘米处,相机就到 70 厘米处。安装距离没变,两者一起移动了。若手腕还发生旋转,就要像上一节那样先转换方向。

选读:场景图和 BVH 有什么区别?

场景图主要组织对象及其层级和变换;BVH(包围体层级)主要加速空间查询。想知道光线或物体可能碰到哪些三角形,可以先查较大的包围盒,再逐层缩小范围,避免对每个三角形都做昂贵检查。

场景图的问题

“相机属于哪个节点?末端移动,它应该跟着吗?”

BVH 的问题

“这条光线连整个包围盒都没碰到,还需要查里面的面吗?”

产品上的区别

层级错,常表现为位置错;加速结构与查询策略不合适,常表现为效率问题。

检查理解:让方块跟着夹爪移动,就证明真的抓住了吗?

没有。层级或视觉上的跟随只能证明描述关系。真实抓取是否成立,需要接触、约束或其他物理证据;仅改变场景父子关系可能“看着抓住了”,却绕过实际抓取过程。

眼睛看见的表面,
不一定是物理引擎接触的表面。

一个盒子可以有两套形状:外观模型(Visual mesh)负责画出你看见的盒子;碰撞形状(Collision geometry)负责告诉电脑,方块走到哪里会被挡住。碰撞形状通常画得更简单,方便快速计算。

想象一个中空料盒。如果为了省事,把它的碰撞形状设成一整块实心盒子,视觉上仍能看见盒口,物理上却可能出现一块“透明的盖子”。机器人把零件放进料盒时,就会被不存在于图像中的表面挡住。

交互 04

这个盒口,物理上开着吗?

二维截面 · 几何判断
蓝点:零件截面灰线:可见盒壁 橙色:参与碰撞的区域
先预测:蓝点能进入料盒内部吗?再点击“测试零件落点”。

图示只按所选截面的几何边界放置蓝点,没有计算重力、摩擦、弹性或接触求解;用于解释表示差异,不能当作仿真实验结果。

选读:除了盒子,还能用哪些碰撞形状?

凸包可以想成一层紧紧包住物体的外壳,它会跨过凹陷;SDF 则用空间各处到表面的距离描述形状。先知道它们各有适用场景即可。

碰撞表示好处可能丢失什么
盒、球、胶囊等简单形状结构简单,计算通常较轻凹槽、孔洞、薄壁细节
单个凸包覆盖复杂物体的外形凹陷与中空区域
多个凸体或简单形状组合可以保留部分任务关键结构仍有近似误差,接触数量可能增加
三角网格 / SDF 等适合保留更细几何性能与支持范围依赖后端;不能默认任意动态物体都适用
要往盒子里放东西,就必须留下内部空间

搬箱子时,箱外轮廓可能足够;把零件装进箱子时,内腔就是核心;插接任务还关心孔径、公差和边缘。不能脱离任务说“越精细越好”。

检查理解:接触发生在视觉表面前方,一定是碰撞网格错了吗?

不一定。还可能与接触偏移、碰撞裕量、坐标变换或尺度有关。先把 visual 与 collision 叠加查看,再核对单位与接触配置,避免只凭现象定因。

同一张桌子,
相机可以给出三种信息。

电脑知道方块在哪里,但机器人通常要根据相机图像来做判断。把三维场景画成图像的过程叫渲染;机器人拿到的图像、关节角等输入,统称观测。

RGB:普通彩色图

像手机拍的照片,告诉你哪里是什么颜色、亮不亮。RGB 是红、绿、蓝三个颜色通道的缩写。

深度:距离图

为图像上的位置记录距离。下面用深浅表示远近,真实数据通常保存距离数值,而不是这张蓝色图片。

实例分割:物体编号图

把属于同一个物体的像素标成同一个编号。本图用颜色显示编号,方便你看出哪里是方块、哪里是盒子。

交互 05

同一场景,三种观测

颜色编码示意
RGB:颜色与亮度
RGB 带有外观与光照信息。拖动光照,几何保持不变,图像亮度发生变化。

试一试:在 RGB 模式下调暗光照,方块会变暗,但没有变小或移动。再切换深度与实例分割,观察同一场景用另一种方式表达。这里的切换是概念示意,没有真实计算每个像素的距离。

内参、外参:一个管怎样拍,一个管装在哪

内参描述相机怎样把场景变成图像,例如焦距。外参描述相机相对于世界或机器人底座的位置和朝向。可以先用拍照理解:改变焦距,会改变画面里物体的大小;把相机搬到桌子另一侧,则改变了拍摄位置。下一节亲手试焦距的作用。

电脑知道答案,不等于机器人看到了答案

仿真器可以直接查到方块的准确位置,像老师手里的标准答案。但如果真正部署的机器人只有彩色相机,就要确认控制程序能从这些图像完成任务,不能默认它也能直接查到方块位置。训练时可以利用标准答案,但要另行设计用法。

选读:物理、控制、相机的频率各是什么?

Hz 表示“每秒多少次”。假设每秒计算 100 次物体运动、发出 20 次动作指令、拍摄 10 张图像。那么平均每 0.1 秒,会计算 10 次运动、发出 2 次指令、获得 1 张新图。这是三种不同的节奏;反复读取旧图,不会得到新画面。

选读:接入真实相机数据,还要确认什么?

深度值的单位可能是米或毫米;距离可能沿相机正前方量,也可能沿从镜头到物体的斜线量。分割图的颜色可能只是显示方式,文件里保存的是物体编号。还要确认图片拍摄的时间,是否与机械臂记录位置的时间对应。

画面变了,
世界一定变了吗?

方块从桌上掉下来时,电脑要做两件事:算它下一刻落在哪里,再画出那个时刻的图像。负责计算运动的程序叫物理求解器,负责画图的程序叫渲染器。下面先让方块不动,只改变相机设置。

  1. 先摆好场景方块 · 桌子 · 盒子确定方块的大小和位置,设置好相机与灯。
  2. 计算它怎样动下一刻会在哪里?例如松开夹爪后,方块受重力影响向下掉,碰到盒底后停下来。
  3. 画出眼前的样子相机会拍到什么?根据当前场景生成图像。改变焦距可以放大画面,但方块本身不会变大。

实验 A:同一个零件,为什么忽大忽小?

我们的方块实际宽 4 厘米,也就是 0.04 米。把它正对相机,放在镜头前方 1 米处。图像由一格格小色块组成,每格叫一个像素,缩写是 px。下面的整张图宽 640 像素;我们要算的是:方块在这张图里占多少个像素。

图中宽度 = 焦距 × 实际宽度 ÷ 距离
w = f × W ÷ Z
符号具体指什么本例数值
w(小写)方块在图像中的宽度,是我们要求的结果。待计算,单位 px
f以像素表示的焦距。在这张固定宽度的图里,数值越大,方块看起来越大。600 px,不是 600 毫米
W(大写)方块实际有多宽,与它在屏幕上多大是两回事。4 厘米 = 0.04 m
Z从相机沿正前方到方块正面的距离。1 m
把数值代进去

w = 600 px × 0.04 m ÷ 1 m = 24 px。
乘上的米和除以的米相互抵消,结果留下像素。也就是说,4 厘米宽的方块,在这张图里只有 24 个像素宽。

这个简单公式使用理想针孔相机模型:方块正面对着镜头、位于画面中央,忽略镜头畸变。Z 沿相机正前方测量。本页屏幕可能缩放图片,24 px 指原始 640 像素图像中的宽度。

640 px 画幅 · 中心视图

f = 600 px;Z = 1.0 m;零件投影宽度 = 24.0 px

先预测,再拖动:① f 从 600 改成 1200;② 保持 1200,把 Z 从 1 改成 2;③ 解释为什么第二次画面大小回到起点,但相机配置不同。

查看验收答案

① 1200 × 0.04 ÷ 1 = 48 px,焦距加倍,图中宽度加倍。② 1200 × 0.04 ÷ 2 = 24 px,距离也加倍,图中宽度回到原值。两次画面一样大,不代表拍摄距离一样;方块实际始终宽 4 厘米。

阅读依据:Scratchapixel 针孔相机。进一步在 RTX Renderer 中比较渲染模式时,固定相机、分辨率与物理状态;画质和接触精度分别验收。

实验 B:把真实桌面搬进仿真,要检查什么?

Real2Sim 就是从真实世界建立仿真场景,例如根据桌面的照片重建模型。照片看着像,只能说明外观接近,不能证明方块的尺寸、重量或滑动方式也对。练习:从下面四行各选一项,用自己的话写出怎样检查。

层级要查什么本课可做 / 后续验证
外观视角、遮挡、光照、材质固定相机后比图,不能只挑最好看的一帧
几何方块尺寸是否正确,盒子内腔是否保留用已知 40 mm 零件检查比例;保留料盒内腔
动力学多重、滑不滑、碰到后怎样运动Day 2 做落体/滑动对照;照片不能确定全部物性
任务是否夹住、是否放进去、松手后是否留在盒内动作结束后,继续检查方块是否稳定留在盒子里

方块、软线缆和一堆颗粒,运动方式很不一样。学会这个方块案例后,换材料还需要重新检查工具是否适用。Newton 的求解器矩阵提供了一种逐项检查的方法。

判断题:日志显示 done,画面也很好看,能宣布抓放成功吗?

还不能。教学任务可以先定义:目标物进入指定区域、夹爪释放、持续稳定一段时间,且无不允许的碰撞;阈值必须由任务决定。日志里的 done 有时只表示“这条指令执行完了”。还要另查:夹爪是否松开,方块是否进入盒子,并在其中稳定停留。查看已读的官方章节。

这一节约 15 分钟。页面只计算简单投影,没有运行 GPU 渲染器或物理仿真。

把“看懂了”,
变成“我能做出来”。

先用 20 分钟完成三个浏览器任务,再用约 40 分钟修改实验文件。第一次接触命令行的话,可以分两次完成。每项都走一遍:先预测 → 操作 → 留下证据 → 解释差异。浏览器任务检查概念操作;文件实验生成真实几何与坐标报告,两者都不计算动力学。

浏览器任务:0 / 3 完成

操作记录只保留在当前页面,刷新会清空。完成后下载记录;文件实验需自行按验收清单检查。

任务 A · 5 分钟 · 坐标变换

把世界坐标算对,再让图示验证

相机位置为 (0.60, 0.60) m,在俯视图中逆时针转 90°;相机内的点为 (0.30, 0.10) m。先写出你的世界坐标预测,再回到坐标实验台把平移和角度调到题目要求。

等待预测与操作。

卡住了?看一条提示

逆时针转 90° 后,(x, y) 变成 (−y, x),再加上相机的世界位置。旋转与平移的先后很重要。

任务 B · 8 分钟 · 相机挂载

用两组前后对照,证明“谁跟着谁”

  1. 在场景图实验台选择“相机固定在世界”,回到这里记录起点。
  2. 回实验台拖动末端滑块(至少变化 20),再回来记录终点。
  3. 换成“挂在末端”,重新记录起点,移动末端并记录终点。

这里记录的是图示位置(px),用于比较是否随动,不是机器人实际位移。

尚未记录起点。

  • World 挂载:待记录
  • 末端挂载:待记录

需要完成两组对照。

任务 C · 7 分钟 · 碰撞体排错

同一个料盒,做两次落点测试

前往碰撞实验台,分别选整块实心盒和盒壁组合,各点一次“测试零件落点”。再关闭碰撞体显示:物理描述是否就消失了?

  • 整块实心盒:未测试
  • 盒壁组合:未测试

等待两种碰撞体的测试。

文件实验 · 40 分钟 · Python 3.9+ · 无需 GPU

修改一个配置,生成模型与检查报告

你会拿到一个故意配错的场景:把相机坐标当成世界坐标,料盒碰撞体还是实心。你的任务是修好它,再用单位错误做一次反向验证。

下载 Day 01 实验包 ↓ 查看完整操作说明

  1. 解压并进入文件夹。 包内包含 scene_lab.py、scene-broken.json 和中文说明。.json 是用文字保存设置的配置文件,.py 是 Python 程序。可在已有 Python 的云端开发环境(例如 GitHub Codespaces)中上传、解压后运行,不依赖这台电脑作为服务器。在终端(输入命令的窗口)运行下面的第一条命令。
  2. 读失败报告。 预期看到 2 项 FAIL、1 项 PASS;这是故意设置的错误。查看 before/report.md,找到“位置”和“碰撞”两项未通过的原因。FAIL 是未通过,PASS 是通过,这次出现失败是预期结果。
  3. 修复坐标与碰撞。 复制配置为 scene-fixed.json;先保留 command.frame 为 world,把 command.position 改成 [0.5, 0.9, 0.2]。前两个数来自本课算例;第三个数是高度:相机高 0.4 米,点在相机下方 0.2 米,所以高 0.2 米。再把 bin_collision 改成 walls。运行第二条命令,检查 3 项 PASS。
  4. 做单位对照。 把米改为毫米时,同时将位置数值乘 1000,应该仍通过;另复制一份原来的米制配置,故意只把单位改为毫米、不改数值,坐标检查应失败。分别保存两份报告。
python3 scene_lab.py scene-broken.json --out before
python3 scene_lab.py scene-fixed.json --out after

命令中的 python3 表示用 Python 运行程序,紧接着是程序名和配置文件名;--out before 表示把结果放进 before 文件夹。Windows 可以用 py -3 代替 python3。无需额外安装 Python 包。程序仅写入指定输出目录;重复运行会覆盖该目录内同名结果文件。

你生成的产物可以检查什么
part.obj40 mm 零件:8 个顶点、12 个三角面
bin_visual.obj / bin_collision.obj外观中空,但碰撞体可能封口;修复后都保留内腔
scene.json位置用米表示,Z 轴向上;保存物体在世界中的位置。这是本实验自定义的场景清单
report.json / report.md世界坐标、位置误差、三项静态检查的结果
文件实验的验收

留下修复前、修复后、正确毫米配置、错误毫米配置共 4 份报告;用 150 字解释“数值、单位、参考系缺一不可”。全部检查通过,只代表这些静态规则通过,抓取是否成功要到物理与控制课程再验证。

可选加练 · 20 分钟:把模型真正打开到 Blender
  1. 打开 Blender,在 File → Import 中选择 Wavefront (.obj),导入 before/bin_visual.obj 与 before/bin_collision.obj。若导入选项要求轴向,使用 Y Forward / Z Up。
  2. 在对象列表中分别隐藏、显示它们,观察视觉盒壁与实心碰撞模型。也可将碰撞模型的 Viewport Display → Display As 设为 Wire,叠加比较。
  3. 在新场景中导入 after 对应文件,查看内腔是否保留。导入 part.obj,确认边长为 0.04 m;若尺寸不符,先查导入缩放与场景单位。
  4. 保存一份 .blend 文件和两张对比截图。这一步是实际模型检查,还没有为 Blender 设置刚体与碰撞物理。

本实验包的文件生成与报告已经验证;Blender 图形界面步骤尚未实际验证。不同版本的菜单名称可能略有区别。仅需查看模型时,不必安装 Isaac。

Isaac 会在哪一步用到?

Isaac Sim 用于搭建机器人、物理场景与传感器;Isaac Lab 用于组织机器人学习任务、观测、动作、奖励和训练。课程安排在 Day 3 进入 Sim,在 Day 6 进入 Lab;Day 1 先学会检查送入这些工具的几何与坐标。

完整安排见一周实操路线。GPU 实操按选定版本核对官方硬件要求;没有合适 GPU 时,先完成 CPU 路线,保留待补项。

用一张说明卡,
描述这次抓放任务。

现在不看术语表,试着向同事说明你搭的场景。下面是一个填写示例;涉及位置的数值都是教学设定,实际项目要测量或验证。

要说清什么我们的场景
方块长什么样?边长 4 厘米的立方体,表面用 12 个三角形组成。
方块在哪里?中心世界坐标为 (0.50, 0.90, 0.20) 米,依次是 X、Y、Z。实际摆桌面时还要核对桌面高度。
相机跟着谁?固定在机械臂手腕上,安装位置相对于手腕保持不变。
盒子哪里会挡住方块?底部和四面盒壁会挡住,盒子内部和开口不应被碰撞形状填满。
控制程序拿到什么?先假设只拿到 RGB 彩色图。方块准确位置可供我们检查,但不直接交给控制程序。
哪些还不知道?方块质量、摩擦、怎样控制夹爪;留到后续课程确认。

10 分钟练习:自己改写一张

照上表写六句话。再做两个改动:把相机移到固定三脚架上,把方块位置改用毫米表示。圈出需要修改的行,并解释理由。进阶时,可以把这张卡填入任务与数据模板。

选读:在 EmbodiChain 官方教程里找对应设置

打开 场景创建教程,先只找三件事:在哪里添加物体、在哪里填写初始位置、在哪里设置相机。能把这些设置与本课的模型、坐标、相机对应起来,就达到了今天的阅读目标。

后面会遇到 prepare(),它负责把声明好的场景准备成可运行的对象;再往后才是推进物理计算和获得图像。今天不需要记 API,也不要求安装环境。本页的图示不是 EmbodiChain 的运行结果。

10 分钟排错:盒子看着空,方块却进不去

你看到方块停在盒口。先写下两个可能原因,并给每个原因配一个具体检查动作。例如:“碰撞形状封住了盒口 → 打开橙色叠加,看开口是否被填满”。也可以把刚才的场景说明卡写在下面。

笔记仅保留在当前页面内存中,刷新会清空;离开前可下载为文本。不会上传。

完成后再看:一组可接受的排查思路
  • 碰撞体封住盒口。 开启碰撞几何叠加,查看零件与盒口实际接触位置。
  • 记录坐标系或单位不一致。 查看记录写的是相机坐标还是世界坐标、用米还是毫米,换成同一套坐标后再比较。
  • 渲染与状态读取不同步。 核对读取时机、状态更新时间和相机帧时间。
  • 动作结束条件只代表指令完成。 另外检查方块是否进入盒子,并在松手后稳定停留。

也可以提出不同假设;关键是每个假设都有可观测证据和可执行的验证办法。

合上术语表,
看看你能不能解释。

每题选一项,即时查看原因。建议先独立答题,达到 5/6 后,再用自己的话讲一遍错题。

已作答 0 / 6 · 正确 0 题

最后的 3 分钟口述

“我创建了一个抓放场景。其中 Mesh 负责……,坐标变换负责……,场景图负责……,碰撞几何负责……,相机负责……。如果出现抓空,我会先检查……,因为……”

能把故障说具体,
你就开始真正理解引擎了。

这一课,放在一周的哪里?

Day 01三维表示
正在学习
Day 02物理与接触
待上线
Day 03机器人与控制
待上线
Day 04数据与质检
待上线
Day 05模仿学习与评测
待上线
Day 06RL 与前沿证据
待上线
Day 07客户与试点
待上线

查看各天的操作步骤、产物与验收 →

下一课将接着问:描述清楚几何以后,物理引擎怎样决定接触力?零件为什么滑落、抖动或穿透?你今天画出的场景卡会继续沿用。

打开全部参考资料与实操导读 →

本课资料与版本
  1. EmbodiChain 仿真系统:生命周期与位姿约定 · 2026-09-17 提交 135ecb6。
  2. EmbodiChain 物理配置:碰撞几何与接触配置。
  3. EmbodiChain 渲染同步与相机挂载。
  4. EmbodiChain 官方场景创建教程 · 官方仓库正文,已锁定本次阅读提交;官网入口不可读时可使用。
  5. Robotics_Notebooks:刚体旋转 SO(3) / SE(3)。
  6. Robotics_Notebooks:Learn OpenUSD 学习入口。

课程更新:2026-09-21 · 第一课通俗改写:逐步算例、符号与单位说明、分层阅读。图示与教学案例为独立讲解,浏览器交互为概念演示,文件实验执行静态几何与坐标检查;均没有运行物理求解器。