PMSM双闭环控制从SVPWM到ADRC的完整调试实战
先说个我自己的真实经历。有一段时间我在调一台PMSM驱动器的速度控制给到3000rpm的阶跃指令电机会先啸叫一声然后电流波形上明显带着锯齿状毛刺。当时第一反应是PI参数不够把速度环Kp压低、Ki抬高来回试了十几组问题一点没改善。后来发现竟然是SVPWM扇区判断里用错了坐标系的方向导致电压矢量在某个扇区内整体偏移了30度电流自然好不了。这让我意识到做双闭环控制这件事瓶颈往往不在“控制算法本身”而在从坐标变换、SVPWM到采样链路这一整条物理通路是否真的严丝合缝。这篇文章就把我从头到尾走通这条链路的过程记录下来覆盖PMSM双闭环的骨架设计、SVPWM实现细节、电流环速度环PI参数的计算方法以及最后换用ADRC时那种“参数不细调也能压住扰动”的暴力美学。适合什么人看呢如果你刚把FOC跑起来但电流波形总是不干净速度环动态响应也不行或者你已经在用PI但对ADRC只有概念层面的了解不知道从哪开始改代码又或者你被各种PI调参口诀搞得晕头转向想从原理上搞明白Kp、Ki到底怎么算——这篇应该能帮你在思路上少走很多弯路。1. 想清楚PMSM在“反抗”什么双闭环骨架背后的物理直觉很多入门教程一上来就摆出PMSM的d-q轴电压方程、磁链方程、转矩方程公式堆了满屏但调试时最容易忽略的恰恰是这些方程背后的物理含义。1.1 坐标变换把三相交变问题变成两轴直流问题PMSM的定子绕组是三相空间上相差120度的交流绕组转子是永磁体。你在abc三相坐标系里看反电动势是正弦变化的电感磁链也随着转子位置变化控制器面对的是一堆时变系数。直接在这上面做控制每个采样周期都要处理正弦余弦耦合而且电流环带宽做不高。Clark变换把三相静止坐标系映射到两相静止αβ坐标系去掉了冗余的零序分量Park变换再把αβ坐标系旋转到与转子磁场同步的d-q旋转坐标系。这一步做完原本随电角度变化的正弦量变成了直流量d轴对应励磁分量q轴对应转矩分量电流环只需要处理两个常数-ish的RL回路。物理直觉上的等价关系是这样的d轴电流控制的是磁场强弱PMSM转子是永磁体d轴电流既不能增加主磁通只会带来额外的铜耗和铁耗所以表贴式PMSM常用id0控制q轴电流直接决定电磁转矩转矩Te 1.5 * p * (ψf * iq (Ld-Lq)idiq)在id0时简化为Te 1.5 * p * ψf * iq变成一台“直流电机”。有了这个变换你在示波器上看到的再也不是三个正弦波而是两个随工况缓慢变化的直流分量。调试时也直接了很多i_d是否被控制在0附近i_q是否跟指令一致一眼就能看出电流环有没有好好工作。1.2 双闭环为什么必须“电流内层、速度外层”双闭环的结构图看上去很简单速度环外面给定转速转速误差经速度调节器输出q轴电流指令电流环再跟踪这个指令最终输出d-q轴电压。但内外环的带宽分配是有严格讲究的。电流环处理的是电气时间常数一般就是毫秒甚至亚毫秒级别速度环面对的是机械时间常数通常是几十毫秒级别。电流环必须快得多才能把反电动势、负载变化这些扰动在还没传达到速度环之前就消化掉。如果电流环带宽不够或相位裕度太小速度环一旦加大增益就容易引起电流指令振荡甚至两条反馈回路一起共振——我在调试中见到的“振铃”很多时候根本不是机械问题而是电流环响应太慢导致的。工程上我习惯把电流环周期定在100us10kHz速度环周期1ms1kHz电流环带宽设计在800~1200Hz左右速度环带宽则压在电流环带宽的1/10到1/5也就是80~200Hz之间。这组数据不是拍脑袋而是保证内外环之间有足够的频带间隔避免环路交互带来的稳定性问题。2. SVPWM最容易翻车的三个位置扇区判断、矢量时间与死区补偿SVPWM的原理在很多教材里是“六个有效矢量加两个零矢量按伏秒平衡合成任意电压矢量”听起来很干净但落到代码里翻车的地方几乎都在细节上。2.1 相邻矢量合成与扇区判断的等价条件逆变器三相桥臂一共有8种开关状态其中6个非零矢量把αβ平面分成6个60度扇区剩下两个零矢量。要输出任意方向和大小的电压矢量最直接的办法就是找到它落在哪个扇区然后用该扇区相邻的两个非零矢量按时间比例合成零矢量填充剩余时间。扇区判断常见的两种做法一种是用Uα、Uβ直接做几何判断另一种是用三相电压UA、UB、UC做比较。我踩过坑的是几何判断时角度换了一种约定导致整个扇区编号偏一格。矢量落在扇区I代码却按扇区II的相邻矢量去合成电压矢量的方向偏了60度电机能转但电流波形明显变形、转矩脉动大而且启动时噪声比正常情况大很多。一个不会出错的等价判断条件可以写成// Ualpha、Ubeta为Park逆变换输出的两相静止坐标电压 // 用一个通用方法计算扇区号 int sector; float v1 Ubeta; float v2 -0.5f * Ubeta 0.866f * Ualpha; // sqrt(3)/2 ≈ 0.866 float v3 -0.5f * Ubeta - 0.866f * Ualpha; if (v1 0) sector 1; else sector 0; if (v2 0) sector 2; if (v3 0) sector 4; switch (sector) { case 3: sector 1; break; case 1: sector 2; break; case 5: sector 3; break; case 4: sector 4; break; case 6: sector 5; break; case 2: sector 6; break; }这段代码里的v1、v2、v3本质上是把Uα、Uβ又投影回三个互差120度的轴上然后按符号组合出扇区比起直接求角度再查表少了一次反正切运算也不会遇到角度边界值问题。实测定点MCU上跑精度完全够。2.2 七段式SVPWM的生成顺序与作用时间计算确定扇区后需要算出两个相邻矢量的作用时间T1、T2。以扇区I为例电压矢量由100矢量V1和110矢量V2合成伏秒平衡得到T1与Ubeta正相关T2与Ualpha和Ubeta的组合相关剩余时间由零矢量填充T0 Ts - T1 - T2。完整的工程代码里通常会直接列一个查表式的时间计算下面是其中一个扇区对应的核心逻辑float T1, T2, T0; float Ts 1.0f / PWM_FREQ; // PWM周期单位秒 // 以扇区I为例 // V1作用时间正比于Ubeta // V2作用时间正比于 (sqrt(3)*Ualpha - Ubeta) / 2 float Vdc bus_voltage; // 母线电压单位V T1 (Ubeta * Ts) / Vdc; T2 ((0.866f * Ualpha - 0.5f * Ubeta) * Ts) / Vdc; // 过调制限幅T1T2超出Ts时等比例压缩 float sum T1 T2; if (sum Ts) { T1 T1 / sum * Ts; T2 T2 / sum * Ts; } T0 Ts - T1 - T2;七段式输出的核心思想是在一个PWM周期里让每个桥臂的开关次数尽量平均从而降低开关频率带来的谐波。采用131-132这样的开关序列也就是从零矢量000开始依次经过V1、V2再到111再对称回来每个周期内每相只开关一次。这样做的好处是中心对齐的PWM波形谐波含量低电流纹波也相对小。实际生成时把T0均分为四份T1、T2各两份得到一个对称序列。虽然听起来繁琐但在代码里就是三个比较寄存器的赋值并不难。2.3 死区、管压降和母线利用率工程细节决定波形好坏这一小节要说的是“仿真里跑得好好的上机就完蛋”的三个元凶。第一是死区时间。上下桥臂不能同时导通否则母线直通短路必须插入死区。死区时间通常取0.5~2us但死区会造成实际的电压矢量和指令值之间的偏差电流过零附近尤其明显表现出来就是低速轻载时电流波形过零畸变、转矩脉动q轴电流上有明显的6倍频脉动。简单有效的补偿思路是根据三相电流方向在占空比上叠加一个死区补偿量电流方向判断不准时宁可不补偿也不要补反。第二是管压降和开通关断延时。IGBT或MOSFET的导通压降、开关延时在每个扇区都会引入一个小的平均电压误差高速大电流工况下可能可以忽略但低速低压时这些误差可能盖过实际指令电压导致低速性能急剧恶化。做低速带载的场合建议做一次简单的电压误差补偿把每相导通压降作为固定偏置修正掉。第三是母线电压利用率。SVPWM线性调制范围比SPWM高出约15%最大相电压峰值能达到Vdc/sqrt(3)。但如果你用不好过调制或者限幅做成了简单的“削顶”电压矢量幅值超过六边形内切圆后被截断电流波形就会变成缺少顶部弧度的台阶状谐波立刻变差。我在代码里习惯用等比例压缩法做限幅保留矢量方向、只缩幅值这样在弱磁区之外都能尽量保持正弦性。3. 电流环和速度环的PI别靠试内模法与带宽倍数一次定下来很多工程师调PI还在用“先Kp后Ki调完再回来”的土办法。运气好能调出来运气不好就是今天调好明天换台电机又炸。实际上电流环和速度环的对象模型都很简单足够用解析方法把初值算出来剩下需要手动调的只是很小一个范围。3.1 电流环PI从RL模型直接推出Kp/Ki在d-q旋转坐标系下电流环的被控对象近似为一阶RL回路L * di/dt u - R*i - e其中e是反电动势和交叉耦合项。电流环PI控制器只要带宽足够高反电动势可以看作慢扰动交给积分项处理。忽略耦合项后对象就是典型的365体育官网 Ls R。用内模控制或零极点对消法可以直接得到PI参数Kp L * ωcKi R * ωc其中ωc是期望的电流环闭环带宽rad/s。这套公式的本质是让PI的零点刚好抵消对象的极点回路传函变成一阶惯性环节闭环带宽正好是ωc。举个例子某台电机定子电感Ls 0.4mH定子电阻Rs 0.12Ω希望电流环带宽800Hz也就是ωc 2π×800 ≈ 5027 rad/s那么Kp 0.0004 × 5027 ≈ 2.01Ki 0.12 × 5027 ≈ 603如果控制周期是10kHz离散化时把Ki乘上采样周期Ts得到积分系数Ki_d Ki × 0.0001 ≈ 0.0603。注意这里的坐标系问题你控制的是d轴和q轴两套独立的PI但实际对象中存在d-q轴耦合项ωLqiq和ωLdid转速高时耦合电压不可忽略。工程上一般先用PI的积分项硬抗带宽够高时问题不大若高速性能不好再加解耦前馈。3.2 速度环PI机械对象的积分特性与带宽搭配速度环的被控对象是电机转子的机械方程J * dω/dt Te - TL - B*ω写成传递函数是对象在积分环节后面串了一个一阶惯性。理论上有两种思路用PI去对消机械时间常数或者用更保守的整定方法。我的习惯是先把电流环带宽固定好再把速度环带宽设为电流环带宽的1/10左右。假设电流环闭环后等效成一阶惯性环节其时间常数为1/ωc速度环设计就可以在“电流环等效对象”之上进行。这时PI参数同样可以从对象参数推导先估算转动惯量J和阻尼系数B。如果没有转动惯量数据就做一次空载阶跃实验记录转速上升斜率反推J Te / (dω/dt)。有了J速度环PI初值可以按Kp_speed ≈ J * ωsωs为速度环期望带宽Ki_speed ≈ Kp_speed / τmτm为机械时间常数J/B为方便理解给一组典型值某小型PMSM转子惯量J 3.5e-5 kg·m²阻尼B很小近似0.001电流环带宽1000Hz速度环带宽取100Hzωs 628 rad/s则Kp_speed ≈ 3.5e-5 × 628 ≈ 0.022。注意这套初值只是给了你一个可靠的起点最终要根据阶跃响应的超调量和振荡情况微调。调试速度环时一个很实用的原则先确保电流环无超调再提速度环增益速度环出现低频振荡加Ki或者降Kp速度环出现高频噪声多半是转速反馈没有滤波。4. ADRC的“暴力美学”ESO如何把未知统统吃掉“暴力美学”这个说法我在用ADRC之前一直觉得是夸张直到我自己在调试现场把负载突变时转速的跌落压下去才意识到这个“暴力”真的有它的道理。4.1 为什么调试现场会想放弃PIPI在理想的一阶或二阶对象面前表现很好但PMSM速度环的真实对象里有模型误差、转动惯量变化、负载突变、摩擦非线性、电流环等效延时。这些不确定性到了PI这里全部要靠积分器一点一点地攒误差去补偿。积分器攒够了稳态精度不错但动态响应慢积分器没攒够负载突变瞬间转速跌落很大恢复时间被拉长。ADRC的思路不一样它不试图精确建模而是把系统内部的未建模动态和外部的负载扰动统统合并成一个“总扰动”然后用扩张状态观测器ESO把这个总扰动实时估计出来并在控制量里直接减掉。换句话说PI是让误差慢慢归零ADRC是看见了扰动就当场把它抵消。这个“当场抵消”的冲动感就是暴力美学的第一层含义。4.2 线性扩张状态观测器的离散实现以速度环为例把电流环闭环后的对象近似为dω/dt b0 * iq_ref f(ω, TL, ...)其中f是总扰动b0是控制增益估计。这里的b0不需要准确别差一个数量级就行。取状态变量x1 ωx2 f那么扩张状态观测器的连续形式是ẑ1 z2 b0u l1(ω - z1)ẑ2 l2*(ω - z1)其中z1估计转速z2估计总扰动。参数l1、l2根据观测器带宽ωo确定l1 2*ωol2 ωo²。这样写的好处是只需要调一个ωo而不是调两个PI参数。离散化时用最简单的欧拉法在速度环周期Ts里迭代// LADRC速度环Ts为速度环周期 // omega_ref为给定转速omega为反馈转速b0为控制增益估计 float z1, z2; // z1: 转速估计, z2: 总扰动估计 float e z1 - omega; z1 (z2 b0 * iq_ref - 2 * wo * e) * Ts; z2 ( -wo * wo * e ) * Ts; // 控制律带宽为wc的PD控制器 扰动前馈补偿 float iq_out (wc * wc * (omega_ref - z1) - z2) / b0;这个实现里其实只有三个参数观测器带宽ωo、控制器带宽ωc、控制增益b0。ωc决定跟踪速度ωo决定扰动估计能力b0只是一个粗略的控制增益。整定过程可以直接按“带宽法”先定ωc满足速度响应要求再让ωo 3~5倍ωcb0按电机参数粗估调试时微调。4.3 三个参数怎么暴力而克制地调粗暴版本是这样的ωc给到100~200rad/sωo给到500~1000rad/sb0按J估算后直接上电。如果转速反馈噪声大先把ωo降下来再看阶跃响应要不要调高ωc。这套流程比调PI直观得多基本不需要来回折腾Kp和Ki的组合。不过我也要说清楚“暴力”的边界在哪。ADRC的观测器本质上是一个高频增益环节ωo越高观测噪声放大越明显。转速采样上有量化噪声或者编码器零位误差时ωo拉太高会让q轴电流包含明显的高频毛刺。如果出现这种情况不要硬扛把ωo降到转速噪声可以被接受的范围同时通过ωc把期望的动态性能拉回来。实践证明只要转速反馈本身不是特别烂LADRC的鲁棒性足够覆盖参数失配。还有一点值得专门提b0给错了会发生什么b0偏小补偿力度不足扰动抑制变弱但系统通常还能稳定b0偏大补偿过猛转速会表现出高频振铃。排查这种问题不要靠感觉直接看iq指令波形如果iq指令在负载突变瞬间有一个明显过头的大尖峰再把b0适当调小。5. 联调实录三次关键修正从畸变电流到稳如磐石的转速前4章把每个模块的原理和实现原则拆完了这一章我按真实排错的顺序记录一下把整套系统从“能转”调到“好使”的过程中遇到的三次关键修正。5.1 第一刀扇区判断反了相电流出现直流偏置现象是电机能转、转速能闭环但三相电流波形不对称某一相电流明显带直流偏置电机噪声偏大。当时我先查采样偏置、电流调零都正常后来把所有电压指令设成固定幅值和固定角度开环看相电流才发现电压矢量对不上。定位思路很简单给一个固定的Uα 0.1V、Uβ 0V的电压指令理论上电压矢量应该严格指向α轴方向此时A相电流应最大、B相C相基本对称分流。但实际波形显示的是A、B相电流都有成分且不对称那几乎可以断定是扇区判断的映射关系错了。逐项检查后发现扇区编号与矢量顺序之间少了一步映射相当于整个扇区平移到相邻位置。修正映射后开环电流波形立刻变为对称正弦闭环后直轴电流也不再出现2次波动。5.2 第二刀死区补偿解决低速轻载的过零畸变第二轮问题是低速轻载工况下q轴电流出现明显6倍频脉动波形在过零处出现台阶状畸变。这个6倍频特征非常典型SVPWM产生的电压误差跟三相电流方向有关方向每换一次就产生一次突变一个电周期里三相电流各过零两次正好6次。我用的是开环电压前馈叠加补偿锁定三相电流方向在输出PWM占空比上叠加补偿量。补偿量的来源很简单就是死区时间乘上开关频率再除以母线电压。比如死区2us、PWM频率10kHz、母线电压24V那补偿占空比约0.0002×10000/24 ≈ 0.083也就是每相在每个周期人为加宽或收窄约8.3%的占空比。这个补偿量不算小效果也立竿见影低速轻载下q轴电流的6倍频脉动从约0.15A压到了0.05A以内声音也干净了很多。5.3 第三刀LADRC带宽拉上去之后的振荡与b0修正最后把速度环从PI换成LADRC。第一次上电我把ωc设成80rad/s、ωo设为400rad/sb0按转动惯量估了一个值空载阶跃响应很好。但加到50%额定负载突变时转速跌落虽然比PI控制小了一半却在恢复过程中出现了一小段高频振铃。我把ωo从400降到300后振铃消失但负载突变恢复时间又变长了一些。后来对照iq指令波形发现负载突变瞬间q轴电流尖峰明显偏大判断是b0偏大导致补偿过冲。把b0调小约20%后振铃和恢复时间同时得到改善。这次经历让我确认了一个观点ADRC参数只有两三个确实比PI好调但要出好性能也得在示波器上看波形而不只是看仿真里的响应曲线。任何控制算法到了硬件现场最终都是要跟真实噪声、真实延时效应的博弈。6. 最后分享一点我自己的调试体会整套系统从SVPWM一路做到ADRC之后我最大的体会就是不要一开始就把希望寄托在“高级算法”上。SVPWM的扇区映射、死区补偿、电流环采样对齐这些基础工作没做扎实换ADRC也只是把底层的烂波形包装成一个更漂亮的转速曲线。反过来底层调制和电流环扎实了哪怕PI参数粗一点系统也已经能稳定跑起来ADRC是在这个稳定的底子上给你额外的鲁棒性和动态表现。参数整定上再多说一句我后来给入门的朋友讲的时候都会强调电流环的内模法算参数和速度环的带宽搭配法比盲目试凑靠谱得多但也别拿着公式算出来的参数当最终值。现场环境里的母线电压波动、温度变化、电缆电感都会让对象参数偏离理论值所以学会“看波形微调”才是一辈子受用的功。波形看什么呢一是看三相电流是否对称正弦、过零处有无畸变二是看q轴电流有没有多余的纹波和尖峰三是看转速阶跃时的超调量和恢复时间。如果你也想往下深入建议在LADRC跑顺之后试着把观测器估计出来的扰动信号接到上位机里录下来你会发现负载突变时的扰动波形基本跟转矩变化趋势一致那一刻才算真正理解了ADRC所谓的“暴力”是怎么回事。

