【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

相关文章

Zookeeper安装和配置说明

一、Zookeeper的搭建方式 Zookeeper安装方式有三种,单机模式和集群模式以及伪集群模式。 ■ 单机模式:Zookeeper只运行在一台服务器上,适合测试环境; ■ 伪集群模式:就是在一台物理机上运行多个Zookeeper 实例; ■ 集群模式:Zookeeper运行于一个集群上,适合生产环境,这个计算机集群被称为一个“集合体”(ensemble) Zookeeper通过复制来实现

CentOS7安装配置mysql5.7 tar免安装版

一、CentOS7.4系统自带mariadb # 查看系统自带的Mariadb[root@localhost~]# rpm -qa|grep mariadbmariadb-libs-5.5.44-2.el7.centos.x86_64# 卸载系统自带的Mariadb[root@localhost ~]# rpm -e --nodeps mariadb-libs-5.5.44-2.el7

hadoop开启回收站配置

开启回收站功能,可以将删除的文件在不超时的情况下,恢复原数据,起到防止误删除、备份等作用。 开启回收站功能参数说明 (1)默认值fs.trash.interval = 0,0表示禁用回收站;其他值表示设置文件的存活时间。 (2)默认值fs.trash.checkpoint.interval = 0,检查回收站的间隔时间。如果该值为0,则该值设置和fs.trash.interval的参数值相等。

NameNode内存生产配置

Hadoop2.x 系列,配置 NameNode 内存 NameNode 内存默认 2000m ,如果服务器内存 4G , NameNode 内存可以配置 3g 。在 hadoop-env.sh 文件中配置如下。 HADOOP_NAMENODE_OPTS=-Xmx3072m Hadoop3.x 系列,配置 Nam

wolfSSL参数设置或配置项解释

1. wolfCrypt Only 解释:wolfCrypt是一个开源的、轻量级的、可移植的加密库,支持多种加密算法和协议。选择“wolfCrypt Only”意味着系统或应用将仅使用wolfCrypt库进行加密操作,而不依赖其他加密库。 2. DTLS Support 解释:DTLS(Datagram Transport Layer Security)是一种基于UDP的安全协议,提供类似于

阿里开源语音识别SenseVoiceWindows环境部署

SenseVoice介绍 SenseVoice 专注于高精度多语言语音识别、情感辨识和音频事件检测多语言识别: 采用超过 40 万小时数据训练,支持超过 50 种语言,识别效果上优于 Whisper 模型。富文本识别:具备优秀的情感识别,能够在测试数据上达到和超过目前最佳情感识别模型的效果。支持声音事件检测能力,支持音乐、掌声、笑声、哭声、咳嗽、喷嚏等多种常见人机交互事件进行检测。高效推

【Python编程】Linux创建虚拟环境并配置与notebook相连接

1.创建 使用 venv 创建虚拟环境。例如,在当前目录下创建一个名为 myenv 的虚拟环境: python3 -m venv myenv 2.激活 激活虚拟环境使其成为当前终端会话的活动环境。运行: source myenv/bin/activate 3.与notebook连接 在虚拟环境中,使用 pip 安装 Jupyter 和 ipykernel: pip instal

搭建Kafka+zookeeper集群调度

前言 硬件环境 172.18.0.5        kafkazk1        Kafka+zookeeper                Kafka Broker集群 172.18.0.6        kafkazk2        Kafka+zookeeper                Kafka Broker集群 172.18.0.7        kafkazk3

安装nodejs环境

本文介绍了如何通过nvm(NodeVersionManager)安装和管理Node.js及npm的不同版本,包括下载安装脚本、检查版本并安装特定版本的方法。 1、安装nvm curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash 2、查看nvm版本 nvm --version 3、安装

【IPV6从入门到起飞】5-1 IPV6+Home Assistant(搭建基本环境)

【IPV6从入门到起飞】5-1 IPV6+Home Assistant #搭建基本环境 1 背景2 docker下载 hass3 创建容器4 浏览器访问 hass5 手机APP远程访问hass6 更多玩法 1 背景 既然电脑可以IPV6入站,手机流量可以访问IPV6网络的服务,为什么不在电脑搭建Home Assistant(hass),来控制你的设备呢?@智能家居 @万物互联