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 → 自主飞行逻辑与算法运行
• 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/ttyACM0 | Pixhawk 飞控连接端口 |
115200 | 飞控 MAVLink 波特率 |
192.168.1.234 | Windows 地面站 IP 地址(请根据实际情况修改) |
14560 | MAVLink 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 PATHpython --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
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
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、自主巡检、目标跟踪等高级应用的基础通信框架。
该方案已成功应用于单机控制、多机控制、LQ3 网络通信以及无人机编队测试等场景,可作为后续视觉导航、SLAM、自主巡检、目标跟踪等高级应用的基础通信框架。