5.8 KiB
环境搭建流程
本文说明如何从公司 GitLab 拉起当前飞控固件仓库,并达到可以一起改代码、编译、烧录的状态。
当前仓库是 PX4 v1.17.0 的日常开发快照,不是官方完整历史。目标飞控是 CUAV 7-Nano,默认固件目标是 cuav_7-nano_minimal_vtol。该目标已关闭以太网和飞控上的 ROS 2 / DDS。USB 和 TELEM 数传不受影响。
官方英文/中文手册仍在 docs/en、docs/zh。项目自己的说明在 docs/project。
1. 机器要求
| 项 | 要求 |
|---|---|
| 系统 | Ubuntu 22.04 或 24.04,x86_64 |
| 磁盘 | 建议预留 20 GB 以上 |
| 权限 | 能 sudo 装软件包 |
| 网络 | 能访问 gitlab.jiagutech.com(SSH 端口 22722) |
不要对 GitLab 走代理。公司 GitLab 在国内,走代理会连错或超时。
2. 配置 SSH
本机生成密钥(已有 ~/.ssh/id_ed25519 可跳过):
ssh-keygen -t ed25519 -C "你的名字"
cat ~/.ssh/id_ed25519.pub
把公钥加到 Gitea:Settings → SSH / GPG Keys。
写入 ~/.ssh/config:
Host gitlab.jiagutech.com
HostName gitlab.jiagutech.com
User git
Port 22722
IdentityFile ~/.ssh/id_ed25519
IdentitiesOnly yes
chmod 600 ~/.ssh/config
测试:
ssh -T git@gitlab.jiagutech.com
成功时会看到类似:
Hi there, <用户名>! You've successfully authenticated ... but Gitea does not provide shell access.
does not provide shell access 是正常的,表示密钥已经认到。
3. 克隆仓库
mkdir -p ~/work
cd ~/work
git clone -b 7-nano-minimal-vtol \
ssh://git@gitlab.jiagutech.com:22722/caixiang/PX4-Autopilot.git
cd PX4-Autopilot
git log --oneline -5
当前日常分支是 7-nano-minimal-vtol。NuttX、MAVLink 等源码已经打进这个仓库,不需要再执行 git submodule update。
不要用 http:// 地址做第一次完整推送。HTTP 会被 Nginx 的上传大小限制拦住(413)。日常拉代码、推小改动用 SSH。
4. 安装编译工具链
在仓库根目录执行官方脚本,装 NuttX / ARM 交叉编译器:
cd ~/work/PX4-Autopilot
bash Tools/setup/ubuntu.sh --no-sim-tools
--no-sim-tools 表示不装 Gazebo 等仿真依赖。如果也要在本机跑 SITL,去掉这个参数。
装完重新打开终端,或:
source ~/.profile
arm-none-eabi-gcc --version
应能看到 arm-none-eabi-gcc。
5. 编译和烧录
USB 连接 CUAV 7-Nano 后:
cd ~/work/PX4-Autopilot
make cuav_7-nano_minimal_vtol
make cuav_7-nano_minimal_vtol upload
固件产物:
build/cuav_7-nano_minimal_vtol/cuav_7-nano_minimal_vtol.px4
也可以在 QGroundControl 里选这个 .px4 文件刷写。
编译成功后用 QGC 连上飞控,Analyze → MAVLink Console 检查:
ver all
free
硬件架构应是 CUAV_7_NANO。
不要编 cuav_7-nano_default,除非你明确需要以太网和飞控 ROS 2。日常统一用 minimal_vtol。
6. 本仓库相对官方的差异
| 项 | 本仓库 |
|---|---|
| 基础版本 | PX4 v1.17.0 |
| 日常分支 | 7-nano-minimal-vtol |
| 以太网 / NuttX 网络栈 | 关闭 |
飞控 UXRCE_DDS_CLIENT |
关闭 |
netman |
未编入 |
| 空速计 | I2C MS4525DO,需设 SENS_EN_MS4525DO=1 |
| 历史 | 只有日常快照和之后的提交,没有官方全部 Git 历史 |
板级改动主要在:
boards/cuav/7-nano/minimal_vtol.px4board
boards/cuav/7-nano/nuttx-config/minimal_vtol/defconfig
boards/cuav/7-nano/init/rc.board_defaults
boards/cuav/7-nano/init/rc.board_sensors
7. 日常开发约定
git switch 7-nano-minimal-vtol
git pull --ff-only
# 改代码、编译确认
make cuav_7-nano_minimal_vtol
git add <具体文件>
git status
git commit -m "简要说明改了什么"
git push
约定:
- 不要把
build/、工具链压缩包、.vscode/提交上去。 - 不要把官方
docs/en、docs/zh的大范围格式化混进项目文档提交。 - 提交说明写清机型或模块,例如
7-nano: enable MS4525 airspeed。 - 需要官方某次提交做对照时,到 PX4 官方仓库 查看
v1.17.0,不要在本仓库里重拉全部历史。
8. 实机常用检查
空速计(I2C,地址 0x28,总线 1):
i2cdetect -b 1
param show SENS_EN_MS4525DO
ms4525do status
listener differential_pressure
若驱动未启动:
param set SENS_EN_MS4525DO 1
param set SYS_HAS_NUM_ASPD 1
param set ASPD_PRIMARY 1
param set UAVCAN_ENABLE 0
param save
reboot
GPS 插在物理 GPS2 时,见 CUAV 7-Nano GPS2 配置与检查。
9. 常见问题
SSH 超时或一直无响应
确认 ~/.ssh/config 里端口是 22722,不要用默认 22。不要给 gitlab.jiagutech.com 配 HTTP/SOCKS 代理。
HTTPS 推送报 413
这是 Nginx 上传大小限制。请用 SSH 推送,不要用 http:// 传整仓。
git push 终端不弹出用户名密码
SSH 不需要密码。如果误用了 HTTPS,先检查是否被 VS Code 的 GIT_ASKPASS 或 GIT_TERMINAL_PROMPT=0 拦掉。日常请用 SSH。
编译找不到 arm-none-eabi-gcc
重新执行 bash Tools/setup/ubuntu.sh --no-sim-tools,并新开一个终端。
QGC 连上但没有以太网 MAVLink
这是预期行为。minimal_vtol 固件不包含网络栈,地面站走 USB 或数传。
想重新打开以太网或飞控 ROS 2
需要改 boards/cuav/7-nano/minimal_vtol.px4board,并恢复带网络的 NuttX defconfig。改之前先和当前维护者确认。
10. 建议阅读顺序
- 本文
- PX4 源码学习路线
- PX4 rcS 启动流程与实机准备
- 按任务再看 GPS、电机编号、NuttX、EKF2 或 ULog 文档