查看: 829|回复: 0

采用VisualStudio编译开源地面站Mission Planner

[复制链接]

30

主题

831

帖子

1646

积分

金牌飞友

Rank: 6Rank: 6

积分
1646
飞币
813
注册时间
2017-8-31
发表于 2022-11-15 21:25:30 | 显示全部楼层 |阅读模式
采用VisualStudio编译Mission Planner

BY 学APM挂科被导员批评的大二学生

卢伟 张子健

       本文是对对应wiki的补充说明,请结合wiki使用。

       wiki地址为:

http://www.ardupilot.org/dev/docs/buildin-mission-planner.html

       这里有一个对应的中文翻译网址,可以结合使用

http://www.mamicode.com/info-detail-1252653.html

       WalkAnt大神的一篇博客,也可以大概参考

         《采用Visual Studio编译MissionPlanner方法与问题总结》

http://blog.sina.com.cn/s/blog_402c071e0102v4kx.html

编译环境

       我个人的安装环境:

       Win7 sp1+git + VS2015+.net4

前期准备

       安装最新的MP到你电脑中,但很可能你已经安装了MP,但不是最新版,貌似也是可以的,可以不用卸载。为什么要安装MP?wiki里说一些dll库在GIT项目文件里面没有,需要用安装好的MP软件里的。

       安装Visual Studio 2015Community Edition版,我安装的是enterprise版,也成功了,所以如果你安装的是非Community Edition版本,先别卸载。

       安装DirectX(这个我前期就安装了,不知道不安装是否会有影响)。在线安装版完整安装包:

http://download.microsoft.com/download/8/4/A/84A35BF1-DAFE-4AE8-82AF-AD2AE20B6B14/directx_Jun2010_redist.exe

       安装python 2.7,地址wiki上有。

通过git下载MP源码

       git clone https://github.com/ArduPilot/MissionPlanner

       这里就不多说了,wiki上都有,我把MP源码下载到了C:\GIT中,如下图所示。

编译前的声明

       Mission Planner具有非常复杂的库包含关系,不推荐概念模糊就改编代码。这里列出了你需要的基本技能:

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

       具有微软VS开发环境相关经验。MP不是学习VS的入门应用。

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

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

编译

在VS2015中打开MP源码

       具体参考wiki。

采用VisualStudio编译开源地面站Mission Plannerw2.jpg

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

       按下图设置

采用VisualStudio编译开源地面站Mission Plannerw3.jpg

       如下图所示,在“解决方案”管理器面板中,在Mission Planner项右击选择最后一项“属性”,在Signing(签名)选型卡中取消选中“Sign the ClickOnce manifests”(为ClickOnce清单签名),不要点勾选(取消对勾)。

采用VisualStudio编译开源地面站Mission Plannerw4.jpg

       然后按照下图取消对勾。

采用VisualStudio编译开源地面站Mission Plannerw5.jpg

MP中的项目组成

       Mission Planner有如下几个工程项目组成,你可以通过在解决方案面板中打开“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 Planner工程文件

       在Build里面找到批生成。选择Build >> Batch Build…(生成>>批生成),

采用VisualStudio编译开源地面站Mission Plannerw6.jpg

       然后弹出下列框,“SelectAll”(全选),然后点击“Rebuild”(重新生成)。

采用VisualStudio编译开源地面站Mission Plannerw7.jpg

       第一次尝试编译Mission Planner时可能会出现一些错误,所以多尝试几次。这时候可能会编译成功(多尝试一两次就行了,错误一般不会自动消失的)。

       如果一些错误仍然存在,那么试着使用下面这些方法:

消除错误

对于缺失dlls相关的错误:

       解决方案面板中,在MissionPlanner工程上右击选择属性,参考引用路径:在文件选择窗口,选择已经安装的Mission Planner文件目录,其可能为: C:\Program Files (x86)\Mission Planner 或者 C:\Program Files\Mission Planner,根据你的MP的安装路径

       点击添加文件夹按钮,然后将已安装的Mission Planner文件目录输入到参考目录框中。

采用VisualStudio编译开源地面站Mission Plannerw8.jpg

       点击(选择)编译事件。移除所有预编译pre-build和编译后(Post build)选项。

采用VisualStudio编译开源地面站Mission Plannerw9.jpg

       点击 (选择)编译。

对于缺失索引相关错误

       可以查看每个列出的错误对应的工程名。然后选择相应工程的属性,和之前一样添加已安装版Mission Planner安装目录。这样应该可以减少此类错误。

       现在应该可以编译成功了

解决编译错误时一些有用的帮助

       清除已经编译好的MP:

       选择 [Build], [Clean Solution] 然后 [Build], [Rebuild solution].

       所有的工程应该都必须正确编译没有一个错误.

       当编译中没有错误发生时,那么你就可以准备开始浏览并编辑源代码了。

编译成功

       按照wiki最后第一次调试到0个错误,但是有1000多个警告,这样子是正常,已经算是编译成功了。

采用VisualStudio编译开源地面站Mission Plannerw10.jpg

       不过不妨按照wiki的方案再次编译一次,先Build->Clean Solution,再Build->Rebuild Solution,这样会清空之前编译好的文件夹中的内容并重新编译

采用VisualStudio编译开源地面站Mission Plannerw11.jpg

采用VisualStudio编译开源地面站Mission Plannerw12.jpg
被清空

       编译完会发现警告已经由1000多个变为20个了,少了很多。

采用VisualStudio编译开源地面站Mission Plannerw13.jpg

       编译成功后,我们肯定想找到生成的MP.exe打开看看,如下图所示,打开对应的文件夹。

采用VisualStudio编译开源地面站Mission Plannerw14.jpg

       我们按照上图的输出路径打Debug看看吧,如下图。

采用VisualStudio编译开源地面站Mission Plannerw15.jpg

       直接点击MP.exe即可打开,打开后MP连接上PIXHAWK,界面如下图所示。

采用VisualStudio编译开源地面站Mission Plannerw16.jpg

       说明编译成功,可以使用了。

建立简单的例子

       想必编译Mission Planner的人,都想修改MP的框架,或者增加新的功能。但是MP的框架确实比较复杂,对C#要有一定的开发经验。MP的例程下面提供了一个SimpleExample简单的例程我们可以首先编译这个例程来上手MP的地面站的开发。

往期推荐阅读往期热文(点击文章标题即可直接阅读):
    新品发布 | 翔仪•明珠飞控无人机培训专用版

    深入一线巡检作业现场,致导科技攻关业内难题

    案例分享|如何利用无人机快速定位气体污染源

    一台设备搞定发动机测试

    八一八:今年看似凉凉的无人机产业需要什么“钱”?

    警用安防无人机发展亟待提升综合战斗力DARPA将无人机带入“狗斗”,实现视距范围内的“AI”空战


    多旋翼无人机在战术后勤中的应用分析

    打造更专业的无人机动力测试系统

采用VisualStudio编译开源地面站Mission Plannerw17.jpg

采用VisualStudio编译开源地面站Mission Plannerw18.jpg

您需要登录后才可以回帖 登录 | 加入联盟

本版积分规则

快速回复 返回顶部 返回列表