在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 65998|回复: 31

[原创] mikrokopter 软件,硬件,算法结构讨论

[复制链接]
发表于 2013-3-31 12:23:36 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
本帖最后由 santa_cruze 于 2013-3-31 13:17 编辑

MK是amobbs上的主打方案,里面几位大牛级人物都对他们的代码做了细致的分析,
不过,好多应该看了之后感觉不够形象,本帖力图通过图示和公式来解说,并借鉴
cnmusic的文档,讲MK的四轴做更进一步的解说。
MikroKopter四轴飞行器中文手册
MikroKopter四轴飞行器飞行控制板手册.pdf (1.69 MB, 下载次数: 456 )
 楼主| 发表于 2013-3-31 20:32:12 | 显示全部楼层
回复 1# santa_cruze
##转自 amobbs seanwood###########
先以seanwood的捷联算法心得开始,感兴趣请移步:
http://www.amobbs.com/thread-5492189-1-1.html


senbastian Madgwick的论文暂时先不摘抄了,后续会在bitcraze的四轴分析的帖子里谈到细节。


1、四个概念:“地理”坐标系、“机体”坐标系、他们之间换算公式、换算公式用的系数。

地理坐标系:东、北、天,以下简称地理。在这个坐标系里有重力永远是(0,0,1g),地磁永远是(0,1,x)(地磁的垂直不关心)两个三维向量。
机体坐标系:以下简称机体,上面有陀螺、加计、电子罗盘传感器,三个三维向量。
换算公式:以下简称公式,公式就是描述机体姿态的表达方法,一般都是用以地理为基准,从地理换算到机体的公式,有四元数、欧拉角、方向余弦矩阵。
换算公式的系数:以下简称系数,四元数的q0123、欧拉角的ROLL/PITCH/YAW、余弦矩阵的9个数。系数就是描述机体姿态的表达方法的具体数值。

姿态,其实就是公式+系数的组合,一般经常用人容易理解的公式“欧拉角”表示,系数就是横滚xx度俯仰xx度航向xx度。

2、五个数据源:重力、地磁、陀螺、加计、电子罗盘,前两个来自地理,后三个来自机体

3、陀螺向量:基于机体,也在机体上积分,因为地理上无参考数据源,所以很独立,直接在公式的老系数上积分,得到新系数。
狭义上的捷联惯导算法,就是指这个陀螺积分公式,也分为欧拉角、方向余弦矩阵、四元数,他们的积分算法有增量法、数值积分法(X阶龙格-库塔)等等

4、加计向量、重力向量:加计基于机体,重力基于地理,重力向量(0,0,1g)用公式换算到机体,与机体的加计向量算出误差。理论上应该没有误差,这误差逆向思维一下,其实就是换算公式的系数误差。所以这误差可用于纠正公式的系数(横滚、俯仰),也就是姿态。

5、电子罗盘向量、地磁向量:同上,只不过要砍掉地理上的垂直向量,因为无用。只留下地理水平面上的向量。误差可以用来纠正公式的系数(航向)。

6、就这样,系数不停地被陀螺积分更新,也不停地被误差修正,它和公式所代表的姿态也在不断更新。
如果积分和修正用四元数算法(因为运算量较少、无奇点误差),最后用欧拉角输出控制PID(因为角度比较直观),那就需要有个四元数系数到欧拉角系数的转换。常用的三种公式,它们之间都有转换算法。

再搞个直白一点的例子:
机体好似一条船,地理就是那地图,姿态就是航向(船头在地图上的方位),重力和地磁是地图上的灯塔,陀螺/积分公式是舵手,加计和电子罗盘是瞭望手。
舵手负责估计和把稳航向,他相信自己,本来船向北开的,就一定会一直往北开,觉得转了90度弯,那就会往东开。
当然如果舵手很牛逼,也许能估计很准确,维持很长时间。不过只信任舵手,肯定会迷路,所以一般都有地图和瞭望手来观察误差。
瞭望手根据地图灯塔方位和船的当前航向,算出灯塔理论上应该在船的X方位。然而看到实际灯塔在船的Y方位,那肯定船的当前航向有偏差了,偏差就是ERR=X-Y。
舵手收到瞭望手给的ERR报告,觉得可靠,那就听个90%*ERR,觉得天气不好、地图误差大,那就听个10%*ERR,根据这个来纠正估算航向。。
 楼主| 发表于 2013-3-31 21:02:15 | 显示全部楼层
本帖最后由 santa_cruze 于 2013-3-31 21:07 编辑

回复 2# santa_cruze

OK 我们再来看,要完成捷联算法,要完成那些动作吧

1)从陀螺仪和加速度计上获取的信息,计算出当前的状态(角度,角加速度)
估算1.jpg
2)最直接的获取方式,简单,但对噪声和水平加速运动无特殊处理。
估算2.jpg
3)依然简单易懂,比2的优势是去除了横向的水平加速度的影响(低通滤波)
估算3.jpg
4)只使用陀螺仪进行计算,陀螺仪漂移严重
估算4.jpg
5)技术控最爱,kalman 滤波,复杂的矩阵和求逆求解运算,
     状态方程,观测方程较难建立
估算5.jpg
6) ok 今天主角到了,Mikrokopter主打算法,线性互补滤波器算法
估算6.jpg
7)流程图如下图所示
    对陀螺仪进行高通滤波,消除漂移,对加计进行低通滤波,滤除瞬时
    的水平加速干扰,低通高通的交叉点(crossover)处理是关键
    其实cnmusic的即时融合,长期融合,漂移补偿都包含在下面的两个
    图里,后面我们会结合代码,再进行进一步的解说。
估算7.jpg
发表于 2013-3-31 21:50:42 | 显示全部楼层
围观,貌似不懂,顶下!
发表于 2013-4-26 21:35:02 | 显示全部楼层
看看多谢了啊
发表于 2013-4-28 19:07:33 | 显示全部楼层
谢谢!!!
发表于 2013-6-3 22:03:36 | 显示全部楼层
资料汇总?
发表于 2013-6-8 22:50:30 | 显示全部楼层
多谢了。
发表于 2013-9-25 23:39:29 | 显示全部楼层
学习学习
发表于 2013-10-16 22:40:31 | 显示全部楼层
不错,支持
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /1 下一条

小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-3-29 18:59 , Processed in 0.035083 second(s), 11 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表