预备知识第 02 篇

02|机器人动作与动作空间

本文把 01 中抽象的 (a_t) 拆开。学习完后,你应该能回答:模型输出的每个数字究竟在控制什么?它是位置、增量、速度还是力?它在哪个坐标系中有效?为什么同样是 (\mathbb{R}^{d_a}) 里的向量,换一台机器人就可能完全不能直接使用?

1. 先抓住主线:从“想做什么”到“控制器收到什么”

“把红色杯子放进水槽”是任务语义;“向前移动 2 cm、下降 1 cm、夹爪闭合到某一开度”才是可执行的低层控制。两者之间隔着一层非常重要的动作表示。

语言任务与视觉观察

策略决定当前子目标和短期运动意图

动作表示:一串带明确语义的数字 a_t 或动作块 a_{t:t+H-1}

接口转换:反归一化、坐标变换、逆运动学、限幅

底层控制器:向电机发送位置 / 速度 / 力矩等命令

机器人与环境发生变化,再得到新的 observation

因此,论文里说“模型预测动作”时,不能默认它直接在控制电机力矩。更常见的情形是:模型先输出一个控制目标,再由机器人已有的底层控制器跟踪这个目标。动作向量的解释必须连同控制接口一起读。

沿用上一章的闭环记号:

otπθ()atcontroller + robotxt+1sensorot+1.o_t \xrightarrow{\pi_\theta(\cdot\mid \ell)} a_t \xrightarrow{\text{controller + robot}} x_{t+1} \xrightarrow{\text{sensor}} o_{t+1}.

其中 (o_t) 是当前观察,(\ell) 是语言任务,(a_t) 是策略在时刻 (t) 输出的低层动作;(x_t) 仍表示真实但通常无法完整观测的世界状态。本文只聚焦中间的 (a_t)。

2. 动作 (a_t) 与动作空间 (\mathcal{A}) 不是一回事

2.1 一个动作是一次具体的控制输出

第 (t) 个控制时刻,动作可抽象为一个 (d_a) 维向量:

at=[at,1,at,2,,at,da]Rda.a_t= \left[a_{t,1},a_{t,2},\ldots,a_{t,d_a}\right]^\top \in \mathbb{R}^{d_a}.

例如,对一只六自由度机械臂加一只一维夹爪,若接口采用“关节目标位置 + 夹爪目标开度”,则可以写成:

at=[q1,tcmd,q2,tcmd,,q6,tcmd,gtcmd]R7.a_t= \left[ q^{\mathrm{cmd}}_{1,t},q^{\mathrm{cmd}}_{2,t},\ldots, q^{\mathrm{cmd}}_{6,t},g^{\mathrm{cmd}}_t \right]^\top \in\mathbb{R}^{7}.

上标 (\mathrm{cmd}) 表示 command(命令或目标),刻意与上一章的本体感知状态 (q_t) 区分:

  • (q_t):传感器读到的当前关节状态;
  • (q_t^{\mathrm{cmd}}):策略希望底层控制器去跟踪的关节目标;
  • (g_t^{\mathrm{cmd}}):夹爪的目标开度、开关状态、速度或力,取决于接口定义。

只有知道每一维的物理含义、单位、参考坐标系和控制模式,(a_t) 才是可解释的;仅知道它的 shape 是 [d_a] 远远不够。

2.2 动作空间是“允许输出什么”的集合

动作空间 (\mathcal{A}) 描述所有允许的动作,而 (a_t) 是其中的一次取值:

atA.a_t\in\mathcal{A}.

在最简单的数学模型中,常把它写作 (\mathcal{A}\subseteq\mathbb{R}^{d_a})。但真实机器人中,(\mathcal{A}) 几乎从来不等于整个 (\mathbb{R}^{d_a})。以关节目标为例,至少要满足关节位置、速度与夹爪范围:

Ajoint={aRda  |  qminqcmdqmax,  qcmdqtq˙maxΔt,  gmingcmdgmax}.\mathcal{A}_{\mathrm{joint}}= \left\{ a\in\mathbb{R}^{d_a} \;\middle|\; q_{\min}\le q^{\mathrm{cmd}}\le q_{\max}, \;\left|q^{\mathrm{cmd}}-q_t\right|\le \dot q_{\max}\Delta t, \;g_{\min}\le g^{\mathrm{cmd}}\le g_{\max} \right\}.

这里 (\Delta t) 是相邻控制时刻的间隔。还可能有工作空间、碰撞、安全距离、接触力等约束;这些约束有的由训练数据隐式学到,有的由底层控制器或安全模块显式处理。

**关键结论:**动作维度 (d_a) 只说明“输出有几个数”,并不说明“任何这几个数的组合都合法”,更不说明它们在另一台机器人上有相同含义。

3. 读动作数据时,先问四个问题

任何 action 字段都可以从四个互相独立的维度来解析:

需要确认的事典型选项它决定什么
控制哪个对象左右臂、夹爪、底座、升降机构、灵巧手向量被怎样分段
用什么物理量控制关节角、末端位姿、速度、力矩、夹爪开度每一维数值的含义与单位
相对哪个坐标系世界、机器人底座、末端执行器、相机“向前/向右”实际指向哪里
用什么时间语义绝对目标、相对增量、速度、力同一个数如何随时间变成运动

这四个问题必须一起回答。比如 0.02:它可能表示 0.02 rad 的关节增量、0.02 m 的世界系位移、0.02 m/s 的底座速度,或归一化后没有单位的网络输出。脱离接口文档,单个数字没有唯一解释。

4. 关节空间:直接控制机器人自身的自由度

4.1 关节配置与前向运动学

一只拥有 (n) 个机械臂关节的机器人,其关节配置可写为:

qtjoint=[q1,t,q2,t,,qn,t]Rn.q_t^{\mathrm{joint}}= \left[q_{1,t},q_{2,t},\ldots,q_{n,t}\right]^\top \in\mathbb{R}^{n}.

若要把夹爪也放进同一配置向量,可写为:

qtrobot=[qtjoint,gt].q_t^{\mathrm{robot}}= \left[q_t^{\mathrm{joint}},g_t\right].

机械臂末端在空间中的位置与姿态由前向运动学决定:

TE,tW=fFK(qtjoint).T^{W}_{E,t}=f_{\mathrm{FK}}\left(q_t^{\mathrm{joint}}\right).

其中 (T^{W}_{E,t}) 是末端执行器坐标系 (E) 相对世界坐标系 (W) 的位姿变换。这个式子告诉我们:关节角是“机器人内部的描述”,而末端位姿是“手最终到了哪里”的描述。

4.2 两种常见的关节动作接口

绝对关节目标。 模型直接给出下一时刻应跟踪的目标配置:

atjointpos=[q1,tcmd,,qn,tcmd,gtcmd].a_t^{\mathrm{joint-pos}}= \left[q_{1,t}^{\mathrm{cmd}},\ldots,q_{n,t}^{\mathrm{cmd}},g_t^{\mathrm{cmd}}\right].

关节增量。 模型给出相对当前状态的小改变量:

atΔjoint=[Δq1,t,,Δqn,t,Δgt],a_t^{\Delta\mathrm{joint}}= \left[\Delta q_{1,t},\ldots,\Delta q_{n,t},\Delta g_t\right], qtcmd=qtjoint+Δqt.q_{t}^{\mathrm{cmd}}=q_t^{\mathrm{joint}}+\Delta q_t.

关节目标通常容易直接接到底层位置控制器,也不需要在线求逆运动学;但它的缺点是可迁移性弱:同一个关节编号在不同型号机器人上未必对应同一段肢体、同一运动范围,甚至同一正方向。

4.3 不要把状态 (q_t) 和动作混为一谈

这一点很容易在代码中出错。若数据记录为:

(qtjoint,qt+1joint),\left(q_t^{\mathrm{joint}},q_{t+1}^{\mathrm{joint}}\right),

动作标签可能有多种定义:

at=qt+1joint,at=qt+1jointqtjoint,at=qt+1jointqtjointΔt.a_t=q_{t+1}^{\mathrm{joint}}, \qquad\text{或}\qquad a_t=q_{t+1}^{\mathrm{joint}}-q_t^{\mathrm{joint}}, \qquad\text{或}\qquad a_t=\frac{q_{t+1}^{\mathrm{joint}}-q_t^{\mathrm{joint}}}{\Delta t}.

三种标签都能由同一对关节状态得到,却分别代表“目标位置”“位置增量”和“近似速度”。训练前必须查清数据集使用的是哪一种,不能只看变量名叫 actions 就假定它是绝对位置。

5. 末端执行器空间:描述“手要到哪里去”

5.1 位姿由位置和朝向组成

末端执行器位姿通常由三维位置 (p_t) 与三维旋转 (R_t) 构成:

pt=[xt,yt,zt]R3,RtSO(3).p_t=\left[x_t,y_t,z_t\right]^\top\in\mathbb{R}^3, \qquad R_t\in SO(3).

将二者合并,齐次变换写作:

Tt=[Rtpt01]SE(3).T_t= \begin{bmatrix} R_t & p_t\\ 0 & 1 \end{bmatrix} \in SE(3).

工程接口常用欧拉角近似表达旋转,于是一个典型的末端绝对目标是:

ateepos=[xtcmd,ytcmd,ztcmd,ϕtcmd,θtcmd,ψtcmd,gtcmd].a_t^{\mathrm{ee-pos}}= \left[x_t^{\mathrm{cmd}},y_t^{\mathrm{cmd}},z_t^{\mathrm{cmd}}, \phi_t^{\mathrm{cmd}},\theta_t^{\mathrm{cmd}},\psi_t^{\mathrm{cmd}}, g_t^{\mathrm{cmd}}\right]^\top.

其中 (\phi,\theta,\psi) 可以分别表示 roll、pitch、yaw。欧拉角书写直观,但存在表示奇异性;有些系统因此改用四元数或旋转矩阵。注意:四元数有四个数,却只表达三自由度旋转,而且应满足单位长度约束。

5.2 从末端目标到关节命令:逆运动学

机器人并不能直接驱动“世界中的 (x,y,z)”。当策略输出末端位姿时,系统还需要求出可以实现该位姿的关节配置:

qtcmd=fIK(TE,tcmd;qtjoint).q_t^{\mathrm{cmd}} =f_{\mathrm{IK}}\left(T_{E,t}^{\mathrm{cmd}};q_t^{\mathrm{joint}}\right).

这就是逆运动学(IK)。同一个末端位姿可能有多个可行关节解,也可能超出机械臂可达范围而没有解;求解时常利用当前关节状态 (q_t^{\mathrm{joint}}) 选择平滑、离当前姿态近的解。

相较关节空间,末端空间更接近人类操作语义:例如“手沿桌面向右平移 5 cm”。但它把一部分难题交给了 IK、碰撞处理和底层轨迹生成;因此接口看上去更抽象,系统链路却不一定更简单。

5.3 关节空间和末端空间的核心差异

表示直接回答的问题典型优点典型代价
关节空间每个电机/关节要到什么位置直接贴近硬件接口,不需 IK不同机器人之间语义差异大
末端空间手要到空间中的什么位姿更贴近抓取、放置和移动语义需要 IK,可能不可达或多解

它们不是谁“更高级”的关系,而是不同层次的控制接口。阅读论文或数据配置时,要先确认到底是由策略输出关节目标,还是由策略输出末端目标再交给底层转换。

6. 绝对动作、增量动作、速度动作与力矩动作

动作的数值类型与动作空间的几何表示同样重要。

6.1 绝对位置或姿态目标

绝对动作直接指定一个目标:

utcmd=uttarget.u_t^{\mathrm{cmd}}=u_t^{\mathrm{target}}.

这里的 (u) 可以是关节配置,也可以是末端位姿。优点是语义清晰;缺点是误差和坐标标定问题会直接落到一个全局目标上。

6.2 相对增量动作

增量动作只说“从当前参考点再移动一点”:

utcmd=utref+Δut.u_t^{\mathrm{cmd}}=u_t^{\mathrm{ref}}+\Delta u_t.

其中 (u_t^{\mathrm{ref}}) 可能是当前测得状态,也可能是前一个控制目标。两种实现会在传感器延迟、跟踪误差较大时表现不同,因此代码中应明确 ref 来自哪里。

增量动作常被用于精细接近和闭环修正:即使杯子实际位置与演示稍有偏差,模型也只需输出一小步朝正确方向的改动,而不是重新预测一个跨度很大的全局姿态。

6.3 速度动作

速度动作在一个时间间隔内累积为位移:

ut+1cmd=utcmd+u˙tcmdΔt.u_{t+1}^{\mathrm{cmd}}=u_t^{\mathrm{cmd}}+\dot u_t^{\mathrm{cmd}}\Delta t.

因此数值 (0.02) 的含义必须配合控制周期理解。若它是 (0.02,\mathrm{m/s}),在 (50,\mathrm{Hz}) 下单个周期的理想位移约为 (0.4,\mathrm{mm}),而不是 (2,\mathrm{cm})。

6.4 力矩或力控制

最底层的动作也可以是电机力矩 (\tau_t) 或末端力/力矩。这类接口能直接表达动态和接触,但对动力学误差、延迟与安全更敏感,通常不是 VLA 初学时最常见的高层数据接口。

**一条实用原则:**看见 action 时,先找单位。米、弧度、米每秒、弧度每秒、牛顿米和无单位归一化数,分别对应完全不同的学习问题。

7. 坐标系决定“向前移动”到底向哪里

同一三维位移 ([0.02,0,0]^\top) 若没有坐标系,就没有完整含义。常见参考系包括:

  • 世界坐标系 (W):固定在房间或工作台;
  • 机器人底座坐标系 (B):固定在机器人底盘或机械臂底座;
  • 末端坐标系 (E):随夹爪一起旋转和平移;
  • 相机坐标系 (C):固定在某一台相机上。

若点 (p) 在底座系中的坐标是 (p^B),它在世界系中的坐标为:

pW=RBWpB+tBW.p^W=R^W_Bp^B+t^W_B.

这里 (R^W_B) 与 (t^W_B) 是底座相对世界的旋转与平移。对移动机器人而言,这个变换会随着底座移动而变化。

对于末端的相对动作,还常用李群形式表达增量:

TE,tW,cmd=TE,tWexp(Δξt^),ΔξtR6.T^{W,\mathrm{cmd}}_{E,t} =T^{W}_{E,t}\exp\left(\widehat{\Delta \xi_t}\right), \qquad \Delta\xi_t\in\mathbb{R}^{6}.

直观理解即可:(\Delta\xi_t) 同时包含平移和旋转小增量,右乘 常对应在末端自身坐标系中移动,左乘 则可对应在世界坐标系中移动。不同库的约定可能不同,不能只凭公式外形猜测。

一个容易理解的例子:夹爪已经转向左边。

  • 若“沿世界 (x) 轴移动”,它会朝工作台固定方向走;
  • 若“沿末端自身 (x) 轴移动”,它会沿夹爪当前指向走。

视觉伺服、相机外参和坐标变换会在下一篇 03:坐标系与相机(待发布) 中继续展开;这里先记住:没有 frame 的位置、姿态和增量都不完整。

8. 夹爪、移动底座与升降机构:不要只盯着机械臂

8.1 夹爪不是“可有可无的一维”

夹爪往往只有一维,却决定了抓取的时机与接触结果。常见定义有:

gtcmd{0,1},g_t^{\mathrm{cmd}}\in\{0,1\},

二值开合;或

gtcmd[gmin,gmax],g_t^{\mathrm{cmd}}\in[g_{\min},g_{\max}],

连续开度;也可能是夹爪速度、夹持力或多指关节向量。0 是开还是合并没有统一标准,必须检查数据集约定。

夹爪状态 (g_t) 与夹爪命令 (g_t^{\mathrm{cmd}}) 也不同。模型可根据观察到的“已经闭合但仍未拿稳”来决定继续闭合、抬升验证,或重新调整抓取位置。

8.2 移动操作的动作是全身协同

对带底座和升降机构的机器人,动作通常还要包含底座与升降自由度:

at=[atleft arm,atright arm,atgrippers,atbase,atlift].a_t= \left[ a_t^{\mathrm{left\ arm}}, a_t^{\mathrm{right\ arm}}, a_t^{\mathrm{grippers}}, a_t^{\mathrm{base}}, a_t^{\mathrm{lift}} \right].

一个平面全向底座的运动部分常可写成:

atbase=[vx,t,vy,t,ωt],a_t^{\mathrm{base}}= \left[v_{x,t},v_{y,t},\omega_t\right]^\top,

其中 (v_x,v_y) 为平面线速度,(\omega) 为偏航角速度。升降机构可用位置、增量或速度表示。动作各段之间不是独立的:底座前移会改变手的可达范围和相机视角,升降也会改变抓取高度。

9. 单步动作与动作块:模型不一定一次只预测一步

现代 VLA 往往预测一个长度为 (H) 的动作块:

at:t+H1=[at,at+1,,at+H1]RH×da.a_{t:t+H-1}= \left[a_t,a_{t+1},\ldots,a_{t+H-1}\right] \in\mathbb{R}^{H\times d_a}.

若批量大小为 (B),训练张量常写成 [B, H, d_a]。这并不意味着系统必须不加检查地把 (H) 步全部执行完。实际闭环中常只执行前 (K) 步,再重新观察和预测:

1KH,execute(at:t+K1)ot+Kreplan.1\le K\le H, \qquad \text{execute}\left(a_{t:t+K-1}\right) \rightarrow o_{t+K} \rightarrow \text{replan}.

动作块的价值在于让模型能表达短期连续性,例如“接近杯子、继续下降、再闭合夹爪”是一段相互协调的运动,而非完全孤立的单帧决策。重新规划则保留了对物体滑动、视觉误差或抓取失败的纠正能力。

不要把三个频率混为一谈:相机刷新率、策略推理率、底层控制器发送命令的频率可以不同。描述系统时应分别标注。π0.5 的移动操作系统以 (50,\mathrm{Hz}) 向硬件发送目标,模型的低层输出是连续动作块;这不等于每个高层语义子任务也以 (50,\mathrm{Hz}) 重算。

10. 归一化:网络中的 ([-1,1]) 不是物理单位

不同机械臂的关节范围、不同底座的最大速度差异很大。训练时通常将每一维动作单独缩放,得到更适合神经网络学习的数值范围。若某个数据集动作第 (j) 维的低、高分位数为 (l_j) 与 (u_j),一种常见映射是:

a~t,j=2clip(at,j,lj,uj)ljujlj1.\tilde a_{t,j}= 2\frac{\operatorname{clip}(a_{t,j},l_j,u_j)-l_j}{u_j-l_j}-1.

部署时必须使用同一组统计量反归一化:

at,j=lj+a~t,j+12(ujlj).a_{t,j}= l_j+\frac{\tilde a_{t,j}+1}{2}(u_j-l_j).

这解释了一个常见陷阱:模型输出 0.6 并不天然表示 0.6 rad 或 0.6 m/s;它首先可能只是归一化空间中的数。错误地拿另一套数据集统计量反归一化,或者把关节值的统计量用于底座速度,都会让动作语义失真。

10.1 π0.5 如何处理异构动作数据

π0.5 面对不同 embodiment 的动作维度和范围。论文对每个数据集、每个动作维度按 1% 与 99% 分位数进行缩放到 ([-1,1]),使用固定的最大动作维度容纳不同机器人,低维机器人以零填充。这里至少还需要一个与之配套的有效维度掩码;否则模型无法区分“该维度真实动作为零”和“该机器人根本不存在此维度”。

这一处理解决的是数值尺度与张量形状的统一,不等于已经消除了所有机器人之间的物理差异。关节编号、坐标系、控制方式和可达空间的差异仍然需要通过数据、元数据与模型能力共同处理。

11. π0.5 中的动作表示:与本章概念逐项对应

π0.5 的完整策略可以写成:

πθ(at:t+H1,^tot,)=πθlow(at:t+H1ot,^t)πθhigh(^tot,).\pi_\theta\left(a_{t:t+H-1},\hat\ell_t\mid o_t,\ell\right) = \pi_\theta^{\mathrm{low}} \left(a_{t:t+H-1}\mid o_t,\hat\ell_t\right) \pi_\theta^{\mathrm{high}} \left(\hat\ell_t\mid o_t,\ell\right).

高层部分先给出当前语义子任务 (\hat\ell_t),例如“拿起盘子”;低层部分再生成连续动作块。后训练阶段的 action expert 使用 Flow Matching 生成连续动作,而预训练阶段使用离散动作 token 来统一异构数据。这不是“动作从连续变成了语言”,而是同一物理动作在不同训练阶段使用了不同建模接口。

本章概念在 π0.5 中的对应阅读时应抓住的点
动作 (a_t)发给机器人控制栈的低层目标的一步先问该数据条目的控制模式和单位
动作块 (a_{t:t+H-1})action expert 生成的连续短期动作序列它服务于平滑控制,不是完整任务计划
多部件动作双臂、夹爪、全向底座、升降机构的联合控制18/19 维来自平台自由度,不能只看成“18 个无名数字”
归一化每数据集、每动作维按 1%/99% 分位数缩放至 ([-1,1])网络输出需依赖对应统计量还原物理量
异构机器人固定最大动作维度,低维机器人零填充形状统一不等于语义自动统一
底层跟踪系统以 (50,\mathrm{Hz}) 发送目标,由 PD 控制器跟踪VLA 输出的通常是参考目标,不是直接的电机电流

对于论文中的移动操作平台,可按物理部件理解其 18 或 19 维状态/动作空间:两只六自由度手臂、两个一自由度平行夹爪、三自由度全向底座,以及一或两个升降自由度。自由度相加为:

2×6+2×1+3+1=18,2\times 6+2\times 1+3+1=18,

2×6+2×1+3+2=19.2\times 6+2\times 1+3+2=19.

这是从硬件自由度理解维度的有用起点。但“第 4 个数一定是哪一个关节、第 15 个数一定是何种底座命令”仍需回到具体数据 schema 或控制接口确认,不能凭维度总数擅自确定。

12. 用“拿红色杯子”走一遍

任务为:

=“把红色杯子放进水槽”.\ell=\text{“把红色杯子放进水槽”}.

假设当前高层子任务是 (\hat\ell_t=\text{“抓取红色杯子”})。低层策略并不会输出“抓取”这个词,而可能输出一段末端增量动作:

at=[Δxt,Δyt,Δzt,Δϕt,Δθt,Δψt,gtcmd].a_t= \left[ \Delta x_t,\Delta y_t,\Delta z_t, \Delta\phi_t,\Delta\theta_t,\Delta\psi_t, g_t^{\mathrm{cmd}} \right]^\top.

一个合理的短期序列可能具有如下语义:

  1. 让末端在世界或底座坐标系中向杯口上方靠近;
  2. 沿桌面法向缓慢下降,同时保持夹爪张开;
  3. 夹爪闭合到目标开度;
  4. 重新观察是否真的夹住,再决定抬升、微调或重试。

其中“向杯口上方靠近”不是一个动作维度,而是多个平移、旋转与夹爪维度在多个时刻共同产生的结果。如果杯子被碰歪,新的 (o_{t+K}) 会使下一轮动作块改变;这就是为什么动作块和闭环重规划要同时出现。

13. 读数据集或代码时的动作检查清单

在开始训练前,建议逐项写下答案:

  1. action 的原始 shape 是什么?其中 (d_a) 是多少?动作块长度 (H) 是多少?
  2. 每一维控制哪个部件?完整维度顺序是什么?
  3. 每一维是位置、增量、速度、力矩还是夹爪开合?
  4. 位置/姿态以哪个坐标系表示?欧拉角的顺序与单位是什么?
  5. state 中相应的当前量是什么?动作的参考点来自当前 state 还是前一目标?
  6. 动作的原始单位、上下界、控制频率和限幅规则是什么?
  7. 归一化统计量按全数据、按数据集还是按机器人计算?推理时如何反归一化?
  8. 若进行了 padding,是否提供 action mask,如何避免把填充值当作真实监督?
  9. 训练标签与图像、状态是否严格时间对齐?

能完整回答这九项,才算真正“读懂”一个动作空间,而不是只知道模型最后输出了一个向量。

14. 常见误区

  • 把动作空间理解为维度数。 (d_a=7) 只告诉你有七个数,不告诉你它们是 7 个关节目标,还是 6D 末端增量加夹爪。
  • 把当前状态当成动作。 (q_t) 是测量值;(q_t^{\mathrm{cmd}}) 是命令目标。两者数值可以接近,却不是同一语义。
  • 忽略绝对量和增量的区别。 同为 0.02,可以是 2 cm 的绝对坐标、2 cm 的增量或 0.02 m/s 的速度。
  • 没有坐标系就解释方向。 “向右移动”必须说明是世界、底座还是末端自身的右侧。
  • 把归一化值直接发送给机器人。 ([-1,1]) 通常属于模型空间,必须按正确统计量反归一化并经过限幅。
  • 以为动作块就是开环执行。 动作块可以在滚动闭环中只执行其前缀,随后依新观察重新规划。
  • 以为统一张量形状就解决了跨机器人问题。 padding 解决了批处理形状,不会自动赋予不同关节相同物理语义。

15. 学习验收

完成本章后,你应能:

  1. 清楚地区分 (a_t) 与 (\mathcal{A}),并说明为何 (\mathcal{A}\neq\mathbb{R}^{d_a});
  2. 根据一个 action schema 判断它是关节空间还是末端空间、绝对量还是增量;
  3. 解释位置动作为何必须带坐标系,速度动作为何必须带控制周期;
  4. 写出 (a_{t:t+H-1}\in\mathbb{R}^{H\times d_a}) 的含义,并说明如何在闭环中执行其前 (K) 步;
  5. 解释 π0.5 为什么要做每维归一化、最大维度 padding,以及为什么这些并不能完全解决 embodiment 差异;
  6. 不查资料也能说出:π0.5 先得到语义子任务,再通过 action expert 生成连续低层动作块,硬件端由 PD 控制器以 (50,\mathrm{Hz}) 跟踪目标。

下一步

继续阅读 03:坐标系与相机(待发布)。本文已经说明“动作要带坐标系”,下一章会把世界、机器人、末端和相机坐标系之间如何变换讲清楚。

参考资料