相关新闻

C语言选择法排序核心原理与代码逐行拆解,附常见错误分析

C语言选择法排序核心原理与代码逐行拆解,附常见错误分析

“习题7-1”——看到这个编号,估计不少人都能想起被C语言教材第七章支配的日子。数组刚讲完,函数刚入门,冷不丁冒出个“选择法排序”,要求把一串乱序数字排好。说实话,这道题的代码量不大,核心逻辑也就十来…

2026/10/19 2:39:48 阅读更多 →
虚拟声卡完全指南:音频路由原理、配置与实战排查

虚拟声卡完全指南:音频路由原理、配置与实战排查

简介:基于微软虚拟音频设备示例(MSVAD)的虚拟声卡实现源码包,面向Windows音频驱动开发学习者与底层编程爱好者,旨在演示如何通过软件模拟创建虚拟音频设备,并实现DirectSound、WASAPI/Core Audio等接口的对…

2026/10/19 2:39:47 阅读更多 →
AI辅助论文写作攻略:核心工具拆解与实操避坑指南

AI辅助论文写作攻略:核心工具拆解与实操避坑指南

写论文的人最近都在聊AI。从开题报告到文献综述,再到最后的参考文献列表,各家AI论文生成工具几乎把写作链条上的每个环节都覆盖了一遍。我前后试过几类主流工具,也帮某同学和某同行跑过完整体验流程,结论很直接:工具确…

