带有 Pixhawk 的 Raspberry Pi 配套设备
本主题介绍如何设置运行以下功能的 Raspberry Pi("RPi")配套设备 ROS 2 在 Linux Ubuntu 操作系统上,连接到 Pixhawk 飞行控制器之间的串行连接。 TELEM2
端口和 RPi'TX/RX 引脚。
这些说明可随时扩展到其他 RPi 和飞行控制器配置。
信息
连接 RaPi 和 Pixhawk 的其他常见方法有
- RPi 和 Pixhawk 之间的以太网连接。基于 FMUv5x、FMUv6x 及更高版本的 Pixhawk 控制器可能有内置以太网端口。参见 PX4 以太网 > 支持的控制器.
- 与 RPi USB 端口的串行连接。这种方法简单可靠,但需要额外的 FTDI 芯片 USB 转串口适配器板。该选项在 Pixhawk 同伴 > 串行端口设置.
布线
串行连接
首先为 RPi 和 PX4 之间的串行连接布线,该串行连接将用于板外控制。
该设置将 Pixhawk TELEM2
端口,通常建议用于机外控制。Pixhawk 端口可以设置在飞行控制器的任何位置,但几乎都有详细标注,在您的特定设备上应该很明显。 飞行控制器.
连接 Pixhawk TELEM2
德克萨斯州
/RX
/接地
引脚到互补 RXD
/TXD
/地面
RPi GPIO 板上的引脚:
PX4 TELEM2 引脚 | RPi GPIO 引脚 |
---|---|
UART5_TX (2) | RXD(GPIO 15 - 针脚 10) |
UART5_RX (3) | TXD(GPIO 14 - 针脚 8) |
接地 (6) | 接地(第 6 针) |
图中显示了 Pixhawk TELEM2
左侧为端口引脚,右侧为 RPi GPIO 板引脚。左侧的引脚 TELEM2
如图所示,端口通常从右向左编号。
TELEM2 | RPi GPIO |
---|---|
信息
几乎所有最新的 Pixhawk 电路板(如 Pixhawk-6C)都使用 Pixhawk 连接器标准中定义的相同连接器和相应端口的引脚编号。您可以查看具体的电路板文档来确认引脚布局。
标准 TELEM2
引脚分配如下所示。
别针 | 信号 | 电压 |
---|---|---|
1 (红色) | VCC | +5V |
2(黑色) | UART5_TX(输出) | +3.3V |
3(黑色) | UART5_RX (输入) | +3.3V |
4(黑色) | UART5_CTS (in) | +3.3V |
5(黑色) | UART5_RTS(输出) | +3.3V |
6(黑色) | 接地 | 接地 |
TELEM1/遥测无线电
Pixhawk TELEM1
端口经过预配置,可通过 MAVLink 通过遥测无线电与 GCS 连接。
您可以将 适当的无线电 进入 Pixhawk TELEM1
在大多数情况下,它都能正常工作。一般来说,其他无线电需要连接到地面站 USB 端口。如果有任何问题,请查阅无线电文档。
电源
Pixhawk 板通常需要可靠的 5V 直流电源,通常由锂电池通过一个 电源模块和/或配电板 到标有 权力
(或类似)。
飞行控制器的说明书通常会说明建议的设置。例如
Pixhawk 控制器可为以下设备供电 小 一些低功率外设,如 GPS 模块和低范围遥测无线电。RPi 配套计算机、舵机、高功率无线电设备和其他外设需要单独的电源,通常由连接到同一或另一电池的电池消除电路 (BEC) 供电。有些电源模块还包括一个单独的 BEC。
警告
超载是毁坏 Pixhawk 的好方法。
信息
在 PX4 设置和配置过程中,与地面站笔记本电脑的 USB 连接足以为 Pixhawk 板供电,您的配套电脑可能需要使用台式充电器供电。
PX4 设置
这些说明适用于 PX4 v1.14 及更高版本。
如果您需要更新固件,请将 Pixhawk 与您的笔记本电脑/台式机通过 USB
端口,并使用 QGroundControl 更新固件。 固件 > 安装稳定的 PX4.如果您需要最新的开发人员版本,请按照以下说明将固件升级到 "main" 版本。 固件> 安装 PX4 主固件、测试版固件或定制固件.
在 RPi 上安装 Ubuntu
以下步骤展示了如何在 RPi 上安装和设置 Ubuntu 22.04。请注意,ROS 2 版本针对特定的 Ubuntu 版本。我们使用 Ubuntu 22.04 来匹配 ROS 2 "Humble",所以如果你使用的是 ROS 2 "Foxy",则应安装 Ubuntu 20.04。
首先在 RPi 上安装 Ubuntu:
- 按照官方教程准备 Ubuntu 22.04 可启动 Ubuntu 桌面 SD 卡: 如何在 Raspberry Pi 4 上安装 Ubuntu 桌面
- 连接鼠标、键盘和显示器,并将 RPi 连接到 5V 电源(外部电源/充电器)。
- 将 SD 卡插入 RPi,然后打开 RPi 从 SD 卡启动。
- 按照屏幕上的说明安装 Ubuntu。
在终端输入以下命令(按顺序),为 RPi 配置 Ubuntu:
安装
raspi-config
:吁苏都 适切 更新 苏都 适切 升级 苏都 apt-get 安装 raspi-config
开放
raspi-config
:吁苏都 raspi-config
前往 接口选项 然后点击 串行端口.
- 选择 没有 来禁用串行登录 shell。
- 选择 是 以启用串行接口。
- 点击 完成 然后重启 RPi。
在
纳米
RaPi 上的编辑器:吁苏都 纳米 /boot/firmware/config.txt
将以下文本添加到文件末尾(最后一行之后):
吁启用=1 dtoverlay=禁用-bt
然后保存文件并重启 RPi。
- 在
纳米
您可以使用以下一系列键盘快捷键保存文件: ctrl+x, ctrl+y, 进入.
- 在
检查串行端口是否可用。在这种情况下,我们使用以下终端命令来列出串行设备:
吁CD / ls /dev/ttyAMA0
命令结果应包括 RX/TX 连接
/dev/ttyAMA0
(请注意,该串行端口也可作为/dev/serial0
).
现在,RPi 已设置好与 RPi 协同工作,并使用 /dev/ttyAMA0
串行端口。请注意,我们将在接下来的章节中安装更多软件,以便与 MAVLink 和 ROS 2 配合使用。
MAVLink 通信
MAVLink 是与 PX4 协同工作时默认的稳定通信接口。在配套电脑上运行的 MAVLink 应用程序可连接到 /dev/ttyAMA0
您刚刚在 RPi 上设置的串行端口,并应自动(默认情况下)连接到 电话 2
在 Pixhawk 上。
PX4 建议 MAVSDK 因为它提供了简单的应用程序接口,可使用多种不同的编程语言来使用许多常见的 MAVLink 服务。您还可以使用以下机构提供的库编写应用程序 MAVLink例如 Pymavlink但这样一来,你就更有可能需要为某些微服务提供自己的实现。
在本教程中,我们不会对 MAVLink 控制进行详细介绍(相关 SDK 已对其进行了详细说明)。不过,我们将安装并使用一个名为 mavproxy
.这将使我们能够验证 MAVLink 连接,从而确保我们的物理连接设置正确。MAVSDK 和其他 MAVLink 应用程序也会使用非常类似的连接模式。
首先检查 Pixhawk 电话 2
配置:
使用 USB 电缆将 Pixhawk 与笔记本电脑连接。
打开 QGroundControl(载具应已连接)。
检查/更改以下参数 在 QGroundControl 中:
iniMAV_1_CONFIG = TELEM2 UXRCE_DDS_CFG = 0(禁用) SER_TEL2_BAUD = 57600
请注意,这些参数可能已经设置妥当。有关串行端口和 MAVLink 配置如何工作的信息,请参阅 串行端口配置 和 MAVLink 外围设备.
然后使用以下终端命令在 RPi 上安装设置 MAVProxy:
安装 MAVProxy:
吁苏都 适切 安装 python3-pip 苏都 管道3 安装 mavproxy 苏都 适切 去除 调制解调器管理器
运行 MAVProxy,设置连接端口
/dev/ttyAMA0
和波特率以匹配 PX4:吁苏都 mavproxy.py --master=/dev/serial0 --波特率 57600
信息
请注意,上面我们使用了
/dev/serial0
但我们同样可以使用/dev/ttyAMA0
.如果我们通过 USB 连接,则应将端口设置为/dev/ttyACM0
:吁苏都 chmod a+rw /dev/ttyACM0 苏都 mavproxy.py --master=/dev/ttyACM0 --波特率 57600
RPi 上的 MAVProxy 现在应通过 RX/TX 引脚连接到 Pixhawk。您应该可以在 RPi 终端中看到这一点。
现在,我们已经验证了连接线路的正确性。在下一节中,我们将设置 Pixhawk 和 RPi 使用 uXRCE-DDS 和 ROS2,而不是 MAVLink。
ROS 2 和 uXRCE-DDS
ROS 2 指南 和 uXRCE-DDS 这几页涵盖了设置 uXRCE-DDS 和 ROS 的选项,重点是 ROS 2 "Foxy"。本教程使用 ROS 2 "Humble",涵盖了与 RPi 协同工作的具体设置。两者都值得一读!
Pixhawk/PX4 设置
接下来,我们在以下设备上设置 ROS 2,而不是 MAVLink TELEM2
.我们可以在 QGroundControl 中更改参数,QGroundControl 可通过 USB 连接,也可使用遥测无线电连接到 TELEM1
.
配置步骤如下
使用 USB 电缆将 Pixhawk 与笔记本电脑连接,然后打开 QGroundControl(如果当前未连接)。
检查/更改以下参数 在 QGroundControl 中:
iniMAV_1_CONFIG = 0(禁用) UXRCE_DDS_CFG = 102(TELEM2) SER_TEL2_BAUD = 921600
MAV_1_CONFIG=0 和 uxrce_dds_cfg=102 分别禁用 TELEM2 上的 MAVLink 和启用 TELEM2 上的 uXRCE-DDS 客户端。在 TELEM2 上分别禁用 MAVLink 和启用 uXRCE-DDS 客户端。
SER_TEL2_BAUD
速率设置通信链路数据速率。
同样,您也可以将连接配置为TELEM1
使用MAV_1_CONFIG
或MAV_0_CONFIG
.信息
您需要重新启动飞行控制器,以应用对这些参数的任何更改。
检查 uxrce_dds_client 模块正在运行。您可以在 QGroundControl 中运行以下命令来完成此操作 MAVLink 控制台:
吁uxrce_dds_client 地位
信息
如果客户端模块未运行,可在 MAVLink 控制台中手动启动:
uxrce_dds_client 启动 -t 串行 -d /dev/ttyS3 -b 921600
请注意 /dev/ttyS3
是 PX4 端口,用于 TELEM2
在 Holybro Pixhawk 6c.对于其他飞行控制器,请查看其概述页面中的串行端口映射部分。
在 RPi 上设置 ROS
在 RPi 上设置 ROS 2 和 Micro XRCE-DDS Agent 的步骤如下:
按照以下步骤安装 ROS 2 Humble 官方教程.
使用 RPi 终端安装 git:
吁苏都 适切 安装 Git
安装 uXRCE_DDS 代理:
吁Git 复制 https://github.com/eProsima/Micro-XRCE-DDS-Agent.git CD Micro-XRCE-DDS-Agent mkdir 构建 CD 构建 cmake .. 生产 苏都 生产 安装 苏都 ldconfig /usr/local/lib/
参见 uXRCE-DDS > Micro XRCE-DDS 代理安装 了解安装代理的其他方法。
在 RPi 终端启动代理:
吁苏都 MicroXRCEAgent 串行 --开发 /dev/serial0 -b 921600
请注意,我们使用的是之前设置的串行端口,波特率与 PX4 相同。
现在代理和客户端都已运行,您应该可以在 MAVLink 控制台和 RPi 终端上看到活动。您可以在 RPi 上使用以下命令查看可用主题:
消息来源 /opt/ros/humble/setup.bash
玫瑰2 主题 清单
就是这样。连接成功后,请参阅 ROS 2 指南 以获取更多有关使用 PX4 和 ROS 2 的信息。