无传感器永磁电机控制:LADRC速度环与非线性磁链观测器设计

做无传感器永磁电机控制的人应该都有过这种体验:观测器在开环状态下跑得挺好,仿真波形也算干净,可一旦把速度环的反馈从编码器换成观测器估计值,系统的毛病立刻全冒出来了——转速低频振荡、突加负载掉速、起步瞬间反冲,甚至直接发散。多数人第一反应是观测器参数没调好,但调试到后面你会发现,问题往往出在速度环本身。我一直用的一套组合方案是:速度环用二阶LADRC(线性自抗扰控制器),转子位置和速度交给非线性磁链观测器估计,整套系统在Simulink里建模,并且从一开始就按“可生成C代码”的标准来搭。这篇文章就围绕这个方案展开,把控制器设计、观测器原理、Simulink建模和代码生成链路一次讲透。

如果你正在调无传感器FOC,或者想找一种比PI更容易应付“观测反馈污染”的速度环方案,这篇内容应该能帮你省掉不少弯路。

1. 为什么无传感器速度环需要LADRC而不是传统PI

1.1 无传感器反馈回路的相位滞后比想象中严重

传统转速环面对的控制对象是机械方程:

J dω/dt = Te - TL - Bω

其中J是转动惯量,Te是电磁转矩,TL是负载转矩,B是阻尼系数。PI速度环在这种对象上工作得很好,前提是速度反馈真实且干净。但无传感器控制里,“真实且干净”这个前提本身就不成立。

无传感器速度反馈来自观测器和锁相环,这意味着一路信号至少经过了观测器收敛、反电动势提取、角度跟踪、速度微分这样几个环节。观测器有带宽限制,PLL本身又是一个低通跟踪器,实测下来速度反馈相对真实转速总有几十到几百赫兹的相位滞后。再加上为了避免微分噪声,很多人还会额外串一级低通滤波,滞后就更大了。

用PI控制时,积分项本来就会引入90°的相位滞后,观测链路再叠加上几十度的滞后,速度环的相位裕度被压缩得非常快。开环传函写出来就是:

L(s) = Kp(1 + Ki/s) * 1/(Js) * e^(-τs)

那个e^(-τs)就是观测和滤波链路带来的等效延迟。你为了提高抗扰能力加大Ki,低频增益上去了,中频段相位裕度进一步恶化,最后的结果就是临界振荡。我见过不少项目,PI参数在编码器反馈下怎么调都稳,一换观测器反馈,积分项必须砍掉一半以上才不抖,代价是稳态刚度大幅下降。

1.2 LADRC的抗扰思路和PI有本质区别

LADRC的思路完全不同。它不试图精确知道负载、摩擦、模型误差每一项是多少,而是把所有这些合在一起,当成一个“总扰动”,用一个扩张状态观测器(LESO)把它实时估出来,然后在前向通道里做前馈补偿。

还是从机械方程出发:

J dω/dt = Te - TL - Bω

两边除以J:

dω/dt = (1/J)Te + d(t)

其中:

d(t) = -(TL + Bω)/J

这就是总扰动,它包含负载、摩擦,也包含模型误差。把它扩张成一个额外的状态,控制器里根本不需要单独去辨识负载转矩,也不需要知道摩擦系数,只需要观测d(t)的变化。

对比一下PI和LADRC的行为差异,理解起来更直观:

对比项传统PI速度环二阶LADRC速度环
对负载扰动的处理靠积分项慢慢累积误差去补偿LESO直接观测扰动并前馈抵消
反馈信号质量要求高,相位滞后容易激化振荡相对容忍,观测器输出可被LESO重构
参数整定Kp、Ki耦合在一起,牵一发动全身全部由带宽参数化,ωc、ωo、b0三个数
对模型依赖程度需要准确的J做工程整定只需要b0量级准确,误差会被总扰动吸收

用一句话总结:PI是“误差驱动”,它只能看到已有误差然后被动去追;LADRC是“扰动前馈”,它主动把外部扰动和内部不确定性一起抵消掉。在反馈信号本身就有污染的无传感器系统里,谁更适合一目了然。

