Microduck Workshop
GitHub ↗

SELF-PACED WORKSHOP

探索社区的更多运动技能

用同样的观察—动作—奖励思路,认识社区的跳跃、篮球平衡与技能切换。

第 5 章 · 预计学习时长 20 分钟

同一机器人,可以学什么

前两次训练关注行走与地形适应。社区还用强化学习训练了跳跃、篮球平衡等技能:硬件可以相同,但任务、奖励、初始状态与结束条件不同。下面的社区演示来自各项目自己的仿真环境;它们展示技能思路,不代表已在这里的 Newton 场景或真机上通过相同评测。

社区跳跃演示,按原作品的四倍慢动作播放。观察起跳、腾空、落地以及切回站立的衔接。
社区篮球平衡演示。观察脚下支撑面随球转动而变化,机器人怎样持续调整姿态。
技能观测与动作奖励与完成条件
跳跃本体状态与一次性起跳指令 → 关节动作起跳高度、落地姿态、落地后是否站稳
篮球平衡机器人与球的状态 → 关节动作持续平衡、球与身体位置、存活时长
行走本体状态与速度指令 → 关节动作速度跟踪、稳定性、能耗与动作平滑性

迁移这些技能时,可在 Isaac Sim 添加对应的道具和接触几何,再通过 Isaac Lab 配置观测、奖励与重置分布。即使观测维度相同,也不保证模型能直接互换:例如社区跳跃把速度指令的第一个分量用作起跳开关,必须遵循该技能的接口约定。

给技能定义边界

行走策略可以持续接收速度指令,而踢球是一个有明确起止点的短时技能。Isaac Lab 的任务结构便于复用相同的观测、动作与执行器接口,并用命令、事件和终止条件表达技能边界;Newton 的接触与机身状态则让“脚确实碰球”和“机器人恢复站稳”成为可检查条件。要把踢球接入自主任务,除了定义动作本身,还必须说明何时允许启动、结束后应进入什么状态,以及发生失败时如何停止。

阶段需要检查什么
准备球是否在可踢区域,身体朝向是否合适,观测是否仍在有效期内
触球由真实足部接触推动球,而不是直接修改球状态
收脚及时结束出脚并回到支撑状态
恢复机器人保持稳定,没有摔倒或关节越界

为什么两个 ONNX 不能随意互换

ONNX 只是一种模型表示格式,并不是统一的机器人技能协议。行走模型读取 61 维输入,当前踢球残差模型读取 62 维输入;即使两者都输出 14 个数,也不能直接互换。输入顺序、附加状态、动作缩放、教师混合方式和结束条件都属于模型的运行约定。

“文件能够成功加载”只能证明模型格式可读,不能证明机器人能够完成动作。单位、关节顺序和缩放仍需与控制器一致;模型与数据页列出了固定权重的用途。第六章会展示这些技能组成完整任务后的表现。

观看出脚过程时,可以分三个阶段观察:出脚前,检查球与支撑脚的位置是否合适;出脚过程中,观察摆动腿是否形成足够空间,并用物理接触记录确认接触来自脚部而非身体其他部位;出脚后,观察重心是否重新回到支撑区域、机身倾角是否收敛。请分别描述技能的进入条件与完成条件。相比只看“球有没有动”,这种观察方式更能反映机器人系统的实际要求。

用输入、输出与结束条件描述技能

描述一项技能时,可以拆分为四部分:进入条件、所用观测、输出动作和退出时机。以射门为例,球必须位于适合右脚出脚的位置,机身朝向球门,支撑保持稳定,而且目标观测尚未过期。技能执行期间会结合踢球教师策略与残差修正;结束后还必须恢复到稳定的站立或行走状态,不能把“已经碰到球”直接当作任务完成。

残差可以看作对已有动作施加的受约束修正。这样做缩小了需要从头学习的问题范围,同时也会继承教师策略的适用边界。如果在远离球的位置启动局部射门技能,它不会因此自动学会找球或接近目标。导航模块负责创造技能可以接手的条件,技能模块则负责完成局部动作。

检查理解

机器人已走到球旁,但球的位置记忆过期。应立刻运行踢球技能吗?

查看解析

不应立即运行。需要先重新观察并确认进入条件;仅仅靠近目标,并不能保证技能输入仍然有效。

技能的开始与结束同样重要

只观察出脚、触球与恢复站立。该片段使用第 6 章的踢球组合策略,不是跳跃或篮球技能的评测。

会执行动作,还不等于会完成任务

目前主要由我们告诉机器人“向前走”或“现在踢”。策略已利用关节和 IMU 反馈保持平衡,却还不能自己决定足球在哪里、该走哪条路。下一章先观看传统感知与规划怎样串起完整射门,再讨论怎样把更多判断交给可学习的模型。

参考资料