ArduPilot飞控AOCODARC-H7DUAL固件编译

Posted lida2003

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ArduPilot飞控AOCODARC-H7DUAL固件编译相关的知识,希望对你有一定的参考价值。

ArduPilot飞控AOCODARC-H743DUAL固件编译

ArduPilot是一款非常出色的飞控开源软件,而且是基于GPL V3协议,所以相应的代码修改,必须开源出来。与PX4的BSD协议不一样,通常商业角度更多倾向于BSD协议。

当前(截止发稿日)ArduPilot尚未支持AOCODARC的硬件,本次编译主要是针对AOCODARC-H743DUAL飞控板进行相应的适配。

1. 编译目标(AOCODARC-H743DUAL)

  • 控制器:STM32H743VI H6
  • 陀螺仪:MPU6000
  • 气压计:BMP280/DPS310/MS5611
  • 黑匣子:128MB
  • PWM输出:10CH
  • 舵机输出:2CH
  • 通用串口:8CH
  • 输入电源:3-6SLipo
  • 输出电源:5V/2.5A, 9V/3A
  • 重量:8.8g
  • 外形尺寸:37mm x 37mm
  • 安装孔位:30.5mm x 30.5mm

注:经厂家技术支持确认,该板子所有外设参考MATEK H743板子设计,总体上差异不大。

2. 硬件支持包(APM-AOCODARC-H743DUAL)

3. 编译步骤

3.1 软件配置环境准备

这里基于Ubuntu准备相关的软件配置环境。

$ sudo apt-get update
$ sudo apt-get install git
$ sudo apt-get install gitk git-gui

3.2 开源代码更新

$ git clone https://github.com/ArduPilot/ardupilot.git
Cloning into 'ardupilot'...
remote: Enumerating objects: 396410, done.
remote: Counting objects: 100% (354/354), done.
remote: Compressing objects: 100% (218/218), done.
remote: Total 396410 (delta 206), reused 219 (delta 135), pack-reused 396056
Receiving objects: 100% (396410/396410), 263.32 MiB | 807.00 KiB/s, done.
Resolving deltas: 100% (292856/292856), done.
Updating files: 100% (4916/4916), done.

$ cd ardupilot

$ git checkout Copter-4.3.0  //使用最新的版本 4.3.0多轴飞控固件
Note: switching to 'Copter-4.3.0'.

You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.

If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:

  git switch -c <new-branch-name>

Or undo this operation with:

  git switch -

Turn off this advice by setting config variable advice.detachedHead to false

HEAD is now at 93448b7138 Copter: version to 4.3.0 official

$ git submodule
 66e5de0d4221666cfa7db7e7247f53de9be7fedc modules/Chibios (heads/master)
 599965086437137ec0fe66e185611f43f335f889 modules/CrashDebug (heads/master)
 f8cc245a8afafd21b99d20bab7f04aeac3c30fff modules/DroneCAN/DSDL (f8cc245)
 c00fc457e22c0b71e3a385f092b519830ef58ea2 modules/DroneCAN/dronecan_dsdlc (c00fc45)
 c83db7d055b281e46d90f533de04fcb3ce66c255 modules/DroneCAN/libcanard (c83db7d)
 8fb1b18ab3250695d85fe2943dfc68e8b45024b7 modules/DroneCAN/pydronecan (1.0.12-1-g8fb1b18)
 8039b4030795b1c9b8cedb78e3a2a6fb89574b6e modules/gbenchmark (v1.5.1)
 e1f690585d4803402584962bfaa8240ecaf1db30 modules/gsoap (heads/master)
 c5fed93f941865a0e912e9baf46ded713506590a modules/gtest (release-1.8.0-2268-gc5fed93f)
 1bbee3177611553e76f1b8b71c932bb82385dd00 modules/mavlink (1.0.12-311-g1bbee317)
 5eec0220302dfaa23602d7ee901cde0579fbf9e2 modules/uavcan (5eec0220)
 51f1529bd20759642e9fd0a8db648da9ba380b18 modules/waf (waf-1.9.2-730-g51f1529b)

$ git submodule update --init --recursive
Submodule 'modules/ChibiOS' (https://github.com/ArduPilot/ChibiOS.git) registered for path 'modules/ChibiOS'
Submodule 'modules/CrashDebug' (https://github.com/ardupilot/CrashDebug) registered for path 'modules/CrashDebug'
Submodule 'modules/DroneCAN/DSDL' (https://github.com/DroneCAN/DSDL.git) registered for path 'modules/DroneCAN/DSDL'
Submodule 'modules/DroneCAN/dronecan_dsdlc' (https://github.com/DroneCAN/dronecan_dsdlc) registered for path 'modules/DroneCAN/dronecan_dsdlc'
Submodule 'modules/DroneCAN/libcanard' (https://github.com/DroneCAN/libcanard) registered for path 'modules/DroneCAN/libcanard'
Submodule 'modules/DroneCAN/pydronecan' (https://github.com/DroneCAN/pydronecan) registered for path 'modules/DroneCAN/pydronecan'
Submodule 'modules/gbenchmark' (https://github.com/google/benchmark.git) registered for path 'modules/gbenchmark'
Submodule 'modules/gsoap' (https://github.com/ArduPilot/gsoap) registered for path 'modules/gsoap'
Submodule 'gtest' (https://github.com/ArduPilot/googletest) registered for path 'modules/gtest'
Submodule 'modules/mavlink' (https://github.com/ArduPilot/mavlink) registered for path 'modules/mavlink'
Submodule 'modules/uavcan' (https://github.com/DroneCAN/libuavcan.git) registered for path 'modules/uavcan'
Submodule 'modules/waf' (https://github.com/ArduPilot/waf.git) registered for path 'modules/waf'
Cloning into '/home/daniel/RCCode/ardupilot/modules/ChibiOS'...
Cloning into '/home/daniel/RCCode/ardupilot/modules/CrashDebug'...
Cloning into '/home/daniel/RCCode/ardupilot/modules/DroneCAN/DSDL'...
Cloning into '/home/daniel/RCCode/ardupilot/modules/DroneCAN/dronecan_dsdlc'...
Cloning into '/home/daniel/RCCode/ardupilot/modules/DroneCAN/libcanard'...
Cloning into '/home/daniel/RCCode/ardupilot/modules/DroneCAN/pydronecan'...
Cloning into '/home/daniel/RCCode/ardupilot/modules/gbenchmark'...
Cloning into '/home/daniel/RCCode/ardupilot/modules/gsoap'...
Cloning into '/home/daniel/RCCode/ardupilot/modules/gtest'...
Cloning into '/home/daniel/RCCode/ardupilot/modules/mavlink'...
Cloning into '/home/daniel/RCCode/ardupilot/modules/uavcan'...
Cloning into '/home/daniel/RCCode/ardupilot/modules/waf'...
Submodule path 'modules/ChibiOS': checked out '66e5de0d4221666cfa7db7e7247f53de9be7fedc'
Submodule path 'modules/CrashDebug': checked out '599965086437137ec0fe66e185611f43f335f889'
Submodule 'CrashCatcher' (https://github.com/ardupilot/CrashCatcher.git) registered for path 'modules/CrashDebug/CrashCatcher'
Submodule 'mri' (https://github.com/ardupilot/mri.git) registered for path 'modules/CrashDebug/mri'
Cloning into '/home/daniel/RCCode/ardupilot/modules/CrashDebug/CrashCatcher'...
Cloning into '/home/daniel/RCCode/ardupilot/modules/CrashDebug/mri'...
Submodule path 'modules/CrashDebug/CrashCatcher': checked out '4cf6e11df3a081b0f573a7834ed8e1e4000af73e'
Submodule 'CppUTest' (https://github.com/ardupilot/CppUTest.git) registered for path 'modules/CrashDebug/CrashCatcher/CppUTest'
Cloning into '/home/daniel/RCCode/ardupilot/modules/CrashDebug/CrashCatcher/CppUTest'...
Submodule path 'modules/CrashDebug/CrashCatcher/CppUTest': checked out '011f371fdb5d7e441fb023be67295783e053df4a'
Submodule path 'modules/CrashDebug/mri': checked out 'b35c89451b41a45b7f5b580acaff555315ac88e2'
Submodule 'CppUTest' (https://github.com/ardupilot/CppUTest.git) registered for path 'modules/CrashDebug/mri/CppUTest'
Cloning into '/home/daniel/RCCode/ardupilot/modules/CrashDebug/mri/CppUTest'...
Submodule path 'modules/CrashDebug/mri/CppUTest': checked out '011f371fdb5d7e441fb023be67295783e053df4a'
Submodule path 'modules/DroneCAN/DSDL': checked out 'f8cc245a8afafd21b99d20bab7f04aeac3c30fff'
remote: Enumerating objects: 9, done.
remote: Counting objects: 100% (9/9), done.
remote: Compressing objects: 100% (3/3), done.
remote: Total 5 (delta 4), reused 3 (delta 2), pack-reused 0
Unpacking objects: 100% (5/5), 584 bytes | 584.00 KiB/s, done.
From https://github.com/DroneCAN/dronecan_dsdlc
 * branch            c00fc457e22c0b71e3a385f092b519830ef58ea2 -> FETCH_HEAD
Submodule path 'modules/DroneCAN/dronecan_dsdlc': checked out 'c00fc457e22c0b71e3a385f092b519830ef58ea2'
remote: Enumerating objects: 18, done.
remote: Counting objects: 100% (18/18), done.
remote: Compressing objects: 100% (8/8), done.
remote: Total 14 (delta 11), reused 9 (delta 6), pack-reused 0
Unpacking objects: 100% (14/14), 2.55 KiB | 186.00 KiB/s, done.
From https://github.com/DroneCAN/libcanard
 * branch            c83db7d055b281e46d90f533de04fcb3ce66c255 -> FETCH_HEAD
Submodule path 'modules/DroneCAN/libcanard': checked out 'c83db7d055b281e46d90f533de04fcb3ce66c255'
Submodule 'drivers/avr/avr-can-lib' (https://github.com/rennerm/avr-can-lib) registered for path 'modules/DroneCAN/libcanard/drivers/avr/avr-can-lib'
Submodule 'dsdl_compiler/pyuavcan' (https://github.com/DroneCAN/pydronecan) registered for path 'modules/DroneCAN/libcanard/dsdl_compiler/pyuavcan'
Cloning into '/home/daniel/RCCode/ardupilot/modules/DroneCAN/libcanard/drivers/avr/avr-can-lib'...
Cloning into '/home/daniel/RCCode/ardupilot/modules/DroneCAN/libcanard/dsdl_compiler/pyuavcan'...
Submodule path 'modules/DroneCAN/libcanard/drivers/avr/avr-can-lib': checked out '9c6bc9118de66d6edaf1b8539e2b9717ba26d123'
Submodule path 'modules/DroneCAN/libcanard/dsdl_compiler/pyuavcan': checked out '8fb1b18ab3250695d85fe2943dfc68e8b45024b7'
Submodule path 'modules/DroneCAN/pydronecan': checked out '8fb1b18ab3250695d85fe2943dfc68e8b45024b7'
Submodule path 'modules/gbenchmark': checked out '8039b4030795b1c9b8cedb78e3a2a6fb89574b6e'
Submodule path 'modules/gsoap': checked out 'e1f690585d4803402584962bfaa8240ecaf1db30'
Submodule path 'modules/gtest': checked out 'c5fed93f941865a0e912e9baf46ded713506590a'
Submodule path 'modules/mavlink': checked out '1bbee3177611553e76f1b8b71c932bb82385dd00'
Submodule 'pymavlink' (https://github.com/ArduPilot/pymavlink.git) registered for path 'modules/mavlink/pymavlink'
Cloning into '/home/daniel/RCCode/ardupilot/modules/mavlink/pymavlink'...
Submodule path 'modules/mavlink/pymavlink': checked out '9a1ca0a08281e29269a59bd27a57369dd44ef15c'
Submodule path 'modules/uavcan': checked out '5eec0220302dfaa23602d7ee901cde0579fbf9e2'
Submodule 'dsdl' (https://github.com/dronecan/DSDL) registered for path 'modules/uavcan/dsdl'
Submodule 'libuavcan/dsdl_compiler/pyuavcan' (https://github.com/dronecan/pydronecan) registered for path 'modules/uavcan/libuavcan/dsdl_compiler/pyuavcan'
Cloning into '/home/daniel/RCCode/ardupilot/modules/uavcan/dsdl'...
Cloning into '/home/daniel/RCCode/ardupilot/modules/uavcan/libuavcan/dsdl_compiler/pyuavcan'...
Submodule path 'modules/uavcan/dsdl': checked out '5d303e1a9eb9bce17bb58a2378c1666d1cef3665'
Submodule path 'modules/uavcan/libuavcan/dsdl_compiler/pyuavcan': checked out 'fb6ab582e5aa69500b249910e5f55fd40ec11ca5'
Submodule path 'modules/waf': checked out '51f1529bd20759642e9fd0a8db648da9ba380b18'

3.3 厂家硬件支持包

将软件支持包解压复制到ArduPilot目录下,然后移动到对应的工程目录。

$ cd ardupilot
$ mv APM-AOCODA-H7DUAL libraries/AP_HAL_ChibiOS/hwdef/AOCODA-H7DUAL
$ mv AOCODA-H7DUAL_bl.hex Tools/bootloaders/AOCODA-H7DUAL_bl.hex
$ mv AOCODA-H7DUAL_bl.bin Tools/bootloaders/AOCODA-H7DUAL_bl.bin

3.4 目标固件编译准备

$ Tools/environment_install/install-prereqs-ubuntu.sh -y
---------- Tools/environment_install/install-prereqs-ubuntu.sh start ----------
+ '[' 1000 == 0 ']'
+ OPT=/opt
+ ARDUPILOT_TOOLS=Tools/autotest
+ ASSUME_YES=false
+ QUIET=false
+ sep='##############################################'
+ OPTIND=1
+ getopts yq opt
+ case "$opt" in
+ ASSUME_YES=true
+ getopts yq opt
+ APT_GET='sudo apt-get'
+ true
+ APT_GET='sudo apt-get --assume-yes'
+ false
+ sudo apt-get --assume-yes update
Hit:1 http://mirrors.aliyun.com/ubuntu focal InRelease
Get:2 http://mirrors.aliyun.com/ubuntu focal-updates InRelease [114 kB]
Get:3 http://mirrors.aliyun.com/ubuntu focal-backports InRelease [108 kB]
Get:4 http://mirrors.aliyun.com/ubuntu focal-security InRelease [114 kB]
Get:5 http://mirrors.aliyun.com/ubuntu focal-updates/main i386 Packages [745 kB]
Get:6 http://mirrors.aliyun.com/ubuntu focal-updates/main amd64 Packages [2,196 kB]            
Get:7 http://mirrors.aliyun.com/ubuntu focal-updates/main amd64 DEP-11 Metadata [275 kB]                  
Get:8 http://mirrors.aliyun.com/ubuntu focal-updates/universe amd64 DEP-11 Metadata [405 kB]
Get:9 http://mirrors.aliyun.com/ubuntu focal-backports/main amd64 DEP-11 Metadata [7,964 B]
Get:10 http://mirrors.aliyun.com/ubuntu focal-backports/universe amd64 DEP-11 Metadata [30.5 kB]
Get:11 http://mirrors.aliyun.com/ubuntu focal-security/main amd64 DEP-11 Metadata [40.7 kB]
Get:12 http://mirrors.aliyun.com/ubuntu focal-security/universe amd64 DEP-11 Metadata [93.1 kB]
Hit:13 http://packages.ros.org/ros2/ubuntu focal InRelease                          
Fetched 4,129 kB in 2s (2,168 kB/s)            
Reading package lists... Done
+ package_is_installed lsb-release
+ dpkg-query -W '-f=$Status' lsb-release
+ grep -c 'ok installed'
1
++ lsb_release -c -s
+ RELEASE_CODENAME=focal
+ PYTHON_V=python3
+ PIP=pip3
+ '[' focal == bionic ']'
+ '[' focal == buster ']'
+ '[' focal == focal ']'
+ SITLFML_VERSION=2.5
+ SITLCFML_VERSION=2.5
+ PYTHON_V=python3
+ PIP=pip3
+ ARM_PKG_CONFIG_NOT_PRESENT=0
++ apt-cache search -n '^pkg-config-arm-linux-gnueabihf'
+ '[' -z 'pkg-config-arm-linux-gnueabihf - manage compile and link flags for libraries for armhf architecture' ']'
+ '[' 0 -eq 1 ']'
+ INSTALL_PKG_CONFIG=pkg-config-arm-linux-gnueabihf
+ BASE_PKGS='build-essential ccache g++ gawk git make wget'
+ '[' focal == bionic ']'
+ PYTHON_PKGS='future lxml pymavlink MAVProxy pexpect flake8 geocoder empy dronecan'
+ [[ '' -ne 1 ]]
+ '[' focal == bionic ']'
+ PYTHON_PKGS='future lxml pymavlink MAVProxy pexpect flake8 geocoder empy dronecan pygame intelhex'
+ ARM_LINUX_PKGS='g++-arm-linux-gnueabihf pkg-config-arm-linux-gnueabihf'
+ SITL_PKGS='libtool libxml2-dev libxslt1-dev python3-dev python3-pip python3-setuptools python3-numpy python3-pyparsing python3-psutil'
+ [[ '' -ne 1 ]]
+ SITL_PKGS='libtool libxml2-dev libxslt1-dev python3-dev python3-pip python3-setuptools python3-numpy python3-pyparsing python3-psutil xterm python3-matplotlib python3-serial python3-scipy python3-opencv libcsfml-dev libcsfml-audio2.5 libcsfml-dev libcsfml-graphics2.5 libcsfml-network2.5 libcsfml-system2.5 libcsfml-window2.5 libsfml-audio2.5 libsfml-dev libsfml-graphics2.5 libsfml-network2.5 libsfml-system2.5 libsfml-window2.5 python3-yaml'
+ [[ '' -ne 1 ]]
+ COVERAGE_PKGS='lcov gcovr'
+ heading 'Add user to dialout group to allow managing serial ports'
+ echo '##############################################'
##############################################
+ echo Add user to dialout group to allow managing serial ports
Add user to dialout group to allow managing serial ports
+ echo '##############################################'
##############################################
+ sudo usermod -a -G dialout daniel
+ echo 'Done!'
Done!
+ '[' focal == focal ']'
+ BASE_PKGS+=' python-is-python3'
+ SITL_PKGS+=' libpython3-stdlib'
+ [[ '' -ne 1 ]]
+ '[' focal == bullseye ']'
+ '[' focal == groovy ']'
+ '[' focal == focal ']'
+ SITL_PKGS+=' libjpeg8-dev'
+ '[' focal == bullseye ']'
+ '[' focal == groovy ']'
+ '[' focal == focal ']'
+ SITL_PKGS+=' python3-wxgtk4.0'
+ SITL_PKGS+=' fonts-freefont-ttf libfreetype6-dev libpng16-16 libportmidi-dev libsdl-image1.2-dev libsdl-mixer1.2-dev libsdl-ttf2.0-dev libsdl1.2-dev'
++ apt-cache search -n '^realpath$'
+ RP=
+ '[' -n '' ']'
++ apt-cache search -n '^libtool-bin'
+ LBTBIN='libtool-bin - Generic library support script (libtool binary)'
+ '[' -n 'libtool-bin - Generic library support script (libtool binary)' ']'
+ SITL_PKGS+=' libtool-bin'
+ sudo apt-get --assume-yes install build-essential ccache g++ gawk git make wget python-is-python3 libtool libxml2-dev libxslt1-dev python3-dev python3-pip python3-setuptools python3-numpy python3-pyparsing python3-psutil xterm python3-matplotlib python3-serial python3-scipy python3-opencv libcsfml-dev libcsfml-audio2.5 libcsfml-dev libcsfml-graphics2.5 libcsfml-network2.5 libcsfml-system2.5 libcsfml-window2.5 libsfml-audio2.5 libsfml-dev libsfml-graphics2.5 libsfml-network2.5 libsfml-system2.5 libsfml-window2.5 python3-yaml libpython3-stdlib libjpeg8-dev python3-wxgtk4.0 fonts-freefont-ttf libfreetype6-dev libpng16-16 libportmidi-dev libsdl-image1.2-dev libsdl-mixer1.2-dev libsdl-ttf2.0-dev libsdl1.2-dev libtool-bin g++-arm-linux-gnueabihf pkg-config-arm-linux-gnueabihf lcov gcovr
Reading package lists... Done
Building dependency tree       
Reading state information... Done
ccache is already the newest version (3.7.7-1).
fonts-freefont-ttf is already the newest version (20120503-10).
g++ is already the newest version (4:9.3.0-1ubuntu2).
g++-arm-linux-gnueabihf is already the newest version (4:9.3.0-1ubuntu2).
gawk is already the newest version (1:5.0.1+dfsg-1).
libjpeg8-dev is already the newest version (8c-2ubuntu8).
libpng16-16 is already the newest version (1.6.37-2).
libpython3-stdlib is already the newest version (3.8.2-0ubuntu2).
libtool is already the newest version (2.4.6-14).
libtool-bin is already the newest version (2.4.6-14).
make is already the newest version (4.2.1-1.2).
python-is-python3 is already the newest version (3.8.2-4).
python3-dev is already the newest version (3.8.2-0ubuntu2).
python3-numpy is already the newest version (1:1.17.4-5ubuntu3).
python3-psutil is already the newest version (5.5.1-1ubuntu4).
python3-pyparsing is already the newest version (2.4.6-1).
python3-serial is already the newest version (3.4-5.1).
python3-setuptools is already the newest version (45.2.0-1).
gcovr is already the newest version (4.2-1).
lcov is already the newest version (1.14-2).
libcsfml-audio2.5 is already the newest version (2.5-1build1).
libcsfml-dev is already the newest version (2.5-1build1).
libcsfml-graphics2.5 is already the newest version (2.5-1build1).
libcsfml-network2.5 is already the newest version (2.5-1build1).
libcsfml-system2.5 is already the newest version (2.5-1build1).
libcsfml-window2.5 is already the newest version (2.5-1build1).
libportmidi-dev is already the newest version (1:217-6).
libsdl-image1.2-dev is already the newest version (1.2.12-12).
libsdl-mixer1.2-dev is already the newest version (1.2.12-16build1).
libsdl-ttf2.0-dev is already the newest version (2.0.11-6).
libsdl1.2-dev is already the newest version (1.2.15+dfsg2-5).
libsfml-audio2.5 is already the newest version (2.5.1+dfsg-1build1).
libsfml-dev is already the newest version (2.5.1+dfsg-1build1).
libsfml-graphics2.5 is already the newest version (2.5.1+dfsg-1build1).
libsfml-network2.5 is already the newest version (2.5.1+dfsg-1build1).
libsfml-system2.5 is already the newest version (2.5.1+dfsg-1build1).
libsfml-window2.5 is already the newest version (2.5.1+dfsg-1build1).
pkg-config-arm-linux-gnueabihf is already the newest version (4:9.3.0-1ubuntu2).
python3-matplotlib is already the newest version (3.1.2-1ubuntu4).
python3-opencv is already the newest version (4.2.0+dfsg-5).
python3-scipy is already the newest version (1.3.3-3build1).
python3-wxgtk4.0 is already the newest version (4.0.7+dfsg-2build1).
build-essential is already the newest version (12.8ubuntu1.1).
git is already the newest version (1:2.25.1-1ubuntu3.6).
libfreetype6-dev is already the newest version (2.10.1-2ubuntu0.2).
libxml2-dev is already the newest version (2.9.10+dfsg-5ubuntu0.20.04.4).
libxslt1-dev is already the newest version (1.1.34-4ubuntu0.20.04.1).
python3-yaml is already the newest version (5.3.1-1ubuntu0.1).
wget is already the newest version (1.20.3-1ubuntu2).
python3-pip is already the newest version (20.0.2-5ubuntu1.6).
xterm is already the newest version (353-1ubuntu1.20.04.2).
The following packages were automatically installed and are no longer required:
  binutils-arm-linux-gnueabi cpp-9-arm-linux-gnueabi cpp-arm-linux-gnueabi gcc-9-arm-linux-gnueabi-base
  gir1.2-ubuntu-app-launch-3 libasan5-armel-cross libatomic1-armel-cross libautopilot-gtk libc6-armel-cross libcapnp-0.7.0
  libev4 libfwupdplugin1 libgcc-9-dev-armel-cross libgcc-s1-armel-cross libgomp1-armel-cross libjs-underscore
  liblttng-ust-ctl4 liblttng-ust0 libmirclient9 libmircommon7 libmircore1 libmirprotobuf3 libstdc++6-armel-cross
  libubsan1-armel-cross libubuntu-app-launch4 libunity-gtk3-parser0 liburcu6 libwebsockets15 libxpathselect1.4v5
  libzeitgeist-2.0-0 mir-utils python3-autopilot python3-autopilot-trace python3-evdev python3-extras python3-fixtures
  python3-junitxml python3-linecache2 python3-mimeparse python3-pbr python3-subunit python3-testscenarios python3-testtools
  python3-traceback2 python3-unittest2 python3-xlib recordmydesktop ubuntu-app-launch usb-modeswitch usb-modeswitch-data
  zeitgeist-core
Use 'sudo apt autoremove' to remove them.
0 upgraded, 0 newly installed, 0 to remove and 18 not upgraded.
+ '[' focal == bionic ']'
+ pip3 install --user -U future lxml pymavlink MAVProxy pexpect flake8 geocoder empy dronecan pygame intelhex
Requirement already satisfied: future in /usr/lib/python3/dist-packages (0.18.2)
Requirement already satisfied: lxml in /home/daniel/.local/lib/python3.8/site-packages (4.9.1)
Requirement already satisfied: pymavlink in /home/daniel/.local/lib/python3.8/site-packages (2.4.37)
Requirement already satisfied: MAVProxy in /home/daniel/.local/lib/python3.8/site-packages (1.8.59)
Requirement already satisfied: pexpect in /home/daniel/.local/lib/python3.8/site-packages (4.8.0)
Requirement already satisfied: flake8 in /home/daniel/.local/lib/python3.8/site-packages (5.0.4)
Requirement already satisfied: geocoder in /home/daniel/.local/lib/python3.8/site-packages (1.38.1)
Requirement already satisfied: empy in /home/daniel/.local/lib/python3.8/site-packages (3.3.4)
Requirement already satisfied: dronecan in /home/daniel/.local/lib/python3.8/site-packages (1.0.16)
Requirement already satisfied: pygame in /home/daniel/.local/lib/python3.8/site-packages (2.1.2)
Requirement already satisfied: intelhex in /home/daniel/.local/lib/python3.8/site-packages (2.3.0)
Requirement already satisfied: numpy in /usr/lib/python3/dist-packages (from MAVProxy) (1.17.4)
Requirement already satisfied: pyserial>=3.0 in /home/daniel/.local/lib/python3.8/site-packages (from MAVProxy) (3.5)
Requirement already satisfied: ptyprocess>=0.5 in /home/daniel/.local/lib/python3.8/site-packages (from pexpect) (0.7.0)
Requirement already satisfied: pyflakes<2.6.0,>=2.5.0 in /home/daniel/.local/lib/python3.8/site-packages (from flake8) (2.5.0)
Requirement already satisfied: mccabe<0.8.0,>=0.7.0 in /home/daniel/.local/lib/python3.8/site-packages (from flake8) (0.7.0)
Requirement already satisfied: pycodestyle<2.10.0,>=2.9.0 in /home/daniel/.local/lib/python3.8/site-packages (from flake8) (2.9.1)
Requirement already satisfied: requests in /usr/lib/python3/dist-packages (from geocoder) (2.22.0)
Requirement already satisfied: click in /usr/lib/python3/dist-packages (from geocoder) (7.0)
Requirement already satisfied: six in /usr/lib/python3/dist-packages (from geocoder) (1.14.0)
Requirement already satisfied: ratelim in /home/daniel/.local/lib/python3.8/site-packages (from geocoder) (0.1.6)
Requirement already satisfied: decorator in /usr/lib/python3/dist-packages (from ratelim->geocoder) (4.4.2)
--- Logging error ---
Traceback (most recent call last):
  File "/home/daniel/.local/lib/python3.8/site-packages/pip/_internal/utils/logging.py", line 177, in emit
    self.console.print(renderable, overflow="ignore", crop=False, style=style)
  File "/home/daniel/.local/lib/python3.8/site-packages/pip/_vendor/rich/console.py", line 1673, in print
    extend(render(renderable, render_options))
  File "/home/daniel/.local/lib/python3.8/site-packages/pip/_vendor/rich/console.py", line 1305, in render
    for render_output in iter_render:
  File "/home/daniel/.local/lib/python3.8/site-packages/pip/_internal/utils/logging.py", line 134, in __rich_console__
    for line in lines:
  File "/home/daniel/.local/lib/python3.8/site-packages/pip/_vendor/rich/segment.py", line 249, in split_lines
    for segment in segments:
  File "/home/daniel/.local/lib/python3.8/site-packages/pip/_vendor/rich/console.py", line 1283, in render
    renderable = rich_cast(renderable)
  File "/home/daniel/.local/lib/python3.8/site-packages/pip/_vendor/rich/protocol.py", line 36, in rich_cast
    renderable = cast_method()
  File "/home/daniel/.local/lib/python3.8/site-packages/pip/_internal/self_outdated_check.py", line 130, in __rich__
    pip_cmd = get_best_invocation_for_this_pip()
  File "/home/daniel/.local/lib/python3.8/site-packages/pip/_internal/utils/entrypoints.py", line 58, in get_best_invocation_for_this_pip
    if found_executable and os.path.samefile(
  File "/usr/lib/python3.8/genericpath.py", line 101, in samefile
    s2 = os.stat(f2)
FileNotFoundError: [Errno 2] No such file or directory: '/usr/bin/pip3.8'
Call stack:
  File "/home/daniel/.local/bin/pip3", line 8, in <module>
    sys.exit(main())
  File "/home/daniel/.local/lib/python3.8/site-packages/pip/_internal/cli/main.py", line 70, in main
    return command.main(cmd_args)
  File "/home/daniel/.local/lib/python3.8/site-packages/pip/_internal/cli/base_command.py", line 101, in main
    return self._main(args以上是关于ArduPilot飞控AOCODARC-H7DUAL固件编译的主要内容,如果未能解决你的问题,请参考以下文章

Ardupilot(PX4)飞控驱动蜂鸣器和RGB细节

开源飞控初探ArduPilot::Copter固件源码分析

开源飞控初探ArduPilot::Copter固件源码分析

开源飞控初探ArduPilot::Copter固件源码分析

基于ArduPilot的旋翼式无人机飞行器开发系列(四,四轴无人机的各个组件详解及其焊接,组装)---正在更新中

会议专题报道 | 使用LUA脚本进行飞控自定义功能