状态:草稿 (2026-10-18),实测。 数字是通过笔记本(Apple M1 Max, macOS 26.5)中的 Python 3.9.6 和 numpy 2.0.2 计算的模拟值。 原始数据与代码:工作目录
measure/robot-arm-basics/的m10_learn.py,out/m10_learn.json。“现实世界”同样是模拟,没有真实的机器人实验 (硬件未实测)。论文中的数字已在各原文(arXiv 版本标注了版本号)中核实。参考资料查阅于 2026-10-18。 撰写规则:以实测数据为基础,无法测量的标注为“未实测”,无法确认的标注为“未确认”。
目录
1. 直觉:已知的通过计算解决,未知的通过学习解决
第 1 到第 9 篇使用的全都是方程。球的飞行遵循牛顿定律,球拍姿态遵循几何学,轨迹遵循多项式,控制遵循逆动力学。方程无需数据就能从第一颗球开始 运行,并且能够解释错误产生的原因。不过, 模型错得有多离谱,结果就会错得有多离谱。 在第 7 篇中,球拍反弹系数偏差 0.05 时,落点就会偏离 13 cm。
强化学习(reinforcement learning, RL)则恰好相反。它无需模型并通过试错来学习,因此不受模型错误的影响,但需要进行大量的击球尝试,且很难深入探究学到了什么。
构建乒乓球机器人的研究都在将两者结合。核心问题不是“要不要结合”,而是**“边界究竟该划在哪里”**。
2. 图表:四个系统的边界
3. 论文对比
这是打开各篇原文确认后的架构。由于数字旁边的条件各不相同,因此无法直接进行对比。
| Mülling 等 2013 | Koç 等 2018 | Büchler 等 2022 | D'Ambrosio 等 2024 | |
|---|---|---|---|---|
| 机器人 | Barrett WAM 7 自由度 | Barrett WAM 7 自由度 | 由 8 个气动人工肌肉驱动的 4 自由度机械臂 | ABB IRB 1100 6 自由度 + 线性龙门 2 轴 |
| 感知 | 4 台相机 60 Hz | 4 台相机 60 Hz | 球的位置 180 Hz | 2 台相机 125 Hz |
| 球的预测 | EKF(重力、阻力,忽略旋转) | EKF + 飞行模型 | 模型(学习过程中的球为模拟) | 滤波器(不进行实时飞行预测) |
| 击球决策 | 混合运动基元(MoMP)选择并混合契合情境的基元 | 同时优化击球时间和位置 | PPO 策略全权负责 | 高级控制器为每次击球选择一项技术 |
| 动作 | 人类手把手教出的 25 个动作(DMP) | 每个关节的三次多项式最优轨迹 | PPO 以 100 Hz 调整肌肉压力变化 | 17 项技术,每项约 1 万个参数的 CNN 以 50 Hz 控制关节速度 |
| 学习负责的部分 | 基元选择权重(RL)、动作形态(示范) | 估计球模型常量(示范数据) | 机械臂的全部控制 | 技术(在模拟中使用进化策略系列的 BGS 学习) + 技术选择 |
| 报告的结果 | 实物回球成功率 69% → 97%(学习 150 次后),对人战绩 74.4% → 88% | 实物回球成功率:固定击球平面约 10~40%,所提方法约 40~60%(根据设定可达 80~90%) | 回球 75%(107 次),扣球 29%(128 次,平均约 12 m/s) | 与 29 人进行 29 场比赛,取得 13 胜(45%):初级 7/7,中级 6/11,高级及以上 0/11 |
总结来说,边界越向右侧推移,学习所占的比重就越大。
- Mülling 等保留了物理学(EKF 预测)与动作形态(示范)不变,仅通过强化学习来调整“以何种比例混合哪些动作”。通过击球 150 次,将成功率从 69% 提升至 97%。
- Koç 等几乎不使用学习,而是通过人类示范数据估计球模型的常量,然后通过优化来求解轨迹(优化平均耗时 25 ms)。这是通过优化克服了第一篇中所述的固定虚拟击球平面局限性的案例。
- Büchler 等针对气动肌肉这种难以建立模型的机械臂,在没有先验知识的情况下从零开始学习。并未实际发球,而是通过模拟回放记录下的 100 条轨迹(HYSR),同时机械臂进行实际运动。针对回球任务进行了约 1 万 5 千次、耗时约 14 小时的训练。
- D'Ambrosio 等在 MuJoCo 模拟中学习每一项技术(使用不依赖梯度的进化策略系列 BGS,文中提到其动作比 PPO 和 SAC 更平滑),在实时运行中不运行飞行模型。相反,他们在选择技术的宏观控制器中混合了旋转分类器、各技术的性能记录、人工规则以及针对对手偏好的学习。选定的技术可在 20 ms 内确定。
也有通过学习来修正模型的思路。Sony AI (2026) 利用 9 台相机收集的大约 5.8 万条轨迹重新调整了球的阻力、马格努斯效应和反弹模型,并在球拍模型的物理公式之上叠加了神经网络残差。据报道,落点中心误差从基准模型的 0.37 m 降至 0.15 m。
4. 实测:将相同的问题化为小问题
由于各篇论文所用的机器人、球和评估标准各不相同,因此无法直接对比“边界划在哪里需要击球多少次”。为此,我们直接借用了第 7 篇的击球问题进行了一个小实验。
设定。 “现实世界”中的球拍与模型不同。反弹系数 e = 0.72(模型为 0.8),切向速度保持率 k = 0.88(模型为 1.0,由于胶皮摩擦导致切向速度减少 12%)。球是从第 1 篇的数据集中挑选的 300 个实际击球数据(训练 200 个,测试 100 个),目标是在 0.6 秒内将球落到对手半场的 (0.3, 0.9) m 处。
三种方法。
- (a) 仅使用方程: 使用名义模型(e = 0.8, k = 1)代入第 7 篇的闭式解。
- (b) 仅学习物理常量: 观察击打 N 次时入球和出球的速度(相机噪声 σ 0.05 m/s),并通过最小二乘法重新拟合 e 和 k 这两个数值。球拍依然通过闭式解计算。法向公式关于 e 是线性的(v_out·n − v_r·n = e·(v_r·n − v_in·n)),因此可以直接求解。
- (c) 无模型的策略搜索: 接收球的状态(速度 3、位置 2、常量 1),通过交叉熵方法(CEM)寻找输出球拍法向两夹角和球拍速率的线性策略(18 个参数)。每代有 40 个候选,每个候选击球 10 次,根据平均落点误差进行排名。
# (b) 한 번 칠 때마다 e, k 를 최소제곱으로 다시 맞춘다
n, vrn = racket_general(V, v_out_wanted, e, k) # 지금 추정값으로 닫힌 해
vout = true_racket(V, n, vrn) # 실제 세계(모델과 다름)
Vm, Om = V + noise(), vout + noise() # 관측
A_e.append(vrn - Vm @ n); b_e.append(Om @ n - vrn) # e 에 대해 선형인 식
e = dot(A_e, b_e) / dot(A_e, A_e)
| 方法 | 击球次数 | 测试落点误差中位数 |
|---|---|---|
| (a) 仅方程(名义模型) | 0 | 24.5 cm(90% 29.3) |
| (a') 方程 + 精确常量(参考) | 0 | 0.0007 cm |
| (b) 仅学习物理常量 | 1 | 2.1 cm |
| 3 | 1.8 cm | |
| 10 | 1.3 cm | |
| 30 | 0.77 cm | |
| 100 | 0.33 cm | |
| (c) 线性策略 CEM | 2,000 | 129 cm |
| 8,000 | 25.0 cm | |
| 16,000 | 30.6 cm | |
| 24,000 | 25.4 cm |
(b) 是 10 个随机种子下的中位数,击打 100 次后推断出的 e 为 0.720,k 为 0.876(真实值为 0.72, 0.88)。
- 只要边界划得好,学习的代价就会低得惊人。 由于方程告知了我们“未知的只有两个数字”,因此仅击球一次,误差就从 24.5 cm 降到了 2.1 cm。
- 抛弃模型的代价十分高昂。 如果在没有模型的情况下解决相同问题,即便击打 2,000 次误差仍然会偏离 1 m 以上,而在打满 8,000 次后也无法在 25 cm 附近取得进一步改善。这是因为线性策略无法完全涵盖“球速 → 球拍角度”之间的非线性关系。如果将策略扩展为神经网络或许会有所改善,但相应的也需要更多的训练次数(未实测)。
- 在真实的机器人上进行 2 万次击球,单单是捡球的时间就要超过一天。Büchler 等通过模拟回放球的运动,以及 D'Ambrosio 等在模拟中学习技术,都是为了规避这种成本。如果在模拟中进行学习,此时模拟器的常量存在多少偏差,与现实就会产生多少偏差,最终又会回到“用数据调整模型”的老路上(Sony AI 2026)。
这个实验是刻意简化了的。现实世界同样也是模拟,且与模型的不同之处恰好在于“模型内部的常量”,这对 (b) 非常有利。如果模型的 形态本身就是错误的 (例如:模型完全不了解胶皮产生旋转的效果),无论怎么调整常量都会残留误差,而学习这些残差正是 Sony AI (2026) 中神经网络残差的作用。
5. 边界应划在哪里:本系列的建议
作为开源硬件首个机器人的起点,我们提出以下建议。这些建议可能会随着实验而调整。
| 阶段 | 初期方案 | 可加入学习的部分 |
|---|---|---|
| 球预测(第 6 篇) | EKF + 物理模型 | 用我们的球和球台数据重新拟合阻力、马格努斯效应和反弹常量。旋转估计 |
| 击球决策(第 7 篇) | 弹道学 + 反弹模型的闭式解 | 拟合球拍反弹常量(本文的 b),随后是模型残差 |
| 逆运动学·轨迹(第 4、8 篇) | 解析解 + 五次多项式/时间最优 | 几乎不需要 |
| 控制(第 9 篇) | PD + 逆动力学前馈 | 惯性与摩擦常量辨识、迭代学习控制(通过重复相同动作来修正前馈) |
| 战术(打向何处) | 固定目标点 | 强化学习。由于这部分随对手而变,很难用方程编写 |
原则只有一个: 如果方程能够缩小“未知事物的范围”,那就只对缩小的部分进行学习。 对于难以建立模型的执行器(气动肌肉)或没有标准答案的判断(战术),从一开始就交由学习来处理会更好。
6. 局限性
- CEM 是强化学习中最简单的策略搜索方法之一。我们并未将其与 PPO 等基于梯度的方、神经网络策略以及模拟预训练后实物微调进行对比(未实测)。
- 我们将“现实世界”的差异简化为了两个常量。在存在旋转、球体个体差异以及观测延迟的世界中的对比尚未进行实测。
- Büchler 等人的数据基于 arXiv v1。未能查阅 T-RO 2022 最终版(未核实)。由于未能打开 Mülling 等人 2011 年仿生方法的原文,四阶段动作划分仅通过 2013 年论文的图解说明进行确认。
7. 第一部分结语
在过去的十篇文章中,我们通过计算走过了击打一个球所需的七个步骤。当将其转移到开源硬件时,需要记住的数据汇总如下。
| 数字 | 值 | 篇 |
|---|---|---|
| 球到达底线的时间 | 数据集中心 0.65 s,12 m/s 的球 0.32 s | 1 |
| 预测误差的主要原因 | 未知旋转 5 cm,已知旋转 0.5 cm | 6 |
| 球拍角度 1° / 速度 0.1 m/s / 反弹系数 0.05 | 落点 6 / 10 / 13 cm | 7 |
| 击回所需的关节速度 | 约 10 rad/s(若要像人一样击打则需约 25) | 5 |
| 挥拍时间 | 0.05~0.1 s(加速度极限 300~600 rad/s²) | 8 |
| 控制 | 1 kHz + 前馈,电流环 1~2 kHz 带宽 | 9 |
| 关节零点 | 0.1° 对应球拍方向 0.1~0.2° | 3 |
下一步是在实际零件和模拟器中重新测量这些数据。在此之前,第 11 至 15 篇将通过玩具问题直接实现强化学习的原理(MDP、PPO、奖励设计与动作空间、从仿真到真实、评估),并继续进行探讨。
TT 的话。 如果想把什么都学会,就算击球两万次也不够。已知的事情交个方程式,只需要学习未知的两个数字,所以十次就足够了!
参考
所有资料均于 2026-10-18 查阅。
- Mülling, Kober, Kroemer, Peters, Learning to select and generalize striking movements in robot table tennis, IJRR 32(3) (2013) 263–279, 作者公开版, 第 3.1~3.3 节,图 7。
- Koç, Maeda, Peters, Online optimal trajectory generation for robot table tennis, RAS 105 (2018) 121–137, 作者公开版, 第 6 节,图 11,表 A.3。
- Büchler, Guist, Calandra, Berenz, Schölkopf, Peters, Learning to Play Table Tennis From Scratch using Muscular Robots, arXiv:2006.05935 v1(T-RO 2022 最终版未核实)。
- D'Ambrosio 等人,Achieving Human Level Competitive Robot Table Tennis, arXiv:2408.03906, 第 II·III 节,附录表 XIV。
- D'Ambrosio 等人,Robotic Table Tennis: A Case Study into a High Speed Learning System, arXiv:2309.03315.
- Conti 等人(Sony AI),Physics Models for Sim-to-Real Transfer in Professional-Level Robot Table Tennis, arXiv:2606.28805.
- Google DeepMind, competitive_robot_table_tennis, CC-BY 4.0.