永磁同步电机无感FOC实战:龙贝格观测器与PLL锁相环方案解析

前阵子把一套基于龙贝格观测器的永磁同步电机无感FOC方案从仿真搬到了实机台架,整个过程前后折腾了小两个月。核心思路很直接:用龙贝格观测器在线提取电机反电势,再用PLL锁相环从反电势里解出转子位置和速度,完全甩掉编码器和旋变,让驱动器在成本和可靠性上都有了质的提升。

这篇文章不是教材复读,是我从方案选型、观测器建模、PLL环路设计,到仿真验证、实机调试、参数整定一路走下来的完整复盘。包括那些仿真里根本看不出来的坑、示波器上反复折磨人的波形、以及最后怎么一步步把问题按下去的。如果你正准备做无感FOC,或者已经在做但卡在某一步,这篇文章应该能帮你省不少弯路。

1. 方案选型:为什么最终选了龙贝格观测器加PLL

1.1 无感FOC解决的是真问题

先说背景。某项目需要做一台中功率工业风机的驱动器,原方案是编码器反馈的FOC。但现场环境粉尘大、温度高、振动强烈,编码器这种东西在这种工况下就是消耗品,坏一个就要停机拆装,维护成本相当难看。换无感方案之后,电机侧只剩三相动力线,控制器放远端,整个系统的可靠性和抗恶劣环境能力立刻上了一个台阶。

理论上无感FOC的收益谁都清楚:省掉传感器、减少接线、降低系统成本、提高环境适应能力。但真正落地的时候,核心问题就变成了"转子位置从哪来"。永磁同步电机的矢量控制质量直接取决于转子磁极位置信息的准确性,没有了传感器,位置只能靠算法去"猜",猜得准不准、噪声大不大、抗不抗负载扰动,这才是无感方案的分水岭。

1.2 主流观测器路线对比

无感转子位置估算大致有三大流派:

  • 滑模观测器:基于滑模变结构理论,对参数误差鲁棒性好,但输出信号抖动大,通常要加低通滤波,而低通滤波会带来相位延迟,高速段尤其明显,后期得做角度补偿,工程上比较繁琐。
  • 扩展卡尔曼滤波:精度高、适用于宽调速范围,但矩阵迭代计算量偏大,对主控芯片算力有要求,而且调试时噪声协方差矩阵的设置很依赖经验,调参如同玄学。
  • 龙贝格观测器:本质上是一个带反馈校正的全维状态观测器。相比滑模,它的输出连续、没有抖振;相比扩展卡尔曼,它的计算量小得多,工程实现也直白。而且在"反电势作为扩展状态"这种模型下,它比普通状态观测器更贴合永磁同步电机的实际工况。

我最终选的是龙贝格观测器。从效果上看,它把反电势当成一个"慢变状态"来重构,电流估计误差通过增益反馈实时修正,得到光滑的反电势波形,后面接一个PLL锁相环提角度。这套组合在中高速段表现非常好,低速段再配合I-F开环起动策略兜底,基本能覆盖我项目里的调速范围。

1.3 为什么PLL而不是直接atan2

从反电势换算出转子角度,最朴素的做法是直接对两个轴分量做arctan运算。但实际跑起来就会发现,观测器输出的反电势波形是有畸变和噪声的,直接atan算出来的角度在过零点附近会剧烈跳变,转速反馈也会被噪声严重污染。

PLL等于一个非线性跟踪滤波器:它不关心单点瞬时值,而是通过闭环强制让估计角度持续跟踪真实角度,这天然带积分滤波效果。反电势里的谐波和高频噪声到了PLL的积分环节会被大幅压制,输出的角度和速度都干净得多。这是我在方案选型时最坚决的一个决定:无论观测器输出质量如何,后面一律接PLL,不做绝对角度的直接反算。

2. 龙贝格观测器原理拆解:从电机方程到反电势重构

2.1 永磁同步电机在αβ坐标系下的电压方程

