自动驾驶多传感器融合核心:扩展卡尔曼滤波器EKF原理与工程实践
做自动驾驶定位融合这几年有一个算法几乎绕不开就是扩展卡尔曼滤波器业内通常直接叫EKF。无论做GPS和IMU组合导航还是把视觉、激光雷达和轮速计的数据揉成一个干净的车辆状态EKF都是那个兜底的融合角色。这篇文章我会从原理到工程把EKF在自动驾驶里的实际用法、调参心得和踩坑记录完整梳理一遍。适合谁看如果你是刚开始接触自动驾驶定位模块的工程师或者正在做多传感器融合方案选型再或者只是好奇车辆凭什么精准知道自己在哪、往哪开的读者这篇文章都能给你一份相对完整的参考。我不打算写成教科书式的公式堆砌而是站在实际项目的角度把公式背后的物理意义、工程决策和细节陷阱讲清楚。1. 自动驾驶中状态估计为什么离不开卡尔曼滤波1.1 自动驾驶的第一性问题精确知道我在哪自动驾驶的控制决策链很长但所有决策的起点几乎都是状态估计。变道要判断横向位置和航向角跟车要判断纵向速度和相对距离绕障需要当前位置的可信度区间。传感器看到的是一个个孤立的数据点而车辆真正需要的是一条连续、平滑、自带不确定度的高频状态流。这个问题比想象中难。车辆在高速运动所有状态都在毫秒级变化而任何传感器都有自身的采样频率和延迟。单一传感器在特定场景下都会失效GPS进了高架桥下会丢星视觉在大雨或逆光时会退化惯性测量单元IMU长时间积分必然漂移。如果系统只依赖其中任何一个车辆状态就会在某些不可避免的时刻变得不可用。卡尔曼滤波在这里的价值不是简单选择哪个传感器更准而是把所有可用的信息按不确定性加权组合起来得到一个比任何单一来源都更可靠、且自带概率边界的状态估计。1.2 为什么单传感器方案撑不起安全要求想象你开车进隧道GPS信号瞬间丢失如果定位系统只依赖GPS车辆的位置置信度会立刻崩溃。反过来如果只用IMU它给出的位置是加速度二次积分得到的几分钟内就会漂移出几十米。城市道路场景里高楼遮挡、多径效应、动态障碍物遮蔽都会让单传感器的可用时间大打折扣。多传感器融合最直接的好处是互补。GPS给出了绝对位置基准IMU给出了高频运动增量视觉和激光雷达提供了环境特征关联轮速计在低速场景对纵向速度有很强的约束。这些信号在数学上被融合成一个统一的状态估计就相当于给你的车配了一个多重感官协同工作的定位系统。而EKF恰好是当前工业界落地最多、工程验证最充分的融合框架之一。1.3 从标准卡尔曼滤波到扩展卡尔曼滤波经典卡尔曼滤波诞生于20世纪60年代它解决的问题可以概括为给定一个线性系统的状态转移模型和一套带噪声的观测模型如何实时、递归地估计系统状态。它的适用条件是系统满足线性关系下一时刻的状态是当前状态的线性函数观测值也是状态的线性函数。但自动驾驶场景里几乎没有纯粹的线性关系。车辆运动模型涉及航向角、速度、加速度和位置之间的三角关系GPS经纬度换算到平面坐标系也是非线性映射激光雷达点云与车辆位姿之间的观测关系更是强非线性。继续硬套标准卡尔曼模型误差会大到滤波器失去意义。EKF的思路非常直接把非线性函数在当前估计点附近做一阶泰勒展开用雅可比矩阵完成局部线性化然后继续跑标准卡尔曼的预测、更新循环。这个思路简单、可计算、可工程化正是它成为主流的原因。2. EKF核心原理拆解非线性问题的线性化2.1 状态方程与观测方程滤波器的两个支柱EKF处理的对象由两个方程构成。状态方程描述的是系统如何运动 x_k f(x_{k-1}, u_k) w_k观测方程描述的是传感器如何看到系统 z_k h(x_k) v_kx_k是k时刻的状态向量u_k是控制输入w_k是过程噪声z_k是传感器观测v_k是观测噪声。f和h都是非线性函数。在自动驾驶里x的设计因场景而异。GPS/IMU融合时状态向量通常包含平面位置、速度、航向角以及IMU零偏如果做了视觉融合还可能在状态里增加视觉尺度因子或者相机安装角。u通常是方向盘转角、加速度指令这类控制量。z则是传感器直接输出的数据比如GPS的经纬度、激光雷达的相对位姿变化。很多初学者容易忽略的一点是f和h不是随便选的。f决定了你对车辆运动理解的质量h决定了传感器观测和状态之间的映射精度。模型越贴近真实物理过程滤波器跟踪效果越好模型错得太多再好的调参也救不回来。2.2 雅可比矩阵一刀切开非线性EKF的线性化步骤核心就是求偏导。f对状态x求偏导得到状态转移矩阵F_kf对噪声w求偏导得到G_kh对状态x求偏导得到观测矩阵H_k。这些矩阵在每一时刻都要根据当前状态估计值重新计算。因为工作点一直在变矩阵也一直在变这正是EKF与标准卡尔曼滤波在实现上最大的区别。求雅可比有两种做法解析法和数值法。解析法适合模型表达式简单、可以手推偏导公式的场景。数值法用差分近似代替导数开发期很方便但精度受步长选择影响且计算量更大。我在实际项目里通常先推解析式再用小步长数值差分做单元测试验证解析结果是否正确。这一步看似笨拙但能提前发现模型推导错误省下的调试时间非常可观。2.3 预测步骤状态和协方差一起向前推EKF的循环从预测开始包含两个递推式。第一个是状态预测 x_pred f(x_prev, u)第二个是协方差预测 P_pred F * P_prev * F^T G * Q * G^T状态预测的含义是我按照运动模型从上一时刻的状态推出当前时刻最可能的状态。协方差预测的含义更重要它量化了我对这个预测有多不确定。即使模型本身是准确的执行控制输入的过程中也存在随机扰动P_pred必须反映这种不确定性在时间上的累积。做工程的人需要特别留意GQG^T这一项。很多人图省事直接把Q加到P_pred上忽略了G的作用。G把过程噪声从控制输入空间映射到状态空间忽略它会导致噪声被错误地注入到所有状态维上结果P_pred的膨胀方式不符合物理实际。2.4 更新步骤用观测校正预测更新步骤是EKF里信息增益发生的地方也更容易理解。先算新息 y z - h(x_pred)新息就是传感器实际看到的和滤波器预测应该看到的之差。这个差值如果很大说明预测很可能偏离了真值如果很小说明预测比较可信。但只看差值本身不够还要结合噪声协方差来判断。然后算卡尔曼增益K K P_pred * H^T * (H * P_pred * H^T R)^(-1)卡尔曼增益是一个权重矩阵它决定了状态修正中相信观测多少、相信预测多少。R越小说明传感器越可信增益越大P_pred越大说明预测越不确定增益也越大。最终状态更新和协方差更新为 x x_pred K * y P (I - K * H) * P_pred用生活里的例子理解平时去公司要30分钟这就是预测。今天导航显示前方拥堵实际可能要45分钟这就是观测。如果你深信导航数据准确你会调高对迟到风险的估计如果导航经常抽风你会对它打折。卡尔曼滤波做的正是这件事只不过权重不是拍脑袋定的而是由协方差矩阵严格计算出来的。3. 自动驾驶中EKF的典型应用场景3.1 GPS与IMU组合导航最经典的EKF落地场景组合导航是EKF在自动驾驶里最成熟、最高频的应用。GPS更新频率低通常10Hz但在开阔场景下有绝对精度IMU更新频率高可达100Hz以上但存在零偏漂移。两者的节奏完全不同但EKF可以天然地把它们捏合在一起。具体实现时IMU数据驱动预测步骤100Hz的输出让系统始终有最新状态可用GPS数据驱动更新步骤10Hz的绝对位置观测把IMU累计的漂移定期拉回真值。状态向量里除了位置、速度、航向还必须包含IMU零偏项。这个细节很关键因为IMU零偏如果不作为状态量被估计出来航向误差会不断累积最终让车辆定位出现严重偏航。一旦把零偏纳入状态向量EKF会自动估计它并在每次GPS修正时反向校准相当于系统自己学会这台IMU今天偏了多少。这个场景里还有一个实操经验GPS观测的R矩阵不能直接用厂商给的标称精度。城市环境下多径效应会把GPS误差从米级放大到十几米级实际R应该根据定位质量指标动态调整卫星数少或定位精度因子变大时R要相应放大告诉滤波器这条观测不可全信。3.2 视觉里程计与激光雷达的融合视觉和激光雷达的融合是更进阶的应用。视觉里程计通过连续图像帧的特征点跟踪估计相机的运动增量成本低、特征丰富但光照剧变和高速运动时容易丢特征。激光雷达在结构化场景下十分稳定但对远处低反射率物体表现不佳。两者融合可以让EKF把视觉给出的位姿增量与激光雷达给出的匹配结果统一到同一状态估计中。这个场景的观测模型比GPS复杂得多不再直接观测位置而是通过特征点重投影误差来观测位姿。非线性程度显著升高对雅可比矩阵的准确性要求也更高。实际工程里我见过不少团队在EKF之前先跑一个纯视觉位姿估计模块把它的输出作为EKF的观测输入相当于在传感器和滤波器之间加了一层预处理。这样做的目的是把高度非线性的观测关系拆解成相对线性的位姿修正关系降低滤波器的线性化压力。3.3 自行车模型下的整车状态估计在横纵向控制模块里控制器需要高频、平滑、低延迟的状态输入。这个场景下EKF用的是自行车运动模型车辆被简化为前后轴两个等效车轮输入是等效前轮转角和纵向车速状态则是位置、航向角、横摆角速度和横向速度。这个模型在中低速和常规变道场景下表现很好但高速急转弯时轮胎侧偏特性进入强非线性区一阶线性近似的误差开始变大。处理方式有两种一种是在状态方程里引入更精细的轮胎模型另一种是把等效前轮转角的变化率也纳入状态向量让滤波器自己去估计转向的动态特性。后者实现成本更低我在实际项目中用得多一些。另外如果车辆的转向系统存在明显延迟一定要把延迟建模到控制输入里否则滤波器会觉得打了方向盘车却不动新息序列会呈现强烈的系统性偏差。4. 工程实现搭建一个可用的EKF模块4.1 状态向量定义与初始化策略以GPSIMU融合为例最常用的状态向量是八维x [x, y, vx, vy, yaw, yaw_bias, acc_bias_x, acc_bias_y]x和y是平面位置vx和vy是平面速度yaw是航向角最后三项分别是IMU的航向零偏和两个方向的加速度计零偏。协方差矩阵P0初始化为对角阵对角线取各物理量的初始不确定度。位置不确定度按GPS首帧精度设定比如5米航向不确定度取5度左右要换算成弧度速度不确定度取0.5米每秒IMU零偏的不确定度根据器件手册和温漂特性设定。初始化有个非常容易踩的坑P0不要给得太小。滤波器在启动阶段的置信度完全来自P0如果P0远小于实际误差滤波器会过度信任自己的初值观测修正力度不够导致收敛缓慢甚至收敛到错误值。宁可把P0给得宽松一点让系统先跑起来再用观测逐渐收紧。4.2 噪声矩阵Q和R的标定调参的重头戏Q是过程噪声协方差反映你对运动模型的信任程度物理上对应模型未建模的随机加速度扰动。设得太小滤波器会过度信任模型对观测修正不敏感观测更新后被带偏的风险增加设得太大状态估计会剧烈抖动把噪声当成了真实运动信号。R是观测噪声协方差反映传感器测量噪声。R的初值可以取传感器手册标称精度但最终一定要用实测数据标定。我的做法是采集一段包含真值的路测数据跑离线EKF统计新息序列的均值和标准差。新息均值应该接近零如果不为零说明模型存在系统性偏差新息标准差可以用来校验R是否定得合理。我见过一个案例某工程师连续调了三周Q和R残差始终压不下去最后排查发现是IMU的安装角度没有标定加速度计存在固定的重力分量泄漏。这个偏差在传感器层面是固定的滤波器层面无论怎么调Q和R都补偿不了因为EKF只能处理随机噪声处理不了确定性偏差。这类经验告诉我们调参之前先确认传感器层面的标定和清洁度不要拿着一个脏数据去打磨滤波器。4.3 核心代码结构参考工程落地时EKF模块我建议拆成三层系统模型层、滤波器层、参数配置层。系统模型层负责定义f、h和对应的雅可比矩阵是整个模块最需要推导功底的部分。滤波器层只做预测和更新的标准流程不关心系统模型具体长什么样。参数配置层统一管理Q、R、P0等噪声参数方便试验时离线调参。滤波器层的核心接口就两个predict(dt, control_input)和update(measurement)。predict内部完成状态预测和协方差预测update内部完成新息计算、增益计算和状态修正。这种结构的最大好处是更换运动模型或传感器时只需要改模型层滤波器层完全不动。我在几个项目里都用这个结构后期扩展和代码复用效率高很多。一个需要提醒的细节是每次update之后要对P做对称化处理即P (P P^T) / 2。因为EKF每一步都在做线性化几十步之后数值舍入误差会破坏P的对称性导致P逐渐失去半正定性最终滤波器发散。这个操作一行代码但能避免很多莫名奇妙的数值问题。5. 实践中的常见问题与排查技巧5.1 滤波器发散三个最常见的原因滤波器发散是EKF项目里最让人头疼的问题典型表现是状态估计和实际观测的偏差越来越大最后完全脱离真值。我总结最常见的原因有三个。第一个是协方差矩阵P失去半正定性。EKF是一阶线性化的近似每一步都有截断误差如果更新步长过大、非线性程度过高P会跑偏。解决办法是在每个循环后做对称化处理必要时做特征值修正把负特征值直接截断为零。第二个是观测模型或雅可比矩阵写错。这类问题通常表现为新息序列有明显模式不是随机噪声而是呈现出固定的规律性偏差。排查办法是把观测残差单独画出来如果残差的形状跟某个状态量的变化趋势高度相关基本可以断定是H矩阵或h函数推导有问题。第三个是传感器异常数据进入滤波器。GPS在城市环境会出现多径导致的野值视觉跟踪可能突然给出一个错误的位姿跳变。如果这些异常数据没被识别EKF会试图跟踪错误观测把状态强行拉偏。解决方案是在滤波器之前增加数据质量门控比如用马氏距离判断新息是否合理超过阈值就直接丢弃或者降低权重。这个阈值要留够余量太严格会把正常观测都滤掉太宽松又起不到保护作用。5.2 时间戳同步一个被低估的大问题多传感器融合里时间不同步带来的误差常常超过滤波器本身的模型误差。GPS数据的生成时刻和到达时刻不同IMU数据的时钟和主系统时钟有微小偏移轮速计的传输延迟也不固定。如果这些数据直接用各自的原始时间戳进入滤波器观测和预测的时间基准不一致滤波器输出的状态就变成了过去时刻的模型预测加上未来时刻的观测修正在高速场景下误差会急剧放大。我的处理方法是建立统一主时钟所有传感器数据进入滤波器之前先用线性插值或更高阶的多项式拟合把观测值插值到主时钟对应的时刻。这里有个细节插值的同时还必须对噪声协方差R做修正插值后数据的噪声方差不再等于原始R因为插值本身会带来额外的平滑效应。忽略这一点R会定得不实滤波器的置信度评价会失真。5.3 调试工具链先建好再调参刚开始做EKF项目时我犯过一个错误直接上车跑实时调试每次改参数都要复活平台、跑一圈、下载日志、分析效率极低。后来我痛定思痛花时间搭了一套离线回放和分析工具链所有传感器原始数据带时间戳完整录制参数修改后直接离线重放一遍输出状态估计曲线、新息序列和残差统计对着高精度真值立刻能看到效果。这套工具链的价值体现在两个方面。一是可复现性任何一次参数调整的效果都能回溯二是安全性离线调试不会把不稳定的滤波器直接放到真实车上极大降低了测试风险。我建议每一个做融合定位的团队都把离线调试能力作为基础设施来建设它带来的效率提升远超开发成本。5.4 关于调参我最想说的话最后聊点个人体会。很多人以为EKF最大的难点在公式推导和雅可比计算做了一些项目之后我反而觉得真正难的是建立对物理系统的完整理解。一个能上路的EKF模块背后是传感器延迟标定、异常数据检测、量纲统一、初值选取、时间戳对齐、数据可视化这些不起眼的细节。每一个环节出问题都会让EKF的表现一塌糊涂而且问题经常不在滤波器本身。踩过几次坑之后我养成了一个习惯不管问题表面看起来多像滤波器参数不合理都会先确认传感器原始数据是否干净、时间戳是否对齐、坐标系是否统一。这几个基础问题不查清楚调参就永远是治标不治本。EKF这类算法本质上是个三分数学、七分工程的东西能把公式推出来只代表入门能在一个充满噪点和异常的物理世界里稳定工作才是真正的考验。如果你最近正在做多传感器融合我的建议是从GPSIMU这个最小组合起步把预测和更新的循环彻底吃透再把视觉或激光雷达逐步加进来。先把基础链路跑稳再考虑扩展这条路走起来最顺出问题时也最容易定位根因。

相关新闻

国产芯片替代工控机方案怎么选?x86、Arm与RISC-V路线对比与落地实践

国产芯片替代工控机方案怎么选?x86、Arm与RISC-V路线对比与落地实践

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

2026/10/13 1:29:08 阅读更多 →
STM32C5实战:M33内核开发与调试核心技巧

STM32C5实战:M33内核开发与调试核心技巧

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

2026/10/13 1:29:08 阅读更多 →
Maya 2022下载安装全攻略:版本选型、渠道判断与避坑指南

Maya 2022下载安装全攻略:版本选型、渠道判断与避坑指南

简介:这份资源为 Autodesk Maya 2022 三维动画软件安装包,面向影视广告、角色动画、电影特技等领域的 CG 从业者与三维设计学习者,尤其适合需要搭建本地制作环境、练习建模与渲染的中初级用户。Maya 2022 集三维计算机动画、建模、模拟、渲染…

2026/10/13 1:29:08 阅读更多 →

最新新闻

Win11升级后应用打不开?从升级机制到修复方案全解析

Win11升级后应用打不开?从升级机制到修复方案全解析

最近一段时间,我这边处理最多的求助不是软件本身崩溃,而是同一句话:升完 Win11 之后,XX 应用打不开了。有的是设备厂商的配置工具,点开就没反应;有的是行业软件启动后直接闪退;还有的是虚拟机一…

