使用 Visual Studio 构建Mission Planner地面站

导言

Mission Planner (MP) 是一个用 C# 开发的开源地面站,主要用于 Windows/linux 计算机(不过也可使用 mono 在 Mac 和 Linux 上运行)。这是最常用的地面站,因为它为飞行器设置、飞行前任务规划、飞行中监控和飞行后日志文件分析提供了最完整的功能。

本页提供了如何在自己的机器上使用 MS Visual Studio 构建Mission Planner地面站软件的说明,如果您希望为自己的使用或为社区的改进进行修改,本页可能会很有用。如果您计划开发自己的定制地面站,构建Mission Planner地面站也可作为指南。

在您深入了解之前,请注意一些警告:

  • 使用修改/编译版本的Mission Planner地面站,风险自负。

  • 任务计划程序是一个非常复杂的程序,对其进行更改并非易事。以下是您需要掌握的基本技能,以便在更改 MP 时取得合理进展:

    • C# 编程技能和经验(至少或 C++ 经验)。

    • 具有 Microsoft Visual Studio (VS) 开发环境的使用经验。MP 不是开始学习 VS 的应用程序。

    • 具有使用 Windows API(应用程序编程接口)的经验

    • 包括了解流、进程和线程。

  • DIY Drones 社区可能不会提供 Visual Studio、C# 编程和 Windows API 支持。您需要从其他渠道获得支持。

系统要求

以下是您需要的物品。

  • Windows 10 或更高版本(不兼容 Windows 7 和旧版本)。

  • 足够的磁盘空间(安装 VS 时大约需要 20GB)、内存和处理器功率,以轻松运行 Visual Studio。

  • 互联网连接。

  • Visual Studio (非 VSC 代码),至少是 2022 版本。社区版就足够了。

安装 Visual Studio

首先安装 Microsoft Visual Studio 并为 Windows 系统进行配置。请按照以下步骤操作:

  • 下载 Visual Studio:访问 Microsoft Visual Studio 下载页面 并默认下载社区版。

  • 自定义安装:Visual Studio 是一个内置 Git 支持的综合套件,但由于其复杂性,可能会让人不知所措。要简化安装过程,可以考虑以下步骤:- 访问 Visual Studio 安装程序中的 "更多"。- 选择 "导入配置"。- 导入提供的配置文件: vs2022.vsconfig.

按照这些说明,您将安装好必要的组件,为任务计划程序开发做好准备。

VSCode

使用 C# 插件的 Visual Studio Code 可以解析代码,但请注意 无法建造 Mission Planner地面站。

完成 VS 安装后:

你应该能在集成开发环境中使用 Git。克隆 任务规划源代码 获取完整代码。

建立Mission Planner地面站

要构建代码,请按照以下步骤操作:

  • 开放 MissionPlanner.sln 文件

  • 从 "Build(构建)"菜单中选择 "Build MissionPlanner(构建Mission Planner地面站)"。

默认情况下,Visual Studio 会在构建过程中编译所有项目及其依赖项。

非Windows操作系统建筑

目前不支持在其他系统上构建Mission Planner地面站。

构建 SimpleExample

./_images/MPBuild_SimpleExampleRun.png

SimpleExample "解决方案是一个近乎最小的应用程序,用于演示 C# 程序如何连接到飞行器并使其上膛或撤膛。与完整的Mission Planner地面站相比,该示例的依赖性要少得多,而且更易于构建和理解。

在 Visual Studio 中选择 File >> Open >> Project/Solution 打开解决方案,并在 MissionPlanner 代码目录中选择 ExtLibs / SimpleExample.sln(如果打开了 MissionPlanner 解决方案,请先将其关闭)。

选择 "构建>>构建解决方案",确保程序可以成功构建。

首先检查是否可以连接到飞行控制器,并用常规Mission Planner地面站对其进行上膛,然后断开常规Mission Planner地面站的连接,按 "Start(开始)"以调试模式运行应用程序。当 "Form1 "弹出时,选择 COM 端口和波特率(可能是 115200),然后按连接。如果连接成功,按 "上膛/撤膛 "键尝试上膛飞行器。

备注

如果连接失败,应用程序不会进行错误检查

警告

以下说明已过时,仅作为示例保留。这些指令可能已经失效,需要更新。

编辑和调试Mission Planner地面站(及其他提示)

