链接: link.
官方将源码开源至Github,链接: link.
环境配置参考官方文档.
目录:Development—>Getting Started—>Toolchain Installation—>Ubuntu Setup
官方提供了bash脚本,可以在不同的平台上配置开发环境
脚本及其描述如下
Bash Script | Description |
---|---|
ubuntu.sh | Installs Gazebo 9 and jMAVSim simulators and/or NuttX/Pixhawk tools. Does not include dependencies for Fast DDS. |
ubuntu_sim_ros_melodic.sh | Installs ROS “Melodic” and PX4 on Ubuntu 18.04 LTS only. Do not use on Ubuntu 20.04 or later! |
注:在配置时只用到ubuntu.sh
使用ubuntu.sh脚本来配置开发环境,其中包括Gazebo9和jMAVSim simulators,or/and NutX/Pixhawk工具链
1.先在home目录克隆源码,如果还没有安装git 则先安装
sudo apt install git
git clone https://github.com/PX4/PX4-Autopilot.git --recursive
也可以去GitHub直接下载 官方源码 解压
2.使用bash shell执行源码中的ubuntu.sh,目录为PX4-Autopilot/Tools/setup/ubuntu.sh
bash ./PX4-Autopilot/Tools/setup/ubuntu.sh
在脚本执行过程中,允许所有提示
3.执行完成后重启电脑
ubuntu.sh文件及其注解如下,requirments.txt中明确了依赖包及其版本
目前PX4已经出v1.13.0,可自行切换,克隆下来的源码默认是主分支,根据需要切换到目标版本上再加载子模块,也可在github自行选择目标分支下载,无需git checkout -b
切换分支。
以v1.13.0为例
#进入源码目录下
cd PX4-Autopilot-main/
#加载子模块
git submodule update --init --recursive
#切换分支
git checkout -b v1.13.0
加载过程中可能会出现网速过慢导致失败等问题,只需继续执行加载子模块指令即可。
此时请一定耐心等待,科学上网除外。
结束后要多试几次 git submodule update --init --recursive,它会将所缺的分支子模组补上,直至没有错误
make <target version>
查看源码中的build文件夹,已生对应版本的可执行文件,.px4文件就是可以下载的固件
#①安装git
sudo apt install git
#②下载源码
git clone https://github.com/PX4/PX4-Autopilot.git --recursive
# ③使用bash shell执行源码中的ubuntu.sh
bash ./PX4-Autopilot/Tools/setup/ubuntu.sh
#④进入源码目录下
cd PX4-Autopilot-main/
#⑤切换分支,切换完成后需要执行步骤⑤,确保子模块安装完整
git checkout -b v1.13.0
#⑥加载子模块
git submodule update --init --recursive
#⑦尝试编译,可以使用Tab键自动补充
make px4_fmu_<version>
有问题依次解决
依赖包自定义安装参考地址
配置环境时,可能会因为网络原因导致若干个依赖下载失败,这些问题将会出现在最后的源码编译中,依照错误提示,结合网上博客资源可以一一解决,以下仅为参考,并非每一步都要完成
部分相关依赖配置方法如下:
很多问题都是由于编译器版本导致的,可以参考下面的方法,安装比较新的版本
对于v1.13.0的固件版本,使用gcc-2020可以编译通过,需要手动安装。
Ubuntu中gcc-arm-none-eabi的安装、移除和版本切换
sudo apt-get update -y
sudo apt-get install git zip qtcreator cmake \
build-essential genromfs ninja-build exiftool -y
# Required python packages
sudo apt-get install python-argparse \
python-empy python-toml python-numpy python-yaml \
python-dev python-pip -y
sudo -H pip install --upgrade pip
sudo -H pip install pandas jinja2 pyserial cerberus
带 \ 的是换行符 与下方是同一条指令,不要分开
这是一个有用的python软件包,其中包含用于解析ULog文件并显示它们的脚本,
后期查看飞行日志需要用到。
# optional python tools
sudo -H pip install pyulog
可能出现的错误提示
Ninja是一个比Make更快的构建系统,PX4 CMake生成器支持它。在Ubuntu Linux上,
可以从常规存储库自动安装它。编译PX4需要依赖它。
sudo apt-get install ninja-build -y
安装以下依存关系以为基于NuttX的硬件构建
sudo apt-get install python-serial openocd \
flex bison libncurses5-dev autoconf texinfo \
libftdi-dev libtool zlib1g-dev -y
带 \ 的是换行符 与下方是同一条指令,不要分开