環境安裝
注意:建議用能夠上google的網安裝,否則容易出奇奇怪怪的問題。
- 必要編譯工具
sudo apt-get install git zip qtcreator cmake build-essential genromfs ninja-build exiftool make cmake libc6-i386
sudo apt-get purge libc6-dev
sudo apt-get install libc6-dev
sudo apt-get install libc6-dev-i386
sudo apt-get install ninja-build
- 安裝python
sudo apt-get install python-argparse python-empy python-toml python-numpy python-yaml python-dev python-pip
- 安裝Python工具包
python -m pip install --upgrade setuptools
python -m pip install --upgrade pip
sudo -H pip install pandas jinja2 pyserial cerberus
sudo -H pip install pyulog==0.5.0
sudo -H pip install future==0.15.0
- 安裝Gazebo仿真軟體
依賴包安裝:
sudo apt-get install protobuf-compiler libeigen3-dev libopencv-dev
設定軟體包的來源:
sudo sh -c 'echo "deb http://packages.osrfoundation.org/gazebo/ubuntu-stable `lsb_release -cs` main" > /etc/apt/sources.list.d/gazebo-stable.list'
設定軟體包密鑰:
wget http://packages.osrfoundation.org/gazebo.key -O - | sudo apt-key add -
更新軟體源清單:
sudo apt-get update
安裝Gazebo:
sudo apt-get install gazebo9 libgazebo9-dev
- 安裝編譯器
#下載下傳位址 http://firmware.ardupilot.org/Tools/PX4-tools/
tar -jxf gcc-arm-none-eabi-6-2017-q2-update-linux.tar.bz2
配置編譯環境,将編譯器的路徑放到.bashrc或者.profile檔案中:
export PATH=$HOME/gcc-arm-none-eabi-6-2017-q2-update/bin:$PATH
檢視編譯器版本确認是否配置成功:
arm-none-eabi-gcc --version
- 下載下傳源碼
git clone -b Copter-3.6.9 https://github.com/ArduPilot/ardupilot.git
git submodule update --init --recursive
- 添加測試工具
#修改gcc下載下傳位址
nano install-prereqs-ubuntu.sh
#修改以下内容
ARM_ROOT="gcc-arm-none-eabi-6"
ARM_TARBALL="$ARM_ROOT-2017-q2-update-linux.tar.bz2"
ARM_TARBALL_URL="http://firmware.ardupilot.org/Tools/PX4-tools/$ARM_TARBALL"
#安裝必要包
Tools/scripts/install-prereqs-ubuntu.sh -y
#添加到. ~/.bashrc
export PATH=$PATH:$HOME/ardupilot/Tools/autotest
export PATH=/usr/lib/ccache:$PATH
源碼編譯
waf 編譯
- 源碼編譯–Linux測試版(./waf 自帶編譯工具)
cd ardupilot
#https://ardupilot.org/dev/index.html 開發文檔
./waf clean #如果有編譯過則需要先清空
./waf distclean #如果有編譯過則需要先清空
./waf list_boards #檢視支援的闆子
./waf configure --board px4-v2 #配置闆子類型 px4-v2-heli為直升機模式 minlure為測試模式
./waf copter #編譯
- bootload編譯
./waf configure --board px4-v2 --bootloader
./waf bootloader
- 下載下傳
./waf --targets bin/arducopter --upload
make 編譯
- 源碼編譯–Linux測試版
cd ardupilot/ArduCopter
#https://ardupilot.org/dev/index.html 開發文檔
make clean
make px4-clean
make px4-cleandep
#所有闆子指令在ardupilot/mk/px4_targets.mk這個檔案内
make px4-v2
#編譯成功後,生成的目标檔案位于ArduCopter目錄檔案下,格式為***.px4。
- 編譯IO晶片固件
make px4-io-v2
- 編譯bootload
參考 https://github.com/PX4/Bootloader.git
常見錯誤
- 記憶體不足
arm-none-eabi-ld: region `flash' overflowed by 1176 bytes
在編譯apm最新固件時遇到上圖報錯,解決方法就是找到編譯目錄下的ld.script檔案,将裡面的flash對應的數值改大一點