1. 课程导入

在无人机、无人车与移动机器人快速走向自主化的今天,飞控负责“稳定飞行”,机载计算机负责“看懂世界并做出决策”,二者之间的协同已经成为智能无人系统的基本架构。本课程围绕 Jetson 机载计算平台 与 PX4 飞控生态 的集成展开,目标不是简单地把两块板子连起来,而是建立一套从传感器数据、机载推理、控制指令到飞行动作的完整工程认知。

一、学习目标:从“能连上”到“能飞好”

学习本课程后,你应当能够独立完成以下任务:

  • 理解 Jetson 与 PX4 在系统中的角色分工:Jetson 负责感知、规划与决策,PX4 负责姿态控制、位置控制与执行器输出。
  • 掌握 Jetson 与 PX4 之间的物理连接方式,包括 UART、USB、以太网以及 MAVLink 通信链路。
  • 能够配置 PX4 的 MAVLink 输出、机载计算机接口参数与 offboard 控制模式。
  • 能够使用 ROS 2 或 MAVSDK 在 Jetson 上编写控制程序,向 PX4 发送位置、速度或姿态设定值。
  • 能够分析集成过程中的典型故障,例如串口权限、波特率不匹配、心跳丢失、坐标系不一致等。

核心判断:Jetson 与 PX4 集成是否成功,不取决于“能不能收到消息”,而取决于“控制指令是否在正确的时间、正确的坐标系下、以正确的频率进入飞控”。

二、核心概念:三个层次与一条链路

理解本课程,需要先建立三个层次的概念:

第一层是计算平台层。Jetson 系列(如 Orin Nano、Orin NX、Xavier NX)提供 GPU 加速的 AI 推理能力,适合运行目标检测、语义分割、视觉里程计、路径规划等算法。它的优势是算力强、功耗可控、接口丰富,但实时性不如飞控 MCU。

第二层是飞控层。PX4 运行在 Pixhawk 等飞控硬件上,负责传感器融合、姿态估计、位置控制和电机输出。它的核心价值是实时性与安全性,即使机载计算机崩溃,飞控仍能保持稳定飞行或执行返航。

第三层是通信与协议层。Jetson 与 PX4 之间通常通过 MAVLink 协议通信。MAVLink 是一种轻量级消息协议,支持心跳、状态、指令、设定值等多种消息类型。在 ROS 2 中,常用 px4_msgs 与 px4_ros_com 进行桥接;在 Python 中,常用 MAVSDK 或 pymavlink。

一条典型链路可以概括为:传感器 → Jetson 感知与规划 → MAVLink 设定值 → PX4 控制律 → 电机/舵机 → 无人机运动。这条链路中任何一环的延迟、丢包或坐标错误,都会直接影响飞行表现。

Jetson 机载计算与 PX4 集成整体框架 Jetson 机载计算机 感知 · 规划 · 决策 相机 / 激光雷达 / IMU 数据 AI 推理与目标检测 路径规划与轨迹生成 MAVLink / ROS 2 接口 PX4 飞控 稳定 · 实时 · 安全 传感器融合与状态估计 位置 / 速度 / 姿态控制 Offboard 模式管理 电机 / 舵机输出 MAVLink UART / USB / 以太网 心跳 · 设定值 · 状态 典型闭环:感知 → 规划 → 设定值 → 控制 → 运动 → 新感知

三、方法流程:集成工作的基本步骤

无论使用 ROS 2 还是 MAVSDK,Jetson 与 PX4 的集成通常遵循以下流程:

  1. 硬件连接:将 Jetson 的 UART 或 USB 接口与飞控的 TELEM 口连接,确认电平与引脚定义。
  2. 飞控参数配置:设置 MAV_1_CONFIG、MAV_1_MODE、SER_TEL2_BAUD 等参数,使飞控在指定串口输出 MAVLink 消息。
  3. 机载环境搭建:在 Jetson 上安装 ROS 2、px4_msgs、px4_ros_com 或 MAVSDK,并配置串口权限。
  4. 通信验证:使用 mavlink_shell 或 ROS 2 话题查看心跳与状态消息,确认链路通畅。
  5. Offboard 控制:编写控制节点,以固定频率发送位置或速度设定值,并切换 PX4 到 Offboard 模式。
  6. 安全测试:先在仿真中验证,再在系留或低速状态下试飞,逐步增加自主程度。
# 查看 Jetson 串口设备
ls -l /dev/ttyTHS1 /dev/ttyUSB0

# 将用户加入 dialout 组,避免权限问题
sudo usermod -aG dialout $USER

# 启动 PX4 ROS 2 桥接(示例)
ros2 launch px4_ros_com sensor_combined_listener.launch.py

四、典型应用场景与误区复盘

Jetson 与 PX4 的集成广泛应用于以下场景:

应用场景 Jetson 负责 PX4 负责 关键接口
视觉目标跟踪 检测目标、估计相对位置 速度控制、姿态稳定 MAVLink 速度设定值
自主巡检 路径规划、避障决策 位置控制、航点执行 Offboard 位置设定值
精准降落 识别降落标记、计算偏差 下降速度与姿态控制 MAVLink 位置/速度指令
多机协同 任务分配、通信中继 单机稳定飞行 ROS 2 话题与 MAVLink

常见误区:很多初学者认为“Jetson 算力强,就可以直接控制电机”。实际上,Jetson 的 Linux 系统不具备硬实时能力,直接输出电机控制信号会导致飞行不稳定。正确做法是让 Jetson 发送高层设定值,由 PX4 完成底层控制。

学习建议:先打通“心跳—状态—设定值”这条最小链路,再逐步加入感知与规划模块。不要一开始就追求全自主飞行,否则一旦出现坐标错误或频率不足,很难定位问题。