视觉告诉你「杯子在桌上」,触觉告诉你「我已经接触、正在滑动、即将脱落」。没有触觉的机器人永远只会盲抓,做不了插拔、按压、装配这类精细操作。
先澄清两个常被混淆的概念:
| 概念 | 测量对象 | 空间分辨率 | 时间分辨率 | 典型硬件 |
|---|---|---|---|---|
| 触觉(Tactile) | 接触面局部的力分布、纹理、形变 | 高(毫米级,可看纹理) | 高(100-1000 Hz) | 视触觉皮肤、电容阵列 |
| 力觉(Force/Torque) | 末端整体受力(六维向量) | 低(一个端点一个值) | 高(100-1000 Hz) | 腕部六维力、关节力矩 |
简单类比:触觉像「皮肤」,告诉你哪里被碰、什么纹理;力觉像「手腕」,告诉你整体被推了多少力。两者互补,缺一不可。
当前研究最热的触觉硬件是 视触觉传感器(Vision-based Tactile Sensor),代表是 MIT 的 GelSight 系列和 Meta 的 DIGIT。它的工作原理极为巧妙:
<svg viewBox="0 0 720 360" xmlns="http://www.w3.org/2000/svg"> <!-- 物体 --> <ellipse cx="120" cy="170" rx="40" ry="30" fill="#94a3b8" stroke="#475569" stroke-width="2"/> <text x="120" y="135" text-anchor="middle" font-size="11" fill="#475569">被接触物体</text> <!-- 弹性体 --> <rect x="160" y="120" width="120" height="100" rx="4" fill="#bbf7d0" stroke="#16a34a" stroke-width="2" opacity="0.7"/> <path d="M160 160 Q180 145 200 160 T240 160 T280 160" fill="none" stroke="#16a34a" stroke-width="2"/> <text x="220" y="105" text-anchor="middle" font-size="11" fill="#16a34a">透明弹性体(gel)</text> <text x="220" y="245" text-anchor="middle" font-size="10" fill="#16a34a">表面涂反光涂层 + 彩色蒙版</text> <!-- 光源 --> <circle cx="350" cy="100" r="6" fill="#ef4444"/> <circle cx="350" cy="160" r="6" fill="#22c55e"/> <circle cx="350" cy="220" r="6" fill="#3b82f6"/> <text x="365" y="105" font-size="9">红光</text> <text x="365" y="165" font-size="9">绿光</text> <text x="365" y="225" font-size="9">蓝光</text> <!-- 相机 --> <rect x="450" y="120" width="100" height="100" rx="6" fill="#fde68a" stroke="#d97706" stroke-width="2"/> <circle cx="500" cy="170" r="18" fill="#1f2937" stroke="#d97706" stroke-width="2"/> <text x="500" y="245" text-anchor="middle" font-size="11" fill="#d97706">内置高分辨率相机</text> <!-- 输出图像 --> <rect x="600" y="120" width="80" height="60" rx="4" fill="#1f2937" stroke="#9ca3af"/> <text x="640" y="155" text-anchor="middle" font-size="9" fill="#22c55e">触觉图像</text> <text x="640" y="200" text-anchor="middle" font-size="9" fill="#6b7280">→ 神经网络</text> <text x="640" y="215" text-anchor="middle" font-size="9" fill="#6b7280">→ 力/纹理/滑动</text> <!-- 箭头 --> <line x1="280" y1="170" x2="430" y2="170" stroke="#374151" stroke-width="2" marker-end="url(#a1)"/> <line x1="550" y1="170" x2="595" y2="150" stroke="#374151" stroke-width="2" marker-end="url(#a1)"/> <defs> <marker id="a1" markerWidth="8" markerHeight="8" refX="6" refY="3" orient="auto"> <path d="M0,0 L6,3 L0,6 Z" fill="#374151"/> </marker> </defs> </svg>
| 信息类型 | 视触觉能给出 | 传统力觉给不出 |
|---|---|---|
| 接触位置与面积 | 像素级精度 | 端点级粗略 |
| 表面纹理 | 可识别材质(布、金属、纸) | 完全无 |
| 滑动方向 | 直接看纹理移动 | 需要间接推断 |
| 法向/切向力分布 | 接触面每一点的力 | 一个 6 维向量 |
| 物体局部形状 | 反推接触轮廓 | 无 |
💡 为什么叫「视触觉」:因为它本质是把触觉信号转成了视觉信号——用相机看「皮肤的变形」。这让触觉也能享用 CNN/ViT 等视觉模型的成果。GelSight 系列论文已经演示了用它识别布料材质、检测插头是否插到位、找回掉落的螺丝等传统力觉做不了的任务。
六维力传感器(6-Axis Force/Torque Sensor,也叫 6-axis F/T)装在机械臂腕部,测量末端工具受的三个力 (Fx, Fy, Fz) 和三个力矩 (Mx, My, Mz),共 6 维。
主流是应变片式:传感器内部是弹性体(金属结构),表面贴应变片。受力时弹性体微变形(微米级),应变片电阻变化,通过惠斯通电桥转换为电压。再通过标定矩阵把 6 路电压反推为 6 维力/力矩:
[F] [C11 C12 ... C16] [V1] [M] = [C21 ... ] · [V2] [ ... ] [V6]
其中 C 是 6×6 标定矩阵,出厂标定。
机器人控制有一个根本矛盾:既要按轨迹走(位置控制),又要顺应接触力(力控制)。两者不能同时同方向满足。解决方案是 力位混合控制(Hybrid Force/Position Control):
举个插孔装配的例子:当轴接近孔时,水平方向(约束方向)做力控——遇到阻力就横向微调寻找入口;垂直方向(自由方向)做位置控——持续向下推进。这种混合控制是装配成功的核心,第 6.4 节会详细推导。
除了腕部六维力,机器人还常用两种力觉来源:
| 来源 | 原理 | 精度 | 成本 |
|---|---|---|---|
| 关节力矩传感器 | 每关节装应变片式力矩传感器 | 高 | 高 |
| 电流估算力矩 | 关节电机电流 ∝ 输出力矩(电机常数) | 中(受摩擦、温度影响) | 低(无需额外硬件) |
准直驱关节(第 1.3 节提到的低减速比设计)特别适合电流估算,因为摩擦小、电机常数稳定。这也是为什么四足/人形机器人能省下昂贵的关节力矩传感器——用电流估算代替。代价是精度受限,需要温度补偿和摩擦建模。
有了触觉与力觉,机器人能完成的任务从「盲抓」跃升到「巧操作」:
| 任务 | 关键感知 | 难点 |
|---|---|---|
| 轴孔装配 | 六维力 + 微位移反馈 | 微米级精度 + 接触不确定 |
| 布料折叠 | 视触觉(识别布料层数、滑动) | 大变形、非线性 |
| 柔顺插拔(USB、电源插头) | 视触觉 + 力觉 | 盲插、过盈配合 |
| 按压按钮 | 力觉(保持恒定按压力) | 防止按碎 |
| 拧瓶盖 | 视触觉 + 力觉(滑动检测) | 多自由度耦合 |
| 双手协调 | 双手六维力 + 触觉 | 力分配协调 |
⚠️ 当前痛点:触觉传感器虽然原理可行,但大规模集成仍难——一片视触觉皮肤要装一个相机,指尖几厘米见方要塞下镜头、光源、处理电路,散热和耐用性都是工程挑战。这也是为什么触觉还未像相机那样在机器人上全面普及。
下一节《2.4 多模态融合策略》将讨论如何把视觉、触觉、力觉、本体感觉这些异构信号整合成可决策的统一状态。