【WSL2】Ubuntu20.04从零开搭PX4MavrosGazebo环境并测试

参考:

仿真平台基础配置(对应PX4 1.13版) · 语雀 

不需要卸载原来的gazebo,语雀对gazebo的插件做了修改,才需要那些步骤

“我们对Gazebo的ROS插件做了修改,因此需要源码编译。”

mkdir -p ~/catkin_ws/src
mkdir -p ~/catkin_ws/scripts
cd catkin_ws && catkin init # 使用catkin_make话,则为cd catkin_ws/src && catkin_init_workspace
catkin build # 使用catkin_make话,则为 cd .. && catkin_make 
cd


Gazebo有很多开源的模型文件,我们将一些需要的模型文件上传到附件中,供大家下载:

--> 请点击📎models.zip

将该附件解压缩后放在~/.gazebo中,此时在~/.gazebo/models/路径下可以看到很多模型。如果不做这一步,之后运行Gazebo仿真,可能会缺模型,这时会自动下载,Gazebo模型服务器在国外,自动下载会比较久。


一.MAVROS安装

sudo apt install ros-noetic-mavros ros-noetic-mavros-extras  # for ros-noetic
wget https://gitee.com/robin_shaun/XTDrone/raw/master/sitl_config/mavros/install_geographiclib_datasets.shsudo chmod a+x ./install_geographiclib_datasets.sh
sudo ./install_geographiclib_datasets.sh #这步需要装一段时间

 1. 安装mavros

sudo apt-get install ros-noetic-mavros ros-noetic-mavros-extras

2. 安装GeographicLib

参考:

MAVROS安装教程_安装mavros时间太长-CSDN博客 

【mavros安装】GeographicLib踩坑及解决-CSDN博客

安装GeographicLib(官网方法,报错了就用下一个我用的方法)

https://gitee.com/robin_shaun/XTDrone/raw/master/sitl_config/mavros/install_geographiclib_datasets.shsudo chmod a+x ./install_geographiclib_datasets.sh
sudo ./install_geographiclib_datasets.sh #这步需要装一段时间

②安装GeographicLib(我用的)

  • 直接去GeographicLib 官网下载(好像要挂梯子)对应的三个包,下载得到三个文件夹。

1.GeographicLib geoids egm96-5 官网下载链接:
https://sourceforge.net/projects/geographiclib/files/geoids-distrib/egm96-5.tar.bz2/download
2.GeographicLib gravity egm 96官网下载链接
https://sourceforge.net/projects/geographiclib/files/gravity-distrib/egm96.zip/download
3.GeographicLib magnetic emm2015 官网下载链接:
https://sourceforge.net/projects/geographiclib/files/magnetic-distrib/emm2015.zip/download

  • 下载完后得到三个压缩包,解压后放到一个名为 GeographicLib的文件夹里。(文件名必须这样)
  • 把那个文件夹放到Ubuntu 路径: /usr/share
  • ok

二. PX4配置

git clone https://github.com/PX4/PX4-Autopilot.git
mv PX4-Autopilot PX4_Firmware
cd PX4_Firmware
git checkout -b xtdrone/dev v1.13.2
git submodule update --init --recursive
make px4_sitl_default gazebo

运行 make px4_sitl_default gazebo的时候,报错

此时要运行:

注意,要startxfce4把GUI打开,运行pip3才有反应 

pip3 install packaging numpy empy toml pyyaml jinja2 pyargparse kconfiglib jsonschema future pyserial cerberus pyulog==0.7.0 pyquaternionsudo apt-get install ros-noetic-moveit-msgs ros-noetic-object-recognition-msgs ros-noetic-octomap-msgs ros-noetic-camera-info-manager  ros-noetic-control-toolbox ros-noetic-polled-camera ros-noetic-controller-manager ros-noetic-transmission-interface ros-noetic-joint-limits-interface

再次运行 make px4_sitl_default gazebo的时候,报错

-- Checking for module 'gstreamer-1.0 >= 1.0'
--   No package 'gstreamer-1.0' found
-- Checking for module 'gstreamer-base-1.0 >= 1.0'
--   No package 'gstreamer-base-1.0' found
-- Checking for module 'gstreamer-app-1.0 >= 1.0'
--   No package 'gstreamer-app-1.0' found

查gpt

按照gpt输入:

sudo apt-get remove libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev

再次运行 make px4_sitl_default gazebo,可打开gazebo

 VcXsrv中可打开gazebo

注意,要startxfce4把GUI打开


修改 ~/.bashrc,加入以下代码,注意路径匹配,前两个source顺序不能颠倒

gedit ~/.bashrc
######添加######
source ~/catkin_ws/devel/setup.bash
source ~/PX4_Firmware/Tools/setup_gazebo.bash ~/PX4_Firmware/ ~/PX4_Firmware/build/px4_sitl_default
export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:~/PX4_Firmware
export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:~/PX4_Firmware/Tools/sitl_gazebo
######添加######
source ~/.bashrc
####用于测试是否安装成功#####
roslaunch px4 mavros_posix_sitl.launch

 运行roslaunch px4 mavros_posix_sitl.launch的时候,报错

因为 install_geographiclib_dataset 没装好,目录名称错了,重新把它放入 /usr/share

再次运行roslaunch px4 mavros_posix_sitl.launch,注意,运行它的时候,不能同时运行着make px4_sitl_default gazebo,要把gazebo先关掉

成功

运行

rostopic echo /mavros/state

若connected: True,则说明MAVROS与SITL通信成功。如果是false,一般是因为.bashrc里的路径写的不对,请仔细检查。


三.QGroundControl安装 

然后需要安装地面站QGroundControl,点此安装链接。启动后,将出现下图 所示画面。注意Ubuntu16.04没法直接使用QGroundcontrol 版本4系列(可以使用版本3系列),Ubuntu16.04需要源码编译版本4系列,请仔细查看安装链接。

sudo usermod -a -G dialout $USER
sudo apt-get remove modemmanager -y
sudo apt install gstreamer1.0-plugins-bad gstreamer1.0-libav gstreamer1.0-gl -y
sudo apt install libfuse2 -y
sudo apt install libxcb-xinerama0 libxkbcommon-x11-0 libxcb-cursor-dev -y

wget https://d176tv9ibo4jno.cloudfront.net/latest/QGroundControl.AppImage
chmod +x ./QGroundControl.AppImage
./QGroundControl.AppImage

 运行./QGroundControl.AppImage的时候成功启动地面站

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/57356.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ElasticSearch与MySQL如何进行数据同步?

ElasticSearch(ES)与MySQL进行数据同步的需求在实际开发中非常常见,尤其是在需要高效的全文搜索或者数据分析时,通常使用MySQL作为事务数据库,ES作为搜索和查询引擎。那么要实现MySQL与ElasticSearch的数据同步&#x…

88.合并两个有序数组

目录 题目解法原地插入的函数如何使用sort()如何删除其中含0的数? 题目 给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2,另有两个整数 m 和 n ,分别表示 nums1 和 nums2 中的元素数目。 请你 合并 nums2 到 nums1 中,使合…

【存储设备专栏 2.4 -- linux 下块设备格式化命令详细介绍】

> 请阅读【嵌入式及芯片开发学必备专栏】< 文章目录 mksf 命令格式化为 FAT32格式化为 ext4格式化为 NTFS举例&#xff1a;格式化为 exFATSummary mksf 命令 在 Linux 中&#xff0c;使用 mkfs&#xff08;Make File System&#xff09;命令可以格式化块设备&#xff08…

20240818 字节跳动 笔试

文章目录 1、编程题1.11.21.31.4岗位:BSP驱动开发工程师-OS 题型:4 道编程题 1、编程题 1.1 小红的三消游戏: 小红在玩一个三消游戏,游戏中 n 个球排成一排,每个球都有一个颜色。若有 3 个颜色相同的球连在一起,则消除这 3 个球,然后剩下的球会重新连在一起。在没有 …

mysql 表

在 MySQL 中&#xff0c;表是数据库存储数据的基本单位。以下是关于 MySQL 表的一些重要知识&#xff1a; 一、表的结构 字段&#xff08;列&#xff09;&#xff1a; 每个表由若干个字段组成&#xff0c;字段定义了表中存储的数据类型和属性。例如&#xff0c;可以有整数类型&…

uniapp学习(007-3 壁纸项目:系统高度等信息的操作)

零基础入门uniapp Vue3组合式API版本到咸虾米壁纸项目实战&#xff0c;开发打包微信小程序、抖音小程序、H5、安卓APP客户端等 总时长 23:40:00 共116P 此文章包含第79p-第p82的内容 文章目录 自定义头部通屏我们自定义一个头部导航小程序的bug代码设计 获取系统的一些高度信…

CSS 设置网页的背景图片

背景 最近正好在写一个个人博客网站“小石潭记”&#xff0c;需要一张有水&#xff0c;有鱼的图片。正好玩原神遇到了类似场景&#xff0c;于是截图保存&#xff0c;添加到网站里面。以下是效果图&#xff1a; css 写个class&#xff0c;加到整个网页的body上 .bodyBg {ba…

【数据结构与算法】队列——数据世界中的“有序使者”

大家好&#xff0c;我是小卡皮巴拉 文章目录 目录 引言 一.队列的基本概念 1.1 队列的定义 1.2 队列的特性 1.3 队列的基本操作 二.队列的实现方式 2.1 基于链表的队列 2.2 基于数组的队列 三.基于链表的队列实现 定义链表队列的结构 初始化 入队列——向队列中插…

Yocto构建i.MX处理器目标镜像

1. 初始化构建环境 首先&#xff0c;通过运行imx-setup-release.sh脚本来初始化Yocto构建环境。此脚本的标准语法如下&#xff1a; $ DISTRO<distro name> MACHINE<machine name> source imx-setup-release.sh -b <build dir>DISTRO<distro configurati…

10-15个工作站用Pr处理25个4K视频 性能要求

在4K非编环境里&#xff0c;10-15台工作站运行Adobe Premiere&#xff0c;工作站跑25个4K ProRes 422 视频流。要求存储至少提供5GB/s的&#xff0c;2GB/s的读&#xff0c;并且提供650TB的空间。只有达到这样的要求&#xff0c;才能保证文件快速访问&#xff0c;以及编辑时做到…

代码工艺:写代码的好习惯

1. 充分校验入参 有一句话叫 “All input is evil”&#xff0c;即一切的输入都可能是恶意的。 因此&#xff0c;经验丰富的工程师会对接口的入参进行严格的校验&#xff0c;从最基础的非空、长度校验&#xff0c;到复杂的业务逻辑校验都不应忽略。例如&#xff0c;在典型的电…

C++ [项目] 飞机大战

现在才发现C游戏的支持率这么高&#xff0c;那就发几篇吧 一、基本介绍 支持Dev-C5.11版本(务必调为英文输入法),基本操作看游戏里的介绍,怎么做的……懒得说,能看懂就看注释,没有的自己猜,如果你很固执……私我吧 二、代码部分 /* 2024.8.13*/ #include<iostream> #i…

学习笔记——交换——STP(生成树)基本概念

三、基本概念 1、桥ID/网桥ID (Bridege ID&#xff0c;BID) 每一台运行STP的交换机都拥有一个唯一的桥ID(BID)&#xff0c;BID(Bridge ID/桥ID)。在STP里我们使用不同的桥ID标识不同的交换机。 (2)BID(桥ID)组成 BID(桥ID)组成(8个字节)&#xff1a;由16位(2字节)的桥优先级…

ObjectMapper简单使用

<!-- 根据自己需要引入相关版本依赖。 --> <dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-core</artifactId><version>2.9.10</version> </dependency><dependency><groupId…

AD如何制作原理图的模版、原理图模板绘制修改以及如何导入原理图模版

作为硬件工程师&#xff0c;制定原理图模板是一项至关重要的任务&#xff0c;旨在标准化和规范原理图的绘制过程。在AD20中制作、绘制修改以及导入原理图模板的步骤如下&#xff1a; 1制作原理图模板 首先需在AD原理图设计环境下新建一个原理图文件&#xff1b; 在原理图界面…

实用的 Python 小脚本

一、引言 在日常办公和电脑使用中&#xff0c;我们经常会遇到一些重复性的任务或需要快速获取特定信息的情况。Python 作为一种强大而灵活的编程语言&#xff0c;可以用来编写各种小脚本&#xff0c;以自动化这些任务并提高工作效率。本文将介绍一些 Python 常用的小脚本&…

VSCode离线安装插件

下载最新的VSCode&#xff0c;安装。 打开VSCODE&#xff0c;打开左边的EXTENSINS(拓展)&#xff0c;打开 Install from VSIX&#xff0c;找到 .vsix的文件&#xff0c;打开安装。完成。 1&#xff09;去哪找插件&#xff0c;当然是插件官网了&#xff0c;插件官网&#xff0c;…

MySQL 之 存储引擎

存储引擎 MySQL体系结构 连接层&#xff1a;最上层是一些客户端和链接服务&#xff0c;主要完成一些类似于连接处理、授权认证、及相关的安全方案。服务器也会安全接入的每个客户端验证它所具有的操作权限。服务层&#xff1a;第二层完成大多数的核心服务功能&#xff0c;如SQ…

12、论文阅读:SpikeYOLO:高性能低能耗目标检测网络

SpikeYOLO:高性能低能耗目标检测网络 前言解释介绍相关工作论文提出的方法网络输入SpikeYOLO架构概述网络输出宏观设计微观设计I-LIF脉冲神经元LIFI-LIF实验代码前言 脉冲神经网络(Spiking Neural Networks, SNNs)具有生物合理性和低功耗的优势,相较于人工神经网络(Artif…

Python实现股票自动交易:步骤、要点与注意事项有哪些?

炒股自动化&#xff1a;申请官方API接口&#xff0c;散户也可以 python炒股自动化&#xff08;0&#xff09;&#xff0c;申请券商API接口 python炒股自动化&#xff08;1&#xff09;&#xff0c;量化交易接口区别 Python炒股自动化&#xff08;2&#xff09;&#xff1a;获取…