WMC,Multiwii开源四轴飞行器项目介绍与全套资料下载
MWC是Multiwii Copter的缩写,Multiwii是控制多旋翼航模的开源固件。Multiwii最初由法国航模爱好者Alex创立,用于控制他自己做的三轴飞行器。后经全世界各大高手改造扩展,现在Multiwii不仅仅支持三轴飞行器、四轴、六轴等多轴系列,还支持固定翼和直升机等航模。功能强大而且简单易用。Multiwii支持的传感器类型极为丰富,而且支持十分广泛的外部设备和飞行模式,这让Multiwii飞控固件发展为国外最受欢迎的多轴开源固件之一。当然Multiwii也有缺点,与APM、海盗等其他开源固件相比,Multiwii最大的不足就是目前还不支持地面站。
MWC多旋翼航模使用教程系列网址:
1、Multiwii,MWC多旋翼官网:http://www.multiwii.com/
2、Multiwii wiki 网址:http://www.multiwii.com/wiki/index.php?title=Main_Page
3、RCgroups上所发的有关Multiwii的主贴:http://www.rcgroups.com/forums/showthread.php?t=1261382
4、MWC入门教程:
(1)http://www.rcgroups.com/forums/showthread.php?t=1332876
(2)http://www.rcgroups.com/forums/showthread.php?t=1348268
5、PID调参教程:http://www.rcgroups.com/forums/showthread.php?t=1375728
6、WMC多轴常见问题:
(1)http://www.multiwii.com/faq
(2)http://www.rcgroups.com/forums/showthread.php?t=1340771#post16587954
(3)http://www.multiwii.com/wiki/index.php?title=FAQ
WMC多轴飞行器资源下载网址:
1、Multiwii各版本程序下载地址:https://code.google.com/p/multiwii/downloads/list
2、Arduino软件下载地址: http://arduino.cc/en/Main/Software
(Arduino是编辑和烧录Multiwii固件的必备软件,建议大家下载Arduino 1.0.1及其以后的版本)
3、FTDI USB转UART模块的驱动下载地址:http://www.ftdichip.com/Drivers/VCP.htm
(这个是用来连接电脑给飞控板烧录程序的)
4、Multiwii 的GUI程序需要JAVA虚拟机的支持,需下载安装:http://java.com/zh_CN/download/manual.jsp?locale=zh_CN
(如果你的电脑是win7 64位的系统,安装了JAVA虚拟机后GUI仍然运行不了,那你就需要到C:\Program Files\Java\jre7\bin\找到并复制javaw.exe,然后粘贴到C:\Windows\SysWOW64\这个文件夹下面,再重新运行GUI即可)
四轴飞行器基础知识
《四轴飞行器基础篇》:http://www.guokr.com/post/452422/
虽然我们利用开源的程序毕竟不如自己去写代码、研究算法有意义,但我认为对于新手来说,我们所掌握的知识和技能有限,不是每个人都对捷联惯导、多传感器数据融合算法(互补滤波、卡尔曼滤波)、PID控制算法、神经网络控制算法等感兴趣和熟知。如果从一开始就要独立完成一套四轴系统,并让其稳定的飞起来,这是很有难度的而且会耗费我们大量的时间却不一定有很多收获。所以我们可以先利用别人的开源代码,让自己的四轴飞起来,我们转过头来再去研究他们的代码,把他们的代码研究透了,我们再写出属于自己的代码。其实这是一个学习的过程,这样你研发的周期缩短了,不易走弯路,不易走到死胡同里转不出来,从而丧失了继续研究的信心。毕竟Multiwii那些代码可是世界各地的牛人合作写出来的,我认为很有借鉴和研究的价值。
飞控板的制作
我建议大家参照Multiwii官网的硬件要求,自行设计制作飞控板,这样你对MWC四轴整个系统将会有更深刻的理解。
大家可以参考MultiWii官网的硬件连接教程和berkely在RCgroups上发的有关MWC硬件连接到帖子,链接如下:
http://www.multiwii.com/connecting-elements
http://www.rcgroups.com/forums/showthread.php?t=1340771
Multiwii硬件分为Arduino 328p(ATmega328P)和Arduino mega(ATmega2560)两种版本。两个版本各有优劣,均支持多种外设,但接口稍有不同。mega版本只能用串口接GPS和声呐,由于两个外设占据了串口,如要用蓝牙或FTDI查看飞控状态信息,这就是不可能的了。328p版本虽然容量小,但可以采用双328p的模式,再用一片ATmega328P制作一块I2C-GPS/Sonar导航板,这样就可以用I2C来读取GPS和声呐的数据,不必占据串口,那这样一来就可以实时的用蓝牙等查看飞行状态信息了。所以我个人比较喜欢双328p的模式,所以我做的飞控板是基于Arduino 328p版本的。
采用了I2C-GPS/Sonar导航板之后,GPS的距离计算和导航解算等都在导航板里完成,导航板的固件也是开源:
https://code.google.com/p/i2c-gps-nav/
这是一个很不错的导航开源固件,算法很精到。经过使用和对比,我觉得328p版的I2C-GPS比Arduino mega版的串口GPS定点精度高不少,而且融合了声呐的数据,可以修正GPS在低空的定高误差,使低空定高更加精确。I2C-GPS/Sonar导航板的详细信息接下来会讲到。
简单来说,MWC飞控板由pro mini + GY-86 + PCB底板组成,pro mini 和GY-86市面上都可以买到,PCB板需要我们自己画一下。pro mini小板上有ATmega328微处理器和一些接口电路;GY-86是传感器板,上面集成了MPU6050、HMC5883L、MS5611等。
ATmega328P-AU 微处理器:(32Kb的Flash,1Kb的EEPROM。时钟频率:16MHz。用USBasp或USBtinyISP烧写Arduino bootloader之后,可用Arduino IDE来编辑和烧录程序)
MPU6050 MEMS三轴加速度计+三轴陀螺仪:(这是最主要的姿态传感器。InvenSense公司的MPU6050芯片内部集成了三轴加速度计和三轴陀螺仪,不仅消除了我们焊接电路板时易造成的加速度计和陀螺仪之间的对准误差(alignment error),而且由于其内置了数字可编程的低通滤波器,在飞行器经受较大振动时,可用程序设置适当频率的低通滤波器,用来滤掉高频振动。这是一个很有效的方法用来减小四轴机体振动对陀螺仪数据的影响,这个方法同样适用于该公司的ITG3205。还有就是大家熟知的MPU6050内置的DMP,但是我觉得四轴的姿态数据融合还是写在主控里比较好)
HMC5883L 三轴磁强计:(磁强计一个用途是用来锁定航向,另一个用途是:GPS配合磁强计使用才能实现GPS HOME(不知道方位,四轴怎么飞回家啊)等功能,这也就是MWC为什么要设置当地地磁偏移量的原因)
MS5611 高精度气压计:(MS5611的测量精度很高,再刷入Multiwii 2.2固件,那四轴的定高精度不是一般的好。大家如果自己做飞控的话,我建议大家不要选择BMP085,这是个鸡肋,还是多花点钱买个MS5611,定高效果很不错哦)
LLC电路 I2C逻辑电平转换电路:飞行方向指示灯(蓝色1206 LED)和飞控状态指示灯;
遥控器接收机接口: (THRO:油门通道、RO:横滚通道、PI:俯仰通道、YA:偏航通道、MO:飞行模式通道、D8:额外通道)
电调舵机信号接口:(D9、D3、D11、D10:电调信号;A0-A2:云台增稳舵机信号)
FTDI接口: (接FTDI刷固模块)
UART接口:(接蓝牙、数传等)
I2C接口 (接I2C-GPS/Sonar导航板)
(补充说明:FTDI和蓝牙从机模块是和飞控板配套的两个必要工具,简单说,FTDI主要用来烧录程序,蓝牙从机模块主要用来实时调整PID等飞控参数。FTDI一个用途是用来往飞控板里烧录程序,另一个用途是:Multiwii自带了一个调参用的配置GUI,只有用FTDI连接飞控板和电脑才能使用GUI来配置飞行参数。蓝牙从机模块是用来建立飞控板和安卓手机之间的无线通信,这样就可以实时的监控飞行状态和调整飞行参数。这个在调整PID参数的时候可是很有用的,想象一下,你只需带一个安卓手机,下载一个Multiwii配置专用的APP,然后就可以实时的在飞行器飞行过程中调整PID参数,不必停机连接电脑,也不必带笨重的设备,何乐而不为呢?)