Ubuntu LTS/Debian Linux 的开发环境
The following instructions set up a PX4 development environment on the Ubuntu Linux LTS versions supported by PX4. This includes: 18.04 (Bionic Beaver), 20.04 (Focal Fossa), and Ubuntu 22.04 (Jammy Jellyfish).
Bash scripts are provided to simplify the process. They are intended to be run on clean Ubuntu LTS installations, and may not work if run "on top" of an existing system, or on a different Ubuntu release.
The supported targets are:
- Simulation and NuttX (Pixhawk) Targets. This includes: Gazebo, Gazebo Classic, jMAVSim, Pixhawk and other NuttX-based hardware).
- 通用依赖
- ROS 2 (Robotics Operating System)
- ROS 1 (Robotics Operating System)
TIP
This setup is supported by the PX4 dev team. The instructions may also work on other Debian Linux based systems.
一键安装脚本
This video shows how to install the toolchain for NuttX and simulation targets (as covered below) along with the basic testing covered in Building PX4 Software.
Simulation and NuttX (Pixhawk) Targets
ROS
users should first read/skip ahead to the ROS/Gazebo or ROS 2 sections.
Use the ubuntu.sh script to set up a development environment that allows you to build for simulators and/or the NuttX/Pixhawk toolchain. The script installs jMAVSim on all targets, Gazebo Classic 9 on Ubuntu 18.04, Gazebo Classic 11 on Ubuntu 20.04, and Gazebo "Garden" on Ubuntu 22.04.
To install the toolchain:
ubuntu_sim_common_deps.sh:通用依赖,jMAVSim 模拟器
shgit clone https://github.com/PX4/PX4-Autopilot.git --recursive
:::note The environment setup scripts in the source usually work for recent PX4 releases. If working with an older version of PX4 you may need to get the source code specific to your release. :::
- 运行 bash 脚本(比如运行 ubuntu_sim.sh ): bash source ubuntu_sim.sh 所有弹出的提示均确认通过。sh
bash ./PX4-Autopilot/Tools/setup/ubuntu.sh
- 在安装过程中确认并通过所有的提示。
- 你可以通过传输参数
--no-nuttx
和--no-sim-tools
来跳过 nuttx 和/或 仿真器工具的安装。
- 完成后重新启动计算机。
Details
Additional notes These notes are provided "for information only":
If you want to use Gazebo on Ubuntu 20.04 you can add it manually. See Gazebo > Installation.
You can verify the NuttX installation by confirming the gcc version as shown:
sh$arm-none-eabi-gcc --version arm-none-eabi-gcc (GNU Arm Embedded Toolchain 9-2020-q2-update) 9.3.1 20200408 (release) Copyright (C) 2019 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
You're going to need the PX4 source code anyway. But if you just wanted to set up the development environment without getting all the source code you could instead just download ubuntu.sh and requirements.txt and then run ubuntu.sh:
shwget https://raw.githubusercontent.com/PX4/PX4-Autopilot/main/Tools/setup/ubuntu.sh wget https://raw.githubusercontent.com/PX4/PX4-Autopilot/main/Tools/setup/requirements.txt bash ubuntu.sh
通用依赖
The following instructions explain how to set up a build toolchain for RasPi on Ubuntu 18.04.
WARNING
To build for Ubuntu 20.04 (focal) you must use docker (the GCC toolchain on Ubuntu 20.04 can build PX4, but the generated binary files are too new to run on actual Pi). For more information see PilotPi with Raspberry Pi OS Developer Quick Start > Alternative build method using docker.
本节解释如何安装 ROS/Gazebo ("Melodic") 以便与PX4一起使用。
- Download ubuntu.sh and requirements.txt from the PX4 source repository (/Tools/setup/):
wget https://raw.githubusercontent.com/PX4/PX4-Autopilot/main/Tools/setup/ubuntu.sh wget https://raw.githubusercontent.com/PX4/PX4-Autopilot/main/Tools/setup/requirements.txt
- ubuntu_sim_nuttx.sh:ubuntu_sim.sh + NuttX 工具。sh
bash ubuntu.sh --no-nuttx --no-sim-tools
- Then setup an cross-compiler (either GCC or clang) as described in the following sections.
如何使用脚本
Ubuntu software repository provides a set of pre-compiled toolchains. Note that Ubuntu Focal comes up with gcc-9-arm-linux-gnueabihf
as its default installation which is not fully supported, so we must manually install gcc-8-arm-linux-gnueabihf
and set it as the default toolchain. This guide also applies to earlier Ubuntu releases (Bionic). The following instruction assumes you haven't installed any version of arm-linux-gnueabihf, and will set up the default executable with update-alternatives
. Install them with the terminal command:
sh
sudo usermod -a -G dialout $USER
sh
```sh
sudo apt-get remove modemmanager
jMAVSim
sudo apt-get install protobuf-compiler libeigen3-dev libopencv-dev -y
sh
sudo apt-get update -y
sudo apt-get install git zip qtcreator cmake \
build-essential genromfs ninja-build exiftool vim-common -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
Gazebo
First install GCC (needed to use clang).
sudo apt-get update
# optional python tools
sudo -H pip install pyulog
Example below for building PX4 firmware out of tree, using CMake.
sh
git clone https://github.com/raspberrypi/tools.git ${HOME}/rpi-tools
# test compiler
$HOME/rpi-tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin/arm-linux-gnueabihf-gcc -v
# permanently update PATH variable by modifying ~/.profile
echo 'export PATH=$PATH:$HOME/rpi-tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin' >> ~/.profile
# update PATH variable only for this session
export PATH=$PATH:$HOME/rpi-tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin
make
Detailed Information
Additional developer information for using PX4 on Raspberry Pi (including building PX4 natively) can be found here:
- Raspberry Pi 2/3 Navio2 Autopilot.
- 在安装高通骁龙飞控 或 树莓派/Parrot Bebop 之前, 你可以先运行它。
ROS 2
Information about ROS 2 setup and development with PX4 can be found in the ROS 2 User Guide.
Generally speaking if you're working with hardware and don't need to modify PX4 itself, then you do not need a PX4 development environment (dependencies for working with ROS 2 are included and built into PX4 firmware by default).
You will need to install the normal development simulator environment in order to work with the PX4 simulator.
ROS/Gazebo Classic
This section explains how to install ROS 1 with PX4. ROS 1 full desktop builds come with Gazebo Classic, so normally you will not install PX4 simulator dependencies yourself!
ROS Noetic/Ubuntu 20.04
If you're working with ROS Noetic on Ubuntu 20.04:
Install PX4 without the simulator toolchain:
- sh
git clone https://github.com/PX4/PX4-Autopilot.git --recursive
Run the ubuntu.sh the
--no-sim-tools
(and optionally--no-nuttx
):shbash ./PX4-Autopilot/Tools/setup/ubuntu.sh --no-sim-tools --no-nuttx
- Acknowledge any prompts as the script progress.
Restart the computer on completion.
You may need to install the following additional dependencies:
sudo apt-get install protobuf-compiler libeigen3-dev libopencv-dev -y
Follow the Noetic Installation instructions (ros-noetic-desktop-full is recommended).
Intall MAVROS by following the MAVROS Installation Guide.
ROS Melodic/Ubuntu 18.04
If you're working with ROS "Melodic on Ubuntu 18.04:
Download the ubuntu_sim_ros_melodic.sh script in a bash shell:
shwget https://raw.githubusercontent.com/PX4/Devguide/master/build_scripts/ubuntu_sim_ros_melodic.sh
下载脚本
shROS Gazebo: http://wiki.ros.org/kinetic/Installation/Ubuntu
随着脚本的运行,可能需要确认一些提示。
:::note
- ROS Melodic is installed with Gazebo (Classic) 9 by default.
- 你的 catkin (ROS 构建系统)工作目录生成在**~/catkin_ws/**。
- The script uses instructions from the ROS Wiki "Melodic" Ubuntu page. :::
Gazebo dependencies
Once you have finished setting up the command-line toolchain:
- Install VSCode (if you prefer using an IDE to the command line).
- Install the QGroundControl Daily Build :::tip The daily build includes development tools that hidden in release builds. It may also provide access to new PX4 features that are not yet supported in release builds. :::
- Continue to the build instructions.