基于二阶EKF的锂离子电池SOC估计Simulink仿真
“论文复现”这件事说白了就是把别人秀出来的结果重新做一遍看着容易真上手全是坑。这篇关于二阶EKF做锂离子电池SOC估计的Simulink仿真我当时对着论文和参考代码啃了好几天最深的感受是论文里最费笔墨的往往是算法公式推导而你真正卡住的地方反而是电池模型参数怎么定、噪声矩阵怎么给初值、以及在Simulink里怎么把迭代式的滤波过程跑起来。这篇文章不打算复述论文推导就按照我自己复现时的实际流程把建模、参数、EKF设计、Simulink搭建和调试踩坑完整过一遍给正在卡在SOC估计仿真这块的读者一条能直接走通的路。核心关键词就四个二阶RC等效电路模型、扩展卡尔曼滤波、Simulink仿真、SOC估计。1. 项目拆解一篇SOC估计论文到底在解决什么问题1.1 先弄清楚SOC估计为什么必须上卡尔曼滤波荷电状态SOC是电池管理系统里最基础也最难测的状态量。没人能直接拿电压表量出SOC工程上最笨的办法是安时积分也就是把电流对时间做积分。但这方法有两个硬伤一是初始SOC必须准确不然误差从头带到尾二是电流传感器有偏置和噪声积分久了漂移越来越严重。于是电池估算这个领域的所有算法本质上都在解决同一个问题——怎么在模型预测和测量值之间做一个最优折中把SOC这个不可直接测量的状态量“估”出来。卡尔曼滤波解决的就是这个问题。它按照状态方程做一步预测同时根据端电压的测量残差对预测值做修正。但锂离子电池的电压响应不是一个简单线性关系开路电压OCV和SOC之间的曲线明显非线性标准的线性卡尔曼滤波逻辑上不成立所以要用扩展卡尔曼滤波EKF把非线性函数在预测点附近做一阶泰勒展开对状态转移矩阵和观测矩阵进行线性化处理。这是整篇论文选EKF的根本原因。1.2 论文标题里的“二阶”指的是什么这里的“二阶”非常容易误解。有些读者一看“二阶EKF”以为是滤波算法里的二阶近似其实不是。这篇论文说的是电池模型用二阶RC等效电路模型也就是两个RC网络并联在电路里一个用来模拟电化学极化一个用来模拟浓差极化。相比一阶RC模型只有一个RC网络二阶模型多了一组极化时间常数能更好地刻画动态工况下端电压“先快后慢”的恢复特性。我复现的时候专门拿两组数据做对比脉冲放电结束后的端电压静置曲线一阶模型的拟合残差明显大尤其在长时间静置段误差能到几十毫伏而SOC估计的端电压残差直接耦合进卡尔曼增益的更新最终反映到SOC误差上就是整体精度的差异。这就是为什么论文要花那么大力气把模型提升到二阶的原因——模型精度决定了滤波器估计精度的上限滤波算法不能无中生有地提升模型差带来的偏差。1.3 复现前需要具备的几项前提如果你准备完整走一遍这篇论文的仿真我觉得提前做好三件事效率会高很多熟悉Simulink的基本模块操作拿得准MATLAB Function模块的输入输出怎么声明以及离散求解器步长怎么设置。知道二阶RC模型的端电压数学表达式至少能看懂状态方程和观测方程是如何离散化的。不排斥“调参”这件事。很多人觉得EKF的Q和R矩阵是某个神秘公式算出来的实际复现后你会发现这两个矩阵在相当大程度上是经验迭代出来的。另外有个建议先把数组/矩阵运算的MATLAB脚本版EKF做出来跑通之后再搬进Simulink。直接在Simulink图形化环境里一边推理一边查错误调试成本高很多。2. 电池建模全流程自己搭一个二阶RC模型2.1 二阶RC等效电路模型的拓扑结构二阶RC模型的拓扑很简单一个电压源OCV(SOC)串联一个欧姆内阻R0再串两个并联的RC网络分别是R1//C1和R2//C2。R0代表瞬间电压跌落的部分比如电流突变的瞬间端电压的突变R1C1对应电化学极化的快动态部分时间常数通常在几秒到几十秒R2C2对应浓差极化的慢动态部分时间常数可能超过几十秒甚至几分钟。写方程之前必须先明确方向约定。电流定义为正为放电方向那么端电压满足[ U_t OCV(SOC) - R_0i - U_1 - U_2 ]其中U1和U2分别是两个RC网络的端电压。两个极化电压各自满足一阶微分方程[ \dot U_1 -\frac{1}{R_1 C_1}U_1 \frac{1}{C_1}i ][ \dot U_2 -\frac{1}{R_2 C_2}U_2 \frac{1}{C_2}i ]SOC本身的更新则是经典的安时积分同时考虑库仑效率系数η单位统一为安培秒与容量Ah之间的换算[ SOC(t) SOC(0) - \frac{1}{3600C_n}\int_0^t \eta i(\tau)d\tau ]这几个方程后面EKF和Simulink全部要直接用模型如果搭错算法再正确都是无效的。2.2 参数怎么来从HPPC测试到拟合辨识不管是读论文复现还是自己写一篇论文模型参数不会写在标题里必须通过测试数据辨识得到。实际项目里最常用的是HPPC混合脉冲功率特性测试。流程大致是电池充满电静置若干小时然后以某个倍率恒流放电脉冲10秒静置40秒再以同样的倍率充电脉冲10秒静置再放掉一定容量到下一个SOC点周而复始。参数辨识的原理不复杂。电流突变瞬间的端电压跳变由R0决定所以R0 ΔU/i_instant脉冲结束后的弛豫阶段有两个明显的时间尺度先用指数分离的办法把慢时间常数和快时间常数从端电压恢复曲线中分出来然后用最小二乘拟合得到R1、C1、R2、C2。实际操作中我建议直接用MATLAB的曲线拟合工具箱或者写一个lsqcurvefit脚本效果好过手工逐段拟合。还有就是SOC-OCV曲线这个必须单独做。做法是每隔5%SOC静置足够长时间测量开路电压然后把数据点做插值形成查表。这条曲线的准确性直接影响EKF中观测矩阵的计算也直接影响滤波残差的计算。复现时不要用论文里的曲线直接搬电池化学体系不同OCV曲线会有偏移最好是拿到和自己仿真参数同源的电池实测数据。2.3 一个可以参考的参数表我复现时拿到的某款三元锂软包电池的参数大致如下SOC区间0.1~0.9的情况参数数值备注额定容量40 Ah用于SOC积分R05.5 mΩ欧姆内阻随SOC变化不太大R14.8 mΩ快极化内阻C11200 F快极化电容时间常数约6sR23.6 mΩ慢极化内阻C26000 F慢极化电容时间常数约20s以上采样时间Ts0.1 sSimulink固定步长注意这个表只是参考不同温度和电池状态下这些参数都会变。你的仿真里如果参数是固定常数那就意味着整个SOC估计是在同一温度、同一老化状态下工作的这符合论文常见设定但要知道这是理想的实验环境工程上还要做参数在线辨识或查表。2.4 离散化处理Simulink仿真用的是离散求解器所以要把连续微分方程离散化。最简单的方式是前向欧拉法。对采样周期Ts极化电压更新[ U_1(k1) U_1(k) \frac{T_s}{R_1 C_1} \left(-U_1(k) R_1 i(k)\right) ][ U_2(k1) U_2(k) \frac{T_s}{R_2 C_2} \left(-U_2(k) R_2 i(k)\right) ]SOC更新[ z(k1) z(k) - \frac{\eta T_s}{3600 C_n} i(k) ]这三个离散方程一起组成EKF的状态方程。前向欧拉法的前提是采样周期远小于系统最小时间常数0.1s对6s以上的时间常数来说完全满足条件但如果你在某个工况中用大步长比如5s就需要注意精度损失最好改成双线性变换或精确离散化。3. 二阶EKF算法设计从连续公式到可迭代的离散算法3.1 状态向量和观测方程的矩阵形式状态向量取三个量[ x_k [z_k, U_{1,k}, U_{2,k}]^T ]状态转移是线性的因为极化电压和SOC更新方程中没有互相耦合项输出方程是非线性的因为OCV(SOC)是非线性函数[ y_k OCV(z_k) - R_0i_k - U_{1,k} - U_{2,k} ]这正好是EKF的经典组合线性状态转移加非线性观测。比那些状态转移本身也强非线性的问题简单不少这对调试是个好消息。3.2 线性化雅可比矩阵F和H即使是二阶RC模型雅可比矩阵也相当好求。状态转移矩阵F是从状态方程中对状态量求偏导得到的3×3矩阵[ F \begin{bmatrix} 1 0 0 \ 0 1 - \frac{T_s}{R_1 C_1} 0 \ 0 0 1 - \frac{T_s}{R_2 C_2} \end{bmatrix} ]观测矩阵H是对状态量求偏导[ H_k \begin{bmatrix} \frac{\partial OCV}{\partial z}\bigg|_{z\hat z_k^-}, -1, -1 \end{bmatrix} ]这里最关键的项是OCV对SOC的偏导也就是OCV-SOC曲线在当前SOC值处的斜率。之前说过这个斜率是端电压残差能不能准确映射回SOC误差的桥梁。斜率大的区间比如SOC 20%-70%端电压一个小小的变化就能对应SOC的明显修正卡尔曼增益也会偏大斜率小的区间比如SOC 90%以上或10%以下端电压变化对SOC修正不敏感滤波估计会更依赖模型预测增益偏小。如果你的SOC长期运行在曲线平缓区必须意识到估计精度天然受限这时候改进方向不是盲目调大Q而是考虑加入其他观测源。3.3 完整的EKF迭代流程EKF每一步就是一个预测-修正循环我复现时的核心代码如下已经做了简化但保留了完整逻辑骨架% 预测 x_pred A * x_est B * i_k; % A即状态转移矩阵FB对应电流的驱动项 P_pred F * P_est * F Q; % 计算雅可比H dOCVdz interp1(SOC_OCV(:,1), SOC_OCV(:,2), x_pred(1), linear, extrap); H [dOCVdz, -1, -1]; % 计算预测端电压 U_pred OCV_interp(x_pred(1)) - R0 * i_k - x_pred(2) - x_pred(3); % 卡尔曼增益 K P_pred * H / (H * P_pred * H R); % 更新 innovation U_meas - U_pred; x_est x_pred K * innovation; P_est (eye(3) - K * H) * P_pred;代码里面的innovation就是端电压残差它等于传感器测到的端电压u_meas减去模型预测的端电压u_pred。当模型准确的时候innovation应该是一个均值为零、方差接近R的白噪声序列如果模型有偏差innovation会表现出有偏的模式。我在调试时最依赖的就是把innovation画出来看它的形态比单纯看SOC误差曲线能更快定位问题。3.4 噪声矩阵Q和R的经验取值方法Q和R的选择可能是整个EKF实现中最玄学的部分。论文一般不会给你一个可以直接用的值我给一个自己能快速起步的规则R是电压测量噪声方差来源是传感器精度比如电压传感器精度为±5mV那么R可以取(0.005/3)^2到0.005^2之间大约是3e-6量级。Q对应模型和电流噪声的不确定性。初始猜测可以设成diag([1e-4, 1e-5, 1e-5])这种量级然后逐步调大或调小观察响应速度和稳态误差的折中。Q越大滤波器越信任测量值收敛越快但稳态波动也越大Q越小则反之。我在复现时从diag([1e-4, 1e-5, 1e-5])起步当初始SOC故意设偏20%时经过大约几十秒才能拉回随后把Q的SOC项调大到1e-3收敛速度明显上升稳态误差和波动也在可接受范围。你如果想要一个“看起来不错”的收敛曲线Q的SOC项往大调但要注意那样滤波已经退化成开环修正innovation会越来越毛糙审稿人一眼能看出问题。4. Simulink仿真实现把滤波算法“跑起来”的关键操作4.1 顶层模型怎么搭把整个系统分成三层真实电池模型子系统、EKF估计子系统、工况输入与数据记录模块。这样做的好处是模型部分和控制算法部分可以独立调试互不干扰。我给一个推荐布局工况输入一个Signal Builder或者From Workspace模块给定电流序列i_k同时还需要把i_k接到真实电池模型和EKF估计器两路。真实电池模型内部用MATLAB Function或者Simulink基本模块搭出二阶RC离散方程输出真实端电压u_meas真值再叠加一个带噪声的测量信号代表传感器。EKF估计器输入i_k和带噪声的u_meas内部执行预测、线性化、增益、更新输出估计SOC。误差分析把真实SOC和估计SOC做差加Scope或者输出到工作区分析。电流信号既送给模型又送给估计器这本身是理想化设定实际系统电流测量有噪声但为了和论文口径一致先这样搭建没问题。4.2 用MATLAB Function实现EKF的细节Simulink里实现迭代过程我建议用MATLAB Function模块而不是写一堆Simulink基本模块做矩阵运算。原因很简单EKF本质是矩阵和向量运算画成模块图维护性太差代码方式更容易对照公式检查。MATLAB Function模块内不能定义persistent太大太复杂的数据但可以声明persistent数组来保存P矩阵和状态向量。注意把这个模块的采样时间设为和模型一致的离散步长0.1s。一个容易忽略的点是MATLAB Function模块默认的输入输出类型是double但如果你的电流和电压信号来自Simulink内部模块类型可能被推导为double这没问题如果你用了定点工具箱就得额外处理类型转换这次不用管。这里有一个关键经验把EKF的初始状态初始协方差P0放到模块的常量区或者作为外部参数传入。我建议把初始SOC故意设置为真实值的0.8倍比如真实0.9初始设0.7用于展示滤波的收敛能力这是论文仿真中常见做法。P0初始设置成diag([0.1, 1, 1])或者更大因为初始误差比较大协方差太小会让滤波器一开始就对预测状态过度自信收敛变慢。4.3 Lookup Table处理OCV-SOC曲线OCV曲线在Simulink里我建议直接用Lookup Table1-D Lookup Table模块或者直接在MATLAB Function里用interp1函数。两者的效果一样但前者在生成C代码时效率更高后者在调试时更灵活。如果你打算把仿真代码最终移植到嵌入式环境考虑用Lookup Table模块并勾选“使用固定断点”以方便生成查表代码否则直接interp1最方便。还有一点OCV曲线在SOC边界0和1附近的斜率可能非常大或非常小查表时的out-of-range行为要设置为限幅而不是外推否则H矩阵可能出现离谱的数值卡尔曼增益瞬间异常。4.4 初始化与步长设置仿真求解器选择discrete固定步长步长设0.1s。启动时间可以设长一点比如1000s到3000s。这里有一个小坑如果你用了enable或trigger子系统注意Simulink默认可能会跳过某些采样点导致离散状态更新错拍最简单的做法是不要用enable子系统直接让MATLAB Function在每个采样步执行。仿真时长可以按工况类型设置。恒流工况几百秒就够了动态工况建议一千秒以上噪声的随机种子也固定下来方便前后对比实验。固定随机种子的方法是在模型的InitFcn或者工作区设置RandStream这能让你的复现性大大提高论文作者一般都会固定仿真种子。4.5 工况设计的三层进阶复现论文不要只跑一个恒流放电那就太浪费这个框架了。建议设计三种工况基础恒流工况比如1C放电300s验证基本收敛性。适合排查模型是否有错。脉冲放电工况模拟间歇性负载检验极化电压动态跟踪能力。二阶模型在这里的优势比一阶更明显。动态工况用一个自定义的随机电流序列或参考标准工况中的某段时间模拟真实使用场景。这时候初始SOC误差可以故意设置20%以上检验滤波器在大误差下的鲁棒性。我复现时还加了一个小技巧在端电压测量上叠加高斯白噪声幅度约5mV。加上噪声之后EKF和纯安时积分的对比会变得特别有说服力——安时积分误差只增不减EKF的误差则被端电压信息约束在一个稳定范围内。5. 仿真调试实录误区、现象与排除思路5.1 卡尔曼增益变成零或者急剧发散这是最常见的故障模式。发生发散时观察的典型现象是SOC估计值偏离真实值很远端电压预测残差极大但卡尔曼增益K接近零滤波器根本不做修正。我遇到这种情况时排查的顺序是先检查H矩阵是不是OCV斜率算错了SOC在某个区间时dOCV/dZ是不是被外推出了一个极大值让增益计算走到数值边界再检查Q矩阵Q太小会让P矩阵收敛到很小的值增益随之趋近于零。把Q矩阵调大一个数量级一般能恢复。最后检查模型和真实模型是否一致如果估计模型里的R0、RC参数和真实模型用的不一致端电压预测残差就会持续大于R描述的范围滤波器会在“信任模型”和“信任测量”之间出现严重误判。5.2 收敛速度可以接受但稳态误差大调整Q和R的比值。稳态误差大的常见原因是测量噪声R设得过小滤波器过于信任每个测量点导致SOC估计被电压测量噪声牵着走另一个原因是模型参数不匹配比如OCV曲线在平坦区时SOC变化对应电压变化太小导致信息不足。这种时候可以观察端电压残差如果残差交变但SOC误差稳定多半是噪声参数问题如果残差在特定工况段持续偏置就必须回头处理模型参数。5.3 零时刻突变现象很多复现者会看到SOC估计在刚开始几步出现剧烈摆动。因为初始协方差P0设置过大且初始SOC故意偏掉20%这样第一次端电压残差非常大增益也很大导致状态量被强行修正。这个现象不是错误而是滤波器对初始不确定性的一种“剧烈反应”。如果你觉得不好看可以把P0的SOC项调小到0.01~0.04让初始收敛更平缓但要在收敛时间上作出取舍。5.4 一阶和二阶对比的心得论文标题里反复强调二阶模型的确是有效果的。我实际对比过完全相同参数下的一阶和二阶EKF表现在恒流工况下两者差异不大但在脉冲和动态工况下一阶模型的端电压预测残差明显更大尤其是每次电流突变后的几十秒内残差峰值高出二阶不少导致二阶EKF在同样时间内的SOC误差能比一阶小0.5%-1.5%。精度提升不是实质性的飞跃但在SOC估计这类对误差敏感的应用中1%已经很有价值。5.5 数值发散之外的另外几个隐蔽坑Simulink代数环如果你直接把u_meas反馈给MATLAB Function输入同时又在该函数内部计算u_pred也没有添加延迟单元容易撞上代数环报错。解决方法是确保测量信号每步都经过一个Unit Delay或者通过Zero-Order Hold模块处理。单位换算电流用A容量用Ah计算SOC增量时一定要除以3600漏掉这个系数是初学者最常见的问题。查表边界OCV曲线一般在SOC0或SOC1附近没有实测数据注意插值外推带来的垃圾值直接影响H矩阵。6. 复现完成之后的扩展思考仿真的终点不是论文里的曲线画出来就结束。按我的经验如果把框架跑通后还可以做几件延伸工作把模型从固定参数改成分段查表参数即让R0、R1、R2、C1、C2随SOC和温度变化观察EKF的性能变化把算法换成无迹卡尔曼滤波或粒子滤波和二阶EKF做对比看看非线性程度对算法精度的影响还可以把Simulink模型里的EKF部分用C代码生成工具部署到快速原型控制器里配合硬件在环测试。这些方向里最容易被忽视的是参数在线辨识和EKF的耦合问题很多论文把参数辨识和SOC估计分开做但真实的BMS里两者是耦合的。如果你想进一步深入电池管理领域这套二阶EKF的Simulink模型是很好的起点它的每个模块都可以独立扩展成一篇更深入的研究。本文写的是复现过程中的实际操作希望能帮你少走我走过的弯路。

