Kelvin-Voigt 模型:恒载慢漂的最小粘弹性描述

摘要 恒定载荷下,某种传感器的通道读数并不停在加载完成时的电平上,而是继续缓慢爬升——慢漂。描述它的最小粘弹性模型是 Kelvin-Voigt 元件(弹簧与阻尼器并联):本构 $\sigma=E\epsilon+\eta\dot\epsilon$,唯一时间常数 $\tau=\eta/E$。本文把模型自身讲清:恒载蠕变解 $\frac{\sigma_0}{E}\left(1-e^{-t/\tau}\right)$ 有界饱和,初始斜率 $\sigma_0/\eta$ 与渐近值 $\sigma_0/E$ 在 $t=\tau$ 处相接;卸载后按同一 $\tau$ 恢复、无永久形变;恒应变下应力不松弛;动态下 $\tan\delta=\omega\tau$。在一套 52 通道、约 100 Hz、96 s 的恒载录制上只取慢漂段演算:38 个活跃通道中,16 个可被单条蠕变律完好描述($\hat\tau$ 中位 8.7 s,残差与噪声同量级),12 个无显著慢漂,10 个窗口内不饱和、$\tau$ 只能给下界。两条实测边界同样用数据钉死:加载沿瞬时跃升占终值 53%~88%,而模型给不出瞬跳,需串联弹簧补足;卸载后读数立即回到零基线,而模型预测延迟分量应保留 68~1038 ADC——读数携带的是与载荷同在的应力侧响应、不是应变记忆,模型适用于恒载段的载荷—读数方向。 关键词 粘弹性;Kelvin-Voigt 模型;蠕变;蠕变柔量;延迟弹性;参数辨识 1 现象与模型定位 1.1 恒载慢漂:要被描述的现象 把一个恒定负载压到某种传感器上,理想读数应当在加载完成后保持常数。实测不是:加载后的最初一两秒内读数快速到位(快相,本文不处理),随后仍以数秒到数十秒的时间尺度单调爬升,几十秒内累计可达加载电平的百分之几到百分之十几;卸载后读数回落,再次加载后蠕变重新出现。图 1 给出一套实测录制(52 通道、约 100 Hz、96 s)的全貌:加载沿 1.0~1.7 s,快相到约 5 s,随后 5~54 s 是一段 49 s 干净的恒载慢漂段,87.9 s 整片卸载、89.9 s 重新加载。 图 1 恒载录制总览(实测,52 通道 / 约 100 Hz / 96 s)。两块面板顶部用七段彩色色带标注全程阶段,每段一种颜色、边界竖线与色带同色:灰=空载(0~1.0 s)、棕=加载沿(1.0~1.7 s)、绿=快相(1.7~5 s)、红=慢漂段(5~54 s,本文研究窗口)、紫=扰动段(54~87.9 s)、粉=整片卸载(87.9~89.9 s)、橙=重载段(89.9 s~末)。(a) 全程总力;(b) 代表通道全程读数。本文只研究慢漂段;沿与快相属于模型的边界问题(§5.1),卸载—重载用于检验模型的恢复分支(§5.2)。 ...

September 28, 2026 · 7 min · Leventure

柔性触觉阵列显示层在线双态蠕变观测器补偿算法