编辑和调试细节超出了本 Wiki 的范围。调试可能会导致一些警告。在这种情况下,你应该了解它们的含义,并采取必要的措施加以解决。下面是一个简单的调试示例。

  • 请勿将 AutoPilot 硬件(CubeOrange 等)连接到已编译的 MP 版本。您必须先将一些 .xml 文件复制到 bin/debug 文件夹。详见下文。

  • 首先确保 VS 已配置为调试(而非发布),在顶部菜单工具区或配置管理器中进行设置。

  • 选择菜单 DEBUG,开始调试。(或按 F5)。Mission Planner地面站的运行应该与您平时看到的一样。不过,由于缺少一些重要的配置文件,因此此时不建议连接自动驾驶硬件(如 CubeOrange 等)。

    • 如果在 "开始调试 "后,程序加载挂在闪屏上,并且看到以下信息:"Managed Debugging Assistant 'LoaderLock' has detected a problem ...... "' 和/或调试器在 ArduPilotMega.Program 中的 Application.Run(new MainV2()); 行暂停,那么请执行以下操作:

      选择 [调试]、[异常]。展开 [托管调试助手]。取消选中 "加载器锁定 "复选框

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

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

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

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

    • 在 MainV2.cs 的代码窗口中,向下滚动到 "public MainV2 "行,然后滚动到该行之后的第一行代码(当前为 log.Info("...");行)。

    • 单击该线前方(左侧深灰色条中),设置断点(红圈)。

    • 开始调试(按 F5)。

    • 您将看到正常的 MP 启动窗口,直到显示窗口,但随后它将停止运行。您已经遇到了断点。Visual Studio 将显示代码,并突出显示断点。请注意,您无法移动闪屏,因此可能需要重新定位 VS 窗口才能看到断点。

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

    • 按 F5 键,Mission Planner地面站将继续加载。

  • 有关编辑和调试的更多细节将留给用户。

使用修改后的任务计划表

如果您对Mission Planner地面站进行了更改,您可能希望使用您的版本。在此,我们将为您提供一些初步信息。您可以使用本地编译版本,但编译输出文件在 VS 中的位置不同,需要一些额外步骤。Git hub 下载中不包含您安装的 Mission Planner 的特定配置文件,只有 Mission Planner 安装包中才提供这些配置文件。您需要将这些文件复制到 Visual Studio 项目文件夹中的正确位置。以下是开始安装的步骤。

  • 使用修改后的Mission Planner地面站版本,风险自负。

  • 这些步骤假定 VS 处于调试配置中。编辑

    可添加发布模式时的详细信息 [/editors]

  • 为了使 VS 版本的 MP 能够在连接 ArduPilot 的情况下运行,您需要从安装 MP 的文件夹(C:\Program Files (x86)/APM Planner 或 C:\Program Files\APM Planner)复制几个文件到 VS 项目编译输出所在的文件夹。

    Todo

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

    • 复制(不要移动)所有 xml 文件 (从 MP 安装的根文件夹(C:\Program Files\APM Planner)中取出文件(即扩展名为 .xml 的文件)。 到 bin/Debug 文件夹 的文件夹中(Git hub clone 文件夹)。(Git hub 克隆文件夹)中。这将设置您的编译版本,使其与(飞行)控制器的当前配置(旋翼飞行器与飞机、其他选项等)相匹配

    • 例如,如果您的解决方案在 MPGitClone 文件夹中,那么将 .xml 文件复制到 MPGitClone\bin\Debug 中。有些文件会不经意地复制,但有些文件会询问您是否要替换现有文件。替换所有文件似乎都有效,但您应该进一步调查,以确保您可以在实际情况下使用 MP。

    • 如果在 Release(发布)模式下构建 Mission Planner,则应将文件复制到 bin/Release 文件夹。目前尚未对此进行测试。

  • 下面是一些其他提示:

    • 使用您的版本时保存日志的位置将在 /bin/Debug 或 bin/Release 文件夹中。Mission Planner地面站 1.2.63 及更高版本可对此进行更改。

    • 如果您想创建快捷方式,以便在不运行 Visual Studio 的情况下运行您的 Mission Planner 版本,请创建快捷方式,指向 bin/Debug 或 bin/Release 子文件夹中的 ArduPilotMegaPlanner10.exe 程序。

  • 此时,您的本地版本 MP 应该可以正常工作。您应该可以连接到 ArduPilot FCU,包括状态在内的飞行数据应该可以正常工作,配置应该可以显示 ArduPilot 参数,终端应该可以工作,包括保存和浏览日志。飞行计划器也应能正常工作。如前所述,使用修改后的版本风险自负。

提交您的更改以纳入母版

一般来说,建议与 ArduPilot 飞行代码 (此处的说明),但这里有一个非常简短的步骤摘要:

  • 注册成为 Git 中心

  • 创建Mission Planner地面站的个人叉子,请访问 https://github.com/ArduPilot/MissionPlanner 然后点击 Fork(右上角区域),这将在您的 Git Hub 账户中创建 Mission Planner 文件的副本(fork)。

  • 将你的个人软件仓库(用上述 Fork 创建)克隆到电脑上

  • 在你的仓库中创建一个新分支,提交你的更改并推送回 GitHub(这些更改只会进入你在 GitHub 上的仓库)。

  • 使用 GitHub 网页从分支创建拉取请求

  • Mission Planner地面站的所有者 (Michael Oborne) 将收到一封电子邮件,通知他您的拉取请求。他很可能会查看并提供反馈,如果他接受该提交,则会将其添加到主版本中。