通过 MAVLink 与 Raspberry Pi 通信¶
本页介绍如何连接和配置 Raspberry Pi (RPi),使其能够通过串行连接使用 MAVLink 协议与飞行控制器通信。这可用于执行其他任务,如图像识别,而由于存储图像的内存要求,飞行控制器根本无法完成这些任务。
连接飞行控制器和 RPi 硬件¶
如上图所示,将飞行控制器的 TELEM2 端口与 RPi 的接地、TX 和 RX 引脚相连。有关 RPi 各引脚功能的更多详情,请查阅 这里.
将 +5V 电源连接到 +5V 引脚,即可为 RPi 供电。 或 来自 USB in.
附加板,如 Pi-Connect 通过提供电源和遥测端口,可以简化 RPi 的连接。
提示
根据所使用的 RPi 型号和内部/外部外围设备的不同,+5V 电源要求可能从 80mA 到接近 2.5A 不等。应评估特定系统配置的电源预算,以确定对 +5V 电源电流的要求。通常不建议通过飞行控制器的 TELEM 端口连接器提供 +5V 电源。
设置飞行控制器¶
通过地面站(即 Mission Planner)连接飞行控制器,并设置以下参数:
serial2_protocol = 2(默认值)以启用串行端口上的 MAVLink 2。
SERIAL2_BAUD = 921,这样飞行控制器就能以 921600 波特的速度与 RPi 通信。
日志后端类型 如果使用 APSync 将数据闪存日志文件流式传输到 RPi,则 = 3
配置串行端口(UART)¶
如果尚未配置,则需要启用 Raspberry Pi 的串行端口(UART)。为此请使用 Raspberry Pi 配置实用程序。
类型
苏都 raspi-配置
然后在实用程序中选择 "接口选项":
然后是 "串行":
出现提示时,选择 没有
改为 "您希望通过串口访问登录 shell 吗?
出现提示时,选择 是
改为 "您希望启用串行端口硬件吗?
完成后重新启动 Raspberry Pi。
Raspberry Pi 的串行端口现在可以在以下设备上使用 /dev/serial0
.
配置 Wifi¶
如果需要,可以配置 Raspberry Pi 的 Wifi 以创建 Wifi 接入点。这样,其他客户端就可以连接到 RPi 并传输遥测数据流。请参阅 RPi 官方文档 了解详情。
提示
Raspberry Pi 的内置 Wifi 范围不大。如果范围是个问题,可以考虑使用带外置天线的 USB Wifi 适配器。
设置 RPi 软件¶
与飞行控制器通信有几种不同的软件可供选择。所有软件都使用 MAVLink 协议进行通信。
APSync¶
设置 RPi 的最简单方法是闪存一个现有的 APSync 图像
购买一张格式化后的 8GB 或 16GB SD 卡(16GB 为佳,因为有些 8GB 卡的容量不足以容纳图像),然后插入笔记本电脑/台式电脑的 SD 卡插槽中。
下载最新版本 图片来自 firmware.ardupilot.org.查找以 "apsync-rpi "开头的文件。
使用 蚀刻机 软件将图像加载到微型 SD 卡上。
将微型 SD 卡插入 Pi 的微型 SD 卡插槽
备注
RPi 上有一个最新的 APSync 版本。 论坛.
APSync 映像已启用串行端口(UART)。
MAVProxy¶
MAVProxy 可用于从 Pi 向飞行控制器发送命令。它还可用于将遥测数据路由到其他网络端点。
前提是您已通过 SSH 连接到 Pi。如果没有,请参阅 RPi 文档.
参见 MAVProxy 文档 获取安装说明
要测试 RPi 和飞行控制器是否能相互通信,首先要确保 RPi 和飞行控制器都有电源,然后在 RPi 类型的控制台中进行测试:
python3 mavproxy.py --师=/设计/序列0 --波特率 921600 --飞机 我的旋翼飞行器
一旦 MAVProxy 启动,你就可以输入以下命令来显示 上膛检查
参数值
停止 展览 上膛检查
停止 设置 上膛检查 0
上膛 throttle
备注
如果出现无法找到日志文件的错误,或者该示例无法正常运行,请确保没有意外地将这些文件分配给其他用户名,如 Root。
要将 MAVProxy 作为遥测路由器在 Pi 上运行,可将其设置为服务运行,并使用 -daemon 和 -non-interactive 参数。例如
mavproxy.py --守护进程 --非-互动式 --默认-模块='' --继续 --师=/设计/序列0 --波特率 1500000 --向外=udp:职业运动员:14550
备注
如果 Raspberry PI 负载较重,mavproxy.py 可能无法为遥测路由提供可靠的连接。在 Raspberry PI Zero 等较老/较慢的设备上更有可能出现这种情况。如果出现这种情况,请考虑使用 mavlink-routerd。有关详细讨论,请参阅 ArduPilot 论坛上的这篇帖子: 带路由器软件的 MavLink 路由器.
Mavlink-router¶
Mavlink-router 用于路由 RPi 串行端口和任何网络端点之间的遥测数据。请参阅 文献资料 获取安装和运行说明。
安装后,编辑 mavlink-router 配置文件的 /etc/mavlink-router/main.conf
UART 部分至
[UartEndpoint to_fc]
设备 = /设计/序列0
波特 = 921600
您还需要添加一个额外的 UDP 端点,允许同一网络中的其他地面站连接到 Pi。编辑 mavlink-router 配置文件 /etc/mavlink-router/main.conf
包括
[UdpEndpoint 至_14550_外部]
模式 = 窃听
地址 = 0.0.0.0
港口 = 14550
端口锁 = 0
mavp2p¶
mavp2p 是一款灵活高效的 Mavlink 代理/网桥/路由器,以命令行工具的形式实现。mavp2p 的功能类似于 MAVProxy 的路由器,可以在资源有限的配套计算机中取代 MAVProxy。 MAVp2p.
无人机套件¶
最新说明 安装 DroneKit 在 Linux 上的使用方法请参见 DroneKit-Python 文档。
Rpanion-server¶
Rpanion-server 是一个基于网络的图形用户界面,用于配置飞行控制器遥测、日志记录、视频流和网络配置。
通过磁盘镜像进行安装:
购买一张格式化的 8GB(或更大)微型 SD 卡,插入笔记本电脑/台式电脑的 SD 卡插槽中
下载最新版本 图像.
使用 蚀刻机 软件将图像加载到微型 SD 卡上。
将微型 SD 卡插入 Pi 的微型 SD 卡插槽
Rpanion-server 映像已启用串行端口(UART)。
与Mission Planner地面站联系¶
飞行控制器将响应通过遥测 1 和遥测 2 端口(见本页顶部图片)接收的 MAVLink 命令,这意味着 RPi 和常规地面站(即Mission Planner地面站等)均可连接。此外,还可以将Mission Planner地面站连接到 RPi 上运行的 MAVProxy 应用程序上 类似于为 SITL 所做的工作.
主要是指添加一个 --退出 <ipaddress>:14550
到 MAVProxy 启动命令,其中的是运行Mission Planner地面站的电脑地址。在 Windows 系统中 ipconfig
可以用来确定 IP 地址。在用来编写本维基页面的计算机上,MAVProxy 命令变成了:
mavproxy.py --师=/设计/ttyAMA0 --波特率 57600 --向外 192.168.137.1:14550 --飞机 我的旋翼飞行器
与Mission Planner地面站的连接如下图所示:
项目实例¶
无法正常工作?请尝试在 同伴电脑讨论区.