
最近一篇论文挺火的:

没错,就是徐升老师的文章(就之前写超声波的那个)
设计一套系统:

能发 nature 的文章,图都是一大亮点
很简单,就是一些传感器,通过一个 RF 出来,用神经网络降噪(对,主要是说这个),然后控制一个机械臂。
现实中使用 IMU(加速度计+陀螺仪)做手势识别最大的问题就是:运动伪迹——IMU 不仅测手势,也会测到:走路身体上下颤动,跑步手臂摆动,高频震动(如按摩枪),重力方向变化导致的 baseline 改变,海浪造成的随机摇动;这些“运动伪迹”的频率和幅度与真正的手势信号重叠且无法简单滤波去除。

对的

想到了海边的港科大
传统方法失效的原因
方法 | 为什么不行? |
|---|---|
bandpass、wavelet、PCA | 假设运动噪声与信号频率特性不同(对 IMU 不成立) |
自适应滤波 | 需要参考噪声通道,难以获得 |
多 IMU 差分 | IMU 不完全同步/对齐,震动不一致 |
传统 ML | 通常只训练“模拟噪声”(Gaussian),不含真实运动环境 |
IMU 手势识别最棘手的问题在于: 噪声的幅度/频率往往比真实手势更大,并且与手势高度重叠。
核心方法在图 1(Page 2):

这是咱们信号链的重点部分
6 通道 IMU(acc x/y/z,gyro roll/yaw/pitch),EMG 两电极;蓝牙 MCU(数据处理 + 无线);可拉伸电池(Zn/Ag₂O,25mAh,可拉伸 20%);深度学习网络不是训练在干净数据上,而是训练在“复合数据集”上。
见 Fig. 3a(Page 5)

作者做了:
19 种前臂手势,对应六轴 IMU;姿势包括:向上/下、向左/右、旋转 wrist 等(Fig. 2a,Page 4)。
躺下姿态(重力方向变化 → baseline 大幅漂移);按摩枪高频震动(Fig. 2c);跑步摆臂(Fig. 2d);每种噪声都被分割成多个“片段(stage)”,确保不重复导致 overfitting(Extended Fig. 4)。
生成 superimposed signal,如图 Fig. 3a;这一点是论文的最大贡献之一用真实噪声训练,使深度网络学会“去噪”并提取手势的主要成分。
结构在 Fig. 3c(Page 5):

输入:100 点 × 6 通道(一秒采样)
三层 1D 卷积(16 → 32 → 64 kernels)
三层 Max pooling
Flatten
三层 Fully connected
Loss = cross-entropy
所有 IMU 六通道先 reshape 成单一 channel 的 100×6 输入矩阵。
效果:Recall、Precision、Specificity 都 >0.93;几个深度模型中 CNN 最好(Fig. 3b)

(神经网络不是行家,打住了,不卖弄学识了)

然后这个连线,上个文章也是这样的,大概就是电气 2 层,下面是电源

一眼 Nordic,但是这个走线还是比较考究的,因为要在一层走的差不多

用一句话概括整条链路:
人体手势 & 肌电 → IMU/EMG 传感 → 模拟前端放大&滤波 → nRF51822 内置 ADC/I²C → BLE 无线 → PC(MATLAB+Python)→ CNN 手势识别 + EMG 开/关判决 → 串口控制机械臂各关节动作
可以拆成 3 个层级:

BOM
可穿戴端(硬件+本地采样层)
柔性电池(Zn–Ag₂O)供电 3 V
6 轴 IMU(LSM6DS3)采集前臂姿态/运动

干电极 EMG(Cu/CNT/PDMS)+ AD8426 仪表放大器采集抓/放肌电

我就说芯片封装有点眼熟,原来是 INA
nRF51822 BLE MCU:

其实这个已经是算老片子了,但是没有关系
I²C 读 IMU
内置 10-bit ADC 采 EMG
BLE 发到 PC
上位机端(信号处理+决策层)
PC 上的 BLE 接收器收 IMU+EMG 数据
IMU → Python:CNN 手势分类(1 s 滑窗,0.25 s 步长)
EMG → MATLAB:数字滤波(30–200 Hz BP + 60 Hz notch)→ RMS → 阈值判决抓/放
Python 与 MATLAB 通过 TCP/IP 交互预测结果(CNN 输出 → MATLAB 控制)

柔性层叠结构:
底层织物基底,上面叠加:伸缩电池 → 多层 Cu 互连电路 → EMG 电极 → IMU/MCU 器件,通过柔性硅胶/SEBS 封装、VIAs 连接各层
电池:Ag₂O–Zn 伸缩电池
工作原理:Zn/Ag₂O 半电池反应(碱性电解质,PVA hydrogel)
标称电压约 1.56 V,叠层后给 3 V 系统供电
容量约 25 mAh,可在 20% 拉伸下多次循环,>4 h 运行时间,传感器总功耗约 15 mW
热行为:30 min 运行后表面温度约 27.7 ℃,低于皮肤,热安全性 OK(Supplementary Fig.4)
传感器:LSM6DS3(ST)
3 轴加速度计(电容式 MEMS,采用双电容板+质量块结构)
3 轴陀螺仪(测角速度,重力不影响其 baseline)
电路连接:
IMU 电源端:0.1 µF 去耦电容(C2 等)
I²C 线(SCL/SDA):10 kΩ 上拉电阻到 3 V(R9 等),所有参数按 LSM6DS3 datasheet 推荐值设计
信号特性:
加速度信号同时包含:
前臂手势信号;重力分量(姿态改变→baseline 变化);外界运动伪迹(跑步、震动、海浪等);陀螺仪基线不受重力影响,只对角速度敏感(Supplementary Fig.8)

IMU→MCU 接口:
nRF51822 通过 I²C 读 6 通道数据
每 1 秒收集固定长度的时间序列(用于 CNN 的 1 s 窗口)
这里 IMU 没有额外模拟前端,走完全数字链路:传感 → 数模内部调理 → 数字寄存器 → I²C。
电极结构:
Tri-layer 干电极:
上层:Cu 薄膜岛(可焊接,低阻)
中间:CNT/PDMS 导电弹性层
下层:柔性基底,与皮肤贴合(“岛-桥”蛇形结构提升伸缩性)
干电极 → 无 gel,长期佩戴无刺激;通过 CNT 提高导电性、降低皮肤阻抗。
皮肤-电极阻抗随湿度/汗水降低(运动后 SNR 从 60 dB 提升到 78 dB)
模拟前端:AD8426 仪表放大器
输入:左右 EMG 电极的差分信号
输入高通滤波: 两端之间串联一个 200 kΩ 电阻 + 0.1 µF 电容构成高通,切掉 DC 与极低频运动伪迹
截止频率 (量级)
增益设定:
R3 = 499 Ω → 增益约 100(按 AD8426 datasheet 推荐)
输出端串联一个电阻 R6,限流/限压,避免过载 MCU ADC 输入。
EMG→MCU ADC:
nRF51822 内置 10-bit ADC 采样 EMG 模拟输出
模拟前端只做初级滤波 + 放大 + DC 抑制,频域清理主要在上位机数字滤波完成(下面会讲)。
核心器件:nRF51822(BLE MCU)
负责:I²C 采集 IMU 数据;ADC 采集 EMG;BLE 协议栈 & 无线发送;供电:3 V 电池
去耦电容 C9–C13,时钟使用:32.768 kHz 晶振(低功耗模式);16 MHz 晶振(正常运行)
射频前端:
2.4 GHz 天线 + 匹配网络(L、C 元件,具体值见 Supplementary Table 1)
BLE 功耗:传输时电流瞬时上升(power meter 波形有“毛刺”);整体平均功耗 15 mW(电池供电下可运行>4 h)

水下通信特性:
Supplementary Fig.37 测了不同水深下 BLE RSSI,发现水下通信距离只有几米级甚至更短,原因是:海水电导率高 → 射频衰减系数 α = √(π f μ σ) 很大;BLE 发射功率本来就小(为了省电 + 小天线);论文附加讨论了可改用声学波/光学波/复合声光通信作远距水下链接(表 3,对比三种物理层)
Supplementary Note 7 给出了完整 EMG 处理方案:
原始 EMG 噪声成分:
低频基线漂移 / 运动伪迹;工频 60 Hz 干扰;ECG / 其他肌肉串扰
数字滤波:
高通:模拟上已经用 8 Hz 左右的高通去掉 DC
数字带通:30–200 Hz(保留主要 EMG 能量带)
Notch:60 Hz 抑制电源噪声
Supplementary Fig.10 用 STFT 对比滤波前后频谱,明显看到低频/60 Hz 成分被压制

特征提取:
计算 EMG 的 RMS(移动窗口) 作为力度指标
由于 EMG 只承担“开/关”功能,对 SNR 要求不如进行复杂模式识别那么苛刻,干电极 + 10-bit ADC 足够用 。
这次应该是真的可以做出来,论文写的还是非常的细节和用心;也不愧为 Nature 文章,但是问题是还是需要电脑这种上位机来处理广泛的数据,可能还是局限性非常大。(里面有一个 69 页的补充文件,很多图片来自于此,论文是公开下载的)