2. 非线性磁链观测器的原理与选型逻辑

2.1 为什么线性观测器在这个应用里不够用

磁链观测器的本质,是从定子电压、电流的电气方程里把转子磁链方向反推出来。表贴式永磁同步电机在αβ坐标系下的定子电压方程可以写成:

v_α = Rs·i_α + Ls·di_α/dt + e_α v_β = Rs·i_β + Ls·di_β/dt + e_β

其中反电动势:

e_α = -ψf·ωe·sinθe e_β = ψf·ωe·cosθe

θe就是转子电角度,ψf是永磁磁链。只要把反电动势e_α、e_β估出来,位置和速度自然就有了。

传统线性龙贝格观测器直接把这个方程线性化,设计一个状态观测器来估计磁链。这种做法在参数准确、转速稳定时没问题,但无传感器控制恰好是参数最容易失配的场景:定子电阻随温度变化,电感随电流饱和变化,转速从零到额定值跨越几个数量级,反电动势幅值也剧烈变化。线性观测器在这些不确定因素面前鲁棒性明显不足。

非线性观测器的核心差异在于引入了切换项或高增益非线性项。说得直白一点,它让状态轨迹先被强制“拉”到滑模面上,一旦进入滑模面,系统行为就对参数失配不敏感了,观测等效值中只剩我们想要的反电动势成分。

2.2 超螺旋滑模观测器的离散化设计

滑模观测器常见的形式是对电流观测方程加入符号函数切换项。但标准一阶滑模有个让工程人员头疼的毛病——抖振。符号函数的高频切换会直接污染电流估计值,进而污染反电动势,最终在速度信号上表现为高频毛刺。

我实际用的是超螺旋滑模观测器(ST-SMO),它把切换项分成两部分:一个比例于|s|^0.5·sign(s)的项负责快速收敛,一个对sign(s)积分项负责消除稳态误差。这个结构在连续域里的形式是:

di_hat_α/dt = (1/Ls)·[v_α - Rs·i_hat_α - k1·|s_α|^0.5·sign(s_α) - ∫k2·sign(s_α)dt]

其中s_α = i_hat_α - i_α是电流估计误差。β轴完全对称。由于积分项的存在,等效控制可以直接从积分输出中提取反电动势,抖振比一阶滑模小一个量级。

离散化实现要特别注意符号函数的处理。直接sign()在固定步长仿真和代码生成中容易引起数值颤振,我一般换成饱和函数sat(s/ε):

function [ialpha_hat, ibeta_hat, ealpha, ebeta] = st_smo_step(...) % 超螺旋滑模观测器单步离散更新,Ts为离散周期 % 输入: valpha, vbeta, ialpha, ibeta 定子电压电流 % 参数: Rs, Ls, k1, k2, epsilon % 状态: ialpha_hat, ibeta_hat, zalpha, zbeta(积分项) % 电流误差 eia = ialpha_hat - ialpha; eib = ibeta_hat - ibeta; % 饱和函数代替符号函数,epsilon通常在0.01~0.05之间 sata = sat(eia / epsilon); satb = sat(eib / epsilon); % 积分项更新,对应反电动势估计的等效值 zalpha = zalpha + Ts * k2 * sata; zbeta = zbeta + Ts * k2 * satb; % 电流估计更新 ialpha_hat = ialpha_hat + Ts / Ls * (valpha - Rs * ialpha_hat ... - k1 * sqrt(abs(eia)) * sata - zalpha); ibeta_hat = ibeta_hat + Ts / Ls * (vbeta - Rs * ibeta_hat ... - k1 * sqrt(abs(eib)) * satb - zbeta); % 反电动势估计直接取积分项 ealpha = zalpha; ebeta = zbeta; end

k1、k2的量级要按电压方程来估。反电动势项的量级是ωe·ψf,k1、k2太小时观测器收敛慢,太大时噪声会被放大。工程上我习惯先用连续仿真自动整定,再根据离散周期微调。

2.3 转子位置和速度提取:别小看PLL

反电动势估计出来之后,位置不能直接atan2。直接用e_α、e_β做atan2(e_α, e_β)虽然简单,但反电动势里的高频残余会直接变成角度抖动,再微分算速度基本不可用。

正确做法是锁相环。把反电动势方向角θe作为锁相环的输入,用PI调节器跟踪角度:

ε = (-e_hat_α·cosθ_hat - e_hat_β·sinθ_hat) / sqrt(e_hat_α² + e_hat_β²)

当θ_hat = θe时ε趋向于0。PLL的PI输出是电角速度,积分后得到电角度。

这里有个关键细节:PLL带宽要放在观测器带宽的1/5到1/3。PLL带宽太高,反电动势噪声会直接进入速度信号;太低,速度反馈相位滞后又增大,速度环LADRC再能扛也扛不住90°以上的滞后。折中下来,观测器本身做到几百赫兹带宽时,PLL带宽放在30~60Hz比较稳妥。

3. 速度环LADRC控制器设计:从被控对象到LESO整定

3.1 被控对象降阶与b0的工程辨识

设计LADRC时,第一步是把被控对象化成积分串联型。速度环对象近似为:

dω/dt = b0·u + d(t)

其中u = Te_ref,b0 = 1/J。实际系统里电流环有延迟,通常十几个kHz采样下等效成一个时间常数很小的惯性环节。LADRC处理这个惯性的方式是把它扔进总扰动里,让LESO去估计。所以设计时不需要精确知道电流环传递函数,只需要b0量级正确。

b0的工程辨识很简单。空载、额定速度以下,给一个阶跃转矩指令,用高分辨率编码器(调试阶段)记录转速上升曲线,取稳态段斜率:

b0 = Δω / Δt / Te_step

如果连编码器都没有,可以估算。比如电机额定转矩3N·m,转子惯量0.001kg·m²,空载从0加速到1000rpm大约需要0.16s,那b0大约等于:

b0 ≈ (1000·2π/60) / 0.16 / 3 ≈ 21.8 (rad/s²)/(N·m)

实际用的时候上下浮动50%都不致命,因为b0的误差会被当成总扰动的一部分被LESO补偿。这也是LADRC比PI省心的核心原因。

3.2 LESO设计与带宽参数化

建立速度环扩张状态方程:

dx1/dt = x2 + b0·u dx2/dt = h

x1是转速,x2是总扰动,h是扰动变化率。LESO写成:

dz1/dt = z2 + b0·u + l1·(ω - z1) dz2/dt = l2·(ω - z1)

l1和l2按带宽参数化配置:

l1 = 2·ωo l2 = ωo²

ωo是观测器带宽,一般取闭环带宽ωc的5到10倍。控制器输出:

u0 = ωc·(ω_ref - z1) u = (u0 - z2) / b0

这里的逻辑是:z1是对转速的重构,z2是对总扰动的实时估计。控制量里先用z2把扰动抵消掉,剩下的u0就是一个纯积分对象上的比例控制,带宽就是ωc,性质非常好。

离散化用前向欧拉足够,代码生成也友好:

function [z1, z2, Te_ref] = ladrc_velocity_step(z1, z2, w_meas, w_ref, b0, wc, w0, Ts) % 二阶LADRC速度环单步更新,固定步长离散 % 输入: w_meas 观测器速度反馈, w_ref 速度给定 % 状态: z1 转速估计, z2 总扰动估计 % LESO增益 l1 = 2 * w0; l2 = w0 * w0; % 观测误差 e = w_meas - z1; % 状态更新(前向欧拉) z1 = z1 + Ts * (z2 + b0 * Te_ref + l1 * e); z2 = z2 + Ts * (l2 * e); % 控制律:扰动前馈 + 比例反馈 u0 = wc * (w_ref - z1); Te_ref = (u0 - z2) / b0; end

