嗯,前些时间考试一大堆,终于有时间更新了。
大致说下校准。
角速度不用校准,实测出厂校准够了。
磁场校准用提供的上位机,我用的是维特智能的,这个问客服要就行,不同厂家应该一样,有校准程序,校准方法也很简单。基本就是在上位机里点进去,然后转动传感器,获取数据后停止校准并写入。当然,重点是不能在室内校准,因为室内的金属和电器会显著影响磁场的分布,可以在室外找个没人的地方,比如天台,这样防止校准失败,也能防止社死。如果有发现无法校准,或者传感器的磁场数据诡异,可以尝试拔出单片机再插回去,或者先上电再插入单片机,也可以长按复位,我也不知道什么原理,但我出现这个问题确实这样解决了,怀疑可能和HAL库初始化串口有关,建议上电后按1s左右的复位再使用。
类似这样,校准方法大同小异。
实测需要校准的是加速度。
根据之前的理论推导(在惯性导航开发0中),证明了可以线性校准(当然是矩阵形式),然后我们其实不需要太高的校准精度,毕竟mems陀螺仪精度本身就不算高,所以我把之前的程序简化了,在ai的帮助下搞了新的图形化界面,优化了防呆设计。核心思路简化了,就是六面校准法,单纯一次最小二乘法解决。
改一下,实测不行,还是用之前的程序,见1.4 加速度传感器的校准
实测这个精度更高,然后我小改了一下,数据改成浮点数的了,还是用串口,用"%f,%f,%f\r\n"的格式输出数据,增加输入当地重力加速度的窗口。
然后有个问题,实测这个校准精度似乎和让传感器拜访的角位置的均匀性有关,而且也不一定越校越准。我是在一次经过40个位置的校准中获取了目前最准的一组数据。推测这和非线性因素有关。不过这个以后迭代再考虑吧。
改动后的程序在此。
我放几张校准后的两个参考图吧,但不是最准的那次的
我在新的程序中加了直接输出c语言数组的功能,可以直接复制。
我的校准矩阵: