简介这是一份关于机器人与“数字化”视触觉传感器应用研究进展的PDF文献面向机器人、自动化与人工智能方向的学生、研究人员及从业者可作为课题调研或技术学习的参考文献。文献系统梳理了视觉传感器与触觉传感器两大类别包括基本原理、典型结构如微动开关、气动复位装置、导电橡胶等以及图像处理方法同时结合实际应用场景分析了视触觉传感器在提升机器人感知能力方面的作用与当前面临的精度、成本等挑战并展望了微型化、多功能等未来发展方向。内容预览中涉及的深浅图像处理、双值化再处理等具体方法为视觉感知实现提供了直观案例触觉传感器部分对不同结构的原理与优缺点做了对比便于理解不同方案的选择依据。该资源为单个PDF文件大小1.65MB内容集中目前已有176人学习。适合需要快速了解视触觉传感器整体技术脉络、积累专业术语或撰写相关综述的读者可帮助节省检索与筛选文献的时间。1. 视触觉传感器为什么机器人需要一双看得见触感的手指当机械臂夹住一枚生鸡蛋或一颗螺丝钉时判断夹持力是否合适的真正常规手段并不是传统意义上的力传感器而是观察弹性体表面被物体压出的形变。视触觉传感器的核心思路非常直白用相机去拍一个柔软的、带标记点的弹性体接触物体时弹性体发生变形相机记录变形图像再通过算法把图像变成力分布、滑移、纹理和接触几何。这个思路之所以在近几年成为机器人操作研究的热门方向是因为它绕开了压阻、电容阵列在布线和分辨率上的限制——图像本身就是数字信号天然契合深度学习管线也让触觉感知第一次可以像视觉一样被离线标注、离线训练、在线推理。如果你是做机械臂抓取、灵巧手控制或力控相关方向本文会从成像原理、硬件选型、数据采集到落地应用把这条链路上的关键参数和常见坑一次讲完。2. 视触觉传感器的成像原理、数字化链路与三类主流方案选型2.1 为什么相机可以直接当触觉传感器光度立体与标记点追踪要理解视触觉传感器先要丢掉“触觉等于阵列式压力分布”的固有印象。阵列式方案把力变成电阻或电容变化电极密度越高数据量越大柔性布线难度也随之指数上升。视触觉走的是另一条路力先变成弹性体的几何形变几何形变再变成像素亮度变化。接触表面的法向力把弹性体压凹切向力把表面标记拖开相机稳定地记录这个过程。因此传感器的分辨率取决于相机的像素数和弹性体表面的特征密度而不是电极印刷精度。从形变还原力学量常规做法有两种。第一种是标记点追踪弹性体表面印规则网格或随机散斑通过光流或者特征匹配算出每个标记点的位移场再对位移场做空间求导得到应变进而映射到接触力。第二种是光度立体把弹性体做成带反射涂层的半透明结构用多角度光源照明利用不同光照方向下的亮度梯度反算表面法向。标记点擅长测量切向变形光度立体对法向压力和接触纹理更敏感不少研究方案会把两者结合起来。2.2 三种主流成像方案的光路差异与选型参数公开研究中比较有代表性的视触觉成像方案有三类以涂色弹性体加单目相机为代表的早期方案以透明弹性体加镜面反射为代表的紧凑方案以及以微型相机加环形光源为代表的指尖尺寸方案。它们的本质区别在于光路折叠方式和弹性体标定难度。下表是选型时我会重点关注的差异方案弹性体特征光源布局擅长测量的量主要约束涂色弹性体单目相机表面随机散斑或网格同轴均匀光切向位移、滑移预判法向力精度依赖标定质量透明弹性体镜面反射内侧镀反射膜多色LED环绕法向力分布、接触几何体积偏大散热和光源均匀性需控制微型相机环形光源半透明弹性体加微纹理环形LED阵列纹理、滑移、微形变视场有限工作量程小选型时不要只看分辨率数字。真正影响使用体验的是量程和重复性。弹性体厚度决定法向量程太薄压几下就到了饱和太厚小力信号又被淹没在弹性体自身的压缩噪声里。我一般会把弹性体厚度基准定为相机视场对角线长度的五分之一左右然后根据目标物体的硬度去微调。光源的球面均匀性比亮度更重要不均匀光照在光度立体里会表现为无法消除的低频误差。2.3 从像素到力学量一张触觉图像的数字化解算管线数字化的含义不只是把模拟图像转成数字矩阵更关键的是把图像矩阵变成后续控制回路能直接使用的物理量。一个常见的做法是先用一个小型卷积网络把触觉图像映射成六维力/力矩估计。训练这类网络不需要特殊的框架PyTorch 配合一个轻量回归头即可表达式如下import torch import torch.nn as nn import torch.nn.functional as F class TactileForceNet(nn.Module): def __init__(self, in_channels: int 3, out_dim: int 6): super().__init__() self.features nn.Sequential( nn.Conv2d(in_channels, 24, kernel_size5, stride2), nn.ReLU(), nn.Conv2d(24, 48, kernel_size3, stride2), nn.ReLU(), nn.Conv2d(48, 64, kernel_size3, stride2), nn.ReLU(), nn.AdaptiveAvgPool2d((1, 1)), ) self.regressor nn.Sequential( nn.Linear(64, 32), nn.ReLU(), nn.Linear(32, out_dim), ) def forward(self, x: torch.Tensor) - torch.Tensor: x self.features(x) x torch.flatten(x, 1) return self.regressor(x)这段代码定义了一个简单的触觉力回归网络输入是传感器拍出的 3 通道图像输出 6 维力/力矩向量。关键在于用了三层步长为 2 的卷积快速缩小空间维度最后用全局平均池化把所有区域的特征压成一个向量来适应弹性体表面不同接触位置带来的位移。训练时要对力标签做归一化因为法向力极易出现 2N 到 20N 的跨量级分布直接用原始数值会导致 loss 被大力样本统治。训练集构造上离线阶段用机械臂末端力传感器采集真值比手动按压录数据可靠得多这也是后面第三章要展开的内容。3. 视触觉数据怎么来弹性体标定、深度重建与数据集采集的复现流程3.1 首个可复现步骤弹性体配方、光源布局与相机内参标定拿到一块弹性体和相机之后最容易出问题的是弹性体表面特征一致性。如果用手工点涂散斑每片传感器的外观都不一样模型换一个传感器基本要重新微调。常见做法是制作带微纹理的硅胶模具用翻模的方式保证每片弹性体的散斑分布和厚度一致。硅胶硬度建议从 Shore A 20 左右起步硬度越低对微小力越敏感但回弹时间变长不适合快速动态接触。光源布局的目标是让弹性体表面照度均匀且无镜面高光。白色 LED 阵列加一层漫射板是低成本下效果最稳定的配法。相机内参标定和普通视觉相机没有区别用棋盘格标定即可。需要额外小心的是弹性体是透明或半透明材质光会从侧面穿透进来导致图像周围出现一圈亮边。解决办法是在弹性体外围加遮光罩或者从软件上裁掉边缘区域再送入视觉模型。3.2 从标记位移到深度图光度立体的关键参数如果走光度立体路线三路以上不同角度光源是底线。记表面法向量为 N入射光方向为 L_i在 Lambertian 近似下第 i 幅图像的亮度 I_i 满足 I_i rho * max(N · L_i, 0)其中 rho 是表面反射率。至少用三幅不同方向光源照射的图像联立就能解出 N 和 rho 的乘积。实际操作中要把 LED 的入射方向标定准确角度误差超过 2 度重建出来的法向场就会带上系统性的倾斜。参数推荐区间影响备注LED 入射角与表面法线的夹角20°45°过小缺少明暗差异过大产生阴影四路光源对称布置最省标定成本曝光时间2ms10ms决定运动模糊程度接触滑移速度高时优先取小弹性体厚度视场对角线 1/5 左右决定法向量程薄则灵敏但易饱和帧率60fps 起步抓取场景建议 120fps决定能否捕捉滑移瞬间帧率不够会漏掉接触建立阶段重建后用相邻两帧的深度图做差就能得到接触引起的表面形变速度场。这个速度场对检测物体松脱特别有用因为滑移初期的信号不是力数值突变而是形变梯度在接触边缘的快速移动。3.3 用自动化脚本批量采集触觉数据集手动按压采集数据的问题在于样本分布不可控按压力度集中在中间区间极端大力和小力样本稀缺。我习惯把传感器固定在桌面夹具上用机械臂带着末端工具去执行按压、滑动、旋转三类动作按固定的轨迹和速度跑完一遍同时记录传感器图像和力传感器真值。下面是一个采集循环的简化版本import time import csv import cv2 import numpy as np from robot_interface import RobotArm def collect_tactile_dataset( robot: RobotArm, camera, force_sensor, save_prefix: str, press_depth: list[float], slide_speed: float ): rows [] for depth in press_depth: robot.move_to_press(depth) time.sleep(0.3) # 等待弹性体形变稳定 img camera.read() fx, fy, fz, mx, my, mz force_sensor.read() timestamp time.time() cv2.imwrite(f{save_prefix}_{timestamp}.png, img) rows.append([timestamp, depth, fx, fy, fz, mx, my, mz]) robot.move_to_home() with open(f{save_prefix}_labels.csv, w, newline) as f: writer csv.writer(f) writer.writerow([timestamp, press_depth, fx, fy, fz, mx, my, mz]) writer.writerows(rows)这段脚本把一次按压动作同步成三条数据完成按压后的触觉图像、力传感器读数、动作参数。按压深度列表 press_depth 是一个数组用来覆盖不同量程的力区间。值得注意的地方是 time.sleep(0.3) 这一步硅胶弹性体在快速按压后会有蠕变回弹如果不等形变稳定就拍照采集到的图像会包含明显的时变分量模型学到的力映射也会因此变得不稳定。滑动和旋转动作也按同样的逻辑做只是在动作过程中连续拍照而不是等稳定。4. 在机器人上落地抓取、力控、位姿修正的典型接法与时序陷阱4.1 为什么视触觉适合装在末端执行器上与力控/音圈电机的联动视触觉传感器最自然的安装位置是机械臂末端执行器或者灵巧手指尖因为这里的接触信息最直接。对于力控来说视触觉的独特优势是能提供接触建立瞬间的趋势信号而不是像传统 F/T 传感器那样只在受力后才反馈数值。尤其在精密装配、插拔连接器等低刚度接触场景力矩传感器很容易被 Z 轴串扰干扰视触觉却能靠图像上接触斑的出现位置直接判断接触点在指尖的哪个方位。一个常见的工程做法是把触觉图像和末端力传感器做融合视触觉负责检测接触的建立和滑移趋势力传感器负责稳态力控制。部分精密末端执行器甚至会采用音圈电机作为驱动以实现低摩擦、高带宽的力输出再叠加视触觉反馈作为闭环的前馈补偿。这个组合下视触觉的帧率要求会比较高建议不低于 120fps否则快速趋近过程中的第一个接触帧很容易被漏掉。4.2 抓取场景的滑移检测不要等到物体掉才发现抓取中最怕的不是力不够而是力刚好在临界点附近物体以极慢速度滑移。慢滑移产生的力变化很小传统力矩传感器不一定能察觉到但触觉图像上接触区域的边缘会持续移动。用帧间位移场的统计量来检测这种趋势比单纯用模型判断是否滑移更稳。import cv2 import numpy as np def detect_slip(prev_frame: np.ndarray, curr_frame: np.ndarray, threshold_px: float 0.8): prev_gray cv2.cvtColor(prev_frame, cv2.COLOR_BGR2GRAY) curr_gray cv2.cvtColor(curr_frame, cv2.COLOR_BGR2GRAY) flow cv2.calcOpticalFlowFarneback( prev_gray, curr_gray, None, pyr_scale0.5, levels3, winsize21, iterations3, poly_n5, poly_sigma1.2, flags0, ) mag, _ cv2.cartToPolar(flow[..., 0], flow[..., 1]) # 只统计形变明显的接触区域避免把背景噪声算进去 mask mag 0.15 mean_motion float(np.mean(mag[mask])) if mask.any() else 0.0 return mean_motion threshold_px, mean_motion这段代码用 Farneback 光流计算两帧触觉图像间的像素位移。重点不是求整图的运动而是设置了一个 mask把位移小于 0.15 像素的背景噪声抠掉只统计接触区域附近的有效运动。mean_motion 就是接触区的平均位移量超过 threshold_px 就判定为滑移正在发生。实际调试时阈值的大小和弹性体表面纹理密度有关散斑越密光流越准阈值可以设得更小建议先用离线录制的滑移片段跑一遍看均值分布再定阈值。4.3 位姿修正与装配接触几何比力数值更有用在插孔、拧螺丝这类任务里机器人需要知道的不是受了多少力而是零件相对于夹具的微小偏移方向。视触觉的高分辨率在这里派上用场把接触斑点的几何中心与弹性体中心做差得到的是零件在指尖上偏移的方向向量配合机器人运动学可以做一个简单的平面内修正。应用任务需要的核心信息适合从视触觉提取的信号配套算法稳定抓取滑移趋势、力临界点接触区边缘位移场光流/位移统计插拔装配接触点的相对位置偏移接触斑几何中心视觉伺服修正表面纹理判别微观纹理形貌差异光度立体法向场特征匹配/分类灵巧手操作多指接触力分配各指接触区面积占比力位混合控制接触斑的面积变化也很值得关注。同一法向力下接触面积越大说明物体表面越软或者曲率越平这在抓取形状不确定物体时可以作为判断材质软硬的附加线索。比纯图像分类更稳的做法是同时提取面积、中心偏移、主轴方向三个几何量组成低维特征向量再去做判断这样既能减少对训练数据的依赖也能提高推理速度。5. 把进展变收益重复性验证与可控形变标定的进阶技巧5.1 重复性验证一台传感器能不能当成测量仪器先看它稳不稳很多视触觉方案在演示里看着很惊艳一到实际项目就翻车主要原因不是算法不行而是传感器本身的重复性没有验证过。验证方法很简单让机械臂带着一个刚性平面压头反复按压传感器同一个位置压到同样的深度采集 50 组以上图像计算力估计输出的方差和接触斑中心位置的漂移。如果发现重复性不好优先排查的不是模型而是机械结构。弹性体没有完全贴合底座就会产生旋转方向的位置漂移光源亮度随温度漂移则会让光度立体的输出出现低频变化。解决弹性体贴合问题的方法是翻模时做定位销孔每次更换弹性体都靠机械定位保证一致。5.2 力-形变映射的可控标定用砝码不如用位移台按压标定有一个常用但不严谨的做法在传感器上放砝码用砝码重力做力的真值。问题是砝码会引入明显的切向分量而且放置角度很难保证完全水平。我建议用一维位移台加力传感器作为标定基准位移台控制下压深度串联一个 50N 量程的力传感器读取真实力值。标定时覆盖法向 0.5N 到 30N、切向 0.2N 到 10N 的范围按对数间距取点这样小力区间有足够多的样本供模型学习。关键的进阶技巧是保存每一挡下压深度对应的弹性体形变快照把下压深度作为外部变量记录下来。这样一来即使后续换了一个机械臂或换了相机曝光参数也能根据形变快照重新映射力和图像之间的关系而不需要从头采集。这个习惯会大幅提升传感器在项目中的复用效率。本文还有配套的精品资源点击获取