运动指令与任务目标
Command 是提供给策略的任务条件。速度跟踪中,同一个机器人状态可能对应向前、停止或转弯等不同要求,策略需要通过指令区分这些目标。本篇使用三维速度指令,说明其定义、采样和验证方法。
1. 速度指令的数学表示与坐标约定
Section titled “1. 速度指令的数学表示与坐标约定”| 分量 | 含义 | 单位 |
|---|---|---|
| 期望前进速度 | m/s | |
| 期望侧向速度 | m/s | |
| 期望偏航角速度 | rad/s |
本文约定机身 x 轴向前、y 轴向左、z 轴向上,并在平地运动的机身坐标约定下比较线速度。实际任务也可采用仅随航向旋转的水平坐标系,应说明定义和转换方式。机器人倾斜时,这两种坐标系并不等同。
指令 表示期望以 0.5 m/s 前进,不是要求某个关节转动,也不是每一步前进 0.5 m。策略要根据当前状态决定怎样协调关节实现目标。
2. 指令分布与重采样机制
Section titled “2. 指令分布与重采样机制”一种简单方案是在指定范围内随机采样,并在回合中每隔一段时间重新采样。下表仅用于教学示例,不代表设备能力或框架默认值:
| 项目 | 示例设置 | 设计意图 |
|---|---|---|
| 前进速度 | m/s | 覆盖前进和后退 |
| 侧向速度 | m/s | 覆盖侧移 |
| 偏航角速度 | rad/s | 覆盖左右转向 |
| 重采样周期 | 4 s | 允许响应,也学习目标切换 |
| 显式零指令 | 以一定概率设置三项全零 | 提供明确的停止目标 |
连续随机采样几乎不会恰好得到全零指令。如果任务需要稳定停止,应明确零指令的采样规则或设置合理死区。“线速度为零但角速度不为零”仍是原地转向任务。
分别均匀采样三个分量可能产生高平移速度与高转速的组合。指令范围应结合可行性和使用场景设计;训练中见过某个范围,也不保证已经掌握范围内所有组合。
3. 角速度指令与航向目标
Section titled “3. 角速度指令与航向目标”角速度指令描述“转多快”,航向目标描述“朝哪里”。若使用目标航向 ,可以先计算环绕到 的误差,再生成角速度指令:
这是一个示例转换器。任务可以向策略提供转换后的角速度,也可以直接提供其他目标表示,两者不是天然等价的观测设计。若提供转换结果,还需要定义何时更新它。
有的实现为航向目标额外保留一个内部字段,但策略只接收三维速度指令。因此内部指令缓冲区长度不一定等于观测中的指令维数。
4. 指令、观测与奖励的时序一致性
Section titled “4. 指令、观测与奖励的时序一致性”一个清晰的教学约定是:策略使用 产生动作,本步奖励也评价该动作对 的跟踪;然后准备下一步指令 。
# 示意伪代码,不对应框架 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° 后,机身系前进与世界系固定方向运动有什么不同。
指令范围越大越好吗? 过大的范围可能增加不可行样本和早期学习难度。先明确目标能力,再按实验结果扩展。
把指令设为零,机器人就一定停止吗? 零指令只是目标,停止行为还取决于训练分布、奖励、观测和控制效果。
下一篇:奖励函数与回合机制。