建立MissionPlanner的Visual Studio开发环境

目录

摘要


本节主要学习建立MissionPlanner的Visual Studio开发环境的过程,欢迎批评指正!!!


1.简介

Mission Planner(MP)是在C#中开发的一个开源地面站,主要用于Windows计算机(尽管它可以使用Mono在Mac上运行)。这是最常用的地面站,因为它为飞行器设置、飞行前任务规划、飞行中监控和飞行后日志文件分析提供了最完整的功能。
本页提供了有关如何使用MS Visual Studio 2017在您自己的计算机上构建任务规划器软件的说明,如果您希望为自己的使用或社区的改进进行更改,这可能会很有用。如果您计划建立自己的自定义地面站开发,那么构建任务规划器也可以作为指南提供帮助。
开始之前的一些警告:

  • 请自行承担风险,使用修改/遵守的任务规划器版本。
  • 任务规划者是一个非常复杂的人,包括和作出改变是不适合胆小的人的。以下是您在进行MP更改时需要取得合理进展的基本技能:
  • C#编程技巧和经验(至少或C++经验)。
  • 有Microsoft Visual Studio(VS)开发环境方面的经验。MP不是开始学习VS的应用程序。
  • 使用Windows API(应用程序编程接口)的经验-包括理解流、进程和线程。
  • 对Visual Studio、C#和Windows API编程的支持可能不会从DIY无人机社区获得。你需要从其他渠道获得支持。
    系统要求

2.系统要求

这是你需要的。
Windows 10。抱歉,早期版本不再有效。Windows 7等不工作。
有足够的磁盘空间、内存和处理器电源,可以轻松运行Visual Studio(详细信息如下)
互联网连接。
Visual Studio 2017社区版

3.安装Visual Studio和DirectX和Python

第一步是在Windows系统中安装并运行Microsoft Visual Studio Community 2017。

  • 下载并安装MS Visual Studio 2017 Community Edition,可在此处找到
  • 在安装过程中,可能会提示您安装可选的“工作负载”,在此阶段,您可以选择:“.NET桌面开发”(或者稍后安装它……例如,当您第一次打开.sln时,系统会提示您安装它)。
  • 重新启动电脑
  • 从“开始”菜单启动Visual Studio
  • 在此处下载python 2.7(如果尚未安装)。我们建议您将此安装到c:\python27\文件夹
    在这里插入图片描述

4.完成vs安装后:

  • 导航到“工具”菜单->“获取工具和功能”->(等待页面加载)->工作负载->摘要(屏幕右侧)->然后勾选标记为“.net core 2.0开发工具”的勾选框(保留其他勾选框不变)->然后单击底部的“修改”按钮。等待下载/安装完成。
    在这里插入图片描述
  • 此外,导航到“工具”菜单->“获取工具和功能”->(等待页面加载)->工作负载->窗口(屏幕左侧)->然后勾选标记为“.net desktop development tools”(保留其他勾选框为原样)->然后单击底部的“修改”按钮。等待下载/安装完成。如果它已经被勾选了,就保持原样,那已经很好了。:-)
    在这里插入图片描述
    您可能希望在简单的“hello world”应用程序或下面描述的“simpleexample”上测试安装。

提示:默认情况下安装在此处:“C:\Program Files(x86)\Microsoft Visual Studio\2017\Community”


5.将任务规划器源代码从Github导入计算机

任务规划器源代码存储在GitHub中。一般来说,您可以按照Ardupilot飞行代码的说明进行操作,但应使用https://github.com/ardupilot/MissionPlanner存储库代替Ardupilot存储库。您可以将git repo克隆到(例如)c:\missionplanner\,但确切的文件夹并不重要。

6.在Visual Studio中打开任务规划器解决方案

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

  • 启动Visual Studio
  • 单击“文件”>>“打开”>>“项目/解决方案”
  • 导航到下载任务规划器源的位置,然后打开MissionPlanner.sln
  • Visual Studio应打开“解决方案”,其中包括任务规划器和一些其他相关应用程序(即“3dr收音机”、“更新程序”等),这些应用程序都可以在解决方案资源管理器中看到(上面以黄色突出显示)。
  • (如果尚未安装“.net desktop development”加载项,系统将提示您立即安装。)
  • 将“解决方案配置”设置为“调试”或“发布”(这可以在“工具”菜单下找到)。
  • 将“解决方案平台”设置为“x86”
  • 在解决方案资源管理器中,右键单击任务规划器并选择属性,签名并取消选中“对ClickOnce清单签名”。

