使用VS2013编译开源的飞行控制器APM代码

又要开始做飞机了,本来做无人机确实是有挑战性的一项工程,但是因为本科已经做了一年多的无人机了,对它的原理和控制手段都很熟悉,自己写过飞控,就差加GPS了,不过加GPS这部分确实也更困难,如果要继续做呢可能还要接着做一年多,其实心里已经觉得做的没啥意思了,另外GPS导航的调试在飞机上更困难,条件不允许我这么做,何必再造*呢,不如使用开源的系统进行二次开发

首先我们要获取APM的源码
获取ArduCopter-3.2.1版本的源码有2种方式:
I. 在github页面点击release,往下翻几页,找到“ArduCopter-3.2.1-apm-px4”下载即可。
II. 喜欢git的朋友在克隆最新代码后,也可以回退到3.2.1的版本,与第一种方法获得的源码无异。

git clone https://github.com/ArduPilot/ardupilot.git
注意不要直接这样,这样得到的是最新的代码,最新的代码不是pde格式的,是.cpp格式的因为最新的代码是不支持APM的板子的,所以不能使用

如果不熟悉git的话就在这个网页直接去下载:
https://github.com/ArduPilot/ardupilot/tree/ArduCopter-3.2.1
这里也有我传的CSDN的链接:
http://download.csdn.net/detail/gyh_420/9921364

使用VS2013编译开源的飞行控制器APM代码

得到文件目录如下
使用VS2013编译开源的飞行控制器APM代码

接下里要准备VS的插件和Arduino的编译器
1、ArduPilot-Arduino-1.0.3-gcc-4.7.2-windows(为ArdupPilot定制的Arduino IDE)。在这里下载https://pan.baidu.com/s/1eS4wHSe
2、Visual Studio配合Visual Micro插件(Arduino for Visual Studio插件)。二者本质没有区别,可以看到都是调用gcc工具链,Visual Studio只是通过Visual Micro在上层封装了操作接口,便于程序员查看和编写代码。以VS2013为例,点击“工具->扩展和更新->联机”,搜索“Visual Micro”,下载安装即可。

使用VS2013编译开源的飞行控制器APM代码

安装完成后,界面如下图
使用VS2013编译开源的飞行控制器APM代码

装好之后还要下载一个APM硬件信息
http://download.csdn.net/detail/u010682510/9671800
将该apm文件夹放入ArduPilot-Arduino-1.0.3-windows\hardware(这个就是之前让你下载的Ardunio的编译器的文件夹里的hardware文件夹)中。
使用VS2013编译开源的飞行控制器APM代码

使用VS2013编译开源的飞行控制器APM代码

配置完成之后,可在“Installed”选项卡中查看支持的硬件类型,如所需的“Arduino Mega 2560 HAL (Apm 2)”,插上APM后在COM口选择对应的串口号。此外,在“Examles”选项卡中可查看Arduino和ArduCopter的例程。

最后在左上角那里选择Configuration Manager ,设置Ardunio编译器的路径,就是你下载的为ArdupPilot定制的Arduino IDE的路径

使用VS2013编译开源的飞行控制器APM代码


到这里前期的准备工作就做好了,接下来就是用VS来建立APM的工程了
这是前面说的从GIT上下载下来的代码,速度好慢。
使用VS2013编译开源的飞行控制器APM代码

打开VS2013,左上角文件->打开->Ardunio Project,索引我们下载的代码文件夹下,打开如图所示的ArduCopter.pde文件
使用VS2013编译开源的飞行控制器APM代码
稍等一会,VS会帮助我们建立好整个工程,注意一定不要自己去新建工程,我就在这里浪费了几个小时,直接点pde文件就OK,新版本好像是ino吧,按照博客前面下的代码是pde文件,然后点编译即可。

可能有的人会遇到一些编译错误,可以尝试把库的路径包含进去。
使用VS2013编译开源的飞行控制器APM代码

最后编译好的结果如图
使用VS2013编译开源的飞行控制器APM代码
这个字节比248K要大,(APM有8KB的引导区),这个HEX如果直接下载到APM里面会死机的,所以要裁剪下,裁剪的方法很简单,就是把不要的一些模式部分删掉就可以了,然后再添加自己的代码,不会的可以看看这个博客http://blog.csdn.net/u010682510/article/details/53121462
其实这里也是蛮奇怪的,如果说这个HEX不能通过地面站下载到APM板子上,那官网的程序难道不是这个代码编译的么,如果是,那又是怎么烧进去的呢?我猜测这个HEX是包含了引导代码的,但是官网发布的固件是分开了的,但是我不知道怎么分开两个部分,有知道的兄弟请告知我。

如果还是有问题的话,这里有我搭好的工程的链接:
http://download.csdn.net/detail/gyh_420/9921396
象征性地收了点积分,毕竟折腾了一天多的时间搞这个东西。

本来之前是搭好了这个环境的,可是前段时间硬盘空间不够删了一些东西,把Arduino的编译器卸载了囧。现在重新走一遍流程,主要的内容是参考的这篇博文http://blog.csdn.net/u010682510/article/details/53019637
里面写的很详细,也有搭好的工程可以用。他很多地方讲的不够详细,这里对他的教程做个补充说明。结合着看,是肯定可以搭好工程的。

转载请注明出处:http://blog.csdn.net/gyh_420/article/details/76652023