当无人机开发遇上Windows系统,传统的手动配置流程往往让初学者望而却步。本文将带你体验官方PowerShell脚本带来的革命性改变——只需一键即可完成从环境搭建到QGroundControl连接的完整仿真流程。不同于网上零散的教程,我们特别整理了七个关键阶段的避坑指南,确保你的开发之旅畅通无阻。
在ArduPilot官方仓库的Tools/environment_install目录下,藏着两个改变游戏规则的脚本:
install-prereqs-windows.ps1:基础依赖安装install-prereqs-windows-andAPMSource.ps1:依赖+源码全家桶推荐选择:国内用户建议分步执行基础脚本,源码单独克隆更可控。以下是典型执行过程:
powershell复制# 以管理员身份运行PowerShell
Set-ExecutionPolicy RemoteSigned -Force
cd E:\ardupilot\Tools\environment_install
.\install-prereqs-windows.ps1
安装过程中需注意:
注意:若脚本执行中断,重新运行时会自动跳过已完成的步骤
官方脚本可能因网络问题导致源码下载失败,推荐手动操作:
bash复制# 在Cygwin终端中执行
git clone --depth=1 https://github.com/ArduPilot/ardupilot.git
cd ardupilot
git submodule update --init --recursive
验证关键目录结构:
code复制ardupilot/
├── ArduCopter/
├── Tools/
│ └── autotest/
│ └── sim_vehicle.py
└── modules/
└── waf/
即使脚本执行成功,仍可能缺少关键Python包。通过以下命令查漏补缺:
bash复制# 在Cygwin中检查Python版本
python3 --version
pip3 list
# 常见需要手动安装的包
pip3 install empy==3.3.4 pyserial pymavlink future pexpect
典型报错解决方案:
ImportError: No module named empy → 执行上述安装命令Python version mismatch → 确认Cygwin终端与系统Python路径隔离进入目标机型目录执行启动命令:
bash复制cd ArduCopter
../Tools/autotest/sim_vehicle.py --console --map --aircraft=test
优化启动参数的技巧:
--speedup=2加速仿真速度--add-param-file=<path>加载自定义参数--disable-fgview关闭不必要的视图节省资源成功启动后会看到三个关键窗口:
最新版QGC(v4.3+)通常能自动连接,若失败请检查:
连接配置对照表:
| 参数项 | 推荐值 | 说明 |
|---|---|---|
| 连接类型 | UDP | 默认端口14550 |
| 本地端口 | 14550 | 需与MAVProxy一致 |
| 远程端口 | 14551 | 广播端口 |
| 自动连接 | 开启 | 避免每次手动重连 |
手动连接步骤:
bash复制output add 127.0.0.1:14550
基础飞行指令序列:
bash复制# 在MAVProxy控制台输入
mode GUIDED
arm throttle
takeoff 10 # 上升到10米高度
调试必备命令:
param show ARMING_CHECK → 查看安全参数status → 显示系统状态reboot → 软重启仿真器常见问题处理:
bash复制param set ARMING_CHECK 0
bash复制param set EK2_GPS_TYPE 3 # 使用仿真GPS
建立自动化脚本提升效率:
bash复制# start_sitl.sh
#!/bin/bash
cd ~/ardupilot/ArduCopter
../Tools/autotest/sim_vehicle.py \
--console \
--map \
--add-param-file=~/params/custom.parm \
--speedup=2
将常用操作封装为别名:
bash复制# 添加到~/.bashrc
alias arm='mode GUIDED; arm throttle'
alias takeoff='takeoff 10'
alias land='mode LAND'
仿真环境搭建只是无人机开发的起点。记得定期执行git pull获取最新代码,当遇到奇怪问题时,尝试make clean后重新编译往往有奇效。