【PX4(一)】PX4二次开发环境搭建-QGroundcontrol配置和gazebo环境搭建

2023-10-23 17:51

本文主要是介绍【PX4(一)】PX4二次开发环境搭建-QGroundcontrol配置和gazebo环境搭建,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

以前装PX4二次开发环境遇到了很多坑,也查过了很多帖子都很难达到理想的效果,现在重新捡起来,在安装时遇到的问题一个一个记录与解决,现在我把我成功安装与编译运行所遇到的问题与解决方案全都记录下来,希望给初入坑的人提供帮助。

linux系统:ubuntu18.04 (非虚拟机)

网络条件:可以上谷歌

一、下载源码和子模块

git clone -b v1.11.3 https://github.com/PX4/PX4-Autopilot.git

下载完毕后,界面如下:

进入源码目录:

cd PX4-Autopilot

接着:

sudo chmod 777 -R * 

下载子模块:

git submodule update --init --recursive

这个过程时长视网络状况而定,我的网络可以上谷歌,所以7分钟就解决了。

二、安装依赖项,编译

进入源码目录,运行:

bash ./Tools/setup/ubuntu.sh

接下来,输入如下命令检查gcc安装状态arm-none-eabi-gcc --version,如果提示没有该工具,则按照提示下载:

下载的命令:

sudo spt update
sudo apt install gcc-arm-none-eabi

再次查看该工具,提示如下即安装成功。

然后编译PX4固件,编译之前我们先查看PIX飞控对应版本的编译命令,

(官网:https://docs.px4.io/master/en/dev_setup/building_px4.html)

我的飞控为Pixhawk 4,所以进入源码目录并执行:

cd PX4-Autopilot
make px4_fmu-v5_default

编译过程中可能会出现如下错误:

/usr/include/newlib/math.h:18:3: error: '__ULong' does not name a type   __ULong i[2];  ^~~~~~~compilation terminated due to -Wfatal-errors.

按照字面意思理解,这个错误的意思就是源码中出现了未知的数据类型ULong,这是因为新的代码适用于新的系统,而老的系统没有定义这个。所以我们要去做的就是去系统的头文件中定义这个类型:

在/usr/include/newlib/math.h前面添加定义#define __ULong unsignedlong就行(具体位置:#ifndef _MATH_H_ 后面)。

再次编译,该错误解决,但出现如下新错误:

../../platforms/common/include/px4_platform_common/atomic.h:169:34: error: parameter 'expected' set but not used [-Werror=unused-but-set-parameter]  inline bool compare_exchange(T *expected, T desired)                                
compilation terminated due to -Wfatal-errors.cc1plus: all warnings being treated as errors

错误解释:当我们在函数中定义一个变量,我们给这个变量赋初值,但是在我们的函数结束之前,这个值并没有用于使用,换句话说,这个变量是没有实际意义的,完全可以去掉不用。

针对PX4 1.11.0 可修改文件PX4-Autopilot\cmake\px4_add_common_flags.cmake,注释-Werror行:

针对PX4 1.8.0,可修改文件PX4-Autopilot\cmake\common\px4_base.cmake,注释-Werror行。

再次编译,该错误变成警告,可忽略。

最后,成功编译。

三、地面站的安装

在上面这个网站下载QGC:

Releases · mavlink/qgroundcontrol · GitHub

在这里,我选择了4.0.11版本。不选择新版本的原因是安装完后不能打开,可能是版本太高的原因与我linux一些软件不兼容。

QGC安装与运行说明文档:

Download and Install · QGroundControl User Guide

按如下图安装运行:

对于运行后QGC地面站没有地图显示的问题,科学上网后问题得到解决。

在PX4源码目录下,运行

make px4_sitl jmavsim

这时候QGC就会与jmavsim连接上啦,可以在地面站进行航点规划

四、gazebo环境搭建与使用

1、下载模型

Building PX4 Software | PX4 User Guide

从这里下载gazebo模型,放到~/.gazebo/models/里,若没有.gazebo则运行一下gazebo,若没有models则新建一个。

2、更改python默认编码,sudo gedit /usr/lib/python2.7/site.py,找到setencoding()函数修改 encoding=”utf-8”

3、先安装一下mavros相关包,看官方说明文档这里,我选择二进制安装运行下面这一步就行:

ROS with MAVROS Installation Guide | PX4 User Guide

这里我将kinetic改为我ubuntu18.04的ros版本melodic。

进入PX4源码目录,运行

make px4_sitl gazebo

 

根据网上的说法,说这些错误不影响代码的运行,故忽略。

对此,我们尝试用QGC航点规划,来控制GAZEBO的无人机,效果如下图:

参考官方文档链接:Gazebo Simulation | PX4 User Guide

 后续将继续完善~……

这篇关于【PX4(一)】PX4二次开发环境搭建-QGroundcontrol配置和gazebo环境搭建的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/269480

相关文章

如何通过海康威视设备网络SDK进行Java二次开发摄像头车牌识别详解

《如何通过海康威视设备网络SDK进行Java二次开发摄像头车牌识别详解》:本文主要介绍如何通过海康威视设备网络SDK进行Java二次开发摄像头车牌识别的相关资料,描述了如何使用海康威视设备网络SD... 目录前言开发流程问题和解决方案dll库加载不到的问题老旧版本sdk不兼容的问题关键实现流程总结前言作为

SpringBoot+MyBatis-Flex配置ProxySQL的实现步骤

《SpringBoot+MyBatis-Flex配置ProxySQL的实现步骤》本文主要介绍了SpringBoot+MyBatis-Flex配置ProxySQL的实现步骤,文中通过示例代码介绍的非常详... 目录 目标 步骤 1:确保 ProxySQL 和 mysql 主从同步已正确配置ProxySQL 的

Spring Boot整合log4j2日志配置的详细教程

《SpringBoot整合log4j2日志配置的详细教程》:本文主要介绍SpringBoot项目中整合Log4j2日志框架的步骤和配置,包括常用日志框架的比较、配置参数介绍、Log4j2配置详解... 目录前言一、常用日志框架二、配置参数介绍1. 日志级别2. 输出形式3. 日志格式3.1 PatternL

配置springboot项目动静分离打包分离lib方式

《配置springboot项目动静分离打包分离lib方式》本文介绍了如何将SpringBoot工程中的静态资源和配置文件分离出来,以减少jar包大小,方便修改配置文件,通过在jar包同级目录创建co... 目录前言1、分离配置文件原理2、pom文件配置3、使用package命令打包4、总结前言默认情况下,

本地搭建DeepSeek-R1、WebUI的完整过程及访问

《本地搭建DeepSeek-R1、WebUI的完整过程及访问》:本文主要介绍本地搭建DeepSeek-R1、WebUI的完整过程及访问的相关资料,DeepSeek-R1是一个开源的人工智能平台,主... 目录背景       搭建准备基础概念搭建过程访问对话测试总结背景       最近几年,人工智能技术

在Mysql环境下对数据进行增删改查的操作方法

《在Mysql环境下对数据进行增删改查的操作方法》本文介绍了在MySQL环境下对数据进行增删改查的基本操作,包括插入数据、修改数据、删除数据、数据查询(基本查询、连接查询、聚合函数查询、子查询)等,并... 目录一、插入数据:二、修改数据:三、删除数据:1、delete from 表名;2、truncate

5分钟获取deepseek api并搭建简易问答应用

《5分钟获取deepseekapi并搭建简易问答应用》本文主要介绍了5分钟获取deepseekapi并搭建简易问答应用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需... 目录1、获取api2、获取base_url和chat_model3、配置模型参数方法一:终端中临时将加

VScode连接远程Linux服务器环境配置图文教程

《VScode连接远程Linux服务器环境配置图文教程》:本文主要介绍如何安装和配置VSCode,包括安装步骤、环境配置(如汉化包、远程SSH连接)、语言包安装(如C/C++插件)等,文中给出了详... 目录一、安装vscode二、环境配置1.中文汉化包2.安装remote-ssh,用于远程连接2.1安装2

Redis多种内存淘汰策略及配置技巧分享

《Redis多种内存淘汰策略及配置技巧分享》本文介绍了Redis内存满时的淘汰机制,包括内存淘汰机制的概念,Redis提供的8种淘汰策略(如noeviction、volatile-lru等)及其适用场... 目录前言一、什么是 Redis 的内存淘汰机制?二、Redis 内存淘汰策略1. pythonnoe

windos server2022的配置故障转移服务的图文教程

《windosserver2022的配置故障转移服务的图文教程》本文主要介绍了windosserver2022的配置故障转移服务的图文教程,以确保服务和应用程序的连续性和可用性,文中通过图文介绍的非... 目录准备环境:步骤故障转移群集是 Windows Server 2022 中提供的一种功能,用于在多个