物唯仓库-AP固件-编译说明

本文编译环境:win11,wsl2,ubuntu22.04 注:本文的视频教程已上传至B站: 《APM源码的编译》 1.1下载WFG100硬件配置文件并解压。 访问网页进行下载: https://www.wwzhyun.cn/docs/wf...

本文编译环境:win11,wsl2,ubuntu22.04


1.1说明

物唯科技后续将会在Ardupilot4.6.3的基准上,逐步对Ardupilot的飞控源码进行功能增减及优化!部分功能需要在多个文件夹上新增.cpp文件或.h文件!因此物唯科技只能建一个独立的 仓库进行源码管理,并开源!

另外在物唯的代码仓库中,也会默认增加物唯的WFG100、WFG001、WFG120这几个系列的飞控板卡配置文件,无需额外进行硬件配置文件夹的增加与配置!

编译AP官方固件和物唯科技的大体步骤,基本是一样的,只是部分指令有所区别!如果要编译AP官方的固件,请参考此页面的内容:《AP官方固件编译说明》


物唯科技AP固件源码仓库如下:

https://github.com/WWKJ-FX/WW-Ardupilot

image.png


1.2 下载物唯修改后的Ardupilot源码

从物唯科技的github仓库,克隆修改后的Ardupilot的飞控源码:

打开WSL子系统终端,输入以下指令:

git clone https://github.com/WWKJ-FX/WW-Ardupilot.git

回车执行,等待下载完成!

image.png



1.3 进入下载好的WW-Ardupilot文件夹中

cd WW-Ardupilot/

image.png

1.4 编译前,先切换分支

使用git checkout命令进行分支的切换。

截止至2026年8月1日,物唯已将固定翼/多旋翼/无人机的源码都合并在WW-ArduPilot-4.6.3分支中。

由于潜水艇的固件还停留在4.5.0,所以潜水艇还是独立一个WW-Sub-4.5的分支!

image.png



比如我们想编译多旋翼/固定翼/无人机车的固件,那么就执行以下命令:

git checkout WW-ArduPilot-4.6.3  


注:如果用户需要编译潜水艇的固件,那么就执行以下命令

切换潜水艇分支:git checkout WW-Sub-4.5

在切换分支后,用户需要重新更新子目录!执行命令:git submodule update --init --recursive


1.5 确认分支切换成功

输入以下指令,确认切换分支成功。

git branch

image.png

查看*号位于哪里。


1.6 更新子模块

更新子模块是将上述切换的分支版本相关的模块补全,此步骤非常重要!没下载好会导致后续报错。

注:每次切换了版本分支,都要执行一次更新子模块的命令!

git submodule update --init --recursive

1.7 安装开发环境

sudo apt-get update
sudo apt-get upgrade -y
Tools/environment_install/install-prereqs-ubuntu.sh -y

image

注:安装编译环境这一步非常关键,请确保网络环境良好,如果条件允许最好能够魔法一下!如果编译环境安装不完整,后续编译代码的过程中会有各种各样的问题!


安装工具完成后的页面如下:

image.png



1.8 安装交叉编译工具

部分朋友编译可能会报错,因为提前先执行这条命令:

sudo apt update
sudo apt install gcc-arm-none-eabi -y


1.9 配置waf

./waf configure

image

1.10 选择对应的飞控硬件

截至2026年4月29日,物唯科技一共推出了WFG100(开源飞控)、WFG001飞控、WFG120飞控。

因此用户可以按需进行配置,本文以WFG100飞控为例,输入指令:

./waf configure --board WFG100

如果要编译WFG001的板卡,则输入:./waf configure --board WFG001

如果要编译WFG120的板卡,则输入:./waf configure --board WFG120


1.11 执行关联bootloader命令

关联bootloader,执行以下命令,输入以下命令,回车执行。

同理,

python3 Tools/scripts/build_bootloaders.py WFG100

如果要编译WFG001的板卡,则输入:python3 Tools/scripts/build_bootloaders.py WFG001

如果要编译WFG120的板卡,则输入:python3 Tools/scripts/build_bootloaders.py WFG120    


执行可能会报错,如果报错就执行以下命令。

source ~/.profile 

然后再次执行:

python3 Tools/scripts/build_bootloaders.py WFG100

执行成功后,界面如下:

image.png


此时再执行一下清除编译缓存的命令,否则后续编译固件会报错:

./waf distclean


然后重新选择需要编译的板子型号:


./waf configure --board WFG100

如果要编译WFG001的板卡,则输入:./waf configure --board WFG001

如果要编译WFG120的板卡,则输入:./waf configure --board WFG120



1.12 执行编译命令、生成固件

如果用户需要编译多旋翼的固件,执行以下命令:

./waf copter

如果需要编译载具的固件,分别执行:

./waf plane (固定翼)
./waf rover (巡航车)
./waf heli (直升机)
./waf sub (潜水艇)


等待编译执行,默认是编译1200多个文件,待编译完成后会显示固件的存放位置。

image.png


如果编译到一半失败,重新编译代码的操作。

报错时,重新编译之前,先执行以下命令清楚配置,然后再重新配置,重新编译。

./waf distclean
./waf configure --board WFG100   #如果需要编译别的板子,请输入板子型号即可!
./waf copter                     #如果需要编译别的载具,请输入对应载具的编译命令即可!


编译完成后,打开固件的生成目录,会发现以下2种类型的固件文件:

image


烧录固件

至此固件就编译完成,至于APM固件如何烧录到飞控硬件上,如下:

万能固件烧录方法1:请参阅《通用:飞控固件如何烧录-STM32烧录工具-DFU模式烧录》

万能固件烧录方法2:请参阅《通用:飞控固件如何烧录-STM32烧录工具-ST-link模式烧录》

如果需要使用Missionplanner地面站烧录AP固件,请参阅《通用:通过地面站烧录AP固件》


附-固件编译指令

./waf copter     #(多轴)
./waf plane     #(固定翼)
./waf rover     #(巡航车)
./waf heli     #(直升机)
./waf sub     #(潜水艇)


相关文档