在标准 CSP 模式下,导纳控制器阻尼矩阵的空间几何表示称为阻尼椭圆,用于让机器人末端在不同运动方向上表现出不同的粘滞感,从而在力控贴合任务中实现稳定与敏捷的最佳折中。对于清洁机器人,这是一个非常实用的高级调优手段。

在清洁的恒力贴合中,导纳控制器负责将力误差转换为位置修正量。如果没有方向性设计,机器人在所有方向上的阻尼都是一样的,这会导致:
阻尼椭圆正是为了解耦这两个方向的动态特性:
导纳控制律(K=0 时)可以写为:

这里的 D 通常是一个 6×6 矩阵,当 D 不是单位矩阵的倍数时,它在各个方向上的阻尼值不同,在三维空间中,从一个点出发,沿不同方向单位速度所需克服的阻力可以画成一个椭球,这就是阻尼椭圆/椭球。
物理意义:
在贴合任务中,将阻尼椭圆的短轴对齐法向,长轴对齐切平面。这样,力误差在法向会引起较慢的修正(避免冲击),在切向则会引起较快的修正(及时跟上曲面)。
优势 | 劣势 |
|---|---|
1. 提升贴合稳定性:法向高阻尼有效抑制接触力振荡,保护釉面。2. 提升跟踪敏捷度:切向低阻尼使刷头能快速响应曲面轮廓变化,减少瞬时脱力。3. 独立调优:可分别针对清洁任务调整法向和切向的力控动态,互不干扰。 | 1. 需要实时姿态信息:阻尼椭圆必须随末端工具姿态实时旋转,始终对齐曲面法向。2. 参数整定更复杂:需要同时调试法向和切向的阻尼值,以及它们之间的比例。3. 法向估计误差敏感:如果曲面法向估计不准,高低阻尼方向会偏离,反而可能恶化贴合。 |

设定工具坐标系的 Z 轴为法向(接触方向),X、Y 轴为切向,在工具系下,期望的阻尼矩阵为对角阵:

通过正运动学,每个控制周期(1kHz)得到工具坐标系相对于基座标系的旋转矩阵 R
R=pinocchio.forwardKinematics(model,data,qactual)
导纳控制通常在工具坐标系下计算(因为力误差在工具系下表达最自然),可以在工具系下直接应用 Dtool,无需变换。但如果导纳控制器在基座标系下实现,则需要变换:

推荐做法:在工具坐标系下进行导纳计算,这样 Dtool就是常数对角阵,代码简洁。
在工具系下计算力误差和导纳修正:
# 力误差(工具系,Z轴法向)
F_err = F_des - F_contact
# 工具系下的阻尼矩阵
D_tool = np.diag([d_xy, d_xy, d_z, d_rxy, d_rxy, d_rz])
# 导纳加速度计算(简化版,仅平动)
# M * dx_ddot + D * dx_dot = F_err
dx_ddot = (F_err - D_tool @ dx_dot) / M
dx_dot += dx_ddot * dt
delta_x += dx_dot * dt此时,delta_x 的 Z 分量修正会因高阻尼而变得平滑,而 X、Y 分量修正会因低阻尼而更灵敏。
如果工具姿态会变化(例如清洁内壁时工具法向始终指向圆心),那么工具系下的常数对角阻尼矩阵自然随工具旋转,始终是法向高阻尼,这正是我们想要的。
无需额外处理:只要导纳计算在工具坐标系下进行,阻尼椭圆自动跟随工具姿态。
[六维力传感器] → 工具系力误差 → [阻尼椭圆导纳控制器]
↓
ΔX_tool (Z向慢,XY向快)
↓
叠加到轨迹 → 逆运动学 → CSP指令