伊毅点点头,没有说话,径直走到一台开发机前坐下。
“把最近三次试飞的完整数据调出来,包括传感器原始数据、姿态解算输出、电机控制指令。”
陈维东亲自操作,很快调出了三组数据。
伊毅盯着屏幕,手指在触摸板上滑动,一页一页地翻看,他的阅读速度极快,几乎是一扫而过,但每到一个关键节点就会停下来,放大数据,仔细比对。
办公室里安静得落针可闻。
所有程序员都停下了手里的工作,目光聚焦在伊毅身上。
他们知道这位伊总虽然不常来,但每次来都能带来突破性的思路,而且他的思路往往出人意料却又一针见血。
半小时后,伊毅停下手指。
“问题不在融合算法上。”
陈维东一愣:“那问题在哪?”
“在数据链路。”
伊毅指着屏幕上几行数据,声音平静但有力。
“你们看,陀螺仪的采样频率是400Hz,飞控解算频率是200Hz,按理说是整数倍关系,时序应该对齐。
但实际运行中,陀螺仪的数据包偶尔会延迟一个采样周期,导致飞控解算时用的是过时的角速度数据。”
他翻到另一页:“再看这个——电机响应曲线。
正常情况下,飞控发出指令后,电机应该在5毫秒内达到目标转速,但你们的数据显示,在剧烈机动时,这个响应时间会膨胀到15毫秒以上,而且波动极大。”
陈维东凑近屏幕,仔细看了几秒,脸色变了。
“确实有这个问题……但我们的测试台显示电机响应是正常的。”
“测试台用的是恒定的电压输出,实飞时机载电池的电压会在剧烈机动时瞬间跌落,电机响应自然会变慢。”
伊毅站起身,走到白板前,拿起记号笔。
“解决方案有两个方向。”
他在白板上画了一个简单的框图。
“第一,修改陀螺仪的数据读取方式,从定时中断改成FIFO队列读取。
这样即使某个数据包延迟,也不会丢失信息,飞控可以用最近的有效数据进行解算。”
“第二,在电机控制回路中增加前馈补偿。
根据当前电池电压和预期负载,动态调整PWM输出的占空比,让电机响应速度保持稳定。”
他放下笔,转身看着陈维东:
“这两个改动都不大,三天内能完成吗?”
陈维东飞快地在脑子里过了一遍代码结构,点头:
“能!最多两天!”
“好。改完这两个问题后,我还有一个计划——把飞控程序和视觉导航程序进行关联和融合。”
伊毅又指向白板上的另一个框图。
“视觉导航?”陈维东一愣,“我们目前没有视觉导航模块。”
“所以要先开发。”
伊毅从公文包里拿出一个U盘,递给陈维东,
“这里面有一份初步的技术方案,核心是双目视觉避障和光流定点悬停,你们先研究,等我下次来再深入讨论。”
陈维东接过U盘,手指微微发抖。
他知道,这不仅仅是解决眼前的问题,而是在为未来铺路。