这个函数可以直接丢进Matlab Function块,配合固定步长求解器,就是可生成的离散控制器。整个速度环一共三个整定参数:ωc决定响应快慢,ωo决定扰动观测速度,b0量级决定前馈准确性。相比PI的两个参数,LADRC的参数物理意义清楚得多,调起来不用瞎试。

3.3 速度环反馈到底用观测器原始值还是z1

这是个非常实际的问题。很多人在速度环前面再加一个低通滤波器,想滤掉观测速度的纹波,结果低通带来的相位滞后直接把LADRC好不容易省出来的裕度又吃掉了。

我的经验是:反馈直接用PLL输出的速度,但把LESO的观测带宽ωo设计得比PLL带宽高2~3倍。这样LESO能跟踪上速度反馈的变化,但不会放大高频噪声,z1天然就是一个带观测特性的平滑速度。速度环不需要额外低通,控制带宽也能保持住。

如果你发现速度反馈毛刺还是很明显,优先回头压PLL带宽和观测器增益,不要在速度环里串滤波。串滤波是扬汤止沸,源头上的噪声不处理,后面怎么串都治标不治本。

4. Simulink建模与代码生成的衔接要点

4.1 仿真模型顶层拓扑

整个系统的Simulink模型分几个关键模块,结构上我习惯按信号流排列:

  • 电机与逆变器:PMSM模型 + 三相两电平逆变器
  • 电流采样与坐标变换:Clark、Park变换
  • 电流环PI控制器:d轴、q轴各一个,输出Ud、Uq
  • 反Park变换与SVPWM调制
  • 非线性磁链观测器:超螺旋滑模观测器,输出反电动势
  • PLL:从反电动势提取转速和角度
  • 速度环LADRC:输入转速给定和观测速度,输出q轴电流给定
  • 转速斜坡给定:用于限制启动加速度

调试阶段我建议先用平均模型逆变器(忽略开关纹波)把算法调通,再加SVPWM和开关模型验证真实工况。平均模型下电流环带宽调得快,但最终仿真一定要回到开关模型,否则代码生成之后的性能可能会差很多。

4.2 求解器与采样周期的配合

仿真阶段可以用变步长连续求解器,但一旦准备生成代码,模型里就不能有连续积分器了,必须全部离散化。离散化之前先确定采样周期:

环路典型采样频率说明
电流环10kHz~20kHz与PWM开关频率一致或加倍
磁链观测器10kHz~20kHz与电流环同频
PLL10kHz也可以降半频,但要注意抗混叠
速度环LADRC1kHz~2kHz比电流环慢5~10倍

这组配置下,速度环看到的是一个带宽在几百Hz范围、电流内环等效为高增益环节的被控对象,LADRC的LESO带宽放10倍左右就能把扰动看清。注意所有不同频率的模块之间信号切换,要么在慢速环入口做离散采样保持,要么直接用相同基频再倍频,千万别让Simulink自动插值产生“仿真里稳定、代码里没有”的假象。

4.3 代码生成前的模型硬化检查

我吃过最大的亏就是仿真里通了,代码生成后一接真实逆变器就崩。后来固定了一套“模型硬化”流程:

  • 求解器改为固定步长离散,步长取电流环采样周期;
  • 模型里的连续积分模块全部替换为离散积分器或单位延迟;
  • 全局信号数据类型检查,杜绝double和single混用;
  • 关闭Simulink的动态内存分配和可变大小数组,所有数组长度在初始化时固定;
  • 用代码生成工具预先做模型检查,确认没有不可生成的模块;
  • 生成代码后先用纯软件仿真跑一遍生成代码和原模型的一致性对比。

这六步做完,模型基本就是一台“会动的控制器原型”了。剩下的工作就是把生成代码嵌到中断服务程序里,PWM由硬件外设直接输出。

5. 参数整定顺序与仿真调试中的高频踩坑点

5.1 整定顺序:电流环→观测器→LADRC,顺序不能乱

无传感器系统的参数整定有个先后顺序,调错顺序会让整个调试过程变得极其痛苦。

