抓取接触力学基准#

小技巧

模型和代码详见 MotrixSim Docs 仓库

在运行示例之前,请先参考 🛠️ 环境准备 完成环境准备。

在机器人仿真中,"抓取"看起来很简单——夹爪合拢、物体被夹住、机械臂抬起。但对于策略训练和 sim-to-real 迁移来说,仅仅"抓住"是远远不够的。仿真器提供的接触力是否平滑、是否符合物理规律,都会直接影响训练出的策略能否迁移到真实机器人上。

本页介绍两组定量实验,从不同角度评估 MotrixSim 与 MuJoCo 在抓取任务中的接触力学表现:

  • 实验一(接触力分析):在完整的抓取-抬升-保持流程中,逐步记录接触力数据,对比各引擎在力平衡和力平滑性方面的表现。

  • 实验二(临界摩擦滑移测试):验证各引擎的摩擦模型是否符合库仑摩擦定律——当摩擦系数恰好达到理论临界值时,物体应当刚好能被托住。

实验场景#

两组实验共用同一个场景:Franka Emika Panda 机械臂 配备双指平行夹爪,抓取一个放置在桌面上的立方体。

franka_grasp

抓取过程分为以下阶段:

阶段

动作

时长

move_to_lift

机械臂从初始姿态移动到抬升准备位置

1.0s

move_to_grasp

从抬升位置移动到抓取位置

1.0s

close_gripper

夹爪闭合,与物体建立接触

1.0s

lift

机械臂回到抬升位置,将物体提起

1.0s

settling

抬升结束后的过渡稳定期

0.4s

hold

稳定保持

可配置

所有引擎使用完全相同的场景文件、控制轨迹、时间步长和传感器配置,确保观察到的差异仅来自引擎本身的接触求解与摩擦建模。


实验一:接触力分析#

脚本: force_analy.py

目标#

在相同条件下运行 MotrixSim、MuJoCo (Euler) 和 MuJoCo (FastImplicit) 三种引擎,对比以下两个维度:

  1. 力平衡:竖直方向的摩擦力是否准确匹配物体重力

  2. 力平滑性:接触力在相邻时间步之间是否变化平缓

物理背景#

当夹爪水平夹持物体并抬起时,夹爪提供的法向力(水平方向的夹持力)左右对称抵消。真正托住物体的是竖直方向的摩擦力——它必须等于物体的重力 \(mg\),物体才不会滑落。

因此,一个理想的物理引擎应当在 hold(稳定保持)阶段输出:

\[ F_z \approx mg \]

其中 \(F_z\) 是竖直方向的摩擦力合力,\(m\) 是物体质量,\(g\) 是重力加速度。

结果#

运行脚本后会在 examples/bench/grasp/.result/ 下生成分析图表。

力平衡#

force_balance

该图的上半部分展示了 liftsettlinghold 三个阶段中,竖直摩擦力 \(F_z\) 随时间的变化。黑色虚线标注了理论重力值 \(mg\)。下半部分用柱状图对比了各引擎在 hold 阶段的平均力误差 \(|F_z - mg|\)

结论:MotrixSim 的竖直摩擦力稳定地贴合 \(mg\) 线,误差极小;MuJoCo 则存在明显的周期性振荡,尤其是 Euler 积分器的波动幅度更大。

力平滑性#

force_smoothness

力平滑性衡量的是接触力在相邻时间步之间的变化幅度。具体来说,先计算竖直摩擦力的逐步差分 \(\Delta F_z(k) = F_z(t_{k+1}) - F_z(t_k)\),然后取 hold 阶段内所有差分值的标准差作为 Jitter 指标——Jitter 越小,力越平滑。图中同时展示了竖直摩擦力(\(\Delta F_z\))和法向夹持力(\(\Delta F_n\))两个维度的 Jitter。

结论:MuJoCo Euler 的 Jitter 比 MotrixSim 和 MuJoCo FastImplicit 高出数个数量级,说明其接触力存在显著的高频数值振荡。MotrixSim 和 MuJoCo FastImplicit 的 Jitter 都处于极其微小的量级,在 hold 阶段几乎观察不到力的逐步波动,接触响应非常平滑。

运行方式#

uv run examples/bench/grasp/force_analy.py

运行完成后,图表和报告将保存到 examples/bench/grasp/.result/ 目录。


实验二:临界摩擦滑移测试#

脚本: friction_threshold.py

目标#

验证各引擎的摩擦模型是否正确遵循库仑摩擦定律——在理论临界摩擦系数附近,物体的保持/滑落行为是否与物理预测一致。

物理原理#

friction_principle

想象用两根手指水平夹住一块积木并提起。手指提供的法向力(夹紧力)为 \(N\),摩擦系数为 \(\mu\)。根据库仑摩擦定律,最大静摩擦力为:

\[ f_{\max} = \mu \times N \]

要托住积木,摩擦力必须大于等于积木的重力:

\[ \mu \times N \geq mg \]

由此得到临界摩擦系数

\[ \mu_{\text{crit}} = \frac{mg}{N} \]
  • \(\mu < \mu_{\text{crit}}\) 时,摩擦力不足以托住物体,物体应当滑落

  • \(\mu \geq \mu_{\text{crit}}\) 时,摩擦力足够,物体应当保持不动

一个物理正确的仿真器应当在 \(\mu_{\text{crit}}\) 处表现出清晰的保持/滑落分界

实验方法#

  1. 热身阶段:先正常完成抓取和抬升,进入稳定保持状态,记录此时夹爪的法向力 \(N\)

  2. 计算临界值:根据物体质量和法向力计算 \(\mu_{\text{crit}} = mg / N\)

  3. 参数扫描:在 \(\mu_{\text{crit}}\) 附近取 5 个倍率(0.90, 0.98, 1.00, 1.02, 1.10),分别修改摩擦系数

  4. 观察结果:从稳态恢复后模拟 5 秒,观察物体是否滑落

结果#

以下是三种引擎在不同摩擦系数倍率下的实验结果:

引擎

倍率

实际 \(\mu\)

理论预测

实际结果

下滑量 (mm)

符合理论

MotrixSim

0.90

0.0812

滑落

滑落

154.2

MotrixSim

0.98

0.0884

滑落

滑落

150.0

MotrixSim

1.00

0.0902

保持

保持

0.0

MotrixSim

1.02

0.0920

保持

保持

0.0

MotrixSim

1.10

0.0992

保持

保持

0.0

MuJoCo Euler

0.90

0.0812

滑落

滑落

153.5

MuJoCo Euler

0.98

0.0884

滑落

滑落

153.2

MuJoCo Euler

1.00

0.0902

保持

滑落

151.2

MuJoCo Euler

1.02

0.0920

保持

滑落

152.0

MuJoCo Euler

1.10

0.0992

保持

滑落

150.5

MuJoCo FastImplicit

0.90

0.0812

滑落

滑落

152.5

MuJoCo FastImplicit

0.98

0.0884

滑落

滑落

150.9

MuJoCo FastImplicit

1.00

0.0902

保持

滑落

151.7

MuJoCo FastImplicit

1.02

0.0920

保持

滑落

149.7

MuJoCo FastImplicit

1.10

0.0992

保持

滑落

11.3

备注

实验中各引擎的法向力 \(N\) 和物体重力 \(mg\) 几乎完全一致(\(N \approx 6.96\) N,\(mg \approx 0.628\) N),因此 \(\mu_{\text{crit}} \approx 0.0902\) 在三种引擎中相同。

分析#

MotrixSim 的表现与物理预测完全一致:

  • \(\mu < \mu_{\text{crit}}\)(倍率 0.90, 0.98):物体滑落

  • \(\mu = \mu_{\text{crit}}\)(倍率 1.00):物体恰好保持

  • \(\mu > \mu_{\text{crit}}\)(倍率 1.02, 1.10):物体稳定保持

分界线精确地落在理论临界值 \(\mu_{\text{crit}}\) 上,说明 MotrixSim 的摩擦模型严格遵循库仑摩擦定律。

MuJoCo Euler 的表现则偏离物理预测:即使将摩擦系数提高到 1.10 倍临界值,物体仍然滑落。这说明 MuJoCo 的 Euler 积分器在摩擦约束维持上存在系统性不足,无法在该场景中正确支撑物体。

MuJoCo FastImplicit 的表现有所改善,但仍不精确:在高倍率(1.10)下物体虽未完全落地,但仍发生了明显的下滑(11.3 mm),且所有倍率下最终都被判定为滑落。

运行方式#

uv run examples/bench/grasp/friction_threshold.py

总结#

两组实验从不同维度验证了 MotrixSim 在接触力学方面的优势:

维度

实验一(接触力分析)

实验二(临界摩擦测试)

力的准确性

竖直摩擦力精确匹配重力 \(mg\)

临界摩擦系数处的保持/滑落分界与理论完全一致

力的平滑性

逐步力变化极小,无高频振荡

摩擦物理一致性

严格遵循库仑摩擦定律

这些优势对以下应用场景具有实际意义:

  • 灵巧操作与精密装配:策略训练依赖低噪声、物理一致的接触力反馈

  • Sim-to-Real 迁移:仿真中的接触行为越接近物理规律,策略迁移到真实机器人的成功率越高

  • 抓取策略评测:需要区分"仅仅抓住"和"稳定保持"的研究任务,需要高质量的接触力数据