2026/10/19 2:39:47 阅读更多 →

最新新闻

CSerialPort串口类2017修正版:稳定嵌入工业控制的Win32封装

CSerialPort串口类2017修正版:稳定嵌入工业控制的Win32封装

简介:这是一份面向C开发者,特别是Windows平台串口通信初学者与中级工程师的轻量级串口类封装资源。CSerialPort类经2017年最新修正,显著降低MFC依赖性,新增_AFX宏适配MFC环境,并提供纯Win32验证程序,使非MF…

2026/10/19 5:54:34 阅读更多 →
STM32+有人4G模块接入阿里云IoT完整实践指南

STM32+有人4G模块接入阿里云IoT完整实践指南

简介:本资源是一套完整的STM32嵌入式设备接入阿里云IoT平台的实战工程,面向具备C语言与STM32基础的物联网开发者及高校电子类专业学生,解决4G远程通信、云平台身份认证与双向数据交互等核心问题,适用于工业监控、智能硬件原型开发…

2026/10/19 5:54:34 阅读更多 →
Python Web应用部署实战:Docker+Nginx实现稳定上线

Python Web应用部署实战:Docker+Nginx实现稳定上线

部署Python Web应用这事儿,看起来简单,实际操作中能绊倒人的地方其实不少。本地用Flask写个Demo,起个服务跑得飞快,一旦要放到服务器上常驻运行,还要面对域名、反向代理、数据持久化、日志、自动重启这些问题&#xff…

