Robot---能打羽毛球的机器人
1 前言
Robot系列主要介绍一些比较有意思的机器人,前面的博客文章中也给读者朋友们展示了一些:
《人形机器人---越来越像人了》
《自动驾驶---两轮自行车的自主导航》
《自动驾驶---会打架的“球形机器人”》
《Robot---SPLITTER行星探测机器人》
《Robot---奇思妙想轮足机器人》
目前强一些的研究团队都在研究如何让机器人(不管是双足还是四足)完成人类的某些动作,这也是机器人技术进步的一种体现。
本篇博客介绍的是 ETH 苏黎世联邦理工大学的研究团队在机器人顶刊Science Robotics上发布的成果,探索如何让拥有腿部和手臂的机器人(即腿足机械臂)学习并执行像羽毛球这样高度动态、需要全身协调的复杂技能。
2 羽毛球Robot
机器人由四足底盘(苏黎世联邦理工的老演员了)、机械臂和立体相机组成。立体相机为前置双目立体相机,图像采样频率为 30Hz,用于感知羽毛球的位置和运动状态等信息,系统通过摄像感知、轨迹预测与整身控制策略实现对羽毛球的精准拦截与挥拍操作。
当前这种直接基于强化学习的端到端方法,不仅可应用于四足机器人,还应用于无人机,无人车等做种机器人载体。感兴趣的读者朋友可以看看,很多知名高校(苏黎世联邦理工大学,香港科技大学,浙大等)开源的论文和代码都有不少,但目前仍然停留在学术Demo阶段,还没有到量产阶段。
2.1 架构
相机安装:该腿式移动操作机器人由四足底盘和动态机械臂组成,额外安装了一个带全局快门的立体相机。
机器人控制系统接收在相机坐标系中计算出的羽毛球位置,预测拦截位置,并将其与机器人本体感知数据一起输入强化学习(RL)策略。该策略通过生成关节指令控制机器人的全部 18 个驱动单元。
总体的思路比较简单,预测羽毛球运动轨迹,通过强化学习方法计算最佳击球位置,难点在于协同控制。
研究方法与设计:
- 基于强化学习的整身控制策略:核心是利用 PPO(Proximal Policy Optimization)算法,训练一个联合控制机器人 18 个关节的策略网络。策略结构采用非对称 Actor-Critic 架构,Critic 能访问 “特权信息”,如球的真实位置、速度和未来轨迹等,以获得更稳定的训练反馈;Actor 仅基于机器人部署时可获得的感知信息,如本体状态、预测击球点进行动作输出,提升训练效率并保持策略的可部署性。
- 贴近真实的感知误差模型:由于羽毛球速度快,微小感知误差会导致击球失败,因此在训练中引入基于实测数据回归的感知误差模型。该模型考虑观测角度、距离、球速对测量误差的影响,并在仿真中为每次观测引入高斯噪声扰动,增强了策略对现实感知条件的鲁棒性,还使机器人发展出主动视觉行为,如通过躯干姿态调整保持球在视野中央,击球前微调站位以减少预测误差。
- 具备目标引导与物理约束的训练机制:奖励函数除击中球的核心奖励外,还设计多个辅助项,用于鼓励策略提前接近预测击球点、控制步态稳定性、控制挥拍速度与角度以匹配球速、在连续击球任务中维持身体状态稳定等。此外,提出多目标摆动训练范式,每个训练回合中机器人需连续完成多次击球,模拟真实对战中的回合场景,让机器人学习击球后的姿态收敛和过渡动作的快速调度。
2.2 详细框架
论文的核心贡献在于提出了一种端到端的强化学习(Reinforcement Learning, RL)框架,用于学习腿足机械臂的全身协调羽毛球技能。
-
强化学习范式
- 模型无关(Model-Free)RL: 避免了对机器人复杂动力学模型的精确建模,而是通过与环境的交互来学习最优策略。
- 策略梯度方法: 通常会使用如PPO (Proximal Policy Optimization) 或 SAC (Soft Actor-Critic) 等算法,这些算法在处理连续控制任务和高维状态/动作空间方面表现出色。
-
状态空间(Observation Space)
为了让机器人“理解”当前情况,其观测空间通常包括:- 机器人自身状态: 各关节的角度、角速度、基座(body)的姿态(俯仰、滚转、偏航)、线速度和角速度。
- 羽毛球状态: 羽毛球相对于机器人基座的位置、速度,甚至可能是其历史轨迹,以便预测未来位置。
- 目标信息: 例如,击球目标点(如果任务要求将球击到特定区域)。
-
动作空间(Action Space)
机器人直接控制的输出:- 关节目标位置/力矩: 策略输出的是机器人所有关节(包括腿部和手臂)的目标位置或力矩,由低层控制器执行。这确保了全身的协同控制。
-
奖励函数(Reward Function)
奖励函数是RL成功的关键,它引导机器人学习期望的行为:- 击球成功奖励: 当机器人成功击中羽毛球时给予高奖励。
- 击球质量奖励: 鼓励球击过网,并落在对方场地内。可能还会细化为击球速度、角度等。
- 平衡与稳定性奖励/惩罚: 避免机器人跌倒,鼓励其在运动中保持基座的稳定和姿态的平稳。
- 运动平滑性/能耗奖励: 惩罚剧烈的关节抖动或过大的关节力矩,鼓励更自然、高效的运动。
- 任务完成奖励: 例如,每成功击打一次球就给予奖励。
-
训练策略与Sim2Real
- 大规模仿真训练: 在高保真物理仿真器(如Isaac Gym, MuJoCo等)中进行数百万甚至数十亿步的训练。这是因为在真实机器人上进行如此大规模的试错是不可行且危险的。
- 域随机化(Domain Randomization): 为了弥合仿真与现实之间的差距(Sim2Real Gap),在仿真训练过程中,会随机化各种环境参数和机器人参数,例如:
- 摩擦系数、空气阻力。
- 机器人质量、惯量、关节刚度、阻尼。
- 传感器噪声、执行器延迟。
- 羽毛球的初始速度和旋转。
这使得学习到的策略对真实世界中的不确定性更加鲁棒。
- 课程学习(Curriculum Learning): 可能从简单的任务开始(例如,静止击球,然后逐步增加球速和复杂性),帮助策略循序渐进地学习。
- 统一的全身控制策略: 整个机器人(腿部和手臂)由一个单一的神经网络策略控制,确保了内在的协调性。
2.3 难点与挑战
(1)难点
研究四足机器人打羽毛球是一个很有意思的课题,那么针对这两件事情,分别有什么难点?
- 腿足机械臂: 腿足机器人提供卓越的移动性和越障能力,而机械臂则赋予它们操作和交互的能力。将两者结合,可以创造出能在复杂地形中移动并执行精细任务的机器人。然而,控制这种高自由度(High-DOF)的系统,尤其是在执行全身协调的动态任务时,是一个巨大的挑战。
- 羽毛球作为测试平台: 羽毛球运动是一个极佳的测试平台,因为它包含了机器人控制的诸多难点:
- 高动态性: 羽毛球飞行速度快,轨迹多变,要求机器人快速感知和响应。
- 全身协调: 机器人需要通过腿部移动来定位自身,同时用手臂挥拍击球,且在击球过程中保持平衡和稳定。
- 实时决策: 需要在毫秒级时间内预测球的轨迹并规划击球动作。
- 精确的接触动力学: 击球瞬间的力道和角度控制至关重要。
- 平衡与鲁棒性: 在剧烈挥拍和移动中保持不摔倒。
(2)核心挑战
- 高维度控制空间: 腿足机械臂通常拥有数十个自由度,传统控制方法难以有效优化。
- 动态环境下的鲁棒性: 机器人需要适应羽毛球来球的各种速度、角度和旋转。
- 全身运动的耦合: 腿部运动会影响手臂的基座,手臂挥拍的惯性力会影响腿部的平衡,两者必须协同工作。
- Sim2Real Gap: 在仿真环境中训练的策略如何有效地迁移到真实的物理机器人上,是一个普遍存在的问题。
2.4 实验结果
论文通常会通过以下方式验证其方法的有效性:
- 仿真环境测试:
- 展示机器人在仿真中成功击打各种来球,包括高速球、不同角度的球等。
- 量化击球成功率、击球精度、机器人稳定性等指标。
- 真实机器人部署:
- 将训练好的策略部署到真实的腿足机械臂硬件平台(例如,Unitree H1, ANYmal + Franka Emika Panda等组合)。
- 通过实际视频和数据展示机器人在真实世界中成功击打羽毛球,验证Sim2Real的有效性。
- 性能对比:
- 可能与传统的基于模型或非全身协调的控制方法进行对比,突出强化学习和全身协调的优势。
- 展示机器人能够应对复杂、动态的击球场景,这是传统方法难以实现的。
3 总结
本篇博客所介绍的论文不仅仅是让机器人学会打羽毛球,更重要的是它提供了一个通用的框架和方法,用于训练高自由度、多模态机器人执行需要精细全身协调的复杂动态任务,这对于推动通用型机器人的发展具有里程碑式的意义。
当前这种直接基于强化学习的端到端不仅应用于四足机器人,还应用于无人机,无人车等做种机器人载体。感兴趣的读者朋友可以看看,开源的论文和代码都有不少,但目前仍然停留在学术Demo阶段,还没有到量产。
参考论文:《Learning coordinated badminton skills for legged manipulators》