在真实无人机上运行 AirLib#

AirLib 库可以在真实无人机的伴侣计算机上编译和部署。为了进行测试,我们将一台技嘉 Brix BXi7-5500 超紧凑型电脑安装在无人机上,通过 USB 连接到 Pixhawk 飞控。技嘉电脑运行 Ubuntu,因此我们可以通过 Wi-Fi 通过 SSH 连接到它。

Flamewheel

连接后,您可以使用此命令行运行 MavLinkTest

MavLinkTest -serial:/dev/ttyACM0,115200 -logdir:. 
这将生成一个飞行日志文件,然后可以用于在模拟器中回放

您还可以添加 -proxy:192.168.1.100:14550 将 MavLinkTest 连接到远程计算机,您可以在远程计算机上运行 QGroundControl 或我们的PX4 日志查看器,这是另一种方便的方式来查看您的无人机正在发生什么。

MavLinkTest 还有一些简单的命令用于测试您的无人机,以下是一些命令的简单示例

arm
takeoff 5
orbit 10 2

这将启动无人机,起飞 5 米,然后以 2 米/秒的速度进行半径 10 米的环绕飞行。输入“?”可查找所有可用命令。

注意:一些命令(例如,orbit)在 MavLinkTest 和 DroneShell 中命名不同且语法不同(例如,circlebypath -radius 10 -velocity 21)。

当您降落无人机时,可以停止 MavLinkTest 并复制生成的 *.mavlink 日志文件。

DroneServer 和 DroneShell#

一旦您对 MavLinkTest 正常工作感到满意,您还可以按如下方式运行 DroneServer 和 DroneShell。首先,运行带有本地代理的 MavLinkTest,将所有内容发送到 DroneServer

MavLinkTest -serial:/dev/ttyACM0,115200 -logdir:. -proxy:127.0.0.1:14560
将 ~/Documents/AirSim/settings.json 更改为“serial”:false,因为我们希望 DroneServer 查找此 UDP 连接。

DroneServer 0

最后,您现在可以将 DroneShell 连接到此 DroneServer 实例,并使用 DroneShell 命令来控制您的无人机飞行

DroneShell
==||=>
        Welcome to DroneShell 1.0.
        Type ? for help.
        Microsoft Research (c) 2016.

Waiting for drone to report a valid GPS location...
==||=> requestcontrol
==||=> arm
==||=> takeoff
==||=> circlebypath -radius 10 -velocity 2

PX4 专用工具#

您可以运行 MavlinkCom 库和 MavLinkTest 应用程序来测试您的伴侣计算机和飞控之间的连接。

这是如何工作的?#

AirSim 使用由 @lovettchris 开发的 MavLinkCom 组件。MavLinkCom 具有代理架构,您可以使用串口或 UDP 打开与 PX4 的连接,然后其他组件共享此连接。当 PX4 发送 MavLink 消息时,所有组件都会收到该消息。如果任何组件发送消息,则只有 PX4 会收到该消息。这允许您将任意数量的组件连接到 PX4。此代码为 LogViewer 和 QGC 打开连接。如果您愿意,可以添加更多内容。

如果您想同时使用 QGC + AirSim,那么您需要 QGC 拥有串口。QGC 会打开一个作为代理的 TCP 连接,这样任何其他组件都可以连接到 QGC 并向 QGC 发送 MavLinkMessage,然后 QGC 会将该消息转发到 PX4。因此,您告诉 AirSim 连接到 QGC 并让 QGC 拥有串口。

对于伴侣板,我们之前的方式是在无人机上安装技嘉 Brix。这台 x86 全功能计算机将通过 USB 连接到 PX4。我们在 Brix 上安装了 Ubuntu 并运行了DroneServer。DroneServer 创建了一个 API 端点,我们可以通过 C++ 客户端代码(或 Python 代码)与其通信,它将 API 调用转换为 MavLink 消息。这样您就可以针对相同的 API 编写代码,在模拟器中测试它,然后将相同的代码运行在实际的飞行器上。因此,伴侣计算机上运行着 DroneServer 以及客户端代码。