ref:
http://www.360doc.com/content/14/0724/23/9152906_396847920.shtml
https://wenku.baidu.com/view/8fcb6f94284ac850ad024244.html
原文链接:https://blog.csdn.net/weixin_43614541/article/details/104818380
1.利用旋转矩阵推导倾斜补偿公式
电子罗盘的倾斜姿态可以通过三轴加速度传感器检测出,测出三个轴上重力加速度的分量,在通过计算可以得出Pitchg(俯仰角)和Roll(横滚角)。
设在罗盘的翻滚角为γ
γ,俯仰角为ϕϕ,航向角为ψψ时,三轴地磁传感器的测量输出M(γ,ϕ,ψ)=[MxMyMz]TM(γ,ϕ,ψ)=[MxMyMz]T;
将式(4)带入反正切函数即可得到补偿后的航向角
附上手推公式过程
代码实现
2.利用使用矢量计算方法补偿倾斜
利用地理(重力和地磁)矢量的方向不变的和可以任意平移的特点计算航向角可以直接忽略倾斜影响。本节内容全是作者的理解,若有不正确的地方欢迎指正。这个算法是arduino的一个库里面的,此算法厉害的地方是它对传感器的安装方式不是严格的。
矢量计算航向算法描述:利用加速度传感器读数确定向下的重力向量和地磁传感器确定的地磁向量的叉积可以得到指向东的向量。东向量和重力量的叉积是北向量(右手法则)。向东和向北的向量构成了水平面平面的基础。机体(电子罗盘)向量被投影到水平平面(点乘),在利用反正切函数即可求出航向角。这段文字里除了机体向量外,其他向量都是地理向量方向不变。
代码实现
关于入参from,这个和传感器安装的位置有关,比如地磁传感器的x轴与地磁场的x轴相反则入参为{-1,0,1}。其他安装方式以此类推。
原文链接:https://blog.csdn.net/weixin_43614541/article/details/104818380