使用 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¶
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) 将收到一封电子邮件,通知他您的拉取请求。他很可能会查看并提供反馈,如果他接受该提交,则会将其添加到主版本中。