搜索
bottom↓
回复: 75

【DIY】 超声波定高功能,解放你的油门,让你飞得很无聊

  [复制链接]

出0入0汤圆

发表于 2011-5-8 13:44:26 | 显示全部楼层 |阅读模式
最近飞四轴让我很是痛苦,因为我用飞固定翼的方式来控制油门,四轴就像兔子一样上窜上跳。等XAircraft 出超声波功能等了很久也没出来,还是自己动手写一个通用的超声波模块吧,估计不会很难。

想了一下需求大概是这样的 :

1. 可以由单片机完全控制油门, 我只控制四轴的水平运动就行。
2. 可以用控的一个2段开关,来开启和关闭超声波定高, 开启后, 四轴将悬停在当前的高度。
3. 用另外一个开关,能自动起飞, 自动降落。
4. 能兼容大部分的四轴飞控(FS1212,KK,AQ50D之类),因为接管了接收机的油门通道



在开始之前我设想了一些问题,后来在实际测试中进行了验证和修正。


1.超声波是否会被电机干扰?
实际测试后,超声波并不会被电机发出的声音影响。但很容易被紧贴在旁边的电池反射产生了干扰,所以超声波传感器得找一个周围至少有2-3cm间隔的地方放置。尽管如此,超声波在临界点时返回的数据一定会有噪点,我们得用kalman 过滤一次。

2.pid 如何实时查看output 。
方案一,用电脑上的 processing写一个波形显示程序。方案二,用anroid 写一个手机上的示波器,android sdk2以上可以使用蓝牙SDK, 再用一片20元的蓝牙芯片放在飞控上,就可以让飞控和手机通讯了。

3. PID 中比例,微分,积分的整定。
这三个参数需要在外场实际测试中调试,通讯链路是双向的,自订个协议设置参数没多大问题。遇到的困难是,在一些极端参数下,估计会产生巨大的不可控震荡,简单的说四轴会拔地而起,或者重重的高速撞击地球。暂时没想到好的办法防止这些情况,用绳子拴着?

4.pid output 用什么策略映射到 pwm
方案一是直接将输出映射到1000-2000 的脉宽,这样手动的油门将不参与控制
方案二,基于任何时候都不能相信机器人的理由,要将当前的油门值进行数据融合

5.开启pid 的策略
用遥控器的一个2档开关,开关拨到开启时,记录这瞬间的pwm和高度,作为setpoint。

6.超声波的异常处理,距离检测到 0 ,或很大的情况,距离突然变化的情况。
超声波必须要做卡尔曼滤波,在这些特殊情况下应该关闭定高功能,自动缓慢降落。



(原文件名:机架布局.jpg)


(原文件名:超声波特写.JPG)

算法早已写完,连续两个星期都没有时间去外场实际验证效果, kp ,ki ,kd 在家基本没法整定。
今天虽然有些小雨,也去了华农体育场,带了手提电脑和无线串口,直接用无线来修正单片机上的参数,大概调整了10来组,就已经很好飞了。我的控是美国手,四轴是x450,最后我的左手完全解放了,只用右手控制四轴前后左右就行了。帮我一起调整参数的朋友cn,从来没有飞过航模,开启锁定航向+超声波定高,让他飞了十来分钟下来说:太没挑战了,太无聊了。话没说完就倾盆暴雨,只好收工回家,改日再战。



(原文件名:PID整定.JPG)


经过实际外场测试,整定出PID 参数如下, 震荡已经很小了。

#define IMU_SAMPLE_RATE 1.0/16 // 16k Hz
Kalman kalman_ym(IMU_SAMPLE_RATE, 0.002 , 0.003 , 0.001  ); //油门卡尔曼
Kalman kalman_dt(IMU_SAMPLE_RATE, 0.002 , 0.003 , 0.001  ); //高度卡尔曼
int pinCSBin = 10;
int pinCSBout = 11;
//Define Variables we'll be connecting to
double Setpoint, Input, Output;
PID myPID(&Input, &Output, &Setpoint, 2  ,  0.5 ,  1 , DIRECT); // 最后整定出来的kp,ki,kd

这是运行在电脑上,用无线进行调整pid参数,这样就不用重新编译和上传程序到单片机了。
绿色线是目标高度
红色线是当前高度
蓝色是经过pid运算后修正的油门值


接下来,上制作教程: 程序也分享给大家,你可以随意下 载烧录。

一 。首先你得淘宝以下器件:
1. arduino uno/nano/mini/pro 都可以。(我一开始用了一片stm32f103RB,但这开发板挺贵而且没有电子基础的人upload都很困难,觉得没必要了,换成最容易买到的avr)
2.超声波传感器 (一搜一大把,几十块钱吧,我用的是5米距离的)


二。然后将arduino 的pin 2  接到 接收机的 3通道(油门), 将pin3 接到接收机的5通道 (2段开关) 。 将arduino 的pin4 (油门输出) 接到飞控的1通道 (油门输入)

三。下 载程序,用usb烧录到芯片里去。     

四。有必要的话调整一下参数,不调就用我设定好的。


然后,然后,打开care free+ 超声波定高,你会觉得飞四轴变得很无聊。



点击此处下载 ourdev_638239J87UEB.rar(文件大小:10K) (原文件名:四轴超声波定高代码.rar)

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入0汤圆

 楼主| 发表于 2011-5-9 18:43:29 | 显示全部楼层
上试飞视频:

http://v.youku.com/v_show/id_XMjY1MDY1MDM2.html

出0入0汤圆

发表于 2011-5-9 19:20:34 | 显示全部楼层
牛人咋这么多呢。

出0入0汤圆

发表于 2011-5-9 23:18:48 | 显示全部楼层
好强的JJ

出0入0汤圆

发表于 2011-5-10 09:24:21 | 显示全部楼层
哪里有得卖??

出0入0汤圆

发表于 2011-5-10 09:47:37 | 显示全部楼层
这个要顶,说不定哪天用的着。而且,应该一定有这么一天。

出0入34汤圆

发表于 2011-5-10 10:02:43 | 显示全部楼层
强,很久以前就想在MK的基础上增加上这个了,可惜没水平也没时间,LZ强人

出0入0汤圆

发表于 2011-5-10 16:09:35 | 显示全部楼层
太牛了,想学习

出0入4汤圆

发表于 2011-5-10 16:13:51 | 显示全部楼层
强人,顶

出0入0汤圆

发表于 2011-5-10 17:33:14 | 显示全部楼层
强大呀!顶.

出0入0汤圆

发表于 2011-5-10 18:07:55 | 显示全部楼层
这个要顶,说不定哪天用的着。

出0入0汤圆

发表于 2011-5-10 18:14:07 | 显示全部楼层
我很想弄四轴 但是怎么开始都不知道 我是什么也不懂的人 囧

出0入0汤圆

发表于 2011-5-10 18:40:12 | 显示全部楼层

出0入0汤圆

发表于 2011-5-10 19:42:35 | 显示全部楼层
顶 楼主

出0入0汤圆

 楼主| 发表于 2011-5-16 13:26:49 | 显示全部楼层
周末测试定高爬楼梯, 全程油门自动控制 。

http://v.youku.com/v_show/id_XMjY3MzQyMTIw.html
来个更高难度的,宽两米,很陡的楼梯

http://v.youku.com/v_show/id_XMjY3MzExNzg4.html

出0入0汤圆

发表于 2011-5-16 15:12:46 | 显示全部楼层
哈哈~楼主做得很不错哦~
我也在做类似的功能,也是用超声波定高的。还会加上气压计做3米以上高度的定高或者航线,用来配合GPS用的。现在刚刚开始做超声波…
有什么问题还希望能和楼主讨论哈~

出0入0汤圆

发表于 2011-5-16 18:00:08 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-5-31 06:43:47 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-9-1 09:07:07 | 显示全部楼层
楼主强人啊!正需要向你学习这个定高技术,不过我们要用在直升机上。希望有机会可以探讨!

出0入0汤圆

发表于 2012-6-3 19:07:14 | 显示全部楼层
楼主我的mk飞控可以像你这样加超声波吗?

出0入0汤圆

发表于 2012-6-3 20:00:16 | 显示全部楼层
楼主你好,这个论坛的文件一个也不好下载,你能发个吗?QQ32533448谢谢啦

出0入0汤圆

发表于 2012-6-3 20:07:37 | 显示全部楼层
auuuux 发表于 2011-5-9 18:43
上试飞视频:

http://v.youku.com/v_show/id_XMjY1MDY1MDM2.html

求超声波定高代码啊,我现在不开螺旋桨测量出来高速很准,就是在静态下。当打开螺旋桨是测量出来偏差很大啊。
怎么解决?

本帖子中包含更多资源

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

x

出0入0汤圆

发表于 2012-6-6 11:59:00 | 显示全部楼层
强大的LZ

出0入0汤圆

发表于 2012-6-6 18:55:13 | 显示全部楼层
有缺陷

那如果悬停着时下方有人走过呢???

出0入0汤圆

发表于 2012-6-6 19:12:40 | 显示全部楼层
alayi 发表于 2012-6-6 18:55
有缺陷

那如果悬停着时下方有人走过呢???

那会飞上去一点

出0入0汤圆

发表于 2012-6-6 19:23:56 | 显示全部楼层
cndavy 发表于 2012-6-6 19:12
那会飞上去一点

呵呵   那我就在下面跑来跑去, 那就好玩了  

出0入0汤圆

发表于 2012-6-7 00:04:16 | 显示全部楼层
帅气

出0入0汤圆

发表于 2012-6-7 07:59:24 | 显示全部楼层
楼主厉害

出0入0汤圆

发表于 2012-6-7 10:07:55 | 显示全部楼层
好帖子要顶

出0入0汤圆

发表于 2012-6-7 10:16:06 | 显示全部楼层
好帖子啊!!!!!楼主难道是大卫吗?牛叉啊!!!碉堡了!!!

出0入0汤圆

发表于 2012-6-7 14:46:33 | 显示全部楼层
楼主很牛啊,我也想学习学习。现在不能下载附件。。。

出0入0汤圆

发表于 2012-6-8 11:24:00 | 显示全部楼层
楼主好厉害!!!程序借用学习下~感谢楼主

出0入0汤圆

发表于 2012-7-13 21:55:37 | 显示全部楼层
lz添加的代码就只是一楼的“四轴超声波定高代码.rar”吗  有没有上传少了

出0入0汤圆

发表于 2012-7-13 22:02:17 | 显示全部楼层
强人~!

出0入0汤圆

发表于 2012-7-14 16:01:29 | 显示全部楼层
看了楼主的视频深有感触,四周飞行器走的很平稳,希望以后能在高海拔的位置悬停!

出0入0汤圆

发表于 2012-7-23 16:24:21 | 显示全部楼层
啊哈哈哈!牛人!佩服佩服!

出0入0汤圆

发表于 2012-7-23 21:34:06 | 显示全部楼层
楼主是武汉的吧,还在做四轴吗?

出0入0汤圆

发表于 2012-7-24 10:28:15 | 显示全部楼层
楼主你好,我的APM2.0的飞控能用你的方法用超声波吗?

出0入0汤圆

发表于 2013-6-29 17:12:44 | 显示全部楼层
这个帖子不错,顶出来

出0入0汤圆

发表于 2013-6-29 20:38:42 | 显示全部楼层
好东西要mark一下

出105入79汤圆

发表于 2013-7-8 21:59:35 | 显示全部楼层
额这个飞控好像是兔子吧

出0入0汤圆

发表于 2013-8-27 16:53:50 | 显示全部楼层
好东西。

出0入0汤圆

发表于 2013-8-27 18:59:34 | 显示全部楼层
居然是11年的帖子。。。。。

出0入0汤圆

发表于 2013-8-27 19:26:05 | 显示全部楼层
楼主好给力,必须顶一个!

出0入0汤圆

发表于 2013-8-27 19:56:56 | 显示全部楼层
楼主强人  

出0入0汤圆

发表于 2013-8-27 22:35:24 | 显示全部楼层
卡尔曼滤波。。。

出0入0汤圆

发表于 2013-8-28 12:57:02 | 显示全部楼层
非要超声波吗,用MS5611气压定高行不?

出0入0汤圆

发表于 2013-12-12 13:44:10 | 显示全部楼层
那个调参软件能分享下么?

出0入0汤圆

发表于 2013-12-12 13:45:00 | 显示全部楼层
您QQ多少…请教问题

出0入0汤圆

发表于 2013-12-24 13:48:16 | 显示全部楼层
强悍!!!

出0入0汤圆

发表于 2013-12-25 10:15:12 | 显示全部楼层
好玩

出0入0汤圆

发表于 2014-2-7 17:57:01 | 显示全部楼层
真的厉害!        

出0入0汤圆

发表于 2014-2-17 10:58:00 | 显示全部楼层
请问下楼主,你的附件里面的PID模型就是视频里面四轴用的?

出0入0汤圆

发表于 2014-2-17 14:35:15 | 显示全部楼层
不错,学习了,多谢分享。

出0入0汤圆

发表于 2014-2-17 16:38:38 | 显示全部楼层
佩服你,人才呀,学习了。

出0入0汤圆

发表于 2014-3-23 22:42:47 | 显示全部楼层
已读 谢谢!

出0入0汤圆

发表于 2014-5-15 14:54:43 | 显示全部楼层
不错,学习了

出0入0汤圆

发表于 2014-7-18 20:44:10 | 显示全部楼层
你好,我是一大二在校大学生,最近做四轴正好到定高这块,恰好也是用的超声波,就发现返回的高度数据不是太好(用的串口型的超声波模块),我看你的对数据进行了卡尔曼滤波啊,如果看到消息能否回一个,希望您指点一番,谢谢了(我先试着这样去做看)

出0入0汤圆

发表于 2014-7-21 17:09:51 | 显示全部楼层
cys179 发表于 2012-6-3 20:07
求超声波定高代码啊,我现在不开螺旋桨测量出来高速很准,就是在静态下。当打开螺旋桨是测量出来偏差很大 ...

哥们,你的怎样了,我也做到超声波定高这块,我发现我的传回来的高度基本上还是线性的(在比较平滑的地面上,人工草坪上就不行),但是总还是觉得回来的数据偶尔跳变,所以现在最想滤一下波,卡尔曼滤波理论看懂了,但是用不来,而且那些现成的程序里边的东西也不太懂,最近在努力学,我们联系一下哇,相互交流一下(QQ:610139290   斗,如果愿意的话注明一下备注:阿莫四旋翼diy朋友)

出0入0汤圆

发表于 2014-7-22 11:29:17 | 显示全部楼层
牛逼啊!!

出0入0汤圆

发表于 2014-9-1 00:03:13 | 显示全部楼层
牛逼!!!

出0入0汤圆

发表于 2014-9-1 15:04:07 | 显示全部楼层
LZ的飞控是基于MWC的吗?

出0入0汤圆

发表于 2014-9-21 20:28:10 | 显示全部楼层
楼主,是不是超声波定高度不是很高?

出0入0汤圆

发表于 2014-9-22 16:34:36 | 显示全部楼层
膜拜,请问楼主,有没有测定高高度的极限

出0入0汤圆

发表于 2014-9-23 12:35:21 | 显示全部楼层
楼主用的是APM飞控么???

出0入0汤圆

发表于 2014-9-30 16:09:43 | 显示全部楼层
  那是不是头顶也要装一个防止撞头啊。。

出0入0汤圆

发表于 2014-9-30 19:27:19 | 显示全部楼层
一定范围内用的着的。

出0入0汤圆

发表于 2014-9-30 19:53:10 | 显示全部楼层
强帖留名。。

出0入0汤圆

发表于 2014-11-26 19:03:26 | 显示全部楼层
厉害,慢慢研究一哈

出0入0汤圆

发表于 2014-11-26 19:33:10 | 显示全部楼层
牛人啊,佩服佩服!

出0入0汤圆

发表于 2014-11-26 19:56:55 | 显示全部楼层
  很好的应用,不知道最高距离可以有多高?

出0入0汤圆

发表于 2015-7-25 20:05:09 | 显示全部楼层
楼主好厉害,我想用stm32做定高,能给代码参考一下吗

出0入0汤圆

发表于 2015-7-31 13:04:56 | 显示全部楼层
楼主太强大,佩服!

出5入10汤圆

发表于 2015-7-31 14:31:24 | 显示全部楼层
楼主强人呀

出0入0汤圆

发表于 2015-7-31 16:33:20 | 显示全部楼层
超声波不是只能测很低的高度的吗?
也就几米,飞高了怎么办?

出0入0汤圆

发表于 2015-8-12 02:29:07 | 显示全部楼层
大牛。。。。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-6-15 06:13

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表