树莓派4b
ubuntu20.04
git 2.25.1
python3.8.10
pixhawk2.4.8
(已经配置好git环境和ssh)
git clone --recurse-submodules git@github.com:ArduPilot/ardupilot.git
cd ardupilot
git status
使用git status检查是否下载完整
如果不完整,则更新下载
一般更新
git submodule update --init --recursive
强制更新
git submodule update --init --recursive –force
检查根目录下的modules文件夹下的源码是否下载完整,否则更新下载
在ardupilot根目录下操作
设置安装文件成可执行文件
cd Tools/environment_install/
sudo chmod 777 install-prereqs-ubuntu.sh
执行
./install-prereqs-ubuntu.sh -y
使环境生效
. ~/.profile
在根目录下就又waf文件,该文件依赖python3环境运行
设置waf文件为可执行文件
sudo chmod 777 waf
查看waf版本,有版本号输出则已经配置成功
./waf --version
如果报错
‘python3\r’: No such file or directory
$'\r': command not found
则需要安装dos2unix并设置waf为linux脚本(从windows拷贝过来可能就有这个问题)
sudo apt install dos2unix
dos2unix waf
其它文件也是这样操作
pixhawk使用基于 ARM 架构的 STM32 芯片,ubuntu自带的 gcc 编译器是针对 X86 架构的,所以需要安装 gcc-arm-none-eabi
使用命令 uname -a 可知树莓派是基于aarch64架构的
从官网下载安装包
在/usr/local下新建arm文件夹,使用cp或mv命令拷贝压缩包到arm下
mkdir arm
解压
tar -xjvf gcc-arm-none-eabi-10.3-2021.10-aarch64-linux.tar.bz2
命令行直接配置到profile文件中
exportline="export PATH=/usr/local/arm/gcc-arm-none-eabi-10.3-2021.10/bin:\$PATH"
或者修改/etc/profile文件
sudo gedit /etc/profile
添加以下命令到最后一行
export PATH=$PATH:/usr/local/arm/gcc-arm-none-eabi-10.3-2021.10/bin
使环境生效
source ~/.profile
查看arm-none-eabi-gcc版本
arm-none-eabi-gcc --version
失败则重启树莓派,不行就查看一下配置
在编译固件之前需要选择目标平台,ArduPilot支持多种不同的硬件平台,包括Pixhawk、APM等,根据piaxhawk版本配置编译环境, pixhawk2.4.8为fmuv3
./waf configure --board bebop --static # Bebop or Bebop2
./waf configure --board edge # emlid edge
./waf configure --board fmuv3 # 3DR Pixhawk 2 boards
./waf configure --board navio2 # emlid navio2
./waf configure --board Pixhawk1 # Pixhawk1
./waf configure --board CubeBlack # Hex/ProfiCNC Cube Black (formerly known as Pixhawk 2.1)
./waf configure --board Pixracer # Pixracer
./waf configure --board skyviper-v2450 # SkyRocket's SkyViper GPS drone using ChibiOS
./waf configure --board sitl # software-in-the-loop simulator
./waf configure --board sitl --debug # software-in-the-loop simulator with debug symbols
使用以下命令可以在ArduPilot上获得受支持的板的列表
./waf list_boards
配置fmuv3需要的环境
./waf configure --board fmuv3
以下是ardupilot支持的飞控固件
./waf copter # All multirotor types
./waf heli # Helicopter types
./waf plane # Fixed wing airplanes including VTOL
./waf rover # Ground-based rovers and surface boats
./waf sub # ROV and other submarines
./waf antennatracker # Antenna trackers
编译copter
./waf copter
编译成功
编译结果会在根目录下的build文件夹中生成
可以在build/目标平台目录下找到生成的固件文件
借鉴大佬
you need to install empy with 'python -m pip install empy
, 尝试python -m pip install empy
python3 -m pip install empy
可能是两个python环境引起的
failed to created ap_romfs_embedded.h
task in 'dronecan' failed
ArduPilot的固件是APJ文件和HEX文件:
4. apj文件:这些是“ArduPilot JSON”固件,其中包含可以由ArduPilot兼容的地面站软件加载的固件。
5. hex文件:这些是Intel十六进制格式的固件,用于使用DFU加载工具加载。这些用于不带有ArduPilot兼容引导加载程序的电路板。
6. _with_bl.hex文件:这些是内置引导加载程序的十六进制文件的变体。它们可用于使用DFU加载工具一步安装引导加载程序和ArduPilot车辆固件。