[新手入门]

【21ic飞控】教你从头DIY自己的四轴飞行器-调试篇

[复制链接]
10560|19
手机看帖
扫描二维码
随时随地手机跟帖
wwfiney|  楼主 | 2014-11-26 13:37 | 显示全部楼层 |阅读模式
本帖最后由 wwfiney 于 2014-11-26 13:46 编辑

上一篇**介绍了基本硬件平台的搭建
https://bbs.21ic.com/icview-834204-1-1.html

下面开始讨论调试问题
由于我们采用PID的控制模式模式,调试的关键就是P,I,D这三个参数
这里不对PID的基础概念进行讨论
简单点说,如果系统往左偏,我们自然希望“向右转”,但是用“多大力”向右转呢?我们需要有一定的“依据”
依据就是我们设定的目标(比如平衡就是角度0度)和当前值实际值(比如左偏了10度,记作当前负10度)的差值(误差),0减负10就是正10
这个就是我们计算需要“多大力”的一个基准
简单点的单级PID,直接拿这个“误差”做运算得出“多大力”向右转
P是直接乘以这个“误差”的,所以P越大,则往右转动的力越大,即调整的速度越快
I是历史累计误差乘以的一个系数,什么意思呢,就是你这次测量“依据”是10,下次转过来了5度,“误差”就变成5了,但是还是有误差,累计上次就是15了,可以看出这个值和做PID调整的频率是有关系的
D是说现在变化的趋势,是这次的“误差”减去上次的“误差”,上面那个例子5减去10就是负5,说明虽然还没到设定值(平衡位)但是误差在变小了
能看出来,大家都是“正”的这个是“负”的,就会阻碍“大力调整”,所以大家称这个为“阻尼力”。通俗点说,就是虽然还没到位置,但是很接近了,我们就别这么快了,否则一下子“超过去”了

上面简单的说了PID的原理,那么PID取多少值?5?50?500?
这个与你的系统有关系,做PID的调整周期
还有就是输出值的意义,比如你用5作为PID算出来调整20,这个20什么意义?要对应到你的电机的马力输出
举个例子如果这个值是直接加到16位的PWM计数器的,那么20对于65535的计数器才有多大的变化?这时候你可能是需要用50或者500来得到20000这么大的值

那么如何调整PID的值呢
在讨论这个问题之前,我们需要建立“调试环境”
四轴的调试原则是:
1 调左右摆动(ROLL)和前后仰俯(pitch),自身旋转(yaw)容易修正,不作为主要调试
2 固定住四轴,只留一个方向的自由度,来调整这个方向

说起来比较容易,“只留一个方向的自由度”这个怎么实现?
最容易想到的就是类似平衡杆一样的结构,让四轴只能“左右”转,来调整roll和pitch
但是实现起来有一定难度,如何把一个“杆”固定在四轴底下,而且可以自由转动,四轴还不会往“前后”跑呢?

本文主要讨论调试环境的搭建,有个科学方便的调试环境,会很容易得到满意的PID
对于小四轴用绳子拴住就行了:
WP_20141028_20_46_48_Pro.jpg

找个小空间,拴住两头,绷紧绳子就可以调试roll或者pitch

但是大四轴有半米的大小,这种方法就比较麻烦
家里有两个大柱子或者重物来栓绳子的不多,寝室的梯子普通家里是没有的
而且重达1kg以上的四轴,用绳子对其的约束力也会大大减小

我们需要一个简单,牢固,廉价,易收拾(家里人不会希望你整一滩在那里吧:))的方法来做平衡架
首先来个设计图
WP_20141125_20_28_50_Pro.jpg

那么如何做这个架子且易收藏呢?
经过考虑,pvc水管是一个不错的选择
在大四轴底下绑一个“四通”可以很方便的调试roll和pitch
并且测试完可以拆卸,不占地方
pvc管材并不贵
WP_20141125_19_50_46_Pro.jpg

搭建原型
WP_20141125_19_56_29_Pro.jpg

固定四通
WP_20141125_20_03_33_Pro.jpg

为了不让四轴前后滑动,用螺丝固定住,换轴向的时候拧下来就行了
WP_20141126_09_01_18_Pro.jpg

上架测试
WP_20141125_20_43_43_Pro.jpg

WP_20141125_20_06_06_Pro.jpg

WP_20141125_20_05_46_Pro.jpg

WP_20141125_20_05_34_Pro.jpg


然后找重物压住架子就可以调试了

关于整定PID的值
网上很多教程,这里不细说
简单说,就是I和D都设为0,调整P,因为P是直接乘“误差”,所以最直接简单
P太大会忽左忽右的,太小半天调不过来,所以先把P整定在一个既能很快调整到平衡又“左右晃动”幅度不太大的位置
然后微调I或者D,或者干脆没有I和D

crazyflie用的是串级PID
用了2级PID
再次简单点说第一级是计算当前的“角度”和目标的差值,做PID运算,得出一个“调整值”,可以看作需要转动的“加速度”
陀螺仪可以获得的当前该方向的“加速度”,如果把前面根据“角度”差计算出的需要的“加速度”当作目标值,陀螺仪当前测定值作为实际值,那么这又是一个PID
算出最终输出的“电机马力”调整值


评分
参与人数 1威望 +5 收起 理由
lfjwfm + 5 好办法!

相关帖子

大秦正声| | 2014-11-26 13:37 | 显示全部楼层
学习了

使用特权

评论回复
张思| | 2014-11-26 13:37 | 显示全部楼层

使用特权

评论回复
zhangkaiy1220| | 2014-11-26 13:37 | 显示全部楼层
赞一个

使用特权

评论回复
摘桃花换酒| | 2014-11-26 13:37 | 显示全部楼层
好东东、、、

使用特权

评论回复
别老吃泡面| | 2014-11-26 13:37 | 显示全部楼层

使用特权

评论回复
yzhiju| | 2014-11-26 13:37 | 显示全部楼层

使用特权

评论回复
ILhxm| | 2015-8-14 20:26 | 显示全部楼层
楼主还在吗?我想请问下, 玩四轴所需,分为两部分:  零件即机架电调一类  与   遥控器    是吗?前者需要花钱,而后者需要费脑(diy最主要还是体现在这里吧?如果自购遥控器是否可以对遥控器的程序进行设计?)是吗?
求楼主抽空解答,感激不尽

使用特权

评论回复
wwfiney|  楼主 | 2015-8-15 09:44 | 显示全部楼层
本帖最后由 wwfiney 于 2015-8-15 09:46 编辑
ILhxm 发表于 2015-8-14 20:26
楼主还在吗?我想请问下, 玩四轴所需,分为两部分:  零件即机架电调一类  与   遥控器    是吗?前者需要 ...

你可以分为飞机本体和遥控器两个部分
遥控器都是买现成的,除非你想自己定协议,否则没必要自己做
现在世面的通用遥控器都是遵循一定规则,配合接收器
搜索PPM信号
所以遥控器没必要自己编程,很多也是不开放给开发者编程遥控器的
你要做的是使自己飞机本体的软硬件适应遥控器的信号

使用特权

评论回复
ILhxm| | 2015-8-15 12:08 | 显示全部楼层
wwfiney 发表于 2015-8-15 09:44
你可以分为飞机本体和遥控器两个部分
遥控器都是买现成的,除非你想自己定协议,否则没必要自己做
现在世 ...

感谢楼主回复。
那如果不用遥控器呢?我看到一些姿态解算的帖子,这个是通过电脑来实现控制吗?

使用特权

评论回复
xzwFaye| | 2015-8-21 10:08 | 显示全部楼层
好东西,感谢楼主分享~

使用特权

评论回复
springvirus| | 2015-8-21 13:08 | 显示全部楼层
好贴,马上要调试大四轴,很有用

使用特权

评论回复
wwfiney|  楼主 | 2015-8-27 09:16 | 显示全部楼层
ILhxm 发表于 2015-8-15 12:08
感谢楼主回复。
那如果不用遥控器呢?我看到一些姿态解算的帖子,这个是通过电脑来实现控制吗? ...

不用遥控器这个其实已经是四轴飞行器的高级范畴了
因为如果不用遥控器,就意味着你下达的是宏观命令,需要飞机有足够的自我管理能力
姿态解算是维持飞机自平衡的关键步骤之一,所以是在机载的处理器上实现的
我们的遥控器下达的是一个“目标角度”,比如你向前推一定幅度,其实飞机接收到的是“我要维持前倾xx角度”,然后通过传感器来解算当前的姿态(角度),判断与“目标角度”的差距,然后交给PID来计算。
如果你不想用通用的遥控器,可以参考crazyflie的设计,通过电脑来控制,不过电脑还是要借手柄,当然你也可以映射键盘作为控制,但是我不认为这样会舒服

使用特权

评论回复
duhemayi| | 2015-8-28 11:03 | 显示全部楼层
学习了!

使用特权

评论回复
keigo2008| | 2016-6-11 14:57 | 显示全部楼层
赞一个。。。

使用特权

评论回复
adeli| | 2016-9-13 10:45 | 显示全部楼层
调了好久,串级pid还是调不好

使用特权

评论回复
因火生烟| | 2016-10-14 08:57 | 显示全部楼层
这个不错,收藏先

使用特权

评论回复
shongvs| | 2016-10-29 19:37 | 显示全部楼层
学习了,欢迎来跑跑航模交流技术。paopaola.com

使用特权

评论回复
hhuuoop| | 2016-11-2 19:13 | 显示全部楼层
学习学习

使用特权

评论回复
奔跑的阿蛋| | 2018-3-1 11:03 | 显示全部楼层
最近开始玩四轴,获取了MPU6050的数据后,不知道怎样用PID进行控制

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

5

主题

51

帖子

14

粉丝