PX4开源飞控--开发环境搭建 编译仿真及烧录

目录

一、PIXHAWK、PX4、APM 简述

1、概念介绍(PIXHAWK、PX4、APM)

2、PIXHAWK硬件接线调试说明

3、PX4开发编译仿真烧录流程

4、官方指导文档和源码地址汇总

二、ubuntu下搭建PX4开发编译仿真环境

1、下载px4源码

2、下载官方docker容器(集成了开发编译环境)

3、编译对应仿真环境的固件

4、编译对应飞控板的固件(Pixhawk飞控板)


一、PIXHAWK、PX4、APM 简述

1、概念介绍(PIXHAWK、PX4、APM)

PIXHAWK是应用较广的开源飞控硬件平台PX4和APM都是开源飞控软件平台,均可以烧写到PIXHAWK这款硬件板上

PX4飞控软件平台(PX4专为PIXHAWK开发的),它提供了一个虚拟环境,可以用来验证无人机的飞控算法,也可以连接开源硬件PIXHAWK。

PX4地面控制站被称为QGroundControl(简称QGC)PX4与地面站之间的通信是用mavlink协议,QT可以对地面站进行二次开发

APM飞控软件平台专为Arduupilot开发的固件,也可以烧写到PIXHAWK上

APM地面控制站被称为Mission Planner(简称MP)

2、PIXHAWK硬件接线调试说明

硬件接口调试文档参考:接口说明 · GitBook

3、PX4开发编译仿真烧录流程

PX4的开发编译环境有Linux、window和MacOS系统这几种,在ubuntu系统下比较高效方便,搭建流程如下:

(1)下载PX4固件源码

(2)下载官方docker容器(集成了开发编译环境)

(3)编译对应仿真环境的固件

(4)编译对应飞控板的固件(Pixhawk飞控板)

4、官方指导文档和源码地址汇总

PX4官方使用者手册PX4 Autopilot User Guide | PX4 Guide (main)

mavlink协议官方指导书Guide · MAVLink Developer Guide

PX4源码网址GitCode - 开发者的代码家园

原本的Firmware 已经更名为PX4-Autopilot

git可下载最新版本源码固件:

git clone https://github.com/PX4/PX4-Autopilot.git --recursive

二、ubuntu下搭建PX4开发编译仿真环境

        在ubuntu系统下比较高效方便,为了降低安装和使用过程中系统崩溃的风险,在本地电脑中安装VM虚拟机,虚拟机安装ubuntu 18.04或ubuntu 20.04系统,安装过程比较简单,本文不再赘述。在此,为了方便后期移植和系统维护,建议使用官方提供的docker容器,容器集成了开发编译仿真环境。

1、下载px4源码

mkdir px4
cd px4
git clone https://github.com/PX4/PX4-Autopilot.git --recursive

可能因为网络问题中止,那就删除之后,重新多下载几次,不行就翻墙。

PX4代码架构:

2、下载官方docker容器(集成了开发编译环境)

  • ubuntu系统中安装docker
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io
  • 拉取官方docker镜像

docker pull px4io/px4-dev-ros2-foxy

:上述使用的是ros2-foxy的容器,官方还提供了不同容器,如下所示,层层递进,在前一层的基础上进行构建,对应不同的仿真环境,体积也不一样,一般也可选择 px4io/px4-dev-simulation-focal ,这个容器是以`px4io/px4-dev-base-focal`为基础层构建的,其中加入了模拟仿真所需的环境和工具

- px4io/px4-dev-base-focal
  - px4io/px4-dev-nuttx-focal
  - px4io/px4-dev-simulation-focal
    - px4io/px4-dev-ros-noetic
      - px4io/px4-dev-ros2-foxy
  - px4io/px4-dev-ros2-rolling
- px4io/px4-dev-base-jammy
  - px4io/px4-dev-nuttx-jammy
  • 创建容器
# enable access to xhost from the container
xhost +

# Run docker
docker run -it --privileged \
-v /home/ubuntu/Downloads/px4/:/home/px4 \
-v /tmp/.X11-unix:/tmp/.X11-unix:ro \
-e DISPLAY=:0 \
--name=px4_test1 \
--net=host \
px4io/px4-dev-ros2-foxy:latest /bin/bash

特别说明:

“-v /home/ubuntu/Downloads/px4:/home/px4”:表示的是,将我ubuntu系统的/home/ubuntu/Downloads/px4/目录映射到容器里面的/home/px4/目录,PX4源码 PX4-Autopilot 这个文件夹,在我ubuntu系统的/home/ubuntu/Downloads/px4/下。

“--name=px4_test1”:表示的是给容器起的某个名字叫 px4_test1,可任意取。

3、编译对应仿真环境的固件

  • 初次编译px4(使用 jMAVSim 模拟器)
#进入容器里面后,cd进入px4源码文件夹
cd /home/px4/PX4-Autopilot
make px4_sitl jmavsim

  编译最后出现错误:

BUILD SUCCESSFUL
Total time: 0 seconds
Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF8
Unrecognized option: --add-exports
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.

这个错误表明在运行jMAVSim时,Java虚拟机(JVM)无法识别`--add-exports`选项。这个问题通常与使用的Java版本有关。`--add-exports`是Java 9引入的一个新选项,用于配置模块之间的访问权限。如果你使用的Java版本低于9,你将会遇到此错误。

检查Java版本, 如果你看到的版本是低于9(比如1.8),那么你需要升级Java版本:

java -version

升级一下java即可:

apt-get update
apt-get install -y openjdk-11-jdk

完成Java版本更新后,尝试再次编译并运行jMAVSim仿真:

#设置飞行速度
export PX4_SIM_SPEED_FACTOR=10

#编译
make px4_sitl jmavsim

注:也可以编译其它模拟器的仿真环境,如 Gazebo,Gazebo Classic 和 AirSim,启动Gazebo Classic (这个不依赖java),输入指令:make px4_sitl gazebo-classic

  • 启动仿真模拟器:

编译成功后系统将自动打开 jMAVSim模拟器,这时无人机仿真环境就出现了。

输入起飞指令:

pxh> commander takeoff

  • 启动地面站

当然,使用地面控制台进行模拟飞行更接近真实操作,下载地面站模拟器(QGroundControl),不同系统对应不同安装包,软件下载地址如下:

Download and Install | QGC Guide (master)

我选择在Windows系统安装QGC,因此下载QGroundControl-installer.exe,双击即可安装,就可以用 QGroundControl 模拟器来控制虚拟无人机了,如起飞、设置高度、航点等。

地面站一直是处于断开连接状态:

  • 启动仿真模拟器的mavlink,在局域网和QGC通信

PX4内部UDP端口说明:

地面站(监听本地UDP端口14550),接收PX4数据

外部开发人员API监听PX4的UDP端口:14540。对于多个目标模拟,PX4按顺序为14540到14549的每个实例分配一个单独的远程端口(其他实例都使用端口14549)。

输入:

mavlink start -p -u 14556 -o 14550

-u表示的是绑定的本地端口,-o表示的是远程连接对方端口

也可以使用-t命令和特定的IP通信. :mavlink start -p -u 14556 -t 192.168.x.x -o 14550

已经和远端的模拟器连接上了

  • 启动仿真模拟器的mavlink,在局域网和自己的UDP服务器通信

在上面的步骤中,在终端窗口启动了一个mavlink和QGC通信,那么如何使自己的UDP服务器像QGC一样接收PX4的数据呢?操作如下:

先停止之前的所有通信:

mavlink stop-all

启动仿真模拟器的mavlink和QGC通信:(我的QGC安装在本地电脑上)

mavlink start -p -u 14556 -t 127.0.0.1 -o 14550

启动仿真模拟器的mavlink和UDP服务器通信,端口不能和QGC通信的端口冲突:

UDP服务器自己手写了一个, ip是10.10.151.211,端口14540

mavlink start -p -u 14557 -t 10.10.151.211 -o 14540

可以看到udp服务器接收到了一堆数据,这些就是mavlink协议数据了,mavlink协议参照官方指导书:Guide · MAVLink Developer Guide

4、编译对应飞控板的固件(Pixhawk飞控板)

  • 编译

不同版本的开发板对应指令如上,我是为Pixhawk 2.4.8编译的,因此指令如下:

cd PX4-Autopilot
make px4_fmu-v3_default

注:也可以通过指令来查看对应开发板的指令:make list_config_targets

编译完成后会在 build/nuttx_px4fmu-v3_default/ 目录下生成一个叫 px4fmu-v3_default.px4 的文件,这个文件就是我们需要烧写到Pixhawk中的固件程序。

  • 将固件烧录到飞控板

必须要通过有线连接的方式进行固件的烧录。

PX4固件代码的烧入方式1(ubuntu终端窗口命令行烧录):

将Pixhaw使用USB线接入到计算机上,在ubuntu系统的/dev/目录下会有一个叫作ACM0的设备文件,即是Pixhawk飞控。通过终端,使用不同的命令针对不同的硬件和型号进行Cmake编译,例如:

make px4_fmu-v3_default upload

PX4固件代码的烧入方式2 (QGC地面站升级):

通过USB连接电脑启动QGC地面站中的自定义固件类型进行烧入,

启动QGC地面站,在固件位置 → 重新插拔USB→选择高级设置→自定义固件文件 → 找到PX4-Autopilot中的build中的 .px4文件即可。

  • 23
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

勤劳的搬运工zyh

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值