2026/10/19 5:54:34 阅读更多 →
artcraft:面向人机协同的高精度创意控制范式

artcraft:面向人机协同的高精度创意控制范式

1. “Artcraft”不是新词,而是被低估的创作范式重启信号最近在几个设计类社区和开源项目讨论区里,“artcraft”这个词突然高频出现,但没人给它下定义。它不像“generative design”那样有明确的技术边界,也不像“digital craft”那…

2026/10/19 5:54:34 阅读更多 →
MEXA-324M汽车尾气测量仪实战全解:从原理到维修诊断

MEXA-324M汽车尾气测量仪实战全解:从原理到维修诊断

上个月,一位客户开着他那辆快十年的老车进店,说年检没过,单子上写着HC超标。他问了好几家店,有人说换火花塞,有人说洗喷油嘴,折腾了一圈回来复检还是不行。我们师傅把MEXA-324M尾气测量仪的探头往排气管里一…

2026/10/19 5:54:34 阅读更多 →
Diagram as Code:用可执行图表构建系统逻辑骨架

Diagram as Code:用可执行图表构建系统逻辑骨架

1. 项目概述:这不是画图,是构建可执行的系统逻辑骨架“diagram-design”这个标题乍看像一个设计类工具操作,但在我过去十年带过的几十个跨领域项目里,它从来不是美术课——而是工程师、产品负责人、运维人员和业务方坐在一起&…

2026/10/19 5:53:33 阅读更多 →

日新闻

频率跟踪型PWM电源设计:臭氧发生器谐振点漂移与软开关实现

频率跟踪型PWM电源设计:臭氧发生器谐振点漂移与软开关实现

简介:本资源为电源技术方向的学术研究文档,聚焦介质阻挡放电型臭氧发生器电源的频率跟踪型PWM控制策略,面向电力电子、高压电源及臭氧应用领域的科研人员与工程技术人员。针对负载呈容性、等效电容随外加电压升高而增大、谐振频率随之漂移的难…

2026/10/19 0:00:47 阅读更多 →
Vibe Coding 遇上 TaoToken:把开发者思维圣殿的灵感流接入统一 Key 通道

Vibe Coding 遇上 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/19 0:00:47 阅读更多 →
HundredCV-Chat话题建模实战教程:利用4,871个内置话题标签构建主题分析系统

HundredCV-Chat话题建模实战教程:利用4,871个内置话题标签构建主题分析系统

【免费下载链接】HundredCV-Chat 项目地址: https://ai.gitcode.com/hf_mirrors/Jax-dan/HundredCV-Chat 点击查看 免费下载 HundredCV-Chat 是一个由 100 位青年简历数据开发而来的中文多轮对话数据集,共包含 24,750 组日常闲聊对话和 4,871 个话题标签…

2026/10/19 0:00:47 阅读更多 →

周新闻

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

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

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

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

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

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

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

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

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

2026/10/19 1:30:52 阅读更多 →

月新闻

我发现了一个新思路:用 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/19 2:54:50 阅读更多 →
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/17 17:22:31 阅读更多 →
黑夜航拍船只数据集训练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/18 12:16:16 阅读更多 →