相关新闻

金融行业Jira替代,Gitee如何成为研发协作底座?

金融行业Jira替代,Gitee如何成为研发协作底座?

这两年陆续有金融行业的朋友来问:Jira 到底该不该换、怎么换。2026 年再谈金融行业 Jira 替代方案,你会发现讨论重心早就不在"哪个工具更好用",而在"替换这条路的成本、风险和边界在哪里"。我看到的很多选型评审&#xf…

2026/10/20 7:47:04 阅读更多 →
汽车月销量预测实战:从ARIMA到Auto ARIMA的完整流程与避坑指南

汽车月销量预测实战:从ARIMA到Auto ARIMA的完整流程与避坑指南

汽车月销量预测这件事,看起来是个标准的时序问题,但真正动手做过的人都知道,坑远比想象中多。我从几年前开始接触汽车行业的销量数据,前后折腾过不下十套预测方案,从最朴素的移动平均到后来的ARIMA、SARIMAX&#xff0…

2026/10/20 7:44:48 阅读更多 →
从零手写AI Agent循环:网关的第一块地基

从零手写AI Agent循环:网关的第一块地基

这个系列写到第38篇,读者问得最多的一个问题就是:你说要做AI Agent网关,那这个网关到底先写什么?我原本的计划是先搞路由、限流、鉴权这些看起来很像"网关"的能力,但真正动手做claw0之后,第一个跑…