先把家底摆出来。假设电机是表贴式永磁同步电机(L_d = L_q = L),在αβ静止坐标系下的电压方程为:

u_α = R·i_α + L·di_α/dt + e_α u_β = R·i_β + L·di_β/dt + e_β

其中反电势分量为:

e_α = -ψ_f·ω_e·sin(θ_e) e_β = ψ_f·ω_e·cos(θ_e)

这里的θ_e是转子电角度,ω_e是电角速度,ψ_f是永磁体磁链。从反电势分量可以直接看出,它的幅值正比于ψ_f与ω_e的乘积,相位信息里就藏着转子位置。电机一旦转起来就有反电势,反电势的方向和转子位置是严格对应的,所以无感方案的本质是"从电压电流波形里把反电势这颗信号挖出来"。

2.2 将反电势作为扩展状态量构建观测器

问题的难点在于:反电势不是可以直接测量的状态,它被埋在电压方程里,我们需要通过可测量的电压u和电流i把它估计出来。这就轮到龙贝格观测器出场了。

关键假设是:在单个电气周期内,转速变化相对缓慢,可以近似认为d e_α/dt ≈ 0,d e_β/dt ≈ 0。于是我把反电势当作两个扩展状态变量,和电流一起构成四阶状态方程:

di_α/dt = -R/L·i_α + u_α/L - e_α/L di_β/dt = -R/L·i_β + u_β/L - e_β/L de_α/dt = 0 de_β/dt = 0

写成紧凑形式就是 x_dot = A·x + B·u,状态向量 x = [i_α, i_β, e_α, e_β]^T。现在构建观测器,用估计电流与实测电流的误差来校正全部四个状态:

dî_α/dt = -R/L·î_α + u_α/L - ê_α/L + k1·(i_α - î_α) dî_β/dt = -R/L·î_β + u_β/L - ê_β/L + k1·(i_β - î_β) dê_α/dt = k2·(i_α - î_α) dê_β/dt = k2·(i_β - î_β)

这个结构的物理含义非常清楚:电流估计方程里包含了反电势估计项,如果反电势估计不准,电流估计就会产生偏差;反过来,电流估计偏差通过k1反馈修正电流、通过k2修正反电势。两个增益一配合,观测器就把反电势从电压方程的"干扰项"变成了可观测状态。

2.3 观测器增益的极点配置与工程选值

增益k1和k2不能拍脑袋乱给。把α轴误差方程写出来分析:

dΔi/dt = -(R/L + k1)·Δi - Δe/L dΔe/dt = -k2·Δi

其中Δi = i - î,Δe = e - ê。这两个动态方程合在一起,特征方程为:

s² + (R/L + k1)·s + k2/L = 0

如果想让观测器误差按二阶系统收敛,把它与经典二阶形式 s² + 2ζ·ω_o·s + ω_o² = 0 对照,就能解出:

k1 = 2ω_o - R/L k2 = ω_o²·L

工程上阻尼ζ取1(临界阻尼),ω_o取观测器带宽。我实际系统里电机参数L=2mH,R=0.5Ω,主控运行频率10kHz,观测器带宽ω_o取了大约1500rad/s。算出来k1 = 2750,k2 = 4500。这个带宽下反电势估计的幅值相位都比较均衡,既跟得上转速变化,又不至于把电流噪声放大得太厉害。

提示:观测器带宽并不是越大越好。带宽太高,电流采样噪声会通过反馈增益直接注入反电势估计里,角度抖动立刻变大;带宽太低,反电势跟踪滞后,稳态角度误差会随转速升高不断增大。我的经验边界是:观测器带宽大概取电流环带宽的三分之二到二分之一之间,留足稳定裕量。

3. PLL环路:怎么从反电势里稳定锁出转子角度

3.1 直接atan2的问题与PLL的数学本质

如果反电势是理想正弦波,角度自然可以由 e_β / e_α 的atan得到:

θ_e = atan2(-e_α, e_β)

但这个做法在实际里非常脆弱。反电势幅值正比于转速,低速时信号只有几十毫伏,过零点附近的噪声会让atan结果在几个角度之间疯狂跳变。就算滤波过得去,atan也不是一个线性系统,谐波干扰会直接变成角度上的非线性畸变。

换成PLL之后,问题视角完全不同。PLL不再试图直接读瞬时角,而是通过一个闭环让本地估算角度去"逼平"真实角度。误差信号用反电势在估算dq坐标系上的投影来做。我把观测器输出的反电势估算值ê_α、ê_β投影到估算角度θ̂的dq轴上:

ε = ê_α·cosθ̂ + ê_β·sinθ̂

代入理想反电势表达式,展开得到:

ε = -E·sinθ·cosθ̂ + E·cosθ·sinθ̂ = E·sin(θ̂ - θ)

角度误差很小时,sin(θ̂ - θ) ≈ θ̂ - θ,所以ε近似正比于角度误差。这就是PLL的鉴相器。

3.2 误差信号到角度输出的完整信号链

PLL的环路结构分为三块:鉴相器(PD)、环路滤波器(PI)、压控振荡器等效积分环节。

误差 ε → PI控制器 → 估速 ω̂ → 积分 → 估算角度 θ̂ ↑ │ └──────── 反馈到鉴相器 ──────────────┘

PI控制器输出的就是估算电角速度ω̂,再积分一次就得到估算角度θ̂。θ̂送回鉴相器计算新的误差,闭环就这么形成了。PI的参数直接决定环路带宽和阻尼比。与标准二阶环路对照:

H(s) = (k_p·s + k_i) / (s² + k_p·s + k_i)

所以:

k_p = 2ζ·ω_n k_i = ω_n²

我系统里PLL自然频率ω_n取了300rad/s,阻尼ζ=0.707,算出来k_p≈424,k_i≈90000。

3.3 反电势幅值补偿:让PLL在宽转速范围内保持一致带宽

有一个坑在仿真里特别容易忽略:PLL误差信号ε的增益是随转速变化的,因为ε表达式里乘了一个E = ψ_f·ω_e。转速低时E小,环路增益低,PLL响应变慢;转速高时E大,环路增益高,PLL可能变得过于激进甚至振荡。

这也是为什么很多工程实现里会把误差做归一化。具体做法是估算反电势幅值:

Ê = sqrt(ê_α² + ê_β²)

然后把误差除以Ê,使PLL的增益在理论上不再随转速大幅变化。我在代码里加了这个归一化,转速从5%额定到100%额定的动态响应特性基本一致,这是一个纯仿真转实机之后最容易踩中、又最容易修正的问题。

4. 从仿真到台架:无感FOC落地的完整流程

4.1 第一版仿真模型搭建要点

我在仿真工具里搭模型时,刻意把数字离散化这一环提前考虑进来。观测器和PLL都是离散模型。观测器用前向欧拉离散化,采样周期T_s = 0.0001s(10kHz),那α轴的观测器迭代代码大致是:

// 电流误差 err_alpha = i_alpha - i_alpha_hat; err_beta = i_beta - i_beta_hat; // 状态更新 i_alpha_hat += T_s * ( (-R/L) * i_alpha_hat + u_alpha/L - e_alpha_hat/L + k1 * err_alpha ); i_beta_hat += T_s * ( (-R/L) * i_beta_hat + u_beta/L - e_beta_hat/L + k1 * err_beta ); e_alpha_hat += T_s * ( k2 * err_alpha ); e_beta_hat += T_s * ( k2 * err_beta );

仿真跑通之后,把电机模型参数设置成和实物电机辨识结果一致,反电势波形和角度误差都看着正常,我才敢往实机上搬。仿真最大的价值在于先把控制结构验证清楚,但它永远代替不了实机调试,因为仿真里的采样是理想同步的、逆变器是理想开关的、电流没有噪声——这些"理想"恰恰是实机调试耗时间的根源。

4.2 实机验证前的硬件与软件准备

上电之前有几件事必须先做好:

  • 电流采样标定:采样通道的零点漂移会导致电流波形畸变,进而让反电势估计信号里混入直流偏置和谐波,角度会飘。我用软件零点校准把无电流时的采样值扣除,这一步不能省。
  • 三相电流重构正确性:确认Clark变换的相序和电机UVW接线对应,相序错了整套算法全盘皆输。
  • 逆变器死区设置:死区时间会给电压方程引入误差,而观测器对电压非常敏感。我用了电流极性判断的脉宽补偿法,把死区引起的电压误差补回PWM占空比里。

注意:死区补偿做不好,低速重载时反电势波形会带有明显六脉波毛刺,PLL角度纹波同步出现。如果你发现角度在每60°机械角度附近规律性跳动,先检查死区补偿,不要急着去调PLL参数。

4.3 启动策略:I-F开环强拉到闭环切换

无感方案最大的软肋在零速和极低速。零速时反电势为零,观测器无信号可用,PLL自然也锁不住。我的启动策略分三段:

第一步预定位:给定一个固定方向的电流矢量(我取额定电流的60%),持续100ms,把转子强行拖到已知位置。这样保证初始角度明确。

第二步I-F强拉:电流幅值保持在额定值附近,电流相位角以设定斜率匀速增大,相当于用电流矢量的旋转把转子逐步带起来。频率斜坡斜率一般取额定转速的5%每秒到10%每秒,太快容易失步。

第三步闭环切换:判断无感估算速度和I-F给定速度偏差小于5%,且估算角度与I-F给定角度偏差小于15度时,把电流角度源从I-F给定切换到PLL输出。切换瞬间我会加一个软切换斜坡,用300ms左右把角度源从开环角度连续过渡到闭环角度,避免电流突变引发过流。

// 角度源软切换 if (switch_active) { theta_cmd = theta_if * (1 - switch_ratio) + theta_hat * switch_ratio; switch_ratio += 1.0 / (T_switch * Fs); // T_switch约0.3s if (switch_ratio >= 1.0) { switch_active = 0; } }

这一套流程下来,启动可靠性和切换冲击都控制得比较好。很多无感方案调不通,不是观测器问题,而是启动和切换那一步没做好。

5. 参数整定的实战经验:带宽匹配与参数偏差影响

5.1 电流环、观测器、PLL、速度环的带宽分配

实测下来,无感FOC调参最大的原则是:从里到外带宽递减,每级之间至少隔开三到五倍。这是我最终稳定的带宽配置:

控制环路带宽(rad/s)说明
电流环2000离散系统10kHz采样下的稳定上限
龙贝格观测器1500在电流环带宽之内,保证反电势估计稳定
PLL300压制反电势噪声,响应足够快
速度环80无感系统速度反馈噪声比编码器大,不能太高

如果PLL带宽和观测器带宽靠得太近,整个估角环路会出现谐振耦合,表现是转速稳态波动加大,怎么调PI都压不下来。把带宽逐级拉开,问题立刻缓解。

5.2 电阻电感偏差对角度精度的影响

龙贝格观测器的状态方程里用到了R和L,参数偏差会直接影响反电势的估计精度。根据电压方程,电阻压降R·i在低速时占比很高,如果R设得偏小,实际上任意一段负载电流都会被误算成反电势变化,低速角度会偏。电感L偏大或偏小,会让反电势估计出现相位偏差,表现为一个随负载电流大小变化的角度误差。

调试时判断方法很直观:给定一个固定转速、突加负载,看估算角度和真实角度(我调试时临时保留编码器对比)的偏差是否随电流变化。如果偏差随电流直线变化,优先怀疑Rs不准;如果偏差基本固定不变,优先怀疑Ls和死区补偿。

5.3 负载突变时的观测器行为

PMSM无感系统在突加负载时容易出现短时角度冲激,原因在于电流突变引起反电势估计误差瞬间增大。我遇到的情况是:额定负载突加,PLL估算角度瞬时偏了差不多20度,然后大约80ms内拉回,这期间电流纹波明显变大。

解决思路分两步。一是观测器带宽稍微提上去一点,让反电势估计更快跟上电流变化;二是PLL的积分环节加了抗饱和限幅,防止突加负载时PI积分饱和导致角度长时间拉不回。这两步配合后,突加负载的瞬态角度偏差控制在10度以内,系统稳定性可接受。

6. 实机调试踩过的坑:现象、排查链路与最终对策

6.1 高速段角度抖动:噪声在PLL里被放大了

现象:转速到80%额定以上,反电势波形看着还不错,但PLL输出角度有高频抖动,速度环噪声明显变大,电机高速运行时电流谐波增大、温升变快。

排查链路:先看电流采样波形,发现载波周期处的采样点抖动很大,由于10kHz采样下开关噪声没有完全避开。再把观测器输出接出来看,电流误差上叠加了明显的开关毛刺。最后锁定问题出在采样时序上。

对策:把电流采样触发点从PWM载波顶点改到了开关周期中间,并增加了硬件滤波电容。采样毛刺压掉之后,观测器输出的反电势噪声大幅下降,PLL角度抖动从约3度降到0.3度以内。

6.2 反转误检测:三相接线顺序的坑

现象:I-F启动阶段一切正常,切换到无感闭环后电机忽然反转,差点把风机叶片倒转打坏设备。

排查链路:先怀疑PLL误差符号错了,把ε表达式符号反转试了一版,结果开环切换时直接过流保护。冷静下来重新梳理才发现:最初做Clark变换时,三相电流采样顺序和电机UVW端子的实际接线顺序没对齐,导致电流空间矢量旋转方向跟模型里假设的方向相反。观测器和PLL本身没算错,是坐标变换的"参考系"反了。

对策:把三相采样顺序调整成与电机接线对应后,正反转问题彻底消失。这个排查过程很折磨人,但也让我把整套坐标变换和相序关系彻底吃透了。

6.3 重载带不起来:不是算法不行,是启动参数不行

现象:空载和轻载下启动、调速都正常,负载加到60%以上,I-F强拉阶段出现失步,电流冲到限幅值,系统反复启动失败。

排查链路:观察I-F阶段的实际电流波形,发现在频率斜坡过程中电流幅值虽然给定没变,但因为负载增大、转子实际位置滞后于I-F给定角度,电流分解到d轴和q轴的比例变了,实际产生的电磁转矩不够。这就是I-F强拉的力矩能力和角度滞后的博弈问题。

对策:把I-F启动电流从额定的80%提高到110%,频率斜坡斜率从每秒10%额定转速降到每秒4%。给足电流余量、放慢加速度之后,重载启动成功率从60%左右提升到接近100%。这里我的经验是:I-F启动阶段宁可电流大一点把转子死死拉住,也不要为了省电流把启动弄得紧张兮兮,失步一次重新拉起花的代价更大。

最后再分享一点实际体会:无感FOC这套东西,仿真能给你信心,但真正决定成败的是实机调试里的细节。采样时序、死区补偿、参数辨识精度,随便一项做得糙一点,前面的算法再好也白搭。做无感FOC,最忌讳的是在仿真里跑得漂亮就以为万事大吉,那只是万里长征走完了一半。另一半,全靠你在台架上一遍遍地看波形、测数据、调参数,没有捷径。

相关新闻

深入理解C++ std::string:存储机制、性能陷阱与避坑指南

深入理解C++ std::string:存储机制、性能陷阱与避坑指南

刚开始用C那会儿,我对std::string的理解就是“一个会自动长大的字符数组”。但真正在工程里写多了之后,我发现自己对它的误解比想象中要多。字符串处理几乎无处不在,无论是解析配置、拼接日志,还是做协议编解码,string…

2026/10/20 6:48:42 阅读更多 →
C++模板元编程实现选择排序

C++模板元编程实现选择排序

前言 模板元编程(template metaprogramming, TMP)是在编译期用类型和常量完成计算的技术。它的"变量"是类型与 static constexpr 值,"函数"是类模板特化,"循环"是递归实例化,"条件…

2026/10/20 6:48:42 阅读更多 →
100行代码手写Hermes式智能体框架并接入飞书机器人

100行代码手写Hermes式智能体框架并接入飞书机器人

1. 为什么我要自己动手写一个智能体框架1.1 从“玩具”到“工具”的转折点市面上开源的智能体框架我几乎都翻过一遍。LangChain 生态庞大,但依赖链太长,一个简单的对话循环要引入几十个包;AutoGen 的多智能体协作很惊艳,可一旦要接…

2026/10/20 6:48:42 阅读更多 →

最新新闻

Abaqus隧道空洞模拟:地表沉降有限元分析建模方法与工程应用

Abaqus隧道空洞模拟:地表沉降有限元分析建模方法与工程应用

从实际项目出发,我接到过一个很有意思的模拟任务:用Abaqus分析隧道施工中形成的空洞对地表沉降的影响规律。这类问题在岩土工程里特别典型——城市地下管线破损、盾构注浆不密实、矿山采空区塌落,都会在地层内部留下空洞,而地表沉…

2026/10/20 7:38:07 阅读更多 →
轻量级Coding Agent设计:如何通过架构减法节省58.7% Token

轻量级Coding Agent设计:如何通过架构减法节省58.7% Token

1. 项目概述:一个轻量级 Coding Agent 的诞生逻辑“我做了一个 Coding Agent,结果比 Claude Code 少用了 58.7% Token”——这句话刚在技术社区刷屏时,我第一反应不是惊讶,而是立刻点开原文代码仓库,翻看它的 prompt 结…

2026/10/20 7:38:07 阅读更多 →
用APIKit与Param Miner挖掘隐藏API端点:Burp Suite主动探测实战指南

用APIKit与Param Miner挖掘隐藏API端点:Burp Suite主动探测实战指南

先问个扎心的问题:做接口测试或者安全评估的时候,你是不是还停留在“开Burp、挂代理、点开HTTP History看请求”这个阶段?如果是,那我要说一句可能不太中听的话——你手里的Burp Suite,至少有一半的潜力被你浪费了。经…

2026/10/20 7:38:07 阅读更多 →
MIL-C-5015军规连接器振动加速度传感器:选型安装与排查

MIL-C-5015军规连接器振动加速度传感器:选型安装与排查

干设备状态监测好些年,有一类传感器是小众但特别关键的——带军规连接器的振动加速度传感器。光看名字“MIL-C-5015振动加速度传感器5/8-24UNF军标连接器”就够劝退了,但如果你在航空发动机试车台、燃气轮机厂房、重型机械现场转过一圈,一定会…

2026/10/20 7:38:07 阅读更多 →
杰理平台time PWM实战:定时器比较输出的配置与踩坑指南

杰理平台time PWM实战:定时器比较输出的配置与踩坑指南

前阵子帮朋友调一块杰理平台的小板子,现象很蹊跷:按键控制LED亮度时,IO口确实有电平变化,但用示波器一看,波形完全不是PWM该有的样子,反而是一串不规则的脉冲,频率还飘。翻遍SDK里的例程&#x…

2026/10/20 7:38:07 阅读更多 →
纯.NET自绘打印模板设计器:拖拽式可视化与动态渲染

纯.NET自绘打印模板设计器:拖拽式可视化与动态渲染

简介:这是一套面向.NET开发者的C#可视化打印模板设计源码,纯.NET实现、不依赖任何第三方控件,适合需要为发票、报告、证书、标签及单据类业务快速搭建打印能力的初中级工程师。资源提供模板编辑器、图形设计工具与布局管理器等组件&#xff0…

2026/10/20 7:37:06 阅读更多 →

日新闻

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/19 10:02:04 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出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/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/19 9:10:22 阅读更多 →
黑夜航拍船只数据集训练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 阅读更多 →