经过上一篇无惯导方式起飞失败后,让我知道必须需要经过惯导算法才能使这样一个非线性系统起飞。我在第一时间就开始找资料研究惯导算法,但算法肯定是要运行在硬件基础之上的,起码的自身姿态要知道吧?比如是斜的还是平的,什么样的角度?角速度、加速度是多少?比如开车时,咱们是到地方提前减速的,不然以时速120,到地方再刹车,惯性的原因刹不住,刹住也早过头了。
那么想要得到这些惯性数据,肯定需要一个惯性测量元器件,啥是惯性测量元器件,比如手机里的陀螺仪。然后我就直接买了个集成十轴的模块,可以得到XYZ角速度、XYZ加速度、XYZ磁力计、气压计,模块尺寸只有1.6cm x 1.8cm,也就指甲盖大小,花了我150块!这个模块的好处就是自身带一个STM32F0主频48M的单片机,专门用来进行数据融合和姿态解算。所以我可以直接从模块中得到9轴融合算法解算出来的欧拉角或四元数,还有气压解算的高度数据。150花的挺值。省了我写不少代码的时间!
买回来焊上排针,连上电源,我的主控STM32 连上IIC通信的SCL、SDA两根线,开始跑商家给的示例代码,他给的代码是标准库的,而我需要移植成HAL库的代码,移植完一试蒙了,数据出不来,然后又跑了他标准库代码也出不来,问了客服说需要在给SCL、SDA分别串4.7k上拉电阻,这又花了一两块钱买的电阻,串上一跑果然正常了。下一步开始写控制算法(PID算法)!