PX4二次开发教程
PX4开发步骤
1. 快速上手
首先安装Ubuntu 22.04 LTS
虚拟机,安装完成后在终端输入:
git clone https://github.com/PX4/PX4-Autopilot.git --recursive
以克隆固件二次开发源码,然后输入:
bash ./PX4-Autopilot/Tools/setup/ubuntu.sh
等待全部提示运行通过后,重启虚拟机。然后在终端输入:
source /opt/ros/humble/setup.bash
export GZ_SIM_RESOURCE_PATH=~/.gz/models
将QGroundControl
地面站下载到系统中,这里是下载链接。
下载完成后根据链接里的指导添加运行权限后,双击运行。然后在终端输入:
make px4_sitl gz_x500
此为Gazebo
仿真,官方推荐使用。或者输入:
make px4_sitl jmavsim
编译运行jmavsim
仿真,该仿真平台由社区开发维护。
操作完成后等待片刻即可看到仿真图形化界面,并且地面站显示已连接,随后终端提示ready to takeoff
。
1.1 提示
固件编译需要下载一系列工具链,而ROS2环境中已经包含了大部分工具链,所以在进行以上操作前,可以先进行ROS2的安装,使用小鱼ROS一键安装,在终端输入:
wget http://fishros.com/install -O fishros && sudo bash fishros
根据提示安装ROS2 Humble
即可。
2. 通过 VS Code 开发
安装好VS Code
后左上角选择"文件-打开文件夹-PX4-Autopilot"
即可。
根据提示安装全部插件,以及NET框架等。
大部分操作根据提示即可完成,不过多赘述。此处只指出官方指南无法解决的问题。
2.1 安装docker
通过官方指南安装docker会遇到无法与官方源建立连接的问题,可以使用阿里镜像源。在终端输入:
# step 1: 安装必要的一些系统工具
sudo apt-get update
sudo apt-get -y install apt-transport-https ca-certificates curl software-properties-common
# step 2: 安装GPG证书
curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
# Step 3: 写入软件源信息
sudo add-apt-repository "deb [arch=amd64] https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"
# Step 4: 更新并安装Docker-CE
sudo apt-get -y update
sudo apt-get -y install docker-ce
然后在此处下载DEB PACKAGE
。提示:你可能需要使用代理才能打开此网站。
下载完毕后在终端输入:
sudo apt install `将刚才的安装包拖到终端然后回车`
3. 第一个Demo
3.1 工程建立
在./src/examples
中创建hello_sky
文件夹。
在hello_sky
中创建一个hello_sky.c
,按照官方要求,二次开发需要添加以下注释:
/****************************************************************************
*
* Copyright (c) 2012-2022 PX4 Development Team. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
* 3. Neither the name PX4 nor the names of its contributors may be
* used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
****************************************************************************/
然后开始写代码,注意主函数必须命名为module_main
(module
自定义)。
/**
* @file hello_sky.c
* Minimal application example for PX4 autopilot
*
* @author Example User <mail@example.com>
*/