软件下载:

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

首先下载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打开项目:

图1.1

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

图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清单签名)。不要点勾选。

   
                                                      图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时可能会出现一些错误,所以多尝试几次。这是候可能会编译成功。

图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应该都能够被正确编译.
当编译中没有发生错误时,那么你就能够准备開始浏览并编辑源码了。

图1.3这是编译成功的样子

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

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

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

图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协议到软件上显示出来。这个例程的构架相对简单。假设直接贸然改动MP的内容,不easy入手。这边的控制板是下载的APM巡航车的固件,不用考虑板卡解锁的问题,由于APM的巡航车的固件在室内能够解锁。所以连接上以后。控制台会有数据更新。

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

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

                           QQ群:

Mavlink地面站编写之二--Mission Planner编译的更多相关文章

  1. Android反编译(二)之反编译XML资源文件

    Android反编译(二) 之反编译XML资源文件 [目录] 1.工具 2.反编译步骤 3.重新编译APK 4.实例 5.装X技巧 6.学习总结 1.工具 1).反编译工具  apktool http ...

  2. Intellij Idea系列之导Jar包与编写单元测试(二)

     Intellij Idea系列之导Jar包与编写单元测试(二) 一.初衷 对于很多的初学者来说,Intellij如何导入jar包感到很迷惑,甚至在网上搜过相关文章之后还是云里雾里,本博客通过图文并茂 ...

  3. cesium编程中级(二)源码编译

    cesium编程中级(二)源码编译 有些情况下,比如我们自己从Github下载了最新的代码,或者自己临时修改了一点代码,想要编译后的Build文件夹的内容,需要自行编译源码,这里介绍一下编译的方法 下 ...

  4. Qt+QZXing编写识别二维码的程序

    本人最近在用Qt编写程序,需要用编写二维码识别功能.在网上搜寻一番,找到了QZXing.配置过程中确实出了一大把汗,这里我写这篇文章记录配置方法,替后人省一把汗吧!我的开发环境:MSVC2010 + ...

  5. LoadRunner脚本编写之二

    LoadRunner脚本编写之二 编程基本语法必须要记牢.程序的思想也很重要. 下面来回顾一下嵌套循环例子. Action() {     int  i,j;   //生命两个变量     for ( ...

  6. Python从零开始编写控制程序(二)

    # Python从零开始编写控制程序(二)前言:终于考完期末了,鸽了很久的远控Python终于有时间更新下了.上篇文章里,我们解决了注册表写入和Python编写为exe程序的问题.那么这篇文章我们来研 ...

  7. 沁恒CH32V103C8T6(二): Linux RISC-V编译和烧录环境配置

    目录 沁恒CH32V103C8T6(一): 核心板焊接和Windows开发环境配置 沁恒CH32V103C8T6(二): Linux RISC-V编译和烧录环境配置 硬件准备 CH32V103 开发板 ...

  8. Android系统篇之—-编写系统服务并且将其编译到系统源码中【转】

    本文转载自:http://www.wjdiankong.cn/android%E7%B3%BB%E7%BB%9F%E7%AF%87%E4%B9%8B-%E7%BC%96%E5%86%99%E7%B3% ...

  9. JavaScript作用域原理(二)——预编译

    JavaScript是一种脚本语言, 它的执行过程, 是一种翻译执行的过程.并且JavaScript是有预编译过程的,在执行每一段脚本代码之前, 都会首先处理var关键字和function定义式(函数 ...

随机推荐

  1. 真实的人类第三季/全集Humans迅雷下载

    Channel 4及AMC宣布续订<真实的人类 Humans>第三季,下季为8集:新季拍摄将在秋季开始,主要角色会回归.该剧设定在机器人Synth被繁忙都市人广泛使用的世界,呈现人类与机器 ...

  2. Redis Nosql数据库

              Redis是一个key-value存储系统.和Memcached类似.可是攻克了断电后数据全然丢失的情况.并且她支持很多其它无化的value类型.除了和string外,还支持lis ...

  3. [Web 前端] CSS篇之2. 清除浮动,什么时候需要清除浮动,清除浮动都有哪些方法

    cp: https://blog.csdn.net/zengyonglan/article/details/53304487 2. 清除浮动,什么时候需要清除浮动,清除浮动都有哪些方法 ? 一.什么时 ...

  4. c#使用QQ邮箱的SSL收发邮件

    c#使用SMTP.QQ.COM的SSL验证时,收发邮件,请勿设置端口,代码如下: (1)虽然SSL端口是465,但是,在代码里,不能直接设置端口,很奇怪?挺奇怪,好吧腾讯SSL好像用的是587端口!! ...

  5. 样条之埃特金(Aitken)逐步插值函数

    核心代码: ////////////////////////////////////////////////////////////////////// // 埃特金逐步插值 //////////// ...

  6. 数学图形(1.47)贝塞尔(Bézier)曲线

    贝塞尔曲线又称贝兹曲线或贝济埃曲线,是由法国数学家Pierre Bézier所发现,由此为计算机矢量图形学奠定了基础.它的主要意义在于无论是直线或曲线都能在数学上予以描述. 上一节讲的是高次方程曲线, ...

  7. 对于DQN的三大改进 - 这篇讲的好些

    可以看这篇文章: https://blog.csdn.net/u013236946/article/details/73161586 这篇也讲的不错: https://www.cnblogs.com/ ...

  8. 第二章 BIO与NIO

    <netty权威指南>读书笔记 一.BIO 1.服务端程序: package bio; import java.io.BufferedReader; import java.io.IOEx ...

  9. 第二章 IOC + AOP 底层原理

    <精通Spring4.x 企业应用开发实战>读书笔记 一.概念 IOC: 假设B类调用了A类,那么A类的对象的创建是由B类来实现: IOC是指将A对象的创建由容器来完成,并且将创建好的对象 ...

  10. Android JNI中C和JAVA代码之间的互相调用

    关于Android studio中使用NDK/JNI环境和入门:http://blog.csdn.net/quan648997767/article/details/64923143 1. C代码回调 ...