123小时不关机,跟STM32的EKF死磕了两天半,顺便搭了个网站,给服务器做了个大保健,还看了部《低俗小说》
端午节三天。计划是休息。实际是123小时不关机,跟STM32的EKF死磕了两天半,顺便搭了个网站,给服务器做了个大保健,还看了部《低俗小说》。以下是一份私人学习笔记。不严肃,但有料。
低俗小说风格海报 · 端午三日速写
上午确认了一个重要细节:STIM300的CRC32用的是IEEE 802.3反射式,查表法正确。顺便发现另一个模块里有个非反射式的CRC32函数,不兼容STIM300,不过好在根本没被调用。
下午做了一件事:把F407的PPS信号从PB0迁移到PB12。PB0被EXTI0占用了,一开中断直接炸掉整个SBG通信。切到PB12的EXTI15_10,加了500ms消抖,完美。涉及GPIO、中断向量表、SBG桥接层的联动改动。
下午还去了趟岳麓山,2小时。劳逸结合。
晚上完善了服务器自动巡检脚本,Hermes的cron任务正式上岗——每几小时自动巡检,能自主决定封IP、杀进程、重启服务。
0x00030002→0x00030000。这些小修小补看起来不起眼,但每一个都是SBG Center校验不过的根因。
上午是最爽的一段——照片墙从零到上线,v1→v2→v3,三轮迭代一口气搞定。扫描脚本自动从照片目录生成json,Python切缩略图,月份分组时间轴配左侧旋钮选择器,Lightbox大图浏览。
主页随机背景也搞定了——每5分钟从照片墙随机抽一张图片做hero背景,带渐入动画。
导航栏重构:加了生活旅行和未来遐想两个新栏目,统一了所有页面的导航。还搭了一个Vite+Vanilla JS的博客脚手架。
下午……买了菜,重新启用了冰箱。然后吃了半个西瓜。撑得不行。
晚上本来想继续搞点什么,结果精神直接崩了,只能瘫着看《低俗小说》。
服务器那边也没闲着——全量系统升级97个包,内核升级,重启验证正常。该开的服务都设了开机自启,不用每次手动拉起来。
这一天从早干到晚,几乎没有停过。
上午:给SBG协议做了18个硬编码配置的统一重构,改成了cfg存储模式。验收通过。
下午到晚上:15状态EKF调试。这是整个端午最硬核的部分。
先后试了5种方案做GPS/INS融合:
| 方案 | 结果 | 原因 |
|---|---|---|
| 直接输出GPS原始值 | 位置跳变太大 | 单点GPS噪声±3-10m |
| α-β平滑滤波 | 完全组合不上 | 固定增益无法适应不同运动状态 |
| 4状态卡尔曼滤波 | 位置漂移几十公里 | 速度噪声积分失控 |
| EMA指数移动平均 | 位置跳变 | 无速度积分,本质是低通 |
| GPS原始经纬度+诚实AHRS status | 保底可用 | 用户认可 |
定了15状态EKF方案后,是一场与12个bug的拉锯战:
最后推倒重来,分三步验证。Phase 1 纯AHRS姿态(Mahony + Madgwick双实现)通过了——roll≈+3°, pitch≈-14°, yaw稳定不漂。Phase 2→3没通过,AHRS切EKF后GPS修正跟不上。暂退到Phase 1保底。
同一天还穿插做了:网站3篇文章的编写和反复修改、serve.py从全量tar改成增量传输(manifest对比mtime+size)、4个扫描IP自动封禁、创建了5个AI Skill和1个惯导Agent。
晚上22点写完工作总结,尝到了自己冻的冰块——配着可乐喝了一口。效果不错。
| 指标 | 数值 |
|---|---|
| EKF bug修复数 | 12个 |
| 创建的AI Skill | 5个(px4-ekf2、psins-loose、sbg-ecom、ima-knowledge、site-deploy) |
| 创建的AI Agent | 1个(ins-guru 惯导专家) |
| 网站页面数 | 8个 |
| 服务器系统升级包 | 97个 |
| 网站文章 | 3篇(关东烈传、AI驱动NPC、惯导AI-Skill) |
| EKF方案尝试 | 5种(4种失败,1种保底+1种Phase1通过) |
| 吃的西瓜 | 半个 🍉(撑到躺平) |
| 看的电影 | 《低俗小说》 |
12个bug里只有两三个跟参数有关。其他全是:坐标系反了、符号反了、更新频率错了、传播写错了、反馈写反了。教科书上那些漂亮的公式,落到嵌入式C里面,随便一个符号就能让你调三天。
是时间。第二天的网站产出集中在上午3小时。第三天战斗了一整天。能做多少取决于能连续专注多久。
真的大。干完高强度工作之后不要吃整半个西瓜,会直接失去下午。这是本次端午最重要的生活经验。
瘫在沙发上,脑袋放空,时不时因为昆汀的台词笑一下。跟上午改EKF代码的状态形成完美反差。
端午三天,忙碌程度爆表,产出质量在线,休息勉强及格(岳麓山+低俗小说+冰可乐)。
说实话,代码大多是AI在写。我负责定方向、看SBG Center截图、告诉AI哪里不对劲、验证结果。真正的战斗不是一行行敲代码,而是知道自己要什么,知道问题出在哪,然后指挥AI去改。
接下来打算结合AI的能力,继续自学STM32和惯导——不是让AI代替我,而是让AI跟着我一起学。自己理解原理,AI帮忙落地。
P.S. WorkBuddy积分耗光了,它要老实一阵子了。