4、MAVProxy入门:安装、启动与常用命令
说实话,MAVProxy 是我个人非常喜欢的一个工具。它不像 QGroundControl 那样有花哨的界面,但胜在轻量、灵活,特别适合做自动化测试和脚本控制。我刚开始接触 ArduPilot 时,就是靠 MAVProxy 一点点把飞控的脾气摸透的。
这一章,我们把它装好、跑起来,再试试几个最常用的命令。你很快就会发现,命令行操作其实比点鼠标更高效。
4.1 安装 MAVProxy
MAVProxy 是 Python 写的,所以安装方式很简单。我个人建议用 pip 装,干净利落。
pip install mavproxy
如果你用的是 Ubuntu 系统,也可以从 apt 源装:
sudo apt install mavproxy
装完之后,验证一下:
mavproxy.py --version
能看到版本号,就说明装好了。
4.2 启动 MAVProxy 并连接 SITL
我们先启动 SITL,再让 MAVProxy 连上去。这是最标准的联调流程。
第一步:启动 SITL
sim_vehicle.py -v ArduCopter --map --console
这条命令会启动一个四旋翼的仿真,同时打开地图和调试控制台。等它输出类似这样的信息:
APM: ArduCopter V4.5.0 (e1f2c3d4)
APM: Frame: QUAD
APM: PreArm: RC not calibrated
...
Waiting for connection...
嗯,这时候 SITL 就在 tcp:127.0.0.1:5760 上等着了。
第二步:启动 MAVProxy 并连接
新开一个终端,输入:
mavproxy.py --master tcp:127.0.0.1:5760 --out udp:127.0.0.1:14550
解释一下这两个参数:
--master:指定 MAVProxy 连接谁。这里连的是本地的 SITL。--out:指定 MAVProxy 把数据转发给谁。这里转发到 UDP 14550 端口,方便 QGC 或 Mission Planner 同时连接。
连接成功后,你会看到 MAVProxy 的交互提示符:
MAV>
到了这一步,恭喜你,MAVProxy 已经和 SITL 成功握手了。
4.3 常用命令:mode、arm、takeoff
现在我们来点真格的。在 MAV> 提示符下,试试这几个命令。
4.3.1 切换飞行模式(mode)
先把飞机切到 GUIDED 模式,这个模式允许我们通过指令控制飞机。
MAV> mode GUIDED
你会看到类似这样的反馈:
GUIDED
如果模式切换成功,SITL 的控制台里也会同步显示模式变化。
常用的模式还有:
| 模式名 | 说明 | 典型用途 |
|---|---|---|
| STABILIZE | 增稳模式 | 手动飞行,飞控辅助稳定 |
| ALT_HOLD | 定高模式 | 保持当前高度,水平可手动控制 |
| LOITER | 悬停模式 | 自动保持位置和高度 |
| GUIDED | 引导模式 | 接受外部指令(起飞、航点、降落) |
| RTL | 返航模式 | 自动飞回起飞点并降落 |
4.3.2 解锁电机(arm)
解锁前,先确认模式是 GUIDED。然后输入:
MAV> arm throttle
如果一切正常,你会看到:
ARMED
这时候 SITL 里的电机应该开始旋转了(在仿真里是模拟的)。
如果解锁失败,MAVProxy 会告诉你原因。最常见的是:
PreArm: RC not calibrated—— 仿真里可以忽略,真机必须校准遥控器。PreArm: 3D acceleration unhealthy—— 传感器未就绪,等几秒再试。
4.3.3 起飞(takeoff)
解锁成功后,就可以起飞了:
MAV> takeoff 10
这个命令的意思是:起飞到 10 米高度。你会看到飞机缓缓上升,SITL 的地图里也会显示高度变化。
起飞过程中,你可以随时用 mode LOITER 让它悬停,或者用 mode RTL 让它返航。
4.4 查看消息流
MAVProxy 最强大的地方,就是能实时看到 MAVLink 消息流。这对调试来说太重要了。
4.4.1 查看所有消息
输入:
MAV> messages
你会看到当前所有活跃的消息类型列表,比如:
GLOBAL_POSITION_INT
ATTITUDE
VFR_HUD
SYS_STATUS
BATTERY_STATUS
...
4.4.2 查看特定消息
想看某个消息的具体内容,用 watch 命令:
MAV> watch GLOBAL_POSITION_INT
然后 MAVProxy 会持续刷新显示这条消息的字段:
GLOBAL_POSITION_INT:
time_boot_ms: 123456
lat: 372345678
lon: -122123456
alt: 10.25
relative_alt: 10.25
vx: 0.01
vy: -0.02
vz: -0.05
想停止查看,按 Ctrl+C 就行。
4.4.3 设置消息频率
有时候某些消息默认频率太低,你可以手动调高:
MAV> set_rate ATTITUDE 10
这条命令把姿态消息的频率设为 10 Hz。频率越高,数据越密,但也会增加通信负载。仿真里无所谓,真机上要悠着点。
GLOBAL_POSITION_INT(位置)、ATTITUDE(姿态)、VFR_HUD(空速/地速)。这三个基本能覆盖 90% 的异常场景。
4.5 本章知识体系
下面这张图,帮你把 MAVProxy 的核心逻辑串起来:
这张图把 MAVProxy 的定位说得很清楚:它站在 SITL 和地面站中间,既当消息中继,又当命令解释器。你通过命令行发的每一条指令,都会经过它转换成 MAVLink 协议,再发给 SITL。
4.6 本章小结
到这儿,你已经掌握了 MAVProxy 最核心的操作:安装、连接、切模式、解锁、起飞、看消息。这些是后续所有联调操作的基础。
我个人觉得,MAVProxy 最大的价值不在于它本身,而在于它让你能直接和 MAVLink 协议打交道。你想想看,当你学会用命令行控制飞机之后,再去做自动化测试、脚本化飞行,就水到渠成了。