# 带有 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
引脚编号显示最左边的引脚为 1 号引脚

备注

几乎所有最新的 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 代码来支持 ROS 2,而 ROS 2 尚未发布(PX4 v1.14)。因此,您需要安装当前的 PX4-Autopilot 主要 分支。

将 Pixhawk 与笔记本电脑/台式机通过 USB 中所述,使用 QGroundControl 将固件更新为 "Master" 版本。 固件> 安装 PX4 主固件、测试版固件或定制固件.

备注

您也可以 设置开发环境, 构建上传 手动安装固件。

# 在 RPi 上安装 Ubuntu

以下步骤展示了如何在 RPi 上安装和设置 Ubuntu 22.04。请注意,ROS 2 版本针对特定的 Ubuntu 版本。我们使用 Ubuntu 22.04 来匹配 ROS 2 "Humble",因此如果你使用的是 ROS 2 "Foxy",则应安装 Ubuntu 20.04。

首先在 RPi 上安装 Ubuntu:

  1. 按照官方教程准备 Ubuntu 22.04 可启动 Ubuntu 桌面 SD 卡: 如何在 Raspberry Pi 4 上安装 Ubuntu 桌面 (打开新窗口)
  2. 连接鼠标、键盘和显示器,并将 RPi 连接到 5V 电源(外部电源/充电器)。
  3. 将 SD 卡插入 RPi,然后打开 RPi 从 SD 卡启动。
  4. 按照屏幕上的说明安装 Ubuntu。

在终端输入以下命令(按顺序),为 RPi 配置 Ubuntu:

  1. 安装 raspi-config:

    sudo apt update sudo apt upgrade sudo apt-get install raspi-config 
    
  2. 开放 raspi-config:

    sudo raspi-config
    
  3. 前往 接口选项 然后点击 串行端口.

    • 选择 没有 来禁用串行登录 shell。
    • 选择 以启用串行接口。
    • 点击 完成 然后重启 RPi。
  4. 纳米 RaPi 上的编辑器:

    苏都 纳米 /boot/firmware/config.txt
    
  5. 将以下文本添加到文件末尾(最后一行之后):

    启用=1
    dtoverlay=禁用-bt
    
  6. 然后保存文件并重启 RPi。

    • 纳米 您可以使用以下一系列键盘快捷键保存文件: ctrl+x, ctrl+y, 进入.
  7. 检查串行端口是否可用。在这种情况下,我们使用以下终端命令来列出串行设备:

    CD /
    ls /dev/ttyAMA0
    

    命令结果应包括 RX/TX 连接 /dev/ttyAMA0 (请注意,该串行端口也可作为 /dev/serial0).

现在,RPi 已设置好与 RPi 协同工作,并使用 /dev/ttyAMA0 串行端口。请注意,我们将在接下来的章节中安装更多软件,以便与 MAVLink 和 ROS 2 配合使用。

MAVLink (打开新窗口) 是与 PX4 协同工作时默认的稳定通信接口。在配套电脑上运行的 MAVLink 应用程序可连接到 /dev/ttyAMA0 您刚刚在 RPi 上设置的串行端口,并应自动(默认情况下)连接到 电话 2 在 Pixhawk 上。

PX4 建议 MAVSDK (打开新窗口) 因为它提供了简单的应用程序接口,可使用多种不同的编程语言来使用许多常见的 MAVLink 服务。您还可以使用以下机构提供的库编写应用程序 MAVLink (打开新窗口)例如 Pymavlink (打开新窗口)但这样一来,你就更有可能需要为某些微服务提供自己的实现。

在本教程中,我们不会对 MAVLink 控制进行详细介绍(相关 SDK 已对其进行了详细说明)。不过,我们将安装并使用一个名为 mavproxy.这将使我们能够验证 MAVLink 连接,从而确保我们的物理连接设置正确。MAVSDK 和其他 MAVLink 应用程序也会使用非常类似的连接模式。

首先检查 Pixhawk 电话 2 配置:

  1. 使用 USB 电缆将 Pixhawk 与笔记本电脑连接。

  2. 打开 QGroundControl(载具应已连接)。

  3. 检查/更改以下参数 在 QGroundControl 中:

    MAV_1_CONFIG = TELEM2 UXRCE_DDS_CFG = 0(已禁用) SER_TEL2_BAUD = 57600
    

    请注意,这些参数可能已经设置妥当。有关串行端口和 MAVLink 配置如何工作的信息,请参阅 串行端口配置MAVLink 外围设备.

然后使用以下终端命令在 RPi 上安装设置 MAVProxy:

  1. 安装 MAVProxy:

    苏都 适切 安装 python3-pip
    苏都 管道3 安装 mavproxy
    苏都 适切 删除 modemmanager
    
  2. 运行 MAVProxy,设置连接端口 /dev/ttyAMA0 和波特率以匹配 PX4:

    sudo mavproxy.py --master=/dev/serial0 --baudrate 57600
    

    备注

    请注意,上面我们使用了 /dev/serial0但我们同样可以使用 /dev/ttyAMA0.如果我们通过 USB 连接,则应将端口设置为 /dev/ttyACM0:

    苏都 chmod a+rw /dev/ttyACM0
    苏都 mavproxy.py --master=/dev/ttyACM0 --baudrate 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.

配置步骤如下

  1. 使用 USB 电缆将 Pixhawk 与笔记本电脑连接,然后打开 QGroundControl(如果当前未连接)。

  2. 检查/更改以下参数 在 QGroundControl 中:

    MAV_1_CONFIG = 0(已禁用) UXRCE_DDS_CFG = 102(TELEM2) SER_TEL2_BAUD = 921600
    

    MAV_1_CONFIG=0uxrce_dds_cfg=102 分别禁用 TELEM2 上的 MAVLink 和启用 TELEM2 上的 uXRCE-DDS 客户端。在 TELEM2 上分别禁用 MAVLink 和启用 uXRCE-DDS 客户端。 SER_TEL2_BAUD 速率设置通信链路数据速率。
    同样,您也可以将连接配置为 TELEM1 使用 MAV_1_CONFIGMAV_0_CONFIG.

    备注

    您需要重新启动飞行控制器,以应用对这些参数的任何更改。

  3. 检查 uxrce_dds_client 模块正在运行。您可以在 QGroundControl 中运行以下命令来完成此操作 MAVLink 控制台 (打开新窗口):

    uxrce_dds_client 状态
    

备注

如果客户端模块未运行,可在 MAVLink 控制台中手动启动:

uxrce_dds_client start -t serial -d /dev/ttyS3 -b 921600

请注意 /dev/ttyS3 是 PX4 端口,用于 TELEM2Holybro Pixhawk 6c.对于其他飞行控制器,请查看其概述页面中的串行端口映射部分。

# 在 RPi 上设置 ROS

在 RPi 上设置 ROS 2 和 Micro XRCE-DDS Agent 的步骤如下:

  1. 按照以下步骤安装 ROS 2 Humble 官方教程 (打开新窗口).

  2. 使用 RPi 终端安装 git:

    苏都 适切 安装 Git
    
  3. 安装 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 代理安装 了解安装代理的其他方法。

  4. 在 RPi 终端启动代理:

    苏都 MicroXRCEAgent serial --dev /dev/serial0 -b 921600
    

    请注意,我们使用的是之前设置的串行端口,波特率与 PX4 相同。

现在代理和客户端都已运行,您应该可以在 MAVLink 控制台和 RPi 终端上看到活动。您可以在 RPi 上使用以下命令查看可用主题:

消息来源 /opt/ros/humble/setup.bash ros2 主题列表

就是这样。连接成功后,请参阅 ROS 2 指南 以获取更多有关使用 PX4 和 ROS 2 的信息。