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

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

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

[复制链接]
41
发表于 2009-6-12 10:22 | 只看该作者
飞得不错。
另外想问一下:楼主的四轴现在能做到像MK的视频里那样,不用控制自主悬停吗?楼主目前用的是AVR处理器吗?

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

42
 楼主| 发表于 2009-6-12 13:01 | 只看该作者
原帖由 donovan 于 2009-6-12 10:22 发表
飞得不错。
另外想问一下:楼主的四轴现在能做到像MK的视频里那样,不用控制自主悬停吗?楼主目前用的是AVR处理器吗?

目前没有做GPS,所以无操作的话四轴会自己被风吹走。
目前用了AVR和ARM7这2种处理器。
43
 楼主| 发表于 2009-6-14 22:08 | 只看该作者
新的ARM9的板子到了,可以装摄像头了。
下面就要在Linux下调通这个,然后再调通Wifi,就有得玩了。:em15:
44
发表于 2009-6-14 23:40 | 只看该作者
一直没看明白MK代码里 FCParam.Kalman_MaxFusion,FCParam.Kalman_k,FCParam.Kalman_MaxDrift等的变量是干什么用的。所以想请教楼主。

比如FCParam.Kalman_k的值在234句赋值为 -1,然后在后面好像就没有变化了。但是这个变量好像很重要。

我看的是killagreg英文标注的0.71h代码,谢谢指教。
45
 楼主| 发表于 2009-6-15 09:09 | 只看该作者
看fc.c里SetNeutral函数的末尾,在那里有定义。
我估计这个变量一直没有使用呢,MK的代码不是完全都在工作的。
有些是预留的。
46
 楼主| 发表于 2009-6-18 18:29 | 只看该作者
经过这些天的努力,终于,出图像了.... :em15:



左边那个小小的模块就是无线模块,直接走Wifi的。



这是摄像头和ARM9的板,还有一个USB集线器在上面一点。



这是通过Wifi实时传过来的摄像头画面,中兴微的便宜摄像头效果比较一般。

对于PC来说这不算什么,不过在Linux下还是要费些功夫才能都搞定的。
47
 楼主| 发表于 2009-6-27 10:11 | 只看该作者
花了一个星期的时间,给这个摄像头部分一个完整的解决。
刚开始时使用的中星微301摄像头,直接可以输出MJPG数据流,所以问题很简单,稍微配置一下就可以出图像。但这个摄像头体积比较大,重量也很重,不大适合装到四轴上。于是我又开始搜索新的摄像头。

跑到电脑市场,买了2个目前主流的免驱动摄像头。不出我的意料,果然接上Linux不认,于是就开始疯狂搜索驱动。可惜中星微没有提供一个Linux的驱动,只好在老外的代码里搜索。最后还是通过升级Linux内核到最新的2.6.30,然后利用里面的UVC驱动把摄像头驱起来了。

下面就要找到一个合适的摄像头服务器软件,也是花了很大的功夫。在Linux下,摄像头接口有V4L和V4L2。大多数比较早的程序都只支持V4L,结果不支持我的免驱动摄像头。最后找到了一款MJPG-Streamer(http://mjpg-streamer.sf.net/),这个利用插件的模式可以支持2种接口。

本来已经很简单了,但我忘记加一个参数,导致这个程序非要用从摄像头获取MJPEG数据才能正常工作。我以为这个软件又不行了呢。最后每办法了,只好研究起S3C2440里自带的CMOS摄像头接口,配合Linux下的一个驱动自己写了一个MJPG-Streamer输入插件,才算最终出图像。



刚才在PC上研究了一下,发现只要多加一个参数,我目前的程序已经是做到摄像头通吃了。不管是有驱还是无驱还是CMOS摄像头,都可以支持了。:em24: ,应该算是一个比较完美的解决方案了。

不过目前的问题就是,如果摄像头没有硬件压缩,依靠2440自己来软压JPG,速度上不去。在320x240的情况下勉强能到10FPS。这个有点郁闷,但是目前没有好办法了,先这样吧。
48
 楼主| 发表于 2009-6-28 17:41 | 只看该作者
上一个最新的四轴照片。



夏天的“清凉版”,为了减轻重量到处镂空。现在全重控制在850克了。
今天GPS、气压传感器、电子罗盘都放上去了。现在换用便宜的天地飞-6A遥控器,把天线立起来,目前看还不错。

等到周一板子到了就可以把ARM9、Wifi、摄像头装上去了。
49
发表于 2009-6-28 23:08 | 只看该作者
看了一两个小时,想请教楼主一下,我想把普通的PC用摄像头改成无线传输,接受端用废弃的手机做监控,实现起来难吗,没什么基础,能提供现成的资料最好。谢谢:loveliness:
50
 楼主| 发表于 2009-6-29 08:45 | 只看该作者

回复 #49楼

实现起来有相当难度,不如去网上买现成的还比较省钱。

一般PC的摄像头都是USB接口,这个本身没有无线功能,所以需要外加板子才能做到无线。而接收端,一般手机要么红外,要么蓝牙,但是都没有提供视频显示的功能。要达到你的目的,你需要破解手机操作系统。或者干脆只用一个显示屏。难度都很大的。
51
发表于 2009-6-29 10:20 | 只看该作者
佩服呀:em26:
想请教下楼主:你以前的板子是怎样实现与计算机通讯的呢?用到了什么无线模块吗?
我比较菜啊,问的问题不知道楼主看不看得明不白:em04:
52
 楼主| 发表于 2009-6-29 11:30 | 只看该作者
以前用的就是一般的433Mhz的无线数传模块,电子市场有很多种,我选了体积比较小的一种。
53
发表于 2009-7-5 16:59 | 只看该作者
借宝地请教楼主一个问题<br />
我想用单片机模拟一下遥控器的PPM输出,叠加到遥控器上,就像你第一个帖子里做的那样。今天看了下控的输出,比较奇怪,好像是以低电平宽度表示舵量呢。网上的资料都是以高电平宽度表示舵量,是我理解错了还是这个控本来就是这样,各个厂家不一样?尽管编码方式都是一样的。红圈是油门通道,处于关闭状态,其余通道置中。

[ 本帖最后由 失速飞行 于 2009-7-5 17:03 编辑 ]

遥控器波形.png (3.46 KB, 下载次数: 87)

遥控器波形.png
54
 楼主| 发表于 2009-7-5 17:40 | 只看该作者
如果你接的是接收机最后输出到舵机的那个信号,那部分是高电平表示舵量,因为那里PPM信号已经被“拆散”了。

如果你接的是发射机或者遥控器的一个PPM总合的信号,那么这里的信号是出于原始的PPM波形,就像你上面的图那样,低到高电平变换表示一个新的通道开始,而后面的低电平表示这个通道的脉宽。

其实就是一个有没有被解码的PPM的区别。
55
发表于 2009-7-5 20:22 | 只看该作者
啊,明白了,非常感谢:em26:
56
发表于 2009-7-8 20:56 | 只看该作者

再次请教楼主

其实我也不好意思老在楼主的帖子里问问题,不过实在没办法:em17: ,麻烦楼主了
我用AVR模拟PPM信号驱动舵机,输出信号是周期20ms,1.5ms的高电平,结果舵机左右摆个不停,为什么呢?和和高电平的电压有关系吗?视频如下:


代码是这样写的(Mega16L,8PU)
void main()
{
  DDRD=0x30;
//WGM=15,周期20ms, 频率50HZ,占空比OCR1A 50% ,OCR1B 7.5%(1.5ms)
TCCR1B = 0x00;
TCNT1H = 0xB1;
TCNT1L = 0xE1;
OCR1AH = 0x4E;
OCR1AL = 0x1F;
OCR1BH = 0x05;
OCR1BL = 0xDC;
TCCR1A = 0x63;
TCCR1B = 0x1A;
}
57
 楼主| 发表于 2009-7-8 21:36 | 只看该作者
一般来说,我比较喜欢通过定时器来切换IO口的状态。而不是用PWM来输出PPM。因为PWM的控制过于细致了,PPM用不到那么细。

舵机抖动就是输出的PPM信号不完全一致,有的时候过宽有的时候过窄,如果你确定20ms的周期没有错误的话。

http://bbs.5imx.com/bbs/viewthre ... ;page=26#pid3319190
这个是我写的包括PPM采集和输出的代码,有兴趣你可以参考一下。我只是利用定时器改变一下IO口的状态,没有用到PWM。
58
发表于 2009-7-8 21:58 | 只看该作者
谢谢楼主,我换你说的方法再试试。
----------------------------------------------------------
换了方法还是不行,偶快崩溃了……
实在不行换了个舵机,先前用的辉盛9g,换了一个辉盛标准舵机sg-5010,无抖动;再换一个辉盛5g,正常;甚至使用第一次的代码还是正常。很郁闷,也许辉盛9g比较挑剔,居然第一个就拿了它做实验,太打击人了。

[ 本帖最后由 失速飞行 于 2009-7-9 02:00 编辑 ]
59
 楼主| 发表于 2009-7-9 08:28 | 只看该作者
辉圣9克对PPM的要求比5g更严格,这个问题我也遇到过。应该说是9g比5g灵敏。
如果你输出的PPM波形完全正确,是不会抖动的。我想不应该是找舵机适应你的程序,而是你来适应舵机。
60
发表于 2009-7-9 08:47 | 只看该作者
是的,应该还是程序不够仔细。
我没有专业的示波器,用的是一个声卡虚拟示波器。看从接收机上发出的信号频率很稳定,而程序输出的信号频率却在不断跳动,对这个问题很是不解。我用的是一块AVR学习板,如果只是输出占空比50%的PWM,频率很稳定,但如果改变占空比,示波器上频率值就跳个不停。
用通过定时器来切换IO口的状态的方法同样存在这个问题,实在想不出问题出在哪
------------------------------------------------------------------------
终于解决了!不是波形的问题,而是电源!我的单片机采用电脑的USB供电,以前使用1602液晶的时候就存在明显的闪烁现象。想到这点后,改成3节干电池给单片机供电,现在辉盛9g工作完全正常了。不过,这种电源问题对我来说实在太隐蔽了!

[ 本帖最后由 失速飞行 于 2009-7-9 17:55 编辑 ]
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

关闭

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

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