You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

5.8 KiB

环境搭建流程

本文说明如何从公司 GitLab 拉起当前飞控固件仓库,并达到可以一起改代码、编译、烧录的状态。

当前仓库是 PX4 v1.17.0 的日常开发快照,不是官方完整历史。目标飞控是 CUAV 7-Nano,默认固件目标是 cuav_7-nano_minimal_vtol。该目标已关闭以太网和飞控上的 ROS 2 / DDS。USB 和 TELEM 数传不受影响。

官方英文/中文手册仍在 docs/endocs/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

约定:

  1. 不要把 build/、工具链压缩包、.vscode/ 提交上去。
  2. 不要把官方 docs/endocs/zh 的大范围格式化混进项目文档提交。
  3. 提交说明写清机型或模块,例如 7-nano: enable MS4525 airspeed
  4. 需要官方某次提交做对照时,到 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_ASKPASSGIT_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. 建议阅读顺序

  1. 本文
  2. PX4 源码学习路线
  3. PX4 rcS 启动流程与实机准备
  4. 按任务再看 GPS、电机编号、NuttX、EKF2 或 ULog 文档