接触力学是物理仿真中最具挑战性的领域之一。当两个物体接触时,会产生复杂的力学相互作用,包括法向力、切向摩擦力以及可能的粘附力。这些力的准确建模对于实现逼真的物理仿真至关重要,特别是在机器人抓取、操作和运动控制等任务中。本章将深入探讨各种接触力学模型,从经典的库仑摩擦定律到现代的动态摩擦模型,从理想的赫兹接触理论到实用的柔性接触方法。我们将特别关注这些模型在强化学习环境中的应用,分析不同模型对训练稳定性和策略迁移的影响。
完成本章学习后,您将能够:
库仑摩擦定律是接触力学中最基本的模型,由Charles-Augustin de Coulomb在1785年通过大量实验总结得出。尽管该模型做了许多简化假设,但其简洁性和实用性使其成为物理仿真中最常用的摩擦模型。
库仑摩擦的核心思想是将摩擦力分为静摩擦和动摩擦两种状态:
\[\mathbf{f}_t = \begin{cases} -\mathbf{f}_{\text{applied}} & \text{if } |\mathbf{f}_{\text{applied}}| \leq \mu_s f_n \text{ (静摩擦)} \\ -\mu_k f_n \frac{\mathbf{v}_t}{|\mathbf{v}_t|} & \text{if } |\mathbf{v}_t| > 0 \text{ (动摩擦)} \end{cases}\]其中:
这个看似简单的模型在数值实现时会遇到几个挑战:
| 零速度奇异性:当 $ | \mathbf{v}_t | \to 0$ 时,摩擦力方向变得不确定 |
为了解决库仑摩擦的不连续性问题,实际仿真中常采用正则化方法。最常见的是速度正则化:
\[\mathbf{f}_t = -\mu(v) f_n \frac{\mathbf{v}_t}{\max(|\mathbf{v}_t|, v_{\text{min}})}\]其中摩擦系数是速度的函数:
\[\mu(v) = \mu_k + (\mu_s - \mu_k) e^{-\alpha |v|}\]这种指数衰减模型能够平滑地过渡静动摩擦,参数 $\alpha$ 控制过渡的陡峭程度。在强化学习应用中,这种平滑过渡对于梯度计算尤为重要。
另一种更精确的方法是使用隐式积分器配合互补性条件:
\[\begin{aligned} 0 \leq \lambda_n &\perp g(\mathbf{q}) \geq 0 \quad \text{(法向)} \\ |\mathbf{f}_t| &\leq \mu \lambda_n \quad \text{(摩擦锥约束)} \\ \mathbf{f}_t &= -\mu \lambda_n \frac{\mathbf{v}_t + \Delta\mathbf{v}_t}{|\mathbf{v}_t + \Delta\mathbf{v}_t|} \quad \text{if sliding} \end{aligned}\]LuGre模型由Canudas de Wit等人在1995年提出,它通过引入微观鬃毛变形的概念,将摩擦建模为动态系统:
\[\begin{aligned} \dot{z} &= v - \sigma_0 \frac{|v|}{g(v)} z \\ g(v) &= \mu_c + (\mu_s - \mu_c) e^{-(v/v_s)^2} \\ f &= \sigma_0 z + \sigma_1 \dot{z} + \sigma_2 v \end{aligned}\]其中:
LuGre模型的优势在于:
摩擦力
^
|
μs fn |______
| \___
μk fn | \_______ Stribeck曲线
|
|____________________> 速度
vs
理解摩擦参数的物理意义对于参数辨识和仿真调试至关重要:
静摩擦系数 $\mu_s$:
动摩擦系数 $\mu_k$:
Stribeck速度 $v_s$:
在强化学习训练中,摩擦参数的域随机化策略:
\[\begin{aligned} \mu_s &\sim \mathcal{U}[0.5\mu_{s,\text{nom}}, 1.5\mu_{s,\text{nom}}] \\ \mu_k &\sim \mathcal{U}[0.6\mu_s, 0.9\mu_s] \\ v_s &\sim \log\mathcal{U}[10^{-4}, 10^{-1}] \end{aligned}\]赫兹接触理论由Heinrich Hertz在1882年建立,是弹性接触力学的基石。该理论基于以下假设:
在这些假设下,赫兹推导出了著名的接触力-变形关系:
\[F = \frac{4}{3} E^* \sqrt{R} \delta^{3/2}\]其中:
这个3/2次幂关系是赫兹理论的标志性特征,与线性弹簧模型形成鲜明对比。
赫兹理论不仅给出了力-变形关系,还预测了接触区域的几何形状和压力分布。对于球形接触,接触区域是半径为 $a$ 的圆形:
\[a = \sqrt{R\delta}\]接触压力呈半椭球分布:
\[p(r) = p_0 \sqrt{1 - \left(\frac{r}{a}\right)^2}\]其中最大接触压力为:
\[p_0 = \frac{3F}{2\pi a^2} = \frac{3}{2} \left(\frac{E^*}{\pi}\right)^{2/3} \left(\frac{F}{R^2}\right)^{1/3}\]这种非均匀的压力分布对于理解接触应力集中和疲劳失效至关重要。在机器人抓取任务中,了解压力分布有助于:
接触刚度是仿真中的关键参数,它决定了接触的”硬度”。赫兹接触的刚度是非线性的:
\[k = \frac{dF}{d\delta} = 2E^* \sqrt{R\delta}\]注意刚度随压入深度增加,这与线性弹簧截然不同。对于小振动分析,可以在工作点线性化:
\[k_{\text{lin}} = 2E^* \sqrt{R\delta_0}\]在数值仿真中,接触刚度的选择需要平衡:
经验公式用于估算合适的接触刚度:
\[k_{\text{sim}} = \alpha \cdot \frac{m \cdot g}{d_{\text{tol}}}\]其中 $\alpha \approx 10-100$,$d_{\text{tol}}$ 是允许的穿透深度。
实际接触常常偏离赫兹假设,需要修正或替代模型:
1. 粘附接触(JKR模型)
当表面能不可忽略时,Johnson-Kendall-Roberts模型考虑粘附力:
\[F = \frac{4E^*a^3}{3R} - \sqrt{8\pi\gamma E^* a^3}\]其中 $\gamma$ 是表面能。这在微纳尺度或软材料接触中很重要。
2. 粗糙表面接触(Greenwood-Williamson模型)
真实表面具有多尺度粗糙度,GW模型将接触视为多个微凸体的集合:
\[F = \frac{4}{3} n E^* \int_d^{\infty} \sqrt{R_a} (z-d)^{3/2} \phi(z) dz\]其中 $n$ 是微凸体密度,$\phi(z)$ 是高度分布函数。
3. 塑性接触
当接触应力超过屈服极限时,需要考虑塑性变形:
\[F = \begin{cases} \frac{4}{3} E^* \sqrt{R} \delta^{3/2} & \delta < \delta_y \\ F_y + H \cdot A_{\text{plastic}} & \delta \geq \delta_y \end{cases}\]其中 $H$ 是材料硬度,$\delta_y$ 是屈服点压入深度。
在强化学习环境中,选择合适的接触模型需要考虑:
罚函数方法是物理仿真中最广泛使用的接触处理方法。其核心思想是允许小的穿透,并施加与穿透深度成比例的恢复力:
\[\mathbf{f}_n = \begin{cases} k_n \delta \mathbf{n} + c_n \dot{\delta} \mathbf{n} & \delta > 0 \\ 0 & \delta \leq 0 \end{cases}\]其中:
这种方法的优势在于:
但也存在固有缺陷:
参数选择策略:
刚度选择基于时间步长和稳定性要求:
\[k_n = \frac{\alpha m}{\Delta t^2}\]其中 $\alpha \in [10, 100]$ 是安全系数。阻尼系数通过临界阻尼比确定:
\[c_n = 2\zeta\sqrt{k_n m}\]典型地,$\zeta \in [0.1, 0.5]$ 提供良好的能量耗散而不会过度阻尼。
Hunt-Crossley模型是对线性弹簧-阻尼器模型的非线性扩展,更准确地描述了材料的粘弹性行为:
\[f_n = k_n \delta^n + \lambda \delta^n \dot{\delta}\]其中指数 $n$ 通常取1.5(对应赫兹接触)。这个模型的关键创新是阻尼力与穿透深度成比例,避免了分离时的粘附力问题。
模型的能量耗散特性由恢复系数 $e$ 决定:
\[\lambda = \frac{3k_n(1-e)}{2\dot{\delta}_{\text{impact}}}\]其中 $\dot{\delta}_{\text{impact}}$ 是碰撞速度。这确保了正确的能量损失:
\[E_{\text{loss}} = \frac{1}{2}m v^2(1-e^2)\]数值实现注意事项:
if (penetration > 0) {
// 计算穿透速度
double v_pen = dot(v_relative, normal);
// Hunt-Crossley力
double delta_n = pow(penetration, 1.5);
double f_elastic = k_n * delta_n;
double f_damping = lambda * delta_n * v_pen;
// 确保阻尼不会反转速度
f_damping = min(f_damping, f_elastic);
force = (f_elastic + f_damping) * normal;
}
接触中的能量耗散机制对于仿真的真实性至关重要。主要的耗散来源包括:
恢复系数模型:
恢复系数 $e$ 与碰撞速度的关系可以用经验公式描述:
\[e(v) = e_0 - (e_0 - e_{\infty})(1 - e^{-v/v_c})\]其中:
能量一致性检查:
在仿真中监控能量平衡是调试的重要手段:
\[\Delta E_{\text{total}} = \Delta E_{\text{kinetic}} + \Delta E_{\text{potential}} + E_{\text{dissipated}}\]理想情况下,$\Delta E_{\text{total}} \approx 0$(考虑数值误差)。
选择合适的接触参数是成功仿真的关键。以下是系统化的参数选择流程:
1. 基于物理的初始估计:
对于已知材料,使用材料属性计算初始参数:
\[k_n = \frac{4}{3}E^*\sqrt{R_{\text{eff}}}\] \[c_n = 2\sqrt{mk_n}\cdot\frac{\ln(e)}{\sqrt{\pi^2 + \ln^2(e)}}\]2. 稳定性约束:
确保数值稳定的最大刚度:
\[k_{\max} = \frac{4m}{\Delta t^2}\]3. 穿透深度约束:
限制最大穿透深度以保持视觉真实性:
\[k_{\min} = \frac{F_{\text{typical}}}{\delta_{\max}}\]4. 域随机化策略:
在强化学习训练中,参数随机化提高泛化能力:
\[\begin{aligned} k_n &\sim \log\mathcal{N}(\mu_k, \sigma_k^2) \\ e &\sim \text{Beta}(\alpha_e, \beta_e) \\ \mu_f &\sim \text{TruncNormal}(\mu_{\mu}, \sigma_{\mu}^2, 0, 1) \end{aligned}\]参数敏感性分析:
不同任务对参数的敏感性不同:
建议的参数范围(机器人仿真):