第一步电流环。电流环带宽调好之前,后面全白搭。先把电流环PI带宽定在500Hz左右,用编码器或者虚拟电机模型验证d、q轴电流跟随。

第二步观测器。观测器增益从偏小开始,逐步增大,观察启动过程的反电动势估计波形。此时速度环可以先给开环、恒定q轴电流,让电机转起来,看观测器的角度跟踪是否平滑。

第三步才是速度环LADRC。先给一个很小的ωc,确认转速能跟上斜坡给定且无振荡,再逐步增加ωc到目标值。ωo始终保持ωc的5~10倍。最后再给额定负载阶跃,观察LESO的z2能不能快速跟上。

这套顺序的本质是:先保证底层执行可靠,再保证观测可信,最后才谈得上控制性能。跳步调参,最后出的问题你根本不知道来自哪一层。

5.2 低速、零速带载和初始位置这几个硬骨头

无传感器控制最怕低速。反电动势幅值正比于转速,转速降到5%额定以下时,反电动势小到几乎淹没在噪声里,滑模观测器再强也难以为继。有两种工程化处理:

一是零低速启动前做转子预定位,或者做初始位置辨识。我在实际项目里用预定位最简单可靠:给定一个固定的q轴电流和零d轴电流,让转子强制转到一个已知位置,再开始正常闭环。代价是启动前会有一点“抖一下”的动作,很多商用驱动器也是这么干的。

二是低速段改用高频注入策略。这个方案复杂一些,系统里要额外叠加高频电压信号,并在电流信号里做解调。如果题目限定在非线性磁链观测器框架内,那就要明确告诉项目需求方:低速性能是有底线的,不是观测器不够强,而是物理信噪比决定了反电动势法在这段转速范围先天不足。

零速带载就更直接了。反电动势为零,纯反电动势法没有任何反馈信号可用,必须靠初始辨识和开环强拉。这也是为什么高标准无传感器方案普遍做混合切换:零低速用高频注入,中高速用反电动势法,切换点在10%~15%额定转速附近。我建议把这一点写进项目方案里,能避免后续很多需求层面的扯皮。

5.3 从仿真到代码生成后性能退化的问题

固定步长离散化之后,最明显的变化是观测器切换项的等效带宽下降了。原来连续仿真里k2设得比较大,反电动势还能保持平滑,固定步长下同样的k2可能直接引起电流估计的高频振荡。我的处理办法是:离散化后把k2降到连续仿真值的二分之一到三分之一,然后观察反电动势波形里的高频纹波,直到纹波幅值和连续仿真相当为止。

另一个退化点是速度环带宽。仿真里ωc放到20Hz没问题,代码生成之后由于整个采样链路存在相位延迟,20Hz可能就振荡了。我一般先按仿真的50%起步,确认系统稳定后再向上升,直到出现振荡临界点,再退回60%~70%作为最终工作点。

代码生成之后不接电机先做控制器在环测试也很重要。把生成的C代码跑在控制芯片上,模拟器里跑电机模型,通过硬件IO和模拟器交互,这一层验证能排除绝大多数代码生成的低级错误,比直接上真实电机台架安全得多。

最后再分享一个小技巧:把所有关键参数(b0、ωc、ωo、观测器k1、k2、PLL带宽)都定义成模型工作区变量,用初始化脚本统一赋值,不要直接在模块参数里填数字。这样调参的时候只需要改脚本,配合快速仿真就能把整定时间从上星期压缩到一两天。参数和结构分离,也是后续做自动标定、参数自整定的基础,这一步提前做好,后面复杂项目能省大量时间。

相关新闻

DeepSeek Harness:面向生产环境的插件化智能体操作系统

DeepSeek Harness:面向生产环境的插件化智能体操作系统

1. 项目概述:这不是一个“新模型”,而是一套可插拔的智能体操作系统 “DeepSeek Harness 是什么”——这个问题最近在技术社区里被反复提起,但多数回答要么停留在“官方介绍截图”,要么直接跳进代码仓库翻源码,反而把最…

2026/10/20 18:34:36 阅读更多 →
代码一键生成业务流程图:测试工程师的自动化左移利器

代码一键生成业务流程图:测试工程师的自动化左移利器

1. 项目概述:为什么一张图能救测试工程师的命?“测试工程师必备:代码一键生成业务流程图Skill”——这个标题乍看像营销话术,但在我带过的十几个测试团队里,它真实改变了三类人的工作状态:刚转行的新人总在…

2026/10/20 18:33:30 阅读更多 →
大数据爬虫与Hadoop驱动的空气质量指数分析与可视化实战

大数据爬虫与Hadoop驱动的空气质量指数分析与可视化实战

"空气质量指数"这几个字,在标题里看着简单,真要把数据从网上抓下来、存进去、算明白、画出来,是一条完整的链路。我当时做这个"基于大数据爬虫Hadoop空气质量指数数据分析可视化"项目时,最深的感受是&#xf…

2026/10/20 18:33:30 阅读更多 →

最新新闻

音视频服务为何是互联网的终极压力测试仪

音视频服务为何是互联网的终极压力测试仪

1. 为什么“音视频服务”是互联网真正的压力测试仪你有没有试过在地铁里点开一个4K直播,画面卡成PPT,而旁边的人刷短视频却丝滑如初?或者深夜和朋友连麦打游戏,语音断断续续,但微信文字消息秒回?这些不是玄…

2026/10/20 19:23:50 阅读更多 →
软考 系统架构设计师历年真题集萃(83)

软考 系统架构设计师历年真题集萃(83)

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 19:23:50 阅读更多 →
PySR项目参数调优与工作流程指南

PySR项目参数调优与工作流程指南

PySR项目参数调优与工作流程指南 【免费下载链接】PySR Symbolic Learning in Python and Julia 项目地址: https://gitcode.com/GitHub_Trending/py/PySR 引言 PySR是一个基于符号回归的机器学习工具,能够从数据中发现简洁的数学表达式。本文将详细介绍如何…

2026/10/20 19:23:50 阅读更多 →
ZYNQ裸芯片应用与PetaLinux实战:从启动链路到设备树开发

ZYNQ裸芯片应用与PetaLinux实战:从启动链路到设备树开发

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 19:23:50 阅读更多 →
技能三层结构与习得路径:从会做到形成个人能力壁垒

技能三层结构与习得路径:从会做到形成个人能力壁垒

1. 从“skills”这个标题说起:一个被低估的硬核话题看到“skills”这个词,很多人第一反应是“技能嘛,谁不知道”。但恰恰是这个看似平淡的词,藏着大多数人在职场、学习和个人成长中最容易踩的坑。我做了十多年一线项目&#xff0c…

2026/10/20 19:23:50 阅读更多 →
Agent Harness Engineering:打造智能体的“操作系统”运行时

Agent Harness Engineering:打造智能体的“操作系统”运行时

“Agent 即操作系统”,这个说法第一次看到时,我觉得又是一轮热词营销。但后来真把一个带工具调用、多智能体协作、长任务拆解的系统放到生产环境里跑,我发现自己每天都在用的概念,全是操作系统的老概念:调度、上下文管…

2026/10/20 19:22:46 阅读更多 →

日新闻

CLRC663芯片Pin-to-Pin替代实战:从评估到量产全记录

CLRC663芯片Pin-to-Pin替代实战:从评估到量产全记录

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:01:30 阅读更多 →
ESP32舵机控制指南:原理、多路驱动与避坑实战

ESP32舵机控制指南:原理、多路驱动与避坑实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:01:30 阅读更多 →
位移法实现一阶低通滤波:单片机ADC采样降噪实战

位移法实现一阶低通滤波:单片机ADC采样降噪实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:01:30 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/20 10:02:13 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/19 17:32:41 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/20 2:50:50 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 10:02:08 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 9:50:17 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 9:50:45 阅读更多 →