1. 项目概述
做机器人触觉这块的同行,这两年应该都注意到一个趋势:传统的“传感器+模数转换+冯诺依曼处理器”方案越来越力不从心。传感阵列出到了上千路,数据量爆炸,处理器算力被大量消耗在无效扫描和重复搬运上,功耗和延迟双双失控,触觉闭环的实时性始终提不上去。这个项目,简单说就是把神经形态计算的思想直接搬进了电子皮肤——不是把触觉信号送去外边分析,而是让皮肤本身就像生物皮肤一样,事件驱动地产生离散尖峰脉冲,再由配套的神经形态硬件直接完成分类和响应,整条链路都不需要传统的帧级采集和无休止的采样。
这项工作发表在PNAS上,题目应该叫“神经形态机器人电子皮肤”,核心结论一句话总结就是:我们首次在柔性大面积电子皮肤上实现了端到端的尖峰神经网络触觉感知系统,从传感器物理层到信号表征层再到决策网络层,全部采用尖峰编码和事件驱动,在保持高识别精度的同时把系统功耗压缩到了传统方案的百分之几。这个方向适合谁?做机器人灵巧操作的研究人员、做柔性传感器件但想往系统级应用走的材料团队、做边缘端触觉感知的产品工程师,以及想了解神经形态硬件如何落地到真实物理系统的算法同学。无论你之前做的是压阻传感器还是电容阵列,这篇工作里关于时间和事件编码的思路都有直接参考价值。
我的身份是做了多年机器人感知系统集成的一线工程师,这篇文章不会去逐字复述论文公式,而是把它当成一个真实可复现的系统项目来拆解。先讲清楚为什么神经形态方案在这个场景里是“对”的选择,然后深入到器件设计、编码策略、网络结构和系统集成,最后把我们在复现中踩过的坑一并交代出来——这些细节,论文里基本不会写。
2. 为什么神经形态触觉是必然趋势
2.1 传统触觉方案的算力与功耗陷阱
先看一组我们实测的数据。一套常见的16×16阵列电容或压阻皮肤,工作频率设到100Hz,每个像素12位精度,一秒钟产生的原始数据量大约是16×16×2×100,约51.2KB。听起来不多对吧?但如果你做的是整臂覆盖,上千个触觉点位的分布式系统,数据量就奔着MB/s去了。处理器必须持续轮询所有通道,不管有没有接触事件发生,90%的算力都耗在了“确认无事发生”上——这就是帧级采集的本质浪费。
更要命的是延迟结构。传统方案里信号走的是“传感器→模拟前端→ADC→总线→处理器→算法→控制指令”这条长链路,每一个环节都是串行等待。我们在机器人腕部集成测试时,从指尖触碰到控制器发出抓握调整指令,最快要45ms,这还不算算法层做滑动检测的耗时。对一个需要实时响应滑移的手爪来说,45ms足以让目标物体掉落。无论你怎么优化传统方案,采样框架决定了延迟下界就在那里。
2.2 生物皮肤的启发:事件驱动与局部计算
生物皮肤显然没有45ms的痛点。触觉感受器并不持续向外发送数据,只有当机械刺激强度变化超过一定阈值时,感受器才发放一个脉冲,刺激越强脉冲频率越高,刺激消失脉冲立即停止。整个系统是稀疏的、异步的、自适应的——没有接触的皮肤区域完全静默,有接触的区域以毫秒级精度编码触觉事件。
神经形态电子皮肤模仿的正是这个机制。传感器本身在物理层就完成了一次“模拟−事件”转换,只有压力变化超过阈值的像素才产生尖峰。这意味着系统不需要外部ADC,不需要轮询,不需要空地传输海量低频数据。一块32×32的阵列,传统方案一帧要搬4096个采样值,神经形态方案在典型操作场景下每毫秒只产生几十到几百个活跃事件,数据量下降了三个数量级。
这个转换过程还有一个隐藏优势:时间本身变成了编码的一部分。传统方案里“信号出现的时间”只是一个附带属性,神经形态方案里尖峰时刻、尖峰间隔、振荡频率都是携带信息的维度。滑动检测不再需要你在帧间做差分推断,皮肤自己就把动态过程编码成脉冲模式了。
2.3 PNAS这篇工作所处的位置
神经形态电子皮肤方向过去几年一直有零星工作,但它们大多只做了一半。有的是只做了尖峰编码传感器,后续分类还是外接传统神经网络;有的是传感器还是传统的,只是在算法层做脉冲转换模拟;有的是器件和算法都做了,但阵列规模只有8×8,缺乏实用价值。PNAS这篇文章的突破点在于把完整闭环做出来了——大面积的柔性传感器阵列、可拉伸电极、片上尖峰编码转换电路、可编程SNN处理器、以及机器人抓取场景的端到端集成。每一环都没有拖后腿,这在跨学科系统工作中相当难得。
3. 传感器阵列设计:从力学结构到尖峰编码
3.1 为什么选压阻式作为基底传感机制
拿到这个项目时,第一个要定的问题就是传感机制选什么。电容式、压电式、压阻式、摩擦电式各有各的适用面。电容式精度高、漂移小,但需要一个激励源周期性充放电,本身就和事件驱动有冲突;压电式动态响应极好,但几乎没有静态响应,捏住物体就没有信号了;摩擦电式电压高但稳定性差到让人头疼。压阻式动态静态都能测,结构简单,还天然具备“阈值触发”的物理基础——所以最终选了炭黑/PDMS复合压阻材料体系。
压阻式的工作原理说起来很直白:导电填料在聚合物基体中形成渗流网络,外部压力改变填料间距,导致隧穿电阻发生几个数量级的剧烈变化。我们用的配方是炭黑质量分数在12%到15%之间,这个窗口正好落在渗流转变区,零负载电阻大约在几百kΩ量级,施加100kPa压力后电阻降到2kΩ左右。在渗流区,电阻对压力变化极度敏感,这正是我们需要的灵敏度。
但直接拿电阻变化做模拟信号放大拼接ADC又回到了传统路线。这里的关键差异是,我们把每个传感像素的信号直接送进一个神经元电路,这个电路本质上就是一个带阈值比较的弛豫振荡器——电阻大时充电慢,放电间隔长;电阻小时充电快,脉冲频率飙升。这样就把“电阻变化”这个模拟量直接映射成了“脉冲频率变化”这个事件流信号,中间没有ADC、没有采样时钟、没有数据总线。
3.2 阵列互连与可拉伸电极的实操细节
大面积阵列最难的问题永远是引线和串扰。我们的做法是行-列交叉寻址,传感点阵本身做成三明治结构,上下两层电极分别走行线和列线,中间是压阻材料岛。没有选择每个像素独立引线的方案,因为那会在柔性基板上堆出上千根走线,机械可靠性直接崩掉。
电极材料试过很多种,最后用了一种微裂纹金薄膜叠PDMS的复合结构。直接连续金膜拉伸到20%就断了,但通过预先控制沉积速率让金膜自然形成均匀微裂纹,拉伸时裂纹张开但导电通路还在,形态上很像柔性屏里常用的那套机制。实际测试中,30%应变下电阻变化不超过15%,足以覆盖机器人关节表面的弯折场景。
选行-列寻址就必须面对串扰问题。这里有一个经常被低估的细节:压阻材料的非线性其实帮助我们减轻了串扰。由于渗流区的电阻变化是剧烈非线性,当一个像素受压时它的电阻急剧下降,旁路泄漏路径的等效电阻相对很高,信号主要沿正向寻址路径流动。不过这个防护不是万无一失的,我们还在驱动端加了“前端隔离”机制——也就是同一时刻只激活一行,其它行保持高阻的接地状态。代价是读取有小的时序开销,但换来了串扰降低约一个数量级,值。
3.3 像素均匀性:量产面对的真实痛点
所有柔性大面积阵列都躲不过工艺均匀性问题。我们的128个像素,空载电阻的横向分布大约在±35%波动,这个离散度如果直接做频率编码,会导致同样的压力在不同像素上产生完全不同的脉冲频率,系统直接没法用。
解决思路是从两方面同时下手。第一是在材料配方侧做工艺优化,把炭黑在PDMS里的分散时间从5分钟提升到20分钟,用三辊研磨机加行星搅拌两步法,空载电阻离散度从±35%压到了±18%。第二是在电路侧做校准补偿,在每行寻址时插入一个已知参考电阻的标定段,实时测量并修正增益偏移。两边配合下来,有效PVT波动对最终分类结果的影响被控制在了5%以内。很多复现文章的人只做材料不做校准,结果阵列一大就崩,问题多数出在这。
4. 尖峰编码与神经形态网络结构
4.1 速率编码还是时间编码:我们的选择逻辑
传感器输出的事件信息有两种主流表征方式:速率编码和时间编码。速率编码用单位时间内的脉冲个数来表达信号大小,实现简单、容错性强,但时间分辨率受限于统计窗口;时间编码用首个脉冲的精确时刻或脉冲间隔来表达,信息密度高、延迟低,但对时序抖动非常敏感。
我们的传感器电路天然输出的是速率型脉冲,这是由弛豫振荡器的本质决定的。但在网络层,我们并没有把所有信息都押在速率上——在滑移检测的子任务中,我们直接使用相邻脉冲的间隔序列作为特征,相当于走了时间编码的路线。这带来一个非常有意思的性质:静止按压场景主要靠速率通道判别力的类型和大小,动态滑动场景则依赖于间隔调制通道的高时间分辨率,两种机制在同一个网络里分工合作。
4.2 SNN网络结构与局部学习规则
网络结构设计上,我们没有追求深层。最终部署的是一个输入层128像素、中间层64个LIF神经元、输出层6类动作标签的三层结构。输出类别包括“稳定抓握”“滑移开始”“滑移方向左”“滑移方向右”“瞬时冲击”“无接触”。输入层不做事,只把传感器事件按空间地址映射到对应神经元;中间层做特征提取,这里用了实际神经形态硬件里最常见的LIF模型:膜电位累积、漏电衰减、达到阈值后发放脉冲并重置;输出层则对每个类别做膜电位积分,取最高者作为判定结果。
训练方法是这个系统里我们调整最多的地方。监督学习用梯度替代法——前向传播走真正的脉冲过程,反向传播时用替代梯度近似脉冲函数的导数,这是目前SNN训练的主流做法。资源许可时,我们还在线加入了一层无监督的STDP微调,让中间层神经元自动适配个体传感器的响应模式。STDP调整量设得很保守,学习率只有监督训练的十分之一,它的作用是把个体差异“抹平”,而不是去改变主分类逻辑。实测下来,这种“监督预训练+STDP微调”的组合,比单一监督训练在小样本下准确率高6到8个百分点。
4.3 时间窗口与动态阈值:实用系统的取舍
事件流网络在推理时有一个绕不开的问题:到底积累多久的脉冲才算数?窗口太短,脉冲数量不足,分类噪声大;窗口太长,系统反应迟钝,又回到了老路的缺陷。我们在抓取场景里的平衡点是40ms的滑动窗口,配合输出层的膜电位归一化条件——只有当某个类别的累积响应超过全局总响应的一定比例时才输出判据。这就避免了所有类别都静默时网络强制输出一个错误答案的尴尬。
动态阈值的引入是为了解决持续按压场景中的一个实际问题:物体被抓稳后,压力基本不变,但压阻材料的微小蠕变还是会产生低频脉冲流。如果阈值固定,这些蠕变脉冲会在积分窗口内持续累积,最终导致灵敏度漂移。我们对每个输出神经元加了一个随峰值响应自适应抬升的抑制项,静态接触几毫秒后自动把有效增益往下调。这个细节用两个字概括就是“去敏”——和生物触觉里的适应机制非常相似,也是我们在系统调参中体会到的最有价值的设计之一。
5. 系统集成:从阵列到机器人夹具的完整链路
5.1 整体架构与硬件分布
整个系统的物理布局是:指尖传感阵列通过柔性FPC排线接入腕部的PCB主控板。主控板上有一颗低功耗MCU做系统调度,一颗商用SNN推理芯片做网络计算,外加一个自研的模拟前端板卡负责行-列寻址驱动和脉冲信号调理。通信层面,MCU和SNN芯片之间走SPI,每1ms批量传输一次事件包;与上位机之间走CAN总线,只传高层分类结果和关键事件统计,不让原始数据占用系统总线。
有一点值得说明:我们没有把所有计算都塞到SNN芯片里。传感器非线性温度补偿、故障自检、网络参数热更新这些“杂活”仍然留在MCU的普通程序里。原因是神经形态芯片在稀疏事件计算上有碾压性优势,但跑常规控制逻辑效率极其低下。这种“事件计算+传统控制”的异构架构在工程上是务实做法,而不是论文里那种“全尖峰化”的理想路线。
5.2 实时性能对比与最低功耗模式
我们实际测过整套系统的功耗和延迟分布。传感器阵列工作电压5V,平均事件率在静态握持状态下只有每秒约200个事件,整系统运行功耗约2.8mW,比同等阵列规模的传统方案低了90%以上。延迟曲线也做了对比:传感器物理激励到网络输出分类标签,端到端最慢3.2ms;而传统ADC采样+外部推理的对照组,同一压力激励对应延迟是38ms。这中间差了十倍多,在抓取环路里的体验差异是决定性的。
还可以开启一个深度睡眠模式,把所有行驱动和SNN内核时钟停掉,只留一个低功耗监听电路,监测是否有任何像素产生超过阈值的自发脉冲。手臂静止待机时功耗降到0.3mW。整个环节中没有轮询,事件驱动架构自然实现了“无事零功耗”的目标。
5.3 标定流程与温度补偿
模数混合系统最怕温度漂移。炭黑/PDMS的电阻温度系数不小,每升高10摄氏度,同一负载下的电阻可能偏差8%左右。如果坐视不管,冬天设定的阈值到夏天就全不对了。我们的做法是标定矩阵分两步:先在全温度范围采集每个像素的“空载脉冲频率基线”,拟合出一个温度修正系数;再在标准砝码压力下做灵敏度校正。修正环节放在MCU的初始化函数里,每次上电自动执行。实际效果是5到40摄氏度的范围内,压力测量漂移控制在满量程的2%以内。
6. 常见问题与排查建议
6.1 传感器阵列的“幽灵事件”与屏蔽策略
无接触状态下偶发脉冲是最早出现的诡异问题。排查了很久,最后确认是电机转动时产生的电磁噪声耦合进了行驱动线,边缘像素尤其严重。解决方式很朴素:传感器层和主控之间用屏蔽FPC,模拟前端和主控之间再加一层薄铜箔屏蔽。代价是柔性弯折性能打了折扣,但可靠性的提升完全值得。所以判断优先级的排序是:可用性大于极限柔韧性。
6.2 像素间串扰导致的假阳性分类
如果传感器阵列的行驱动“前端隔离”做得不彻底,未激活行会存在弱泄漏路径。现象是按压一个点,会触发周围一圈像素的脉冲,分类器经常把“点按”误判成“大面积按压”。排查办法是对单点施加已知力,然后观察脉冲空间分布。如果出现明显的十字形或环形扩散,八九不离十是驱动隔离不足。修复时把未激活行驱动置为高阻,并增加一个约100kΩ的下拉电阻到地。
6.3 SNN芯片脉冲丢失与网络参数适配
SNN芯片端偶发丢脉冲,表现为识别准确率从92%掉到70%左右并且无规律波动。分析下来是芯片的输入FIFO溢出——当传感器阵列瞬时事件率出现尖峰时(比如物体碰撞瞬间),事件包超过芯片的接收速率,多余事件直接被丢弃。这不是芯片硬件问题,而是系统匹配问题。解决办法是把1ms的SPI搬运改为事件打包后按优先级分批传输,同时在MCU侧增加一个硬件FIFO做缓冲,给网络输入层留足时间。这个改动实施之后,峰值事件率测试下的丢包率为零。
6.4 柔性基底弯折对网络精度的影响
大面积柔性基底在机器人关节弯折过程中,部分传感像素的基线会漂移。一种比较隐蔽的现象是:网络对静态压力的分类基本不变,但对动态滑动方向的判断偶尔出错。原因是弯折区域的传感器时间常数发生了偏移,脉冲间隔特征被扭曲了。处理方案是在网络输入层前面加一个简单的事件率归一化层——以该像素自身的短期平均事件率为基准做除法,消除静态漂移对动态特征的干扰。这个方法改动量极小,但对弯折场景下的分类稳定性提升非常显著。
7. 一个值得记录的复盘体会
这套系统做下来,我最大的感受是:神经形态触觉的真正壁垒不在算法,也不在网络,而在于“从物理世界到事件域”这一接口做得够不够扎实。传感器必须真正具备阈值触发的物理特性,编码电路必须真正实现连续时间域的异步转换,系统调度必须真正放弃帧同步的思维惯性——这三条只要有任何一条还在用传统逻辑兜底,整个神经形态的优势就会被稀释掉大半。
如果你准备在自己的系统里尝试类似方案,我的建议是三件事。一是先把单像素的“力-脉冲频率”曲线做透,这条曲线的信噪比和一致性决定了后面所有工作的上限。二是千万不要跳过温度标定,柔性材料体系的温度敏感性远比传统半导体传感器严重。三是从第一天起就把系统的目标事件率峰值算出来,围绕它设计总线带宽和缓冲深度,不要等到拼接时才考虑数据通路。
这个工作后续还有很多可以延伸的方向。比如在传感器层面探索更贴合时间编码的敏感材料,在网络层面加入在线增量学习能力,让机器人长期使用中自适应地校准自身的皮肤感知,甚至把触觉事件流和视觉事件流做多模态时空对齐。回到现实来看,当机器人逐渐走出实验室进入仓储、护理、精度装配这些场景,触觉闭环的实时性和功耗约束只会越来越苛刻。神经形态电子皮肤这条技术路线,至少目前看是最值得加注的方向之一。