抓取接触力学基准#
在机器人仿真中,"抓取"看起来很简单——夹爪合拢、物体被夹住、机械臂抬起。但对于策略训练和 sim-to-real 迁移来说,仅仅"抓住"是远远不够的。仿真器提供的接触力是否平滑、是否符合物理规律,都会直接影响训练出的策略能否迁移到真实机器人上。
本页介绍两组定量实验,从不同角度评估 MotrixSim 与 MuJoCo 在抓取任务中的接触力学表现:
实验一(接触力分析):在完整的抓取-抬升-保持流程中,逐步记录接触力数据,对比各引擎在力平衡和力平滑性方面的表现。
实验二(临界摩擦滑移测试):验证各引擎的摩擦模型是否符合库仑摩擦定律——当摩擦系数恰好达到理论临界值时,物体应当刚好能被托住。
实验场景#
两组实验共用同一个场景:Franka Emika Panda 机械臂 配备双指平行夹爪,抓取一个放置在桌面上的立方体。

抓取过程分为以下阶段:
阶段 |
动作 |
时长 |
|---|---|---|
|
机械臂从初始姿态移动到抬升准备位置 |
1.0s |
|
从抬升位置移动到抓取位置 |
1.0s |
|
夹爪闭合,与物体建立接触 |
1.0s |
|
机械臂回到抬升位置,将物体提起 |
1.0s |
|
抬升结束后的过渡稳定期 |
0.4s |
|
稳定保持 |
可配置 |
所有引擎使用完全相同的场景文件、控制轨迹、时间步长和传感器配置,确保观察到的差异仅来自引擎本身的接触求解与摩擦建模。
实验一:接触力分析#
脚本: force_analy.py
目标#
在相同条件下运行 MotrixSim、MuJoCo (Euler) 和 MuJoCo (FastImplicit) 三种引擎,对比以下两个维度:
力平衡:竖直方向的摩擦力是否准确匹配物体重力
力平滑性:接触力在相邻时间步之间是否变化平缓
物理背景#
当夹爪水平夹持物体并抬起时,夹爪提供的法向力(水平方向的夹持力)左右对称抵消。真正托住物体的是竖直方向的摩擦力——它必须等于物体的重力 \(mg\),物体才不会滑落。
因此,一个理想的物理引擎应当在 hold(稳定保持)阶段输出:
其中 \(F_z\) 是竖直方向的摩擦力合力,\(m\) 是物体质量,\(g\) 是重力加速度。
结果#
运行脚本后会在 examples/bench/grasp/.result/ 下生成分析图表。
力平衡#

该图的上半部分展示了 lift、settling 和 hold 三个阶段中,竖直摩擦力 \(F_z\) 随时间的变化。黑色虚线标注了理论重力值 \(mg\)。下半部分用柱状图对比了各引擎在 hold 阶段的平均力误差 \(|F_z - mg|\)。
结论:MotrixSim 的竖直摩擦力稳定地贴合 \(mg\) 线,误差极小;MuJoCo 则存在明显的周期性振荡,尤其是 Euler 积分器的波动幅度更大。
力平滑性#

力平滑性衡量的是接触力在相邻时间步之间的变化幅度。具体来说,先计算竖直摩擦力的逐步差分 \(\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/ 目录。
实验二:临界摩擦滑移测试#
目标#
验证各引擎的摩擦模型是否正确遵循库仑摩擦定律——在理论临界摩擦系数附近,物体的保持/滑落行为是否与物理预测一致。
物理原理#
想象用两根手指水平夹住一块积木并提起。手指提供的法向力(夹紧力)为 \(N\),摩擦系数为 \(\mu\)。根据库仑摩擦定律,最大静摩擦力为:
要托住积木,摩擦力必须大于等于积木的重力:
由此得到临界摩擦系数:
当 \(\mu < \mu_{\text{crit}}\) 时,摩擦力不足以托住物体,物体应当滑落
当 \(\mu \geq \mu_{\text{crit}}\) 时,摩擦力足够,物体应当保持不动
一个物理正确的仿真器应当在 \(\mu_{\text{crit}}\) 处表现出清晰的保持/滑落分界。
实验方法#
热身阶段:先正常完成抓取和抬升,进入稳定保持状态,记录此时夹爪的法向力 \(N\)
计算临界值:根据物体质量和法向力计算 \(\mu_{\text{crit}} = mg / N\)
参数扫描:在 \(\mu_{\text{crit}}\) 附近取 5 个倍率(0.90, 0.98, 1.00, 1.02, 1.10),分别修改摩擦系数
观察结果:从稳态恢复后模拟 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 迁移:仿真中的接触行为越接近物理规律,策略迁移到真实机器人的成功率越高
抓取策略评测:需要区分"仅仅抓住"和"稳定保持"的研究任务,需要高质量的接触力数据