人工皮肤与触觉
触觉是人类最早发育、最基础的感觉系统。人形机器人要实现精细操作和安全人机交互,必须具备触觉感知能力。人工皮肤和触觉传感器技术使机器人能够感知压力、纹理、温度等信息。本文深入解析人工皮肤与触觉技术的核心原理与应用。
一、触觉感知基础
1.1 人体触觉系统
皮肤结构:
人体皮肤结构
┌─────────────────────────────────────┐
│ 表皮层(0.1-0.3mm) │
│ ├── 角质层:保护屏障 │
│ └── 基底层:细胞再生 │
├─────────────────────────────────────┤
│ 真皮层(1-3mm) │
│ ├── 乳头层:触觉感受器 │
│ │ ├── 梅克尔细胞:压力、纹理 │
│ │ └── 迈斯纳小体:轻触、滑动 │
│ └── 网状层:结构支撑 │
│ ├── 鲁菲尼末梢:皮肤拉伸 │
│ └── 帕西尼小体:振动、深压 │
├─────────────────────────────────────┤
│ 皮下组织(1-10mm) │
│ ├── 脂肪:保温、缓冲 │
│ └── 血管、神经 │
└─────────────────────────────────────┘
皮肤厚度分布:
├── 指尖:2-3mm(最敏感)
├── 手掌:3-5mm
├── 手臂:2-3mm
├── 背部:5-10mm
└── 足底:10-20mm(最厚)
触觉感受器特性:
| 感受器 | 深度 | 功能 | 适应 | 密度(指尖) |
|---|---|---|---|---|
| 梅克尔细胞 | 表皮 | 压力、纹理 | 慢 | 100/cm² |
| 迈斯纳小体 | 真皮浅 | 轻触、滑动 | 快 | 140/cm² |
| 鲁菲尼末梢 | 真皮深 | 拉伸 | 慢 | 20/cm² |
| 帕西尼小体 | 皮下 | 振动、深压 | 快 | 14/cm² |
| 游离神经 | 全层 | 痛觉、温度 | - | 200/cm² |
触觉性能指标:
人体触觉性能
├── 空间分辨率
│ ├── 指尖:1-2mm(两点辨别阈)
│ ├── 手掌:5-10mm
│ ├── 手臂:30-40mm
│ └── 背部:40-50mm
│
├── 力灵敏度
│ ├── 静态:0.01-0.1 N
│ ├── 动态:0.001-0.01 N
│ └── 振动:0.1-1 μm(100-300 Hz)
│
├── 频率响应
│ ├── 慢适应:0.1-10 Hz
│ └── 快适应:10-1000 Hz
│
├── 温度感知
│ ├── 范围:10-45°C
│ └── 分辨率:0.1-0.5°C
│
└── 纹理识别
└── 粗糙度分辨率:10-100 nm
1.2 机器人触觉需求
人形机器人触觉需求分析:
触觉应用场景
├── 抓取操作
│ ├── 抓握力控制:防止滑落/捏碎
│ ├── 物体识别:形状、材质、重量
│ └── 滑动检测:调整抓握
│
├── 人机交互
│ ├── 安全碰撞检测
│ ├── 触摸交互:轻拍、按压
│ └── 情感交流:握手、拥抱
│
├── 精细操作
│ ├── 装配:孔轴配合
│ ├── 工具使用:螺丝刀、笔
│ └── 穿针引线:亚毫米精度
│
├── 行走平衡
│ ├── 足底压力分布
│ ├── 地面识别:硬度、粗糙度
│ └── 防滑检测
│
└── 自我感知
├── 碰撞检测
├── 本体感觉
└── 损伤检测
性能目标:
人形机器人触觉目标(2030)
├── 空间分辨率
│ ├── 指尖:<1mm(接近人)
│ ├── 手掌:<5mm
│ └── 身体:<20mm
│
├── 力灵敏度
│ ├── 静态:<0.01 N
│ ├── 动态:<0.001 N
│ └── 范围:0.01-100 N
│
├── 响应时间
│ └── <10 ms(反射级)
│
├── 覆盖面积
│ └── 全身 80%+
│
└── 成本
└── 单点:<¥1(批量)
二、触觉传感器技术
2.1 传感器分类
触觉传感器技术分类
├── 压阻式
│ ├── 原理:压力→电阻变化
│ ├── 优点:简单、成本低
│ └── 缺点:漂移、滞后
│
├── 电容式
│ ├── 原理:压力→电容变化
│ ├── 优点:灵敏、低功耗
│ └── 缺点:易受干扰
│
├── 压电式
│ ├── 原理:压力→电荷
│ ├── 优点:高频响应好
│ └── 缺点:静态测量难
│
├── 光学式
│ ├── 原理:压力→光强/波长变化
│ ├── 优点:抗电磁干扰、高分辨率
│ └── 缺点:复杂、成本高
│
├── 磁学式
│ ├── 原理:压力→磁场变化
│ ├── 优点:非接触、耐用
│ └── 缺点:需要磁源
│
└── 超声波式
├── 原理:压力→声速变化
└── 优点:穿透性好
└── 缺点:复杂
2.2 压阻式传感器
工作原理:
# 压阻式传感器模型
class PiezoresistiveSensor:
"""
压阻式触觉传感器
"""
def __init__(self, R0=1000, gauge_factor=2.0):
self.R0 = R0 # 零压力电阻
self.gauge_factor = gauge_factor # 应变系数
def resistance_to_force(self, R):
"""
电阻→力转换
"""
# 应变
strain = (R - self.R0) / (self.R0 * self.gauge_factor)
# 力(简化胡克定律)
E = 1e9 # 杨氏模量 Pa
A = 1e-4 # 面积 m²
force = E * A * strain
return force
def force_to_resistance(self, F):
"""
力→电阻转换
"""
E = 1e9
A = 1e-4
strain = F / (E * A)
R = self.R0 * (1 + self.gauge_factor * strain)
return R
# 典型特性
# 压力范围:0-100 kPa
# 灵敏度:0.1-1 kΩ/kPa
# 响应时间:1-10 ms
# 滞后:<5%
典型产品:
| 产品 | 厂商 | 尺寸 | 分辨率 | 范围 | 价格 |
|---|---|---|---|---|---|
| FSR 402 | Interlink | Φ14mm | 10g | 0-10N | $5 |
| FlexiForce | Tekscan | Φ10mm | 1g | 0-50N | $50 |
| Force Sensitive | LuSense | 定制 | 0.1g | 0-100N | $20 |
2.3 电容式传感器
工作原理:
电容式触觉传感器
结构:
┌─────────────────────────────────────┐
│ 上电极(柔性) │
├─────────────────────────────────────┤
│ 介电层(弹性体) │
│ - 厚度:d │
│ - 介电常数:ε │
├─────────────────────────────────────┤
│ 下电极(柔性) │
└─────────────────────────────────────┘
电容公式:
C = ε₀ × εr × A / d
压力作用:
1. 外力 F 压迫
2. 介电层厚度 d 减小
3. 电容 C 增加
4. 测量ΔC → 计算 F
灵敏度:
ΔC/C₀ = Δd/d₀ = F / (E × A)
其中:
- C₀: 初始电容
- d₀: 初始厚度
- E: 弹性体杨氏模量
典型性能:
├── 电容范围:1-100 pF
├── 灵敏度:0.1-1 pF/N
├── 响应时间:<1 ms
├── 功耗:<1 mW
└── 寿命:1000 万 + 次
阵列设计:
class CapacitiveTactileArray:
"""
电容式触觉阵列
"""
def __init__(self, rows=16, cols=16, pitch=2mm):
self.rows = rows
self.cols = cols
self.pitch = pitch # 单元间距
# 电容矩阵
self.capacitance = np.zeros((rows, cols))
# 扫描电路
self.scanner = CapacitanceScanner()
def scan(self):
"""
扫描整个阵列
"""
for i in range(self.rows):
for j in range(self.cols):
self.capacitance[i, j] = self.scanner.measure(i, j)
return self.capacitance
def get_pressure_map(self):
"""
转换为压力分布图
"""
# 电容→压力转换
pressure = self.capacitance_to_pressure(self.capacitance)
return pressure
def detect_contact(self, threshold=10):
"""
检测接触区域
"""
pressure = self.get_pressure_map()
# 二值化
contact_map = pressure > threshold
# 连通区域分析
regions = self.find_connected_regions(contact_map)
return regions
def centroid(self, pressure_map):
"""
计算压力中心
"""
total_force = np.sum(pressure_map)
if total_force == 0:
return None
# 压力中心
y, x = np.indices(pressure_map.shape)
cx = np.sum(x * pressure_map) / total_force
cy = np.sum(y * pressure_map) / total_force
return (cx * self.pitch, cy * self.pitch)
2.4 光学式传感器
工作原理:
光学式触觉传感器
方案 1:光强调制
┌─────────────────────────────────────┐
│ LED 光源 │
│ ↓ │
│ 导光层 │
│ ↓ │
│ 弹性体(受压变形) │
│ ↓ │
│ 光电探测器 │
└─────────────────────────────────────┘
压力→弹性体变形→光散射变化→光强变化
方案 2:光纤光栅
┌─────────────────────────────────────┐
│ 宽带光源 │
│ ↓ │
│ 光纤光栅(FBG) │
│ - 压力→波长漂移 │
│ ↓ │
│ 光谱仪 │
└─────────────────────────────────────┘
λ_B = 2 × n × Λ
压力→光栅周期Λ变化→波长λ漂移
方案 3:光学成像
┌─────────────────────────────────────┐
│ 透明弹性体 │
│ - 表面标记点 │
│ ↓ │
│ 摄像头 │
│ - 拍摄标记点位移 │
│ ↓ │
│ 图像处理 │
│ - 计算变形→压力 │
└─────────────────────────────────────┘
性能对比:
| 方案 | 分辨率 | 灵敏度 | 响应 | 成本 |
|------|--------|--------|------|------|
| 光强 | 1mm | 中 | 快 | 低 |
| FBG | 0.1mm | 高 | 快 | 高 |
| 成像 | 0.01mm | 很高 | 中 | 中 |
三、电子皮肤
3.1 电子皮肤定义
定义:
- 模仿人类皮肤的多功能柔性传感系统
- 集成触觉、温度、湿度等多种感知
- 可贴合复杂曲面(机器人身体)
发展目标:
电子皮肤性能目标
├── 机械性能
│ ├── 柔性:可弯曲、可拉伸
│ ├── 厚度:<1mm
│ ├── 重量:<100g/m²
│ └── 耐用:100 万 + 次弯曲
│
├── 传感性能
│ ├── 空间分辨率:<1mm
│ ├── 力灵敏度:<0.01 N
│ ├── 温度精度:±0.1°C
│ └── 响应时间:<10 ms
│
├── 集成度
│ ├── 多功能:力 + 温 + 湿
│ ├── 自供电:能量收集
│ └── 无线:无源/低功耗
│
└── 成本
└── <¥100/m²(批量)
3.2 电子皮肤结构
多层结构:
电子皮肤层状结构
┌─────────────────────────────────────┐
│ 保护层 │
│ - 材料:PDMS、聚氨酯 │
│ - 功能:防水、耐磨、自修复 │
│ - 厚度:0.1-0.3mm │
├─────────────────────────────────────┤
│ 传感层 │
│ - 传感器阵列:触觉、温度 │
│ - 密度:100-1000 点/cm² │
│ - 厚度:0.2-0.5mm │
├─────────────────────────────────────┤
│ 电路层 │
│ - 柔性电路:聚酰亚胺基底 │
│ - 导线:金、银纳米线 │
│ - 厚度:0.05-0.1mm │
├─────────────────────────────────────┤
│ 粘接层 │
│ - 材料:压敏胶 │
│ - 功能:贴附机器人表面 │
│ - 厚度:0.05-0.1mm │
└─────────────────────────────────────┘
总厚度:0.4-1.1mm
3.3 典型产品
Tekscan(美国)
产品:
Tekscan 电子皮肤产品
├── Grip 系列
│ ├── 应用:抓握力测量
│ ├── 尺寸:定制
│ ├── 分辨率:2-5mm
│ └── 价格:$5,000-10,000
│
├── FlexiForce 系列
│ ├── 应用:单点力测量
│ ├── 尺寸:Φ10-50mm
│ ├── 范围:0-50N
│ └── 价格:$50-200
│
└── Body 系列
├── 应用:全身触觉
├── 尺寸:全身覆盖
├── 分辨率:10mm
└── 价格:$50,000+
Pressure Profile Systems(美国)
产品:
PPS 电子皮肤
├── 机器人手传感器
│ ├── 应用:仿生手触觉
│ ├── 分辨率:1mm
│ ├── 点数:100-500
│ └── 价格:$5,000-8,000/手
│
└── 全身皮肤
├── 应用:人形机器人
├── 分辨率:10mm
├── 点数:1000-5000
└── 价格:$30,000-50,000
国内企业
汉威科技:
- 柔性压力传感器
- 价格:¥500-2,000/m²
- 分辨率:5-10mm
苏州敏芯:
- MEMS 触觉传感器
- 价格:¥100-500/点
- 分辨率:1-2mm
四、触觉信息处理
4.1 信号处理
预处理流程:
class TactileSignalProcessor:
"""
触觉信号处理器
"""
def __init__(self):
# 滤波器
self.lowpass = ButterworthLowpass(cutoff=100) # 100 Hz
self.highpass = ButterworthHighpass(cutoff=0.1) # 去除漂移
# 校准参数
self.offset = np.zeros(100) # 零点偏移
self.gain = np.ones(100) # 增益
def preprocess(self, raw_signal):
"""
信号预处理
"""
# 1. 去偏移
signal = raw_signal - self.offset
# 2. 增益校正
signal = signal / self.gain
# 3. 滤波
signal = self.highpass.filter(signal)
signal = self.lowpass.filter(signal)
# 4. 异常值检测
signal = self.remove_outliers(signal, threshold=5)
return signal
def calibrate(self, known_forces):
"""
校准
"""
# 零点校准
self.offset = self.measure_zero()
# 增益校准
responses = self.measure_response(known_forces)
self.gain = self.fit_gain(known_forces, responses)
def remove_outliers(self, signal, threshold):
"""
去除异常值
"""
mean = np.mean(signal)
std = np.std(signal)
outliers = np.abs(signal - mean) > threshold * std
signal[outliers] = mean # 替换为均值
return signal
4.2 特征提取
触觉特征:
class TactileFeatureExtractor:
"""
触觉特征提取器
"""
def extract_features(self, pressure_map):
"""
从压力图提取特征
"""
features = {}
# 1. 基本统计
features['total_force'] = np.sum(pressure_map)
features['max_pressure'] = np.max(pressure_map)
features['mean_pressure'] = np.mean(pressure_map)
features['std_pressure'] = np.std(pressure_map)
# 2. 空间特征
features['contact_area'] = np.sum(pressure_map > 0)
features['centroid'] = self.centroid(pressure_map)
features['principal_axis'] = self.pca_axis(pressure_map)
# 3. 纹理特征
features['roughness'] = self.compute_roughness(pressure_map)
features['uniformity'] = self.compute_uniformity(pressure_map)
# 4. 时序特征(如果有时间序列)
if len(pressure_map.shape) == 3:
features['vibration'] = self.compute_vibration(pressure_map)
features['slip_detection'] = self.detect_slip(pressure_map)
return features
def centroid(self, pressure_map):
"""压力中心"""
total = np.sum(pressure_map)
if total == 0:
return (0, 0)
y, x = np.indices(pressure_map.shape)
cx = np.sum(x * pressure_map) / total
cy = np.sum(y * pressure_map) / total
return (cx, cy)
def compute_roughness(self, pressure_map):
"""粗糙度(压力变化率)"""
gradient_x = np.gradient(pressure_map, axis=1)
gradient_y = np.gradient(pressure_map, axis=0)
roughness = np.mean(np.abs(gradient_x) + np.abs(gradient_y))
return roughness
4.3 物体识别
基于触觉的物体识别:
class TactileObjectRecognizer:
"""
触觉物体识别
"""
def __init__(self):
# 深度学习模型
self.model = self.load_model()
# 特征库
self.feature_database = {}
def recognize(self, pressure_sequence):
"""
识别物体
pressure_sequence: 抓取过程中的压力序列
"""
# 提取特征
features = self.extract_temporal_features(pressure_sequence)
# 分类
prediction = self.model.predict(features)
return prediction
def extract_temporal_features(self, sequence):
"""
提取时序特征
"""
features = []
for frame in sequence:
# 每帧的空间特征
spatial = self.spatial_features(frame)
features.append(spatial)
# 时序统计
features = np.array(features)
temporal_stats = {
'mean': np.mean(features, axis=0),
'std': np.std(features, axis=0),
'max': np.max(features, axis=0),
'min': np.min(features, axis=0),
}
return temporal_stats
def load_model(self):
"""
加载训练好的模型
"""
# 可以使用 CNN、RNN 或 Transformer
model = keras.models.load_model('tactile_recognizer.h5')
return model
五、力觉反馈
5.1 力控抓取
自适应抓握:
class AdaptiveGraspController:
"""
自适应抓取控制器
基于触觉反馈调整抓握力
"""
def __init__(self):
self.k_p = 0.1 # 位置增益
self.k_f = 0.01 # 力增益
# 抓握参数
self.min_force = 5 # 最小抓握力 (N)
self.max_force = 50 # 最大抓握力 (N)
self.slip_threshold = 0.1 # 滑动阈值 (N/s)
def grasp(self, target_object):
"""
执行抓取
"""
# 1. 接近物体
self.approach(target_object)
# 2. 初始接触
contact_force = self.touch_until_contact()
# 3. 抓握力控制
grasp_force = self.min_force
while not self.secure(grasp_force):
# 读取触觉
tactile = self.read_tactile()
# 检测滑动
if self.detect_slip(tactile):
# 滑动→增加抓握力
grasp_force += 5
else:
# 无滑动→保持或微调
pass
# 限制最大力
grasp_force = min(grasp_force, self.max_force)
# 施加抓握力
self.apply_force(grasp_force)
# 4. 提起物体
self.lift()
return True
def detect_slip(self, tactile):
"""
滑动检测
"""
# 振动特征(高频成分)
vibration = self.high_frequency_component(tactile)
# 力变化率
force_rate = np.diff(tactile) / np.diff(time)
# 滑动判据
slip = (np.max(vibration) > self.slip_threshold or
np.max(force_rate) > self.slip_threshold)
return slip
5.2 柔顺控制
阻抗控制:
class ImpedanceController:
"""
基于触觉的阻抗控制
实现柔顺的人机交互
"""
def __init__(self):
# 阻抗参数
self.M = 1.0 # 虚拟质量
self.D = 10.0 # 虚拟阻尼
self.K = 100.0 # 虚拟刚度
def control(self, f_ext, x_current, v_current):
"""
阻抗控制律
F = M*a + D*v + K*x
f_ext: 外部力(触觉传感器测量)
x_current: 当前位置
v_current: 当前速度
"""
# 期望位置(零力位置)
x_desired = 0
# 计算期望加速度
# M * a = f_ext - D * v - K * x
a_desired = (f_ext - self.D * v_current - self.K * x_current) / self.M
# 积分得到速度和位置
dt = 0.001 # 1kHz 控制
v_desired = v_current + a_desired * dt
x_desired = x_current + v_desired * dt
return x_desired, v_desired
def set_stiffness(self, stiffness):
"""
设置虚拟刚度
可变刚度实现不同交互模式
"""
self.K = stiffness
def human_collaboration_mode(self):
"""
人机协作模式
低刚度,易于拖动
"""
self.M = 0.5
self.D = 5.0
self.K = 20.0
def precision_mode(self):
"""
精密操作模式
高刚度,精确定位
"""
self.M = 2.0
self.D = 20.0
self.K = 500.0
六、应用案例
6.1 灵巧手触觉
Shadow Hand 触觉系统:
Shadow Hand 触觉配置
├── 指尖
│ ├── 传感器:BioTac(多模态)
│ ├── 功能:力、纹理、温度
│ └── 分辨率:0.5mm
│
├── 指腹
│ ├── 传感器:电容阵列
│ ├── 点数:10 点/指
│ └── 分辨率:2mm
│
├── 手掌
│ ├── 传感器:压阻阵列
│ ├── 点数:50 点
│ └── 分辨率:5mm
│
└── 总计
├── 传感器点数:200+
├── 响应时间:<10 ms
└── 成本:$20,000+
应用:
├── 精细抓取(鸡蛋、玻璃杯)
├── 工具使用(螺丝刀、笔)
├── 纹理识别(布料、木材)
└── 盲操作(无视觉)
6.2 全身触觉
Tesla Optimus 触觉系统:
Optimus 触觉配置(推测)
├── 手部
│ ├── 指尖:六维力传感器
│ └── 手掌:压力阵列
│
├── 手臂
│ ├── 皮肤:电容式触觉
│ └── 覆盖:前臂、上臂
│
├── 躯干
│ ├── 皮肤:压阻式阵列
│ └── 覆盖:胸、背、腹
│
├── 腿部
│ ├── 皮肤:压阻式阵列
│ └── 覆盖:大腿、小腿
│
└── 足部
├── 足底:压力分布
└── 功能:平衡、地面识别
总计:
├── 传感器点数:1000-5000
├── 覆盖率:80%+
├── 响应时间:<10 ms
└── 成本:目标$5,000(量产)
七、总结
7.1 核心要点
- 触觉是基础感知:精细操作、安全交互必备
- 多技术路线:压阻、电容、光学各有优劣
- 电子皮肤是趋势:柔性、集成、多功能
- 力控是关键:自适应抓取、柔顺交互
- 成本待降低:从$50,000 降至$5,000
7.2 技术成熟度
| 技术 | 成熟度 | 商用时间 |
|---|---|---|
| 压阻传感器 | ⭐⭐⭐⭐ | 已商用 |
| 电容传感器 | ⭐⭐⭐⭐ | 已商用 |
| 光学传感器 | ⭐⭐⭐ | 研究中 |
| 电子皮肤 | ⭐⭐⭐ | 早期商用 |
| 自修复皮肤 | ⭐⭐ | 研究中 |
7.3 长期展望
触觉技术正朝着更高分辨率、更低成本、更集成的方向发展:
- 短期:电容阵列普及,成本下降
- 中期:电子皮肤商用,全身覆盖
- 长期:自修复、自供电、无线
触觉感知是人形机器人**从”盲操作”到”有触感”**的关键跨越,将直接决定机器人的操作能力和交互安全性。
参考资料:
- 触觉传感器技术综述
- Tekscan 产品文档
- 电子皮肤研究论文
- 各公司技术文档