2026/10/13 2:17:27 阅读更多 →
航空航天大文件可靠上传:分片、续传、校验与协议选型实战

航空航天大文件可靠上传:分片、续传、校验与协议选型实战

卫星过顶窗口就那么十几分钟,链路一抖,传了一半的遥感数据全部清零重来,这种滋味我体会过不止一次。航空航天领域的大文件上传,核心关键词就是可靠性——文件动辄几十GB甚至TB级,链路又是高延迟、易抖动的无线环境&…

2026/10/13 2:17:27 阅读更多 →
图片资产CLI管理工具ImgBin:设计、实操与踩坑全记录

图片资产CLI管理工具ImgBin:设计、实操与踩坑全记录

“ImgBin”这个名字,是我在 HagiCode 项目里给图片资产管理工具起的称号,初看像是“图片回收站”,实际却是一个给团队管图片的 CLI 终端程序。HagiCode 是一个对图片依赖很重的项目:界面要出设计稿,文档要写教程&#…

2026/10/13 2:17:27 阅读更多 →
VS2017专用预编译GDAL库:接入配置与避坑指南

VS2017专用预编译GDAL库:接入配置与避坑指南

简介:面向VS2017开发者的预编译GDAL库,省去了在VS2017环境下手动编译GDAL的繁琐过程。包体共6305个文件,以obj目标文件、cpp/c源码、h头文件为主,也包含lib/dll库文件与配置脚本,压缩包约103.88MB。目前已有2108人学习…

2026/10/13 2:17:27 阅读更多 →
排序链表 LeetCode 148:自底向上归并排序 O(1) 空间实现

排序链表 LeetCode 148:自底向上归并排序 O(1) 空间实现

1. 题目剖析:排序链表到底在考什么LeetCode Hot 100里的第148题“排序链表”,表面看起来就是一句话:给一个无序链表排个序。但做过的人都知道,这道题真正难的不是“排序”本身,而是题目附带的两个硬性约束——时间复杂…

2026/10/13 2:17:27 阅读更多 →
MAS v3.12 免费激活 Windows 与 Office 快速教程:一条命令去掉未激活水印

MAS v3.12 免费激活 Windows 与 Office 快速教程:一条命令去掉未激活水印

MAS v3.12 免费激活 Windows 与 Office 快速教程:一条命令去掉未激活水印 【免费下载链接】Microsoft-Activation-Scripts Open-source Windows and Office activator featuring HWID, Ohook, TSforge, and Online KMS activation methods, along with advanced tro…

2026/10/13 2:16:27 阅读更多 →

日新闻

物联网系统集成避坑指南:从选型到验收的关键要点

物联网系统集成避坑指南:从选型到验收的关键要点

做了这么多年物联网系统集成的项目,我最大的感受是,大部分坑不是出在技术前沿,而是出在一些看起来很平常的地方。设备选了便宜的、协议没问清楚、现场没摸透、验收标准写得含糊——这些细枝末节,最后都会变成延期、超支和扯皮的大…

2026/10/13 0:00:57 阅读更多 →
ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

如果你玩ESP32有一阵子了,很难不碰到舵机控制这道坎。做智能小车要转方向,做机械臂要抬关节,做云台要偏航俯仰,背后都是同一个东西在干活:舵机。而我见过太多人卡在“代码能编译、舵机就是不听话”这个阶段&#xff0c…

2026/10/13 0:00:57 阅读更多 →
CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

1. 为什么CAN总线至今仍是工业现场的“硬通货”?——从汽车底盘到智能温室的真实需求你有没有拆过一辆老款燃油车的中控台?或者调试过某高校实验室里那台跑着Modbus协议却频频丢帧的PLC控制柜?又或者,在某个农业物联网项目里&…

2026/10/13 0:00:57 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/12 0:16:30 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/12 0:16:38 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/13 1:58:08 阅读更多 →

月新闻

我发现了一个新思路:用 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/12 21:05:09 阅读更多 →
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/12 14:48:49 阅读更多 →
黑夜航拍船只数据集训练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/12 18:11:17 阅读更多 →