摘要 柔性触觉阵列在反复增减同一负载时,前一代显示层补偿器暴露出一个结构性缺陷:整片卸载后重新加载,239 s 受载历史累积的蠕变补偿被状态机清零,同一负载的前后显示相差 2516 ADC(满载族极差),用户看到的就是"丢基线"。此后用事件式"蠕变记忆"修补,虽修好了目标工况,却在随机切换工况上把显示整体下移约 1200 ADC——账本式记忆伤害了它没见过的工况,该方案已废弃。本文给出第三条路线:把传感器与夹具当作线性粘弹性体,逐通道在线维护两个 Kelvin-Voigt 非弹性状态(快态 + 慢态),叠加一个近零带内慢速再校准的零点跟踪,显示 = 零点 + 纯弹性响应。整条算法没有事件账本、没有状态清零,受载门由弹性估计的自然下限形成;慢态跟随实测慢漂移速率,因为辨识表明蠕变幅度因工况差 3 倍、固定幅度必在一边过扣一边欠扣。针对"阶跃后约 2 s 见峰、随后回落过大"的现场问题,算法内建四重沿后机制:上升沿后的快态前馈(沿后短窗内加快收敛)、缓坡前馈(未触发沿的持续缓坡按持续时长渐进加速快态收敛,使缓坡加载与快上冲到达同一收敛速度)、慢态沿后软冻结(沿后按指数权重逐步放开积分)、以及显示侧的补偿预留池(受载期施加补偿的增速不超过输入快速导数加小余量,会把显示往下拉的部分先预留、慢相阶段随输入爬升逐步释放)。在真实数据回放上(13 会话、73 个加载事件):纯过补偿回落中位 262→27 ADC(反复增减工况 fall 中位 332→94、落位 9.2→6.6 s);346 s 恒载保压显示漂移 −108 ADC(输入自身 +1010);首次加载见峰 2~4 s。代价如实:快相期间显示比真实弹性电平略偏高(预留池暂时未扣的部分),随后数十秒缓慢归位;频繁切换工况的保压段 std 相对固定幅度版上升;卸载后到零点再校准完成前显示有一段低于原始零点的过渡(τ₀=8 s 量级)。在线实现与独立复算实现逐帧对拍,最大逐帧差 5×10⁻⁵ ADC。 关键词 触觉阵列;粘弹性蠕变;在线观测器;Kelvin-Voigt 模型;零点跟踪;无事件补偿;一致性 1 引言 1.1 丢失的 2000 ADC:上一代方案的失效方式 前代显示层补偿(事件状态机方案)建立在事件状态机上:加载沿、卸载沿、变载各自触发状态迁移,补偿量挂在事件血统上逐代继承。它在"加载—保持—再加载"的家族路径上工作正常,但有一条它没有覆盖的路径:整片卸载。 现场录制 R1(31306 帧,21 通道)里的时间线是:239~240 s 输入经约 1.5 s 四级台阶塌到基线,检测器 240.08 s 确认卸载、240.86 s 状态机转入空载并清空全部慢相补偿状态;244.3 s 重新加载被当作全新事件,幅度参考直接锚在快相终点电平上。于是第一次加载段(t16~239)显示 = 输入 − 累积补偿(补偿从 +1570 涨到 +2289,这是正确行为:load1 从 2.4 s 一直压到 239 s,其蠕变一直在长),而重载段(t246 起)的扣除是 −54 与 +13——239 s 受载历史被整段遗忘。同一满载的前后显示相差 2516 ADC(族极差),这就是用户报障的"丢基线"。 ...

September 19, 2026 · 11 min · Leventure

频域维纳滤波降噪算法——设计思路与工程手记

频域维纳滤波降噪算法——设计思路与工程手记 写在前头 这份笔记记录的是一个面向实时语音通信的频域降噪算法。它的设计目标很明确:在 48kHz 采样率下,以 10ms 帧长实时处理单通道语音,把稳态和准稳态背景噪声压下去,同时尽量不伤语音。算法脱胎于 WebRTC 的 Noise Suppression 模块,但经过了面向嵌入式的重构——所有动态分配被消除,所有 C++ 模板和虚函数被拍平成纯 C 结构体。 我按照信号流经的顺序来谈。先说为什么要这么做,再说具体怎么做。 1. 信号模型 一切降噪算法的出发点都是同一个假设:麦克风采集到的信号 $x(n)$ 是干净语音 $s(n)$ 和加性噪声 $d(n)$ 的叠加: $$ x(n) = s(n) + d(n) $$这个模型简单到近乎天真,但它成立的前提条件其实很苛刻:噪声和语音不相关,噪声在短时间尺度上是准平稳的。实际工程中,空调嗡嗡声、风扇声、马路上的低频轰鸣,在几十毫秒内确实变化不大——这就够了。 我们的目标是从 $x(n)$ 中恢复 $\hat{s}(n)$。在频域里,这意味着对每个频率 bin 施加一个增益 $G(k)$: $$ \hat{S}(k) = G(k) \cdot X(k) $$问题归结为:怎么求这个 $G(k)$? 2. 为什么选频域 时域降噪(比如 LMS 自适应滤波)需要参考信号,这在单麦克风场景下不现实。频域方法的好处是: 频率分辨率。噪声和语音在不同频段的能量分布差异很大。白噪声全频段平坦,语音能量集中在 300Hz–4kHz。频域处理可以逐 bin 调节衰减深度。 短时平稳假设更容易满足。一帧 10ms 内,噪声功率谱几乎不变,这给估计器提供了稳定的观测窗口。 计算量可控。256 点 FFT 在嵌入式平台上是成熟操作,远比时域长 FIR 滤波器经济。 代价是引入了帧延迟和频谱泄漏,这些后面会谈。 3. 总体处理流程 一帧 480 个采样点(48kHz × 10ms)进来后,经过以下环节: ...

July 28, 2026 · 17 min · Leventure