天天看点

ArduPilot 开发环境安装环境安装源码编译常见错误

环境安装

注意:建议用能够上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对应的数值改大一点

ArduPilot 开发环境安装环境安装源码编译常见错误

继续阅读