第37章 低成本SLAM算法优化(2/2)
他首先拆下那个手机充电宝供电系统,换上了一块更小、但电压更稳定的微型锂电池,并将其巧妙地隐藏在一个3d打印的、看起来像是扫帚杆固有部件的白色小盒子里(他工作室里有一台老旧的二手3d打印机,平时主要用来打印些支架之类的小玩意)。
“降低电源噪声,提高传感器读数稳定性,算法优化第一步。”他嘀咕着,仿佛在给自己配音。
接着,他重点处理了那几条杂乱无章的导线。他用热缩管和绝缘胶布将它们仔细地捆扎、固定,使其看起来虽然还是很多,但至少不再像随时会短路的样子。“线束整理,减少电磁干扰和运动伪影,算法优化第二步。”
然后,他拿出笔记本电脑,通过一个极其简陋的usb转接板,连接到了扫帚杆上那个mems芯片的隐藏测试接口上。“乞丐版”算法知识在他脑中翻腾,他手指如飞地敲击代码,编写了一个极其精简的嵌入式程序,烧录进去。
这个程序的作用,就是基于系统提供的优化思路,实时处理mems和摄像头(以及那近乎行为艺术的碳纳米管应变传感和红外测距)传来的原始数据,进行初步的数据融合和滤波,并通过一个简单的无线模块(也是从旧玩具上拆的),将处理后的数据流发送到电脑上。
“边缘计算,减轻后端负担,实现实时显示的关键,算法优化第三步。”林墨满意地看着命令行里滚动的数据流,虽然速率慢得像蜗牛,但确实稳定地在传输。
最后,他又花了点时间,写了一个极其简单、界面粗糙到令人发指的pc端显示程序。这个程序接收扫帚发来的数据,利用系统算法知识里那些核心的优化状态估计和地图构建流程,尝试实时地在地图上画出扫帚的轨迹和遇到障碍物的点。
他测试了一下。拿着扫帚在房间里晃悠,电脑屏幕上那个简陋的界面里,一个像素点开始缓慢地移动,身后拖着一串歪歪扭扭的轨迹线,偶尔碰到桌腿什么的,会留下一个模糊的障碍点标记。精度嘛...惨不忍睹,延迟也挺高,但好歹...它能动了!
“完美!要的就是这种半成品的感觉!”林墨打了个响指,“太完美反而假,这种要死不活、但又确实能工作的状态,才最符合我‘瞎琢磨出来的整活道具’的人设!”
准备工作再次就绪。这次他甚至懒得重新布置背景板,只是“无意”中让之前那张写着卡尔曼滤波参数的白板,依旧处于镜头能扫到的角落。
晚上八点,直播再次开启。
熟悉的观众们涌入直播间,弹幕依旧欢乐:
【墨哥晚上好!今天继续扫地吗?】 【地图画出来了吗?】 《主播的赛博扫帚充电充好了?》 【期待今天扫出个三维立体地图!】 【“热心网友”:主播今晚是否会展示实时建图功能?对数据融合算法非常感兴趣。(礼貌询问)】 【“热心网友”准时打卡!】 林墨一脸“严肃”地拿起那把经过“优化”的扫帚:“家人们晚上好!欢迎回到《墨哥实验室》!经过昨天一夜的紧急调试和算法优化...” 他拍了拍扫帚杆上那个新加的白色小盒子:“我对我的‘超智能导航清洁系统’进行了一次固件升级!今天,我们将进行实地测试,目标就是——实时扫地建图!” 他连接好电脑,那个简陋无比的显示程序界面被投屏到直播画面的一角。 【这界面...是我瞎了吗?还是用记事本画的?】【这ui设计,充满了后现代主义的极简风格...】 《论审美与技术的负相关》 【实时?这帧率怕不是实时到明年?】 【主播是懂节目效果的!】 林墨无视了弹幕的吐槽,深吸一口气,开始挥舞扫帚。 “大家看好!我现在开始清扫a区域,也就是我的工作台下方!”他像昨天一样,动作略显笨拙地挥动扫帚。 电脑屏幕上,那个像素点开始缓慢移动,画出一条颤抖的、时断时续的轨迹线。 “注意看轨迹!虽然有点抖动,但大方向是对的!”林墨强行解说,“这是因为我的算法还在学习适应环境,并且我使用了超低功耗模式,牺牲了一定的刷新率换取更长的续航!” 他“不小心”用扫帚杆撞了一下工作台的铁质桌腿。 “咚”的一声轻响。 几乎同时,电脑屏幕上,在轨迹线旁边,出现了一个小小的、闪烁的红色方块标记。 “看!障碍物标记!系统成功识别并记录了桌腿的位置!”林墨语气“激动”,“虽然定位可能有点偏移,但证明了避障和地图标记功能是有效的!” 他继续清扫,轨迹线在屏幕上缓慢地延伸,逐渐勾勒出工作台下方大致的方形轮廓。过程中轨迹经常跳变、扭曲,甚至偶尔卡住不动,完美诠释了什么叫“乞丐版”性能。 弹幕已经笑疯了: 【哈哈哈这地图画得跟我三岁侄子差不多!】《这精度,厘米级?分米级都悬吧!》 【主播别解释了,我们都懂,特效经费有限!】 【这延迟,我奶奶都比你反应快!】 【但是...它居然真的在动?还真的标出了桌腿?】 【楼上的,这叫基本演职员素养,配合演出!】 【“热心网友”:轨迹噪声主要来源于mems器件的温漂和随机游走,主播似乎尝试用了一种基于运动模型的预测滤波进行补偿,但参数似乎...非常激进?(思考)】 林墨看到“热心网友”的弹幕,眼睛一亮,立刻接话:“这位兄弟说到点子上了!温漂和随机游走确实是难点!我的解决方案比较粗暴,就是通过大量实测数据,硬算出一个经验补偿值!” 他一边说着,一边“很自然”地侧过身,用手指点了点身后白板上那一串之前写下的、与卡尔曼滤波q、r矩阵调参相关的公式和数值。 “比如这里,这个系数,就是我跟据我这把扫帚的特定硬件,调试了无数次才得出的最优值...当然啦,每把扫帚都不一样,我这个仅供参考,大家千万别直接套用啊!” 他的手指恰好点在几个关键参数上,镜头清晰地捕捉到了这一幕。 “办公室”内,analysts们几乎要扑到屏幕上。 “记录!记录下他指的那个系数!和刚才‘热心网友’提到的温漂补偿对应上了!” “他的轨迹虽然噪声大,但你们发现没有,没有出现严重的发散现象!说明他的状态估计器即使在如此恶劣的条件下依然保持了相当的稳定性!” “还有那个障碍物标记!虽然偏移,但出现的位置和实际碰撞点有很强的相关性!他的数据关联算法肯定做了极致的简化,但有效!” 直播继续,林墨开始清扫更复杂的区域,比如堆放着几个纸箱的角落。 “现在我们挑战一下复杂环境!这里有几个箱子,看系统能不能识别出多个障碍物并大致勾勒出边界!” 他挥舞扫帚的动作幅度更大了,时不时“无意”地用扫帚杆上的碳纳米管网状结构去轻轻刮擦纸箱的表面和边缘;那个低像素摄像头也对准地面和箱体进行扫描。 电脑屏幕上的轨迹变得更加混乱,障碍物标记时不时冒出来,位置飘忽不定。但在某一瞬间,当林墨以一个特定角度扫过两个纸箱的夹缝时,屏幕上的轨迹突然变得相对平滑了一些,并且连续出现了几个障碍点,大致勾勒出了两个相邻的矩形轮廓,虽然形状歪歪扭扭,但确实能看出是两个分开的物体。 “哇!看到了吗!虽然很粗糙,但它大概画出了两个箱子!”林墨适时地大声惊呼,仿佛他自己也很意外,“这说明在多目标环境下,系统的基本分辨能力还是有的!当然,想要精确轮廓,还得上更贵的传感器…” 弹幕还在欢乐玩梗,但少数较真的观众和“办公室”的专家们却看出了门道。 【等等…刚才那一下,好像突然变准了一点?】《错觉吧?肯定是主播手动ps了画面!》 【“热心网友”:并非错觉。主播刚才的清扫路径恰好经过了一个特征丰富的区域,视觉信息辅助修正了纯惯性导航的累积误差。他使用的应该是基于特征的紧耦合方案,但特征提取器极其简化…(赞叹)】 【“热心网友”说人话!】 【翻译:瞎猫碰上死耗子,但瞎猫的找耗子方法很牛逼!】 林墨看到弹幕,心里暗笑,脸上却一副“原来如此”的表情:“哦!紧耦合!这位兄弟懂的真多!不过我这就是瞎搞的,没想到还蒙对了一次!” 他继续直播,又“演示”了如何清扫门槛、如何绕过电线等场景,过程中不断“抱怨”着各种技术难题: “唉,电量低了之后数据飘得更厉害了…得加电压补偿…” “这个地方光线太暗,摄像头快成瞎子了…要是能有个主动光源就好了,不过那样功耗就上去了…” “刚才那个算法处理不过来卡了一下…看来得优化一下线程优先级…” 他的每一句“抱怨”,都精准地点出了低成本m在实际应用中会遇到的核心问题,而他的每一句“解决方案”,无论是“加电压补偿”还是“优化线程优先级”,都看似随口一提,实则暗含了系统算法知识中的某些关键优化点。 直播进行了四十多分钟,林墨终于“累瘫”在地(演的),电脑屏幕上那个简陋的地图也终于勉强覆盖了他工作室的大部分区域,一个由颤抖线条和闪烁红点组成的、抽象派画风般的“高精度”地图。 “好了家人们…累死我了…”林墨喘着气(装的),“地图终于…勉强生成了!虽然看起来跟鬼画符一样,但…但它毕竟是自动生成的!证明了这套低成本方案的…可行性!” 他指着屏幕上那惨不忍睹的地图:“精度嘛…大家就不要太苛求了…毕竟总成本不到五十块…要啥自行车啊…” 【奖励发放:【低成本m算法优化(开源友好版)】。】 新的知识流涌入,比之前的“乞丐版”更加深入、系统,包含了更多普适性的优化技巧、参数自适应调整策略、以及对不同档次低成本硬件的兼容性设计方案。其核心思想变成了:不仅要把一分钱掰成八瓣花,还要教会别人怎么掰。 林墨脸上露出了“疲惫而欣慰”的笑容。 弹幕纷纷刷起【辛苦了】【虽然没用但快乐】【主播下次整个有用的吧】。 林墨看着弹幕,笑了笑,最后说道:“技术嘛,就是从粗糙走向精细。今天至少证明了,哪怕用最便宜的东西,只要思路对了,也能实现一点有趣的功能。当然,离实用还差得远,主要还是图一乐!” “今天的直播就到这里!下次…maybe…教大家怎么用普通摄像头和手电筒实现三维扫描?(不确定语气)” 直播结束。 林墨长出一口气,直接挺地在地板上躺成一个大字。 几乎同时,“办公室”的电话再次接通了国内各大机器人公司、自动驾驶团队以及地图服务商的实验室。 “数据收到了吗?…对,重点是那个实时建图的流程,尤其是他遇到问题时的‘解决方案’和背景板参数…” “他提到的电压补偿、线程优先级优化、还有紧耦合方案下的简化特征提取…立刻组织人手验证!” “开源友好版…我怀疑他下一步可能…” 而林墨的手机上,“风行科技特效合作部”的新邮件如期而至。 内容只有一句话,却包含了千言万语: “林先生,您的‘图一乐’,让我们实验室加班费预算严重超标。另外,关于三维扫描…您对手电筒的型号和亮度…有具体偏好吗?(虚弱但坚持)” 林墨看着邮件,忍不住笑出了声。 他仿佛看到,无数工程师正对着一把价值十九块九的塑料扫帚和一段帧率低到令人发指的直播录像,陷入了深深的沉思与狂热的优化之中。 一场关于如何极致降低成本、提升性能的技术风暴,正从这把破扫帚开始,悄然席卷开来。