Drobotics logo DROBOTICSTechnical Library

Network Guide

MAVLink 地面站控制指南 | Raspberry Pi → Windows MAVLink 转发

All Network

MAVLink 地面站控制指南

Raspberry Pi → Windows MAVLink 转发 | 自主飞行开发与多机控制

Pixhawk MAVLink Raspberry Pi 转发 Windows 地面站 Python + pymavlink Mission Planner 多机扩展支持
简介
本方案适用于卓博泰科技交付的无人机平台。无人机出厂时,Raspberry Pi 已完成 MAVProxy、Python 环境以及飞控通信配置,用户无需在树莓派上安装额外软件。

通过简单配置,即可将 Pixhawk 飞控的 MAVLink 数据转发到 Windows 地面站,实现:

  • Python 自动飞行控制
  • MAVLink 二次开发
  • Mission Planner 远程控制
  • 无人机编队控制
  • 多机协同开发
  • 自主巡检与科研验证
系统架构
Pixhawk Flight Controller │ │ USB ▼ Raspberry Pi │ │ MAVProxy ▼ UDP Network │ ▼ Windows PC │ ├── Python + pymavlink ├── Mission Planner └── Custom Applications
• Pixhawk → 飞行控制
• Raspberry Pi → MAVLink 数据转发
• Windows PC → 自主飞行逻辑与算法运行
充分利用 Windows 电脑更强的计算能力,同时降低机载计算压力。
第一步:停止 Rpanion Server
如果系统当前正在使用 Rpanion Server,建议先停止服务,避免多个程序同时访问飞控串口。
# 查看状态 sudo systemctl status rpanion-server # 停止服务 sudo systemctl stop rpanion-server # 关闭开机启动 sudo systemctl disable rpanion-server # 确认飞控已连接 ls /dev/ttyACM*
正常情况下显示:/dev/ttyACM0
第二步:创建 MAVLink 转发服务
sudo nano /etc/systemd/system/mavlink-router.service
[Unit] Description=MAVProxy Pixhawk Bridge (Stable) After=network.target [Service] Type=simple User=ubuntu WorkingDirectory=/home/ubuntu Environment="PATH=/home/ubuntu/.local/bin:/usr/bin:/bin" ExecStart=/bin/bash -c 'exec /home/ubuntu/.local/bin/mavproxy.py \ --master=/dev/ttyACM0 \ --baudrate=115200 \ --out=udp:192.168.1.234:14560 \ --daemon' StandardOutput=journal StandardError=journal Restart=always RestartSec=5 [Install] WantedBy=multi-user.target
参数说明
参数说明
/dev/ttyACM0Pixhawk 飞控连接端口
115200飞控 MAVLink 波特率
192.168.1.234Windows 地面站 IP 地址(请根据实际情况修改)
14560MAVLink UDP 输出端口(多机时可用 14560-14564 分别对应不同无人机)
第三步:启用服务
sudo systemctl daemon-reload sudo systemctl enable mavlink-router.service sudo systemctl start mavlink-router.service # 查看运行状态 sudo systemctl status mavlink-router.service # 查看实时日志 journalctl -u mavlink-router.service -f
运行正常应显示:active (running)
第四步:Windows 端安装 Python
下载并安装 Python 3。
安装时务必勾选:Add Python to PATH
python --version
若显示版本号,则安装成功。
第五步:安装 pymavlink
pip install pymavlink pip show pymavlink
第六步:验证 MAVLink 心跳
from pymavlink import mavutil master = mavutil.mavlink_connection("udp:0.0.0.0:14560") print("Waiting heartbeat...") master.wait_heartbeat() print(f"Connected: system={master.target_system}, component={master.target_component}")
成功结果:
Waiting heartbeat...
Connected: system=1, component=1
Pixhawk → Raspberry Pi → MAVProxy → UDP → Windows 通信链路成功建立。
第七步:Mission Planner 测试
打开 Mission Planner → 连接方式:UDP → 端口:14560 → 点击 Connect
连接成功后,可实时查看飞行模式、GPS 状态、电池状态、姿态信息、飞机位置、MAVLink 数据流。
第八步:开始自主飞行开发
Heartbeat 测试成功后,即可通过 Python 控制无人机。
# 飞行模式切换 set_mode("GUIDED") # 解锁 arm() # 自动起飞 takeoff(2) # 速度控制 send_velocity(vx=1) # 自动巡航 fly_forward(distance=10) # 自动降落 land()
多机扩展
Drone 1 → UDP 14560
Drone 2 → UDP 14561
Drone 3 → UDP 14562
Drone 4 → UDP 14563
Drone 5 → UDP 14564
Windows 端可同时建立多个 pymavlink 连接,实现无人机编队与协同控制。
总结
通过本方案,用户无需在无人机上运行复杂控制程序,仅需将 Pixhawk MAVLink 数据转发至 Windows 地面站,即可使用 Python、Mission Planner 或自定义软件进行自主飞行开发。

该方案已成功应用于单机控制、多机控制、LQ3 网络通信以及无人机编队测试等场景,可作为后续视觉导航、SLAM、自主巡检、目标跟踪等高级应用的基础通信框架。