在这里插入图片描述
任务规划器由几个项目组成,您可以通过扩展解决方案资源管理器的“MissionPlanner”和“Extlibs”文件夹来查看这些项目。
在这里插入图片描述

 - Mission Planner is made up of several projects, you can see these by expanding the “MissionPlanner” and “ExtLibs” folders of the Solution Explorer.
 - MissionPlanner (the main code)
 - 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

7.构建任务规划器-使用批量构建功能

在尝试构建(编译)Mission Planner之前,您还必须在PC上安装正式版本。这是因为有些.dll文件不包含在Git存储库中。

在这里插入图片描述

  • 选择“生成”>>“批量生成…”,“全选”(选中所有复选框),然后按“重新生成”。您可能会在第一次尝试编译(构建)任务规划器时看到错误,因此请再试几次。

  • 如果错误仍然存在,请尝试以下操作:

  • 对于与缺少的DLL相关的错误:

  • 在解决方案资源管理器中,右键单击MissionPlanner项目、属性、引用路径。

  • 在文件夹条目中,浏览并选择“已安装”任务规划器的位置,该位置可能是:C:\Program Files(x86)\Mission Planner或C:\Program Files\Mission Planner

  • 单击添加文件夹按钮,将已安装MP的路径放入参考路径框。

  • 单击(选择)生成事件。删除所有生成前和生成后选项。

  • 单击(选择)生成。

  • 如果在解决方案资源管理器中有任何子项目在其旁边说“(不兼容)”,则右键单击该子项目并选择“重新加载”,这样可以修复它。
    对于缺少引用的错误,您将看到列出的每个错误的项目名称。为每个存在此类错误的项目选择属性,并像上面为MissionPlanner项目所做的那样添加已安装的任务规划器的位置。这样可以减少错误。
    如果在项目bse.windows.forms中看到错误,“…无法在“”处找到代码分析工具。通过取消选中bse.windows.forms属性中代码分析中的启用代码分析框,可以消除此问题。

解决生成错误的一些可选帮助:

  • 在vs中,选择菜单项[build][configuration manager]这将显示每次执行生成或重新生成解决方案时编译(生成)的项目。
  • 检查“build”中是否有未检查的内容:
    (即3drradio、updater、wix)
  • 先执行[构建]、[清理解决方案],然后执行[构建]、[重建解决方案]。
  • 所有项目的生成都应无错误。
  • 当您没有错误地构建时,就可以开始浏览或编辑了。

8.构建简单示例

在这里插入图片描述

“SimpleExample”解决方案是一个几乎最小的应用程序,用于演示C程序如何连接到车辆并使其防护或解除防护。这个例子比完整的任务规划器具有更少的依赖性,并且更容易构建和理解。
通过选择“文件”>>“打开”>>“项目/解决方案”,从Visual Studio中打开解决方案,并在MissionPlanner代码目录中选择extlibs/simpleexample.sln(如果已打开,请先关闭MissionPlanner解决方案)
通过选择“生成”>>“生成解决方案”,确保程序可以成功生成
首先检查您是否可以连接到飞行控制器并将其与常规任务规划器连接后,断开常规任务规划器的连接,然后按“开始”以调试模式运行应用程序。当弹出“Form1”时,选择COM端口、波特率(可能是115200)并按Connect。如果连接成功,按Arm/Disarm(防护/解除防护)尝试防护车辆。
注意:签入应用程序时没有错误,因此如果连接失败
在这里插入图片描述
在这里插入图片描述

8.编辑和调试任务规划器(和其他提示)

编辑和调试详细信息超出了此wiki的范围。调试可能会导致一些警告。如果是这样的话,你应该了解它们的含义,并采取必要的步骤来解决它们。下面是一个简单的调试示例来帮助您开始。