2026/10/20 7:47:58 阅读更多 →

最新新闻

Electron桌面应用开发实战:从环境搭建到打包发布全流程

Electron桌面应用开发实战:从环境搭建到打包发布全流程

做前端这些年,我大部分时间都在跟浏览器标签页打交道,直到第一次把桌面应用跑起来,才发现原来自己一直被限制在地址栏和刷新按钮围起来的框框里。Electron这个词,最开始是在某段时间频繁出现在同事的讨论里,一个用HTML…

2026/10/21 9:32:40 阅读更多 →
滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

简介:亚太天能T109滑盖智能锁产品说明书是一份PDF格式的官方技术文档,主要面向智能锁安装人员、终端用户及售后维护者,帮助快速掌握产品安装、配置与常见故障处理。全包仅1个PDF文件,大小4.37MB,内容结构清晰&#xff…

2026/10/21 9:32:40 阅读更多 →
PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

上个月我在调试一台高速AGV的驱动系统,整车要求空载跑到8m/s,电机转速已经拉到额定点,驱动器的输出电压也顶到了母线电压极限附近。再往上踩速度指令,转速纹丝不动,三相电流反而开始震荡。那会儿我的第一反应就是&…

2026/10/21 9:32:40 阅读更多 →
C++核心知识点:从内存管理到STL的实战指南

