|
这里给想做四轴飞行器完全自动驾驶(非短时辅助平衡)的朋友一些建议,以免刚入门的一些朋友走弯路。
最近研究了一些国外无人驾驶直升机的成功案例。他们的硬件构架有一些共同点。
主要构件如下
传感器部分:
1.3轴陀螺仪
2.3轴加速度传感器
3.3轴磁力计(电子罗盘)
4.大气压力传感器(用于测量高度)
5.GPS模块
控制部分:
1.1个单片 负责采集1-4传感器的数据,对PPM接收的信号进行解码,驱动马达和伺服器。
2.1个高性能的ARM处理器 与单片机通过串口通讯。 负责把单片机采集的数据导航数据进行处理,接受GPS位置信息,计算出飞行器的
倾角和各个轴的速度和加速度。根据这些数据通过控制策略把驱动信号通过串口送回单片机。
其他部分:
1.PPM发送、接收
2.数据链路
3.地面站单片机、PC机。
重点讨论这几个问题。
首先这里的传感器是否必须加入呢?这些传感器都比较昂贵,要是能少几个也能行该多好啊。传感器需要3轴吗?2轴的行不行?
陀螺仪就不讨论了,没有3轴陀螺你手动飞行都别想。
Q:有GPS了,为什么还要加速度传感器呢?加速度传感器能得到位移,为什么要GPS?
A:GPS能得到真实的位置,也能得到速度和加速度,但是它太慢了,而且精度不高,所以必须结合加速度传感器的数据对真实的速度和加速度进
行估算。
举个例子,A点位置为xy(0,0),B点位置为xy(10,10). GPS是绝对定位,由于误差大约是10米,它能告诉你A点和B的位置,而A点到B点直线上的
任意位置它无法给出。你不可能等你的飞行器跑出10米后再进行位置校正,你需要得到精确的位置信息。怎么办?这时候加速度传感器上场了
,它能告诉你飞行器沿着y走了1m 这时候你就能估算出你的位置是(0,1)。接着加速度传感器告诉你沿着x轴走了1m。你能估算出现在你的位置
是(1,1)。在GPS定位精度不够的情况下也能得到飞行器准确的位置信息了。
加速度通过积分能得到速度,再积分能得到位移。积分的过程会把很小的误差累计进取,最终形成无法容忍的巨大误差,需要GPS进行校正。
接着上面的例子,加速度传感器能告诉你沿着x走了多少,沿着y走了多少。如果没有GPS只听加速度传感器的话我能得到准确的位置吗?答案是
不能。由于加速度传感器是有误差的,他告诉你的每一步都有误差,如果你只按照他说的走有可能把你带到河里去。 而且随着时间的推移加速
度传感器测量位置的误差越来越大,他说的话越来越不能让人相信了。必须找GPS大哥问一声“喂!我到底走到哪里了”。
另外加速度传感器的作用之一是测量倾斜角度(在动态条件下需要结合陀螺仪数据才能得出真实倾角)。如果飞行器的倾角不知道就别谈控制了
。
Q:一定要磁力计吗?那个东西这么贵,不要它好不?一定要3轴吗,2轴的行不行?
A:不要还真不行。GPS是可以测出行进中的方向,但是精度不够。如果我得不到准确的方向信息,不只是不知道该往哪个方向走那么简单。如果
我不得不到准确的方向信息,我就不知道加速度计测量加速度值是哪个方向的,也就不知道速度和位移的方向。造成的结果是我无法估算飞行
器的位置,或者估算的值是错误的。
2轴的磁力计在飞行器倾斜角度不大的时候可以工作,倾斜角度很大时不能工作。在倾斜角度很大时你可能要屏蔽磁力计的数据,以防止方向出
现错误。(方向角错误会造成位置误算的严重错误) 结论是可以用,但是要作特殊处理。推荐使用3轴的。
Q:大气压力高度计一定要用吗?
A:GPS的高度测量很不精确,如果没有大气压力高度计很难维持高度。需要用。
接下来讨论控制部分。
Q:一定要单片机+Strong ARM吗?能不能只用单片机就搞定,或者只用ARM? 需要多高性能的ARM处理器?
A:只用单片机构成的飞行器是可以飞的,但只是手动飞行。自动驾驶需要进行大量的计算。我所见到的一个非常成功的设计是使用的神经网络
进行控制。神经网络所需的运算量是巨大的。卡尔曼滤波、坐标变换都是相当耗费资源的。
只用ARM可以实现,但是例如传感器数据采集、读取PPM遥控信号、输出控制电机、伺服的PWM信号这样的任务都会占用处理器资源。
所以最好的方法是用单片机做辅助性的工作,Strong ARM进行导航数据处理工作。他们之间使用串口通讯的。由于数据量不大所以串口完全可
以胜任。用串口的好处是如果你发现你现在用的ARM性能不够可以换个高性能的,只需要连接串口就行了,而不需要更改整个设计。
ARM处理器需要很高的性能。据国外一个成功经验,处理器用的是一个600Mhz的ARM处理器,而且他本人说 yes!it use all of them. 最低配置
为200Mhz的ARM处理器。
这里要强调一个问题就是不要使用性能不高不低处理器。比如AVR32的低端系列AT32UC3A*。作为单片机辅助处理使用它的性能有很大浪费。作为导航数据处理用它的
性能不足。
随着代码的优化对处理器性能的要求是否会降低是另一个问题了,据我所知目前要达到很好的控制效果需要最低200Mhz的ARM处理器。
另:也可以使用非ARM构架的高性能处理器,只是ARM处理器通用性强一些。
下面是一个成功的直升机自动驾驶仪的方框图。
![](http://cache.amobbs.com/bbs_upload782111/files_11/ourdev_421204.gif)
(原文件名:autopilot_rev3block.gif)
本贴被 kortan 编辑过,最后修改时间:2008-09-18,00:23:47. |
阿莫论坛20周年了!感谢大家的支持与爱护!!
知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)
|