打算学习飞控,请问大大侠们除了《惯性导航》还要学习.....
本帖最后由 40342zz 于 2012-5-18 14:27 编辑打算在读研一的一年让自己的四轴飞起来,现在对控制原理还没入门,看了一点秦永元写的《惯性导航》,但是理解起来很困难,请问需要做哪些准备,还需要看哪些书。
本科专业是电子信息工程,没有学过自动控制的东西,潜水一段时间了,但是觉得自己水平太低需要先补习一下知识,还请大侠们给指条路~
电路基础有一些,电调遥控都做过,STM32用的还凑活,传感器已经在路上了,请大家多多帮忙~~
坐等大神。。。 哎呀,都同等大神。不过只是飞起来的话,只要买各个模块按条件组装就好。。。要看惯性导航吗?{:sweat:}好专业! 我做了一个mini四轴,大小10cmx10cm。使用华科尔ladybird的机架,飞控和电路自己做的。
单片机用stm8s207,陀螺仪L3G4200D、加速度计ADXL345,红外遥控。
悬停的时候有点抖,不过即便在室内也很容易操控。没有使用地磁传感器,但依然可以很好的保持航向,这说明L3G4200D效果还不错{:smile:}。
事实上,制作过程并不复杂,控制理论也不深奥!
算法是MK的互补滤波,主要参考以下两贴,在此表示对cnmusic和HEU_402UAV 的感谢。
http://www.ourdev.cn/forum.php?mod=viewthread&tid=3348262&extra=page%3D1%26filter%3Ddigest%26digest%3D1%26digest%3D1
http://www.ourdev.cn/forum.php?mod=viewthread&tid=3579056&extra=page%3D1%26filter%3Ddigest%26digest%3D1%26digest%3D1
请各位别拍砖,因公司打算生产,所以不能开源。
在此回帖,不是显摆,如果非盈利目的的爱好者对四轴有什么疑问,我可以提供适当帮助。
最后挺下stm8s单片机。简单一句话,很容易入门。
从接触这个单片机到现在差不多一个月的时间(之前只听说过STM32),这期间还有许多其它乱七八糟的事要忙,真正用在STM上面的时间不足两星期。但正是这两个星期,四轴从无到有飞了起来。
stm8s各模块(SPI、定时器、PWM、ADC、中断等)直接使用库函数,运行效率其实挺高,做开发的时候可以省去大把时间。
IDE使用ST Visual Develop,用起来还可以,不会像网上说的那么傻。
下载的话,使用SWIM,很方便(刚开始使用串口,很悲催的是不晓得需要使能bootload,空片烧过一次后就锁死了)。 您好,DDAI, 想问下如果不用遥控控制上怎么做?感觉陀螺积分一直再增加,翻转一个角度再回来,积分回不完全,希望能指点下。。。。谢谢 飞控穷三代 最好不要碰 谈不上指点...
对陀螺仪积分,往返,是无法归零。原因可能是陀螺仪器件本身不对称,也可能是电源不稳ADC出现误差,或这些原因都有。总之,单纯对陀螺仪积分无法得到正确的姿态角。
kk四轴只使用陀螺仪,也听说过其他人只用陀螺仪做成四轴的,怎么做出来的,暂时还不清楚。但我有飞过,和同时使用陀螺仪、加速度计的四轴相比,总是飘来飘去,非常不适合普通玩家。
有没有遥控控制,对四轴飞控其实没有一点影响。
我所说的飞控,是指利用陀螺仪和加速度计计算出俯仰角和横滚角,然后以这两个角度为输入(其实还有角速度),按一定比例,最终计算出马达转速——这是输出量。
上边的输出量目的是让四轴保持水平,如果有遥控,再把遥控数据叠加到输出量,四轴就可以按遥控指令完成各种动作。
互补滤波已经有好多人说过了,我说下原器件的使用,基础很重要{:lol:}。
1、ADXL345和L3G4200D数据输出都是有符号数。也就是说,ADXL345水平放置时,XY输出差不多为0,往一边倾斜,输出负值;另一边,正值。同样,L3G4200D,静止时输出零,往一边旋转,输出负值;另一边,正值。
2、ADXL345量程可选+-2g~+-16g,对应输出结果10~13bits。不管选哪个量程,灵敏度都是3.9mg/LSB。将某个轴倾斜90度,静止,对应轴的输出为+-256。这个数据用于相对于陀螺仪的单位换算。
3、L3G4200D,我选250dps,16bits输出,这个时候灵敏度最高。顺便说下,为了和mk兼容,只保留高10位(这样牺牲了灵敏度)。最终的灵敏度是 8.75*2^6 = 560mdps/digit。
4、这里计算旋转90度,陀螺仪的积分是多少。飞控周期1ms,每周期对陀螺仪积分一次(stm8s207 IRC16M,确实可以做到这么快)。假设角速度为90dps,转90d正好用时1s。陀螺仪输出90*1000/560 = 160.714 ,积分1000次,最终结果160714。
5、同样90度倾角,陀螺仪160714、加速度计输出256,比值627。ACC_AMPLAFY=12,Parameter_GyrAccScale=32(二者相乘不等于627,试出来了,好用)。
6、开机后ADXL345需要矫正,也就是多次采集取均值;L3G4200D不需要。
7、使用SPI接口,管脚对管脚,直接接到207的硬件SPI端口。这两种传感器都是I2C和SPI复用,最初担心,使用SPI读写一个传感器时,会被另一个传感器误认为I2C指令,仔细观察SPI总线时序,sck低电平时sda数据才会变化,不满足I2C的起始条件(scl高电平时,sda由高变低),所以之前的担心是多余的。
8、正确获取传感器数据后,接下来是互补滤波,最后将马达转速值转换成PWM信号,直接驱动MOS,实现马达调速。
我也正在做Mini小PCB板四轴,但大小是轴距12cm,以便能用上4寸的桨。飞控传感器想用MPU6050,算法想用传统的卡尔曼滤波解算姿态矩阵,因此对主CPU要求可能稍高点,想用一片32位ARM,NXP的老片子LPC2148。
主要问题是,到底是选无刷电机还是有刷空心杯?主要考虑无刷要控制电机反转比较麻烦点。
DDAI 发表于 2012-5-19 22:29 static/image/common/back.gif
谈不上指点...
对陀螺仪积分,往返,是无法归零。原因可能是陀螺仪器件本身不对称,也可能是电源不稳ADC出 ...
马达调速是开环控制?也就是说,不实时测每个马达的转速或电流或反向电动势等反馈回来?
当然,有姿态回路的反馈,还是闭环控制的,但这样PID参数是否很难调啊?
也许我想的太复杂了,还想为每个电机做个专门的精确控速电调来着,开始想拿数字舵机去掉电位器装上桨改,只是太贵了啊 LS的,为什么电机要反转啊,不懂 agnd 发表于 2012-5-19 23:24 static/image/common/back.gif
马达调速是开环控制?也就是说,不实时测每个马达的转速或电流或反向电动势等反馈回来?
当然,有姿态回 ...
参数并不难调 苦行僧 发表于 2012-5-19 23:28 static/image/common/back.gif
LS的,为什么电机要反转啊,不懂
估计是要倒飞 DDAI 发表于 2012-5-19 23:41 static/image/common/back.gif
参数并不难调
我也在做四轴,用IMU测量姿态和角速度做PID控制。
现在的瓶颈问题是,电机的响应速度很慢,如果我让电机跟踪正弦波的话,测速回来对比图象发现一般电机要延时200ms左右,这样的话,我用P控制或I控制都无法达到控制效果,必须得用很大的D控制来追回来这部分延时,最后导致飞机是能稳了,但是会有快的震动。
我就想问问你(看您经验挺丰富的),一般四轴电机的响应速度都是会这样延时200ms的么?如果都这么慢的话,各厂家做出来的飞控岂不是都要增加一个很大的D来补偿这200ms左右的延时了……还是说我对电机的控制是有问题的?
P.S. 我对电机的控制是纯开环的,测速本身并不参与电机控制。姿态环的控制算法就是PD,D调的好大的说……
恳请指教,谢谢您! 从开始准备做四轴到现在,也只有一个月的时间,所以说理解不深入!
你说的电机响应延时200ms,具体原因,同等高人指点。
我用的是空心杯电机,直观感觉,响应速度非常快。之前有接触过各种直升机,三通、三通半、四通,双旋翼、单旋翼等等。除了个别时候电机选型不合理外,电机性能都可以满足飞控要求。也就是说,你重点看下程序部分,可能还需要改善。
姿态环的话,先做限幅,然后只用P,且P一般很小。如果四轴还是会往复运动,加入角速度数据试试。 pbjob 发表于 2012-5-20 00:14 static/image/common/back.gif
我也在做四轴,用IMU测量姿态和角速度做PID控制。
现在的瓶颈问题是,电机的响应速度很慢,如果我让电机 ...
我觉得,是否加入GPS模块会好一些? 我不是用GPS模块导航,而是要想用它知道地速和高度。当然,高度用气压计如BMP085更简单,但地速我不知用什么传感器更好了。不知现在的产品四轴是怎么测地速的,一个东西不知它实际飞多快怎么行? 能直接测到地速,它就是加速度对时间的积分和距离对时间的微分啊,直接用在导航和姿态PID回路中可能反应就快多了。 陈哲的《捷联惯导系统原理》秦永元的《惯性导航》《卡尔曼滤波与组合导航原理》《应用捷联惯导系统分析》 DDAI 发表于 2012-5-19 23:42 static/image/common/back.gif
估计是要倒飞
没错,好像那个能做3D翻滚的花大姐就是能倒飞的。但实现这,空心杯电机用一个MOS管控制电机肯定就要改成用4个管的H桥了。这是很纠结的!无刷电机的4轴是怎么做到倒飞的呢? 本帖最后由 agnd 于 2012-5-20 19:31 编辑
看看德国人那个程序的代码分析吧,这是从百度上下来的一些资料。 agnd 发表于 2012-5-20 18:51 static/image/common/back.gif
没错,好像那个能做3D翻滚的花大姐就是能倒飞的。但实现这,空心杯电机用一个MOS管控制电机肯定就要改成 ...
有人贴出来了,可变浆矩的四轴
http://www.ourdev.cn/thread-5476655-1-2.html DDAI 发表于 2012-5-20 10:53 static/image/common/back.gif
从开始准备做四轴到现在,也只有一个月的时间,所以说理解不深入!
你说的电机响应延时200ms,具体原因,同 ...
DDAI,我想问一下你们的L3D陀螺仪是怎么焊接的,人工的话是不是很容易坏?
zouyf12 发表于 2012-5-20 23:32 static/image/common/back.gif
DDAI,我想问一下你们的L3D陀螺仪是怎么焊接的,人工的话是不是很容易坏?
...
焊盘稍微留大一点,先上锡膏,然后用风枪吹
不太耐吹!第一块板,L3D被我吹坏了,但ADXL345还能用(可以ADXL好焊一些{:loveliness:} ) agnd 发表于 2012-5-20 18:51 static/image/common/back.gif
没错,好像那个能做3D翻滚的花大姐就是能倒飞的。但实现这,空心杯电机用一个MOS管控制电机肯定就要改成 ...
用可变浆距的就可以了。。。
MIT已经实现了 DDAI 发表于 2012-5-23 20:31 static/image/common/back.gif
焊盘稍微留大一点,先上锡膏,然后用风枪吹
不太耐吹!第一块板,L3D被我吹坏了,但ADXL345还能用(可以AD ...
adxl345开电机后数据跳动特别大,不知道您是具体如何解决这个融合问题的,mk方法?卡尔曼? 同问 呵呵 学习,我现在也做一个飞行器,但是好多不懂得 新手,看的一塌糊涂 崇拜ing,希望楼主能够公布学习进度,我等菜鸟也能跟着学习 好久沒有討論算法了,一點小小的建議,高數比較重要。之前有個哈工程的,也公佈了一些思路,好久沒有來逛了。 DDAI 发表于 2012-5-19 17:08 static/image/common/back.gif
我做了一个mini四轴,大小10cmx10cm。使用华科尔ladybird的机架,飞控和电路自己做的。
单片机用stm8s207, ...
DDAI您好
我大二学生
四轴发烧友
对电什么的还一窍不通
希望能得到您的指导
指导下我应该先学点什么
我也很想自己做个四轴飞控 很不错,我看了,那个网站真不错啊!非常喜欢 DDAI 发表于 2012-5-20 22:29 static/image/common/back.gif
有人贴出来了,可变浆矩的四轴
http://www.ourdev.cn/thread-5476655-1-2.html
这个网站很有用,一定要留着 貌似提问已经有一个月了,简单说一下学习进度和心得。
作为一个新手,我也是先仿照大家的思路,学习那个用温度做例子的卡尔曼滤波,借鉴了kb6mcc大神贴出的卡尔曼程序,对照着一个老外网站对这段程序的讲解,以及《现代控制理论》中的相应部分,大体明白了卡尔曼滤波的意思,这段程序用上后,能出来一个大体的效果(参数不知道怎么调),而且有个很大的问题,此处卡尔曼的输出是用加速度计计算的倾角,当一轴的倾角达到90度时,算出的倾角根本没法用,因为此时加速度向量的投影近似为0,误差相当大。于是我放弃了这种方法。
然后开始拜读MK的程序,因为看老帖大神们都是看的V0.71版,但是我现在在MK网站上找不到V0.71的英文版的程序,于是乎求助Google的在线翻译,德语版的核心部分没看懂,在V0.74找到英文版的,看了几遍大体明白了个思路,我对他的理解好像他不能做全姿态解算,总觉得这个方案不够“正统”,最终还是不想使用这种方法,但是其中的一些技巧给了我很多启发,对于我们新手来说MK非常值得学习。
目前正在学习四元数,看了大量的论文,联想到前几天我和我周围同学的毕设,结论是:我们的论文真TMD扯淡。错误百出不说,有的信誓旦旦的写着什么原创保证、清楚法律后果的跟书上写的一模一样,扯远了。学习的很费劲,我的老师没有弄过四元数的,我也只能苦逼的一点点体会,按照书上的思路写的程序效果很不好,感觉原因应该不是我单纯的把角速度乘以时间作为角增量,至今没有找到原因,求助了一些大神都笑而不语……后来用龙库法,误差范围还可以容忍,问题原因再慢慢体会。论坛上找到的关于四元数的东西说的都是不疼不痒,让我们想自学的情何以堪……
后面的数据融合还是打算用互补滤波,卡尔曼迟早要学习的,但是目前我的知识水平还驾驭不了。目前解决了陀螺漂移问题,但是误差却上去了,问题相当大。
同样是学习了一个月,DDAI大神已经出作品了,而我还在理论阶段,很惭愧。
忍不住弄了个KK体验一下,飞了两次都是惨痛的教训,一次破财,一次是自己挂点彩。听说前几天油直出事了,玩这个还是太危险,不能拿别人的生命冒险,希望再也不要发生这样的事情。
下面是我的疑问:
1.加速度计的中立点如何确定?看很多人的方法是直接求上电后的平均值,不知道有啥好方法没
2.桨转起来感觉很恐怖,根本不敢接近,不知大神们是如何调试的 DDAI 发表于 2012-5-19 17:08 static/image/common/back.gif
我做了一个mini四轴,大小10cmx10cm。使用华科尔ladybird的机架,飞控和电路自己做的。
单片机用stm8s207, ...
请问DDAI大神是用的什么算法求四元数呢,请多帮助~~ 現成套件一堆... 40342zz 发表于 2012-6-15 18:13 static/image/common/back.gif
貌似提问已经有一个月了,简单说一下学习进度和心得。
作为一个新手,我也是先仿照大家的思路,学习那个用 ...
http://www.amobbs.com/thread-5482090-1-1.html cys179 发表于 2012-6-5 22:00 static/image/common/back.gif
adxl345开电机后数据跳动特别大,不知道您是具体如何解决这个融合问题的,mk方法?卡尔曼? ...
mk算法。
mini四轴电机振动很小,飞行效果还不错。测试时有发现在电机振动很严重的情况下,四轴忽忽悠悠地就掉下来了~
小空心杯电机多数型号都能满足要求,如果你用的是大直流电机或无刷,具体振动如何,该怎样调程序,我目前帮不了你{:smile:} 。 reAper07 发表于 2012-6-15 15:05 static/image/common/back.gif
DDAI您好
我大二学生
四轴发烧友
谈不上指导,你随便听听就行{:smile:}
1、先选一款合适的单片机。当前比较流行、难度适中、资料丰富、有交流的伙伴...,我推荐stm8s,原因是它有库,照着例子做是入门最快的方法。
2、认识下传感器。主要是两种,陀螺仪和加速度计。买来器件、搭上电路、读其中数据。
3、思考下传感器。灵敏度、量程、mg/LSB、mdps/digit;陀螺仪积分一圈得到的数据是多少、加速度计倾斜后角度与输出的对应。
123都可以直接在开发板上实现,接下来是准备电机相关。
4、确定选直流还是无刷。直流电机操作简单、成本低;无刷可繁可简(看你要不要自己做电调),但拿来做四轴的话,测试时要多加小心,有点危险。
5、飞控可选Mk或MWC,都有开源。源码内有英文注释,MWC链接了控制原理解说网页。
6、最后是调试。如果不是照搬源代码的话,有一点忠告,理论联系实际(这词用的{:sweat:} ),别拘泥于源码的思路,按照自己软硬件配置想出最合适的飞控。
40342zz 发表于 2012-6-15 18:23 static/image/common/back.gif
请问DDAI大神是用的什么算法求四元数呢,请多帮助~~
俺只是浏览过四元数,太复杂,难写程序,然后就没有然后了{:lol:} 毕业了~~~{:cry:} {:cry:} {:cry:} 学习ing^^^ 四轴还是挺吸引人的,都想折腾一下
页:
[1]