Mavlink地面站编写之二--Mission Planner编译

时间:2023-03-08 17:29:33

软件下载:

       本文使用VS2013进行编译和改动Mission Planner,其它版本号没有尝试过。

首先下载Mission Planner源码。

Mavlink地面站编写之二--Mission Planner编译

https://github.com/diydrones/MissionPlanner

同一时候声明本文是翻译APM官方论坛的文章,和尝试的结果。还有由于是开源的项目本身比較活跃。版本号非常多,这里不保证能够一定编译成功。

英文原文地址:

http://dev.ardupilot.com/wiki/buildin-mission-planner/

在编译之前请务必下载好最新的mission planner到C盘下。由于官方文档说一些dll库在项目文件中面没有,推荐安装.msi后缀的安装板软件。

http://ardupilot.com/downloads/?did=82

点击橘黄色的Download下载button就可以。

本文成于这是2016年3月的版本号,供大家參考。Mission Planner具有非常复杂的库包括关系,不推荐概念模糊就改编代码。这里列出了你须要的基本技能:

具备C#编程技术与相关经验(至少有C++相关经验)

具有微软VS开发环境相关经验。

MP不是学习VS的入门应用。

具有Windows的API(应用程序接口),包括理解数据流、进程、线程等相关知识。

VS的相关支持。C#编程相关以及Windows API相关技术可能不会从DIY Drones社区获得。你须要从其它资源获得帮助与支持。

编译环境搭建:

          第一步安装Visual Studio 2013,而且保证在Windows系统中能够正常执行。

下载并安装MS Visual Studio 2013

重新启动电脑

从開始button中执行Visual Studio

当安装完毕后。尝试改变Mission Planner之前先使用一个简单的“Hello World”样例測试一下你安装的软件是否能正常使用。

通过下载并执行 DirectX End-User Runtime Web Installer。完毕DirectX的安装。

从Github中得到源码

Mission Planner源码储存在Github站点上。你能够遵循之前怎样获取ardupilot飞行代码的介绍在

https://github.com/diydrones/MissionPlanner

代码库中获取得到Mission Planner源码。

打开项目,在Mission Planner中找到Ardupilot.sln 用VS打开项目:

Mavlink地面站编写之二--Mission Planner编译

图1.1

这时候假设直接编译可能会出现例如以下问题:

Mavlink地面站编写之二--Mission Planner编译

图1.2

要改动下配置,假设真的那么顺利,就没天理了.....那么过程例如以下:

project设置:

执行Visual Studio

点击 文件 >> 打开 >> project / 解决方式

导航到Mission Planner文件夹,选择Ardupilot.sln 文件打开。

Visual Studio应该打开包括有Mission Planner和其它一些相关引用(如“3DR Radio”, “Updater”等)的相关解决方式(solution),能够在“解决方式”资源管理器面板看到(上图黄色高亮区域)

设置“Solution Configuration”为“Debug”或者“Release”(可在工具菜单下找到相关命令)

设置“Solution Platforms”为“x86″

在“解决方式”管理器面板中,在Mission Planner项右击选择属性,在Signing(签名)选型卡中取消选中“Sign the ClickOnce manifests”(为ClickOnce清单签名)。不要点勾选。

Mavlink地面站编写之二--Mission Planner编译   
                                                      图1.2 取消清单签名!

     Mission Planner有例如以下几个project项目组成。你能够通过在解决方式面板中打开“Mission Planner”和“Libs”文件夹看到。

MissionPlanner (主代码)

AviFile
BaseClasses
BSE.Windows.Forms
Core
GeoUtility
GMap.Net.Core
GMap.Net.WindowsForms
KMLib
MAVLink
MetaDataExtractor
MissionPlanner.Comms
MissionPlanner.Controls
MissionPlanner.Utils
px4uploader
SharpKml
ZedGraph

批量编译Mission Plannerproject文件:

在生成里面找到批生成。

