这篇博客应该在一年前,做四轴毕设的时候写的.结果一直拖到现在...
有问题请回复评论,然后邮箱提醒我回复,550746284@qq.com 私信不回。。。
一年前的时候关于四元数和姿态解算的中文资料还不多,至少我是找了很久才有那么点真正有价值的资料.
今年又很多学生做四轴相关的毕业论文,所以我希望这篇文章能够整合一些现有的资料并且加上一些自己的理解,方便后来的同学少走些弯路.由于时间久远,很多细节会记不清,还请多包涵.其实简单的飞控已经非常成熟而便宜了,各位技术大神们可以把你们的精力放在更有价值的问题上.比如飞行器的避障,导航,多机协作等.不要为了学技术而学技术,什么事情都想自己DIY,别人做过的事情就没有必要自己过一遍,你一个人做的东西也不大可能比很多牛人一起维护的开源项目来得优秀.可以做的事情太多,我们把精力集中起来做些更需要人去做的工作是比较高效和有价值的,至于基础的东西尽量借助于别人肩膀吗,比如一些开源项目就好.
另外一篇关于四轴双闭环PID(串级PID)的帖子请移步:四轴PID调试
言归正传,当初困扰我的主要是这么几个问题:
[1]四元数是什么鬼?她和欧拉角又是什么暧昧关系?
[2]陀螺仪和加速度计的读数和四元数怎么建立关系?
[3]欧拉角的"gimal lock"?她和欧拉角不合适表示姿态有什么关系?
[4]姿态解算的方法:互补滤波,卡尔曼滤波,梯度下降,DCM都是啥?
[5]如何真正通过代码实现姿态结算?
下面逐个讲讲
[1]四元数是什么鬼?她和欧拉角又是什么暧昧关系?
四元数,百度搜一下一大片,可是我就是不理解到底和姿态有什么关系?
可以把四元数理解为旋转轴+旋转角的描述方法的优化版.用一个3维向量表示转轴(暂时理解为四元数的x,y,z,表示的向量),一个角度表示绕此转轴的旋转角度(暂时理解为四元数的w).
下面举例子说明下,有点长,配了些图片方便理解,跟着文章一步步来,就能理解
假设你一个人在野外,饿了几天饥肠辘辘。突然有只野鸡飞出来,一头撞在了你身边的大树上,挂了。于是你感谢上苍的恩赐。。。有点扯远了。之后你生起了火要烤了那只野鸡。可是怎么烤呢?你找了根木棒,削尖了想插进野鸡里,首先为