5iMX宗旨:分享遥控模型兴趣爱好

5iMX.com 我爱模型 玩家论坛 ——专业遥控模型和无人机玩家论坛(玩模型就上我爱模型,创始于2003年)
楼主: c_nmusic
打印 上一主题 下一主题

共轴双桨自动驾驶直升机(二)之四轴飞行器篇

[复制链接]
81
发表于 2009-8-21 07:36 | 只看该作者
好像很专业哦,学习了。

欢迎继续阅读楼主其他信息

82
发表于 2009-8-21 10:30 | 只看该作者
:em26: 很好玩呀,能普及就好了.
83
 楼主| 发表于 2009-8-21 16:32 | 只看该作者
平显和到网页的数据流都调通,可以和Google Earth联动了。
84
 楼主| 发表于 2009-8-21 19:32 | 只看该作者
原帖由 colahacker 于 2009-8-20 22:10 发表
我有几个问题想问你,,,希望你能解答我哦

1:计算机是怎样发射信号给飞机的,是你自己做的模块吗?

2:计算机上的控制程序是你自己编写的吗?

3:你是学什么专业的啊,或者说你是做什么工作的啊?


呵呵,希望你不 ...

无线模块是买的,自己没本事做哦。
控制程序全部是自己完成的,这个没有卖的。
我是软件出身的,硬件纯粹是门外汉。
85
发表于 2009-8-21 23:53 | 只看该作者
楼主今天也在,佩服,对你的图象对比有兴趣,不知道可以共享不?
86
 楼主| 发表于 2009-8-22 09:04 | 只看该作者
代码不能公开,但这个思路其实很简单。
1、对原始图像进行灰度化处理,每个点的RGB颜色信息利用一个公式转换成255级的灰度。
2、对亮度进行最大化处理,扫描图像里的最亮和最暗的点,然后把这个亮度差异放大到0-255范围内,就是计算出一个放大倍数,然后对所有的像素都进行放大。
3、对图像降低灰度等级,我目前把它降到了16级灰度。255/16一等分,所有像素都除以这个数值就得到了降低后的灰度。
4、进行图像比较,比如原始图的0,0座标开始到320,0和新的图像进行比较,统计出相同的颜色数量,然后计算发现相同颜色和总比较像素的一个百分比。下面用原始图像的1,0点到320,0和新图像比较,又可以得到一个百分比。这样一直比较下去,就可以知道原始图像从哪里开始和新图像的重合部分最大。同样Y座标也是如此。

这种方法基本没什么算法,非常简单,但效率不高,如果图像差异大的话需要反复比较相当多次才能找到重合部分。

目前已经可以识别这种模糊图像。

[ 本帖最后由 c_nmusic 于 2009-8-22 09:06 编辑 ]
87
发表于 2009-8-23 11:24 | 只看该作者

没看懂

偶也没看懂  学习学习
88
发表于 2009-8-23 14:01 | 只看该作者
谢谢提示,我好好琢磨琢磨...呵呵
89
 楼主| 发表于 2009-8-27 09:51 | 只看该作者
到目前为止,已经调试了2架四轴,发现MK代码里的长期融合还是必不可少的。

虽然我最开始测试的四轴,经过“千锤百摔”后陀螺仪性能达到相当稳定的程度,只依靠加速度计的即时融合就可以修正好积分偏差。但并不是所有的四轴都是这样,我后来做的几个就都都有积分越来越大的问题。这会引发一个非常严重的问题——长时间飞行后四轴会越来越歪,歪到遥控器必须满舵量才能让四轴飞平。数据显示原因就是积分越来越大,而修正量总是不够大,虽然在小幅度范围内积分有大有小,但总体趋势是越来越大。

在反复调整螺旋桨、机架试图减小振动没有效果后,我只好手动加了一个让积分衰减的代码:
        if (nIntegralPitch > 0.0)
        {
                nIntegralPitch -= 0.01;
        }
       
        if (nIntegralPitch < 0.0)
        {
                nIntegralPitch += 0.01;
        }
       

        if (nIntegralRoll > 0.0)
        {
                nIntegralRoll -= 0.01;
        }
       
        if (nIntegralRoll < 0.0)
        {
                nIntegralRoll += 0.01;
        }
这样一来就不再出现越来越偏的问题了。

这段代码看起来的执行效果和MK的长期融合非常接近,但由于只是盲目地增大或者减小积分,导致四轴漂移比较大,在平衡位置10度左右就无法拉平了。所以今天我就重新启用MK的长期融合逻辑,只是把衰减量由原来的/16改成/32,这样调整量也基本在0.0X附近。刚才试飞效果不错,漂移明显减小了。
90
发表于 2009-8-27 17:28 | 只看该作者

看了搂住的帖子

怎么觉得晃悠,
我晕啊,
太厉害了!
基本没有我看得懂的:em19:
91
发表于 2009-8-31 10:22 | 只看该作者
xuexiyix!!!!!!!!!
92
发表于 2009-9-1 21:07 | 只看该作者
哎,代码拆成字母我全都认识

(*^__^*) 嘻嘻
同样软件工程出身,差别砸就那么大腻
93
发表于 2009-9-2 23:16 | 只看该作者
我也想学习相关的技术

无线电啦,电子什么的,有什么好的教材或书籍推荐一下嘛

今天特意跑别的城市的大书店转了一圈,没有找到,主要是不知道什么样的适合自己

麻烦你了,不胜感激

我是计算机专业,没有电子方面的基础
94
 楼主| 发表于 2009-9-4 08:57 | 只看该作者
书不是主要的,兴趣是最主要的。

如果你对这方面兴趣非常浓厚,那你自己就会找到最适合你的书。

老实说,我目前买的书基本都没翻过呢,倒是淘宝上买的开发板还是提供了不少帮助。
95
发表于 2009-9-15 10:49 | 只看该作者
能不能提供些开始学习的资料?

偶是做程序开发的,也在CE上开发过办公应用。

现在的系统能完成的功能已经非常强大,很多手机的CPU现在都上400MHZ。

不过和模型连在一起没有折腾过,看到有很多电路要自己设计,像电路的设计的基础在哪看?

比如需要哪些哪些模块之类。
96
发表于 2009-9-15 11:19 | 只看该作者
偶最想知道的是,如何通过践入系统上跑的程序来控制设备?

如何和外接设备进行通信?也是用串口的AT指令么?还是其它接口。在没有驱动的情况下,如何进行开发?

偶用一个淘汰下来的智能手机能否去实现这些??
97
 楼主| 发表于 2009-9-15 19:09 | 只看该作者
模型一般用不了那么高的CPU来进行控制,我四轴上用来控制姿态的处理器只要50MHz就可以了。
用那些类似智能手机的“封闭系统”来控制外部设备的话,恐怕你只有串口可以用。如果你自己设计电路那么能更灵活些。
如果你想从头开始,那么还是找一个标准的开发板来比较实际,一般都会提供全部资料和驱动。

[ 本帖最后由 c_nmusic 于 2009-9-15 19:12 编辑 ]
98
 楼主| 发表于 2009-10-10 09:08 | 只看该作者
前一段时间,研究了一下如何利用GPS的坐标实现自动航线。不过为了便于控制,这个实验我用了一个小车来做,而不是四轴飞行器。


履带小车,右边红色的是3轴电子罗盘

右边的是蓝牙模块

利用四轴上的控制板,外加一个3轴的电子罗盘(MK的四轴上用的那种),配合上GPS,一起装到履带小车上,最后挂上遥控器,硬件部分就OK了。

软件部分,主要是如何将目标的GPS坐标和当前的位置进行处理,转换成车头的朝向和方向信息。以前总以为这部分会很复杂,实际想明白后其实很简单。知道2个坐标的X,Y以后,就可以得出从(0,0)点到这2个坐标点的角度,利用反正切函数。这样就得到了目标坐标的车头朝向和当前的车头朝向,剩下的就只要驱动马达进行转向,让这2个朝向相同就可以了。航向对准后,只要向前开就OK了。

由于小车没有左右漂移的本领,而四轴有,所以对于四轴来说,飞航向还可以有另外一种方法,就是不改变航向,直接漂移过去。这个算法让我花了一点时间,后来想明白后应该针对当前的机头朝向对应的直角坐标系的4个象限进行分别处理。比如如果当前朝向位于0到90度之间,当目标坐标的X大于当前位置的X时,我们需要超前飞,而对于Y坐标则是反过来。其它象限也是如此,根据实际情况决定是否要和坐标的数值相同或者相反。反而更简单,连三角函数都不用了。

在实际测试中,虽然算法没有问题,但由于云层影响,GPS模块收到的数据和实际的相差几十米。本该是掉头开回来的,结果确给我来了个右转90度然后自己跑掉了。于是后面我就研究了一下差分GPS。

在搜集到的资料里,通常的差分GPS(DGPS)需要一个差分基站,用RTCM SC-104格式广播差分数据,然后GPS接收段利用专门的接收机接收并解码这些数据,通过GPS模块的差分通道传递过去,以此来实现修正的功能。

我在网上也找到了另外一种实现方法,当中没有用到特殊的RTCM SC-104广播和相应的接收设备。而是利用Internet来传递这些数据(http://www.wsrcc.com/wolfgang/gps/dgps-ip.html)。反正对于GPS模块来说,只要在正确的端口收到正确的数据就可以了,无所谓是不是通过无线过来的。可惜这个服务器提供的数据都是位于国外的差分基站的返回信息,通过研究网页上的代码,发现他们也只不过将RTCM SC-104接收机的信息转换成TCP/IP包发过来了,并没有实现自己的纠正代码。也就是说,如果我不能在本地建立一个RTCM的基站和接受设备,我是没法利用这中方法实现DGPS的。

基本是又回到原点,不过又Google了一阵子后,发现了另外一种类型的DGPS(http://www.mapopen.com/issue/show_22.htm)。这种更简单——位置差分。

算法非常简单:只要我知道当前位置的GPS坐标(不用精确,只要维持不变即可),我还知道GPS给我返回的当前坐标,这样我就可以计算出这2个坐标之间的差异。这个差异就包含了卫星钟误差、星历误差、电离层误差、对流层误差等,可以通过传递这个差异数据来消除这部分的误差。于是我就利用笔记本的蓝牙接口和以前买的蓝牙模块把小车和PC间搭起了无线链路,以1Hz的频率传递这个差异数据。不过目前由于使用的是不同的GPS模块,外加天线不同以及设备自身的干扰,效果还不是很明显。等有时间了用完全相同的2个硬件来测试一下,理论上应该能达到很高的精度。

[ 本帖最后由 c_nmusic 于 2009-10-10 09:33 编辑 ]
99
 楼主| 发表于 2009-10-10 09:47 | 只看该作者
最近,也抽了点时间研究了一下迷你版四轴。


在淘宝上的“我的飞行梦”店铺里找到小的正反桨,使迷你四轴成为可能。通过测试,获得了一些拉力数据,总的来说情况并不乐观。


测试拉力用的,放到一个0.1克分辨率的电子称上就可以知道拉力

单个螺旋桨拉力:7.4克
4个螺旋桨拉力:29.6克,这就是我们的全部了。

4个7mm空心杯马达:2.5克X4=10克
4个螺旋桨:0.8克X4=3.2克
锂电:3.7克X2=7.4克
3个陀螺仪:0.3克X3=0.9克
MCU: 0.3克
LM324: <0.1克
1117S: <0.1克
TF卡座+TF卡:0.8克
蓝牙模块:1克

目前剩余拉力:5.9克。

剩下的还有一个机架和控制电路板,还是和以前一样,我还是准备拿PCB来做。1.2mm厚度的电路板,以前做的一块,3916平方毫米的面积,10.3克。这么算下来,这个迷你四轴的电路板总面积必须面积<2242平方毫米才有可能飞起来。

目前的机架,上面是一个10寸的GWS三页桨。这个机架估计重量4.3克。

将要用到的部分零件

[ 本帖最后由 c_nmusic 于 2009-10-10 09:50 编辑 ]
100
 楼主| 发表于 2009-10-10 09:58 | 只看该作者
通过这段时间的研究,发现自己对机器人、人工智能领域非常有兴趣,想在这一领域做一定的工作。希望在北京从事这些领域的公司如果有意向接纳我,请发邮件到 cnmusic@163.net 与我联系。谢谢!

[ 本帖最后由 c_nmusic 于 2009-10-18 08:32 编辑 ]
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

关闭

【站内推荐】上一条 /1 下一条

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