-不要(还)将自动驾驶仪硬件(PixHawk等)连接到已编译的MP版本。必须首先将一些.xml文件复制到bin/debug文件夹。详见下文。

  • 首先,确保在顶部菜单工具区域或配置管理器中为调试(与发布)配置了VS。
    -选择菜单“调试”,开始调试。(或按F5)。任务规划器应该像你平时看到的那样运行。但是,一些重要的配置文件丢失,因此此时不建议连接到自动驾驶仪硬件(如PixHawk等)。

  • 如果在“开始调试”之后,程序加载挂起在启动屏幕上,并且您看到以下消息:“托管调试助手‘loaderlock’检测到问题……”,和/或调试器已在行应用程序处暂停。请运行(new mainv2());在ardupilotmega.program中,然后执行此操作。S:
    选择[调试],[例外]。展开[托管调试助手]。取消选中“加载器锁定”复选框

  • 关闭MP。(或者,选择菜单“调试”,在VS中停止调试)。

  • 接下来,您可以尝试设置一个断点。

  • 在VS解决方案资源管理器中展开MissionPlanner项目,以便看到包含的对象。

  • 向下滚动到mainv2.cs,右键单击该对象并选择“查看代码”。

  • 在mainv2.cs的代码窗口中,向下滚动到“public mainv2”行,然后滚动到该行之后的第一行代码(当前是一个log.info(“…”);行)。

  • 单击该行前面(左侧深灰色条中)以设置断点(红色圆)。

  • 开始调试(按F5)。

  • 您将看到正常的MP启动窗口一直到启动窗口,但随后它将停止运行。你已经达到了临界点。Visual Studio将显示代码,并突出显示断点。请注意,不能移动启动屏幕,因此可能需要重新定位vs窗口以查看断点。

  • 将鼠标移动到代码中的不同变量和对象上。您将看到许多或项目的当前值。

  • 按F5键,任务规划器将继续加载。

有关编辑和调试的更多详细信息留给用户。

9.使用修改后的任务规划器

如果您对任务规划器进行了更改,您可能需要使用您的版本。在这里,我们将为您提供一些初步信息。您可以使用本地编译版本,但编译的输出文件在VS中位于不同的位置,需要执行一些额外的步骤。有一些特定于任务规划器安装的配置文件不包含在仅在任务规划器安装包中提供的Git Hub下载中。您需要将这些内容复制到您用于Visual Studio项目的文件夹中的正确区域。以下是开始的步骤。

  • 使用修改后的任务规划器版本,风险自负。
  • 这些步骤假定vs处于调试配置中。[编辑]
    可以添加处于释放模式时的详细信息[/editors]
  • 为了使您的vs版MP在连接了APM的情况下运行,您需要将多个文件从安装MP的文件夹(C:\Program Files(x86)\APM Planner或C:\Program Files\APM Planner)复制到vs项目编译输出所在的文件夹。

TODO:
编辑:这需要更准确地说明需要哪些文件,为什么需要等。

将所有XML文件(即扩展名为.xml的文件)从MP安装的根文件夹(C:\Program Files\APM Planner)复制(不移动)到存储Visual Studio任务规划器解决方案的文件夹中的bin/debug文件夹。(Git Hub克隆文件夹)。这将设置编译后的版本以匹配自动驾驶仪的当前配置(直升机与飞机、其他选项等)

也就是说,如果解决方案位于mpgitclone文件夹中,则将.xml文件复制到mpgitclone\bin\debug。有些会在不通知的情况下复制,但有些会询问您是否要替换现有文件。所有的替换看起来都是可行的,但在这样做之前,您应该进一步调查,以确保您可以在现实生活中使用MP。

如果您在发布模式下构建任务规划器,那么应该将文件复制到bin/release文件夹。目前尚未对此进行测试。

以下是一些其他提示:
使用您的版本时保存的日志位置将在/bin/debug或bin/release文件夹中。这可以通过Mission Planner 1.2.63和更高版本进行更改。
如果要在不运行Visual Studio的情况下创建运行任务规划器版本的快捷方式,请创建指向bin/debug或bin/release子文件夹中的程序ardupilotmegaplanner10.exe的快捷方式。
此时,您的本地版MP应该可以正常工作。您应该能够连接到您的APM,飞行数据包括状态应该工作,配置应该带您的APM参数,终端应该工作包括保存和浏览日志。飞行计划员也应该工作。如前所述,使用修改后的版本会有风险。

10.提交更改以包含在主分支中

一般来说,建议与Ardupilot飞行代码(此处说明)相同,但以下是步骤的简短总结:

  • 注册Git Hub的成员
  • 通过访问添加链接描述创建任务规划器的个人分支,然后单击分支(右上角区域),这将在您的git hub帐户中创建任务规划器文件的副本(分支)。
  • 将您的个人回购(使用上面的fork创建)克隆到您的PC
  • 在您的repo中创建一个新的分支并提交您的更改,然后将这些更改推回到github(这些只会进入github上的repo)。
  • 使用Github网页从分支创建拉请求
  • 任务规划人(Michael Oborne)将收到一封电子邮件,通知他您的请求。他很可能会审查,提供反馈,如果他接受承诺,它将被添加到master。
  • 3
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

魔城烟雨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值