C++核心知识点:从内存管理到STL的实战指南

C 这门语言我前前后后折腾了十几年,用它写过嵌入式驱动、做过游戏服务端,也搭过基础组件库。每次看到新人一头扎进"C 核心知识点"这个搜索词,我其实挺感慨的——这门语言的难点从来不是语法多,而是知识点之间的耦合太深…

2026/10/21 9:32:40 阅读更多 →
T109滑盖智能锁怎么装?安装调试与故障排查全攻略

T109滑盖智能锁怎么装?安装调试与故障排查全攻略

简介:亚太天能T109滑盖智能锁产品说明书以PDF格式发布,适合智能锁用户、安装人员与售后维修人员阅读。内容围绕T109系列指纹密码刷卡锁展开,先介绍前面板、后面板、锁体、机械钥匙、电池盒盖等部件名称与功能,再给出完整安装步骤&…

2026/10/21 9:32:40 阅读更多 →
LLM知识降熵:从信息垄断到理解权下放

LLM知识降熵:从信息垄断到理解权下放

你有没有过这种经历:翻开源码注释、论文摘要或者一份专业报告,每个字都认识,连在一起却像天书。想找人聊聊,身边要么没人懂,要么懂的懒得跟你解释。后来我试着把同一段内容丢给一个大语言模型,几秒钟之后&a…

2026/10/21 9:31:32 阅读更多 →

日新闻

统一内存+量化:锐龙AI Max PRO 400如何本地跑320B大模型

统一内存+量化:锐龙AI Max PRO 400如何本地跑320B大模型

这段时间硬件圈和AI圈都在传一个事:AMD锐龙AI Max PRO 400系列把最高192GB统一内存搬进了PC形态的产品里,按宣传口径,本地跑320B参数的大家伙不再是纸面概念。我第一反应倒不是“内存真大”,而是这话背后的含金量——它把过去只能…

2026/10/21 0:00:11 阅读更多 →
AI助手深度使用体验:对话质量、长文本处理与指令遵循如何留住用户

AI助手深度使用体验:对话质量、长文本处理与指令遵循如何留住用户

1. 从“封号重开”这个行为说起:用户到底在追求什么“封号重开”这四个字,放在任何产品语境里都带着一股决绝的味道。一个账号从零开始积累使用记录、调教偏好、沉淀工作流,背后是大量的时间和精力成本。正常情况下,没有人愿意主动…

2026/10/21 0:00:11 阅读更多 →
ROS中YOLOv3工程落地:通信同步、坐标变换与性能调优

ROS中YOLOv3工程落地:通信同步、坐标变换与性能调优

1. 为什么在ROS里硬刚YOLOv3不是“炫技”,而是工程落地的必经之路我第一次在某高校机器人实验室看到那台搭载Jetson TX2的移动底盘原地打转、反复识别错垃圾桶时,就意识到:单纯跑通darknet_ros demo和真正让YOLOv3在ROS里“干活”&#xff0c…

2026/10/21 0:00:11 阅读更多 →

周新闻

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

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

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

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

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

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

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

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

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

2026/10/21 4:27:17 阅读更多 →

月新闻

我发现了一个新思路:用 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 阅读更多 →