跳转到内容

运动指令与任务目标

Command 是提供给策略的任务条件。速度跟踪中,同一个机器人状态可能对应向前、停止或转弯等不同要求,策略需要通过指令区分这些目标。本篇使用三维速度指令,说明其定义、采样和验证方法。

1. 速度指令的数学表示与坐标约定

Section titled “1. 速度指令的数学表示与坐标约定”
c=[vxcmdvycmdωzcmd]c=\begin{bmatrix}v_x^{cmd}&v_y^{cmd}&\omega_z^{cmd}\end{bmatrix}
分量含义单位
vxcmdv_x^{cmd}期望前进速度m/s
vycmdv_y^{cmd}期望侧向速度m/s
ωzcmd\omega_z^{cmd}期望偏航角速度rad/s

本文约定机身 x 轴向前、y 轴向左、z 轴向上,并在平地运动的机身坐标约定下比较线速度。实际任务也可采用仅随航向旋转的水平坐标系,应说明定义和转换方式。机器人倾斜时,这两种坐标系并不等同。

指令 (0.5,0,0)(0.5,0,0) 表示期望以 0.5 m/s 前进,不是要求某个关节转动,也不是每一步前进 0.5 m。策略要根据当前状态决定怎样协调关节实现目标。

一种简单方案是在指定范围内随机采样,并在回合中每隔一段时间重新采样。下表仅用于教学示例,不代表设备能力或框架默认值:

项目示例设置设计意图
前进速度[0.5,0.5][-0.5,0.5] m/s覆盖前进和后退
侧向速度[0.2,0.2][-0.2,0.2] m/s覆盖侧移
偏航角速度[0.5,0.5][-0.5,0.5] rad/s覆盖左右转向
重采样周期4 s允许响应,也学习目标切换
显式零指令以一定概率设置三项全零提供明确的停止目标

连续随机采样几乎不会恰好得到全零指令。如果任务需要稳定停止,应明确零指令的采样规则或设置合理死区。“线速度为零但角速度不为零”仍是原地转向任务。

分别均匀采样三个分量可能产生高平移速度与高转速的组合。指令范围应结合可行性和使用场景设计;训练中见过某个范围,也不保证已经掌握范围内所有组合。

角速度指令描述“转多快”,航向目标描述“朝哪里”。若使用目标航向 ψcmd\psi_{cmd},可以先计算环绕到 [π,π)[-\pi,\pi) 的误差,再生成角速度指令:

eψ=wrap(ψcmdψ),ωzcmd=clip(kψeψ,ωmax,ωmax)e_\psi=\operatorname{wrap}(\psi_{cmd}-\psi),\qquad \omega_z^{cmd}=\operatorname{clip}(k_\psi e_\psi,-\omega_{\max},\omega_{\max})

这是一个示例转换器。任务可以向策略提供转换后的角速度,也可以直接提供其他目标表示,两者不是天然等价的观测设计。若提供转换结果,还需要定义何时更新它。

有的实现为航向目标额外保留一个内部字段,但策略只接收三维速度指令。因此内部指令缓冲区长度不一定等于观测中的指令维数。

4. 指令、观测与奖励的时序一致性

Section titled “4. 指令、观测与奖励的时序一致性”

一个清晰的教学约定是:策略使用 ctc_t 产生动作,本步奖励也评价该动作对 ctc_t 的跟踪;然后准备下一步指令 ct+1c_{t+1}

# 示意伪代码,不对应框架 API。
command_used = copy(command)
action = policy(observation_with(command_used))
advance_environment(action)
reward = tracking_reward(measured_velocity(), command_used)
command = sample_if_due(command)
next_observation = observation_with(command)

实际框架可能在物理推进后的回调中先更新指令,再计算奖励。读代码时应追踪更新位置,确认切换步评价的目标是否符合设计。加入动作延迟后,更需要说明动作与目标的时间关系。

若控制周期为 0.02 s,4 s 对应 200 个控制步。更改控制周期后,应重新换算步数;重采样周期不要求一定整除回合时长,但回合过短可能导致策略很少经历目标切换。

5. 指令通路验证与跟踪性能评价

Section titled “5. 指令通路验证与跟踪性能评价”

固定场景,使用可重复的指令序列:静止、前进、停止、侧移、转向。记录同一坐标系下的指令与实际速度,并标出指令切换时刻。

检查指令缓冲区、送入网络的缩放后指令和奖励使用的目标是否一致。对于未训练策略,不能要求实际速度已跟踪成功;此时验证的是数据通路。策略训练后,再评价稳态误差、切换响应和停止后的残余运动。

手算 4 s 对应的控制步数,并写出“只原地左转”和“完全停止”两条指令。再说明机器人转过 90° 后,机身系前进与世界系固定方向运动有什么不同。

指令范围越大越好吗? 过大的范围可能增加不可行样本和早期学习难度。先明确目标能力,再按实验结果扩展。

把指令设为零,机器人就一定停止吗? 零指令只是目标,停止行为还取决于训练分布、奖励、观测和控制效果。

下一篇:奖励函数与回合机制