【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

相关文章

SpringBoot多环境配置数据读取方式

《SpringBoot多环境配置数据读取方式》SpringBoot通过环境隔离机制,支持properties/yaml/yml多格式配置,结合@Value、Environment和@Configura... 目录一、多环境配置的核心思路二、3种配置文件格式详解2.1 properties格式(传统格式)1.

Debian系和Redhat系防火墙配置方式

《Debian系和Redhat系防火墙配置方式》文章对比了Debian系UFW和Redhat系Firewalld防火墙的安装、启用禁用、端口管理、规则查看及注意事项,强调SSH端口需开放、规则持久化,... 目录Debian系UFW防火墙1. 安装2. 启用与禁用3. 基本命令4. 注意事项5. 示例配置R

Python极速搭建局域网文件共享服务器完整指南

《Python极速搭建局域网文件共享服务器完整指南》在办公室或家庭局域网中快速共享文件时,许多人会选择第三方工具或云存储服务,但这些方案往往存在隐私泄露风险或需要复杂配置,下面我们就来看看如何使用Py... 目录一、android基础版:HTTP文件共享的魔法命令1. 一行代码启动HTTP服务器2. 关键参

PyCharm中配置PyQt的实现步骤

《PyCharm中配置PyQt的实现步骤》PyCharm是JetBrains推出的一款强大的PythonIDE,结合PyQt可以进行pythion高效开发桌面GUI应用程序,本文就来介绍一下PyCha... 目录1. 安装China编程PyQt1.PyQt 核心组件2. 基础 PyQt 应用程序结构3. 使用 Q

Redis MCP 安装与配置指南

《RedisMCP安装与配置指南》本文将详细介绍如何安装和配置RedisMCP,包括快速启动、源码安装、Docker安装、以及相关的配置参数和环境变量设置,感兴趣的朋友一起看看吧... 目录一、Redis MCP 简介二、安www.chinasem.cn装 Redis MCP 服务2.1 快速启动(推荐)2.

Go语言编译环境设置教程

《Go语言编译环境设置教程》Go语言支持高并发(goroutine)、自动垃圾回收,编译为跨平台二进制文件,云原生兼容且社区活跃,开发便捷,内置测试与vet工具辅助检测错误,依赖模块化管理,提升开发效... 目录Go语言优势下载 Go  配置编译环境配置 GOPROXYIDE 设置(VS Code)一些基本

Spring Boot配置和使用两个数据源的实现步骤

《SpringBoot配置和使用两个数据源的实现步骤》本文详解SpringBoot配置双数据源方法,包含配置文件设置、Bean创建、事务管理器配置及@Qualifier注解使用,强调主数据源标记、代... 目录Spring Boot配置和使用两个数据源技术背景实现步骤1. 配置数据源信息2. 创建数据源Be

Spring Boot Maven 插件如何构建可执行 JAR 的核心配置

《SpringBootMaven插件如何构建可执行JAR的核心配置》SpringBoot核心Maven插件,用于生成可执行JAR/WAR,内置服务器简化部署,支持热部署、多环境配置及依赖管理... 目录前言一、插件的核心功能与目标1.1 插件的定位1.2 插件的 Goals(目标)1.3 插件定位1.4 核

RabbitMQ消息总线方式刷新配置服务全过程

《RabbitMQ消息总线方式刷新配置服务全过程》SpringCloudBus通过消息总线与MQ实现微服务配置统一刷新,结合GitWebhooks自动触发更新,避免手动重启,提升效率与可靠性,适用于配... 目录前言介绍环境准备代码示例测试验证总结前言介绍在微服务架构中,为了更方便的向微服务实例广播消息,

Windows环境下解决Matplotlib中文字体显示问题的详细教程

《Windows环境下解决Matplotlib中文字体显示问题的详细教程》本文详细介绍了在Windows下解决Matplotlib中文显示问题的方法,包括安装字体、更新缓存、配置文件设置及编码調整,并... 目录引言问题分析解决方案详解1. 检查系统已安装字体2. 手动添加中文字体(以SimHei为例)步骤