选择Build >> Batch Build…(生成 >> 批生成)。“Select All”(全选),然后点击“Rebuild”(又一次生成)。第一次尝试编译Mission Planner时可能会出现一些错误,所以多尝试几次。这是候可能会编译成功。

Mavlink地面站编写之二--Mission Planner编译

图1.3批量生成

关于错误的解决:

假设一些错误仍然存在,那么试着使用以下这些方法:

对于缺失dlls相关的错误:

解决方式面板中。在MissionPlannerproject上右击选择属性。參考引用路径:在文件选择窗体,选择已经安装的Mission Planner文件文件夹,其可能为: C:\Program Files (x86)\Mission Planner 或者 C:\Program Files\Mission Planner。依据你的MP的安装路径

点击加入文件夹button,然后将已安装的Mission Planner文件文件夹输入到參考文件夹框中。

点击(选择)编译事件。

移除全部预编译pre-build和编译后(Post build)选项。

点击 (选择)编译。

对于缺失索引相关错误,能够查看每一个列出的错误相应的project名。然后选择相应project的属性,和之前一样加入已安装版Mission Planner安装文件夹。这样应该能够降低此类错误。假设在projectBSE.Windows.Forms中遇到相似“..could not locate the Code Analysis tool at”。

你能够在BSE.Windows.Forms属性选项中的Code Analysis通过取消勾选代码分析选型来解决。
解决编译错误时一些实用的帮助:
在VS中。当你进行编译或者预编译一个解决方式时,选择菜单项[BUILD] [Configuration Manager],将会显示出每次哪个项目将被编译。
选择编译那些未被选中的项目: (比如 3DRRadio, Updater, wix)
选择 [Build], [Clean Solution] 然后 [Build], [Rebuild solution].
全部的project应该都能够被正确编译.
当编译中没有发生错误时,那么你就能够准备開始浏览并编辑源码了。

Mavlink地面站编写之二--Mission Planner编译

图1.3这是编译成功的样子

       想必编译Mission Planner的人,都想改动MP的框架,或者添加新的功能。

可是MP的框架确实比較复杂,对C#要有一定的开发经验。

MP的例程以下提供了一个SimpleExample简单的例程我们能够首先编译这个例程来上手MP的地面站的开发。

Mavlink地面站编写之二--Mission Planner编译

图1.4 SimpleExample执行

“SimpleExample”方案作为一个微型应用,用来说明一个C#程序怎样与载具连接,而且控制它解锁与上锁。这个简单的样例与完整的Mission Planner相比具有更少的依赖性。因此编译工作相当easy理解。

首先,从Visual Studio的 File >> Open >> Project/Solution 中打开Solution面板。

然后在MissionPlanner代码文件夹选择ExtLibs/SimpleExample.sln

选择 Build >> Build Solution 选项,确保程序能够成功的被编译。

完毕上述工作后,接下来第一步先要检查能够正常连接到你的飞行控制板。而且使用已安装的Mission Planner软件能够正常解锁,然后断开常规的Mission Planner,点击“Start”button使用debug模式执行程序。当面板“Florm1”弹出后,选择正确的COMport和波特率(一般115200),点击“Connect”button。

假设连接成功。点击“Arm/Disarm”button尝试解锁你的APM控制板。

Mavlink地面站编写之二--Mission Planner编译

点击连接之后,会有一些參数打印出来,就是解析MAVLINK协议到软件上显示出来。这个例程的构架相对简单。假设直接贸然改动MP的内容,不easy入手。这边的控制板是下载的APM巡航车的固件,不用考虑板卡解锁的问题,由于APM的巡航车的固件在室内能够解锁。所以连接上以后。控制台会有数据更新。

能够先研究MAVLINK的协议了,编译的文章到一段落,兴许我们会更具MAVLINK协议来完毕一个简单的地面站。

很多其它内容请參考:http://www.amovauto.com  阿木社区

                           QQ群: