【ROS】Ubuntu20.04+ROS Noetic 配置PX4-v1.12.2和Gazebo11联合仿真环境【教程】

【ROS】Ubuntu20.04+ROS Noetic 配置PX4-v-v1.12.2和Gazebo11联合仿真环境【教程】

文章目录

  • 【ROS】Ubuntu20.04+ROS Noetic 配置PX4-v-v1.12.2和Gazebo11联合仿真环境【教程】
    • 0. 安装Ubuntu+ROS
    • 1. 安装依赖
    • 2. 安装QGC地面站
    • 3. 配置PX4-v1.12.2
      • 3.1 安装PX4
      • 3.2 测试PX4是否成功安装
    • 4. 手动添加gazebo模型
    • 5. 配置Mavros
      • 5.1 安装Mavros(二进制方法)不推荐
      • 5.2 安装Mavros(源码装法)推荐
      • 5.3 测试mavros
    • 6. 测试mavros与sitl通信
    • Reference

写在前面,目前中文互联网上关于PX4飞控的学习资料较少,笔者查阅了大量的资料整理成这篇博客,贡献一些学习内容,码字不易,如果帮助到您,请您帮我点点赞。

0. 安装Ubuntu+ROS

安装Ubuntu可以查看这篇教程,安装ros可以查看这篇教程,这里就不再赘述了。

1. 安装依赖

● 在使用apt安装的过程中(包括之后ROS的安装),如果出现难以解决的依赖问题,可以使用aptitude install(没有aptitude的话,使用sudo apt install aptitude 安装),如sudo aptitude install ros-kinetic-desktop,它会依次推荐依赖解决方案,觉得可行就按y,不可行就按n。当然这个工具也不是万能的,如果它也解决不了依赖问题,还是需要靠自己分析解决。
● 有时候apt报错,提示“有几个软件包无法下载,要不运行 apt-get update 或者加上 --fix-missing 的选项再试试?”,这时按照提示进行操作即可。
● 注意仔细检查依赖都装成功没有,之前有些开发者遇到的编译过程中出现’pthread_create’未定义的引用,就是因为少装了依赖。

注意如果安装了Anaconda等虚拟环境管理器,要退出虚拟环境的激活,再进行依赖的安装,一下的安装过程我们默认退出了Anaconda的虚拟环境
比如我这里使用了anaconda包管理器,有一个虚拟环境base那么我需要推出这个虚拟环境再进行依赖的安装。

conda deactivate
Image

然后进行依赖的安装

sudo apt install ninja-build exiftool ninja-build protobuf-compiler libeigen3-dev genromfs xmlstarlet libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev python3-pip gawk
pip3 install pandas jinja2 pyserial cerberus pyulog==0.7.0 numpy toml pyquaternion empy pyyaml 
pip3 install packaging numpy empy toml pyyaml jinja2 pyargparse kconfiglib jsonschema future
pip install --upgrade setuptools
#若未报错不需要输入这两行命令
python -m pip install --upgrade pip

2. 安装QGC地面站

安装的教程参考于QGC安装教程

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 libqt5gui5 -y
sudo apt install libfuse2 -y

然后重启电脑,下载QGroundControl.AppImage
使用终端命令安装(并运行):

chmod +x ./QGroundControl.AppImage
./QGroundControl.AppImage  (or double click)

3. 配置PX4-v1.12.2

3.1 安装PX4

在创建工作空间之前一定要deactivate anaconda的虚拟环境
参考PX4官网上的安装流程
1、下载PX4源码
可以直接git进行下载,由于ros noetic自带gazebo11,所以我们不需要再额外安装gazebo

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

如果下载比较慢,可以使用我已经打包好的源码,提取码hola

2、安装PX4
然后,轻量安装(不安装 sim tool 和 nuttx)

bash ./PX4-Autopilot/Tools/setup/ubuntu.sh --no-sim-tools --no-nuttx

3、安装相关依赖
然后安装一些依赖

sudo apt-get install protobuf-compiler libeigen3-dev libopencv-dev -y

4、编译PX4固件

mv PX4-Autopilot PX4_Firmware  #先进行改名,方便使用
cd PX4_Firmware
make px4_sitl_default gazebo

如果编译成功则会出现

Image

然后退出gazebo,修改 ~/.bashrc,在文件的末尾加入以下代码,

# >>> PX4 initialize >>>
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
# <<< PX4 initialize <<<

然后再

source ~/.bashrc

3.2 测试PX4是否成功安装

首先启动QGC地面站,然后启动测试结点

roslaunch px4 mavros_posix_sitl.launch

如果在终端输入

commander takeoff # 起飞
commander land    # 降落

无人机将会起飞和降落,如下图所示

Image

如果出现这种情况

Image

这个错误表明ROS无法找到名为"gazebo_ros"的资源包。使用下面语句安装ros-noetic-gazebo-ros-pkgs

sudo apt-get install ros-noetic-gazebo-ros-pkgs  # noetic
sudo apt-get install ros-melodic-gazebo-ros-pkgs # melodic
sudo apt-get install ros-kinetic-gazebo-ros-pkgs # kinetic

然后再次使用

roslaunch px4 mavros_posix_sitl.launch

即可成功启动

注意如果我们没有deactivate anaconda的虚拟环境,那么在启动中会报如下的错误,并且无法加载无人机模型

Image

正确启动是不会报错的,并且会出现无人机的模型,如下所示

4. 手动添加gazebo模型

手动添加gazebo模型文件,手动下载这个model.zip文件,提取码是hola

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

在已经安装好Ubuntu 20.04ROS Noetic的前提下,如果我们是安装的是ros-noetic-desktop-full版本,那么就已经帮我安装好了gazebo11,我们首先查看我们自带的gazebo版本,在终端中输入

gazebo --version

便可以查看gazebo的版本, 如下

sjh@R9000X:~$ gazebo --version
Gazebo multi-robot simulator, version 11.13.0
Copyright (C) 2012 Open Source Robotics Foundation.
Released under the Apache 2 License.

5. 配置Mavros

mavros的配置参考于Mavros官网配置教程

5.1 安装Mavros(二进制方法)不推荐

1、首先创建工作空间

mkdir -p ~/catkin_ws/src
cd ~/catkin_ws
catkin init
wstool init src

如果报错wstool not found,则需要先安装

sudo apt-get install python-catkin-tools python-rosinstall-generator -y

如果是第一次使用wstool,则还需要

wstool init ~/catkin_ws/src

2、下载mavros源码

rosinstall_generator --rosdistro kinetic mavlink | tee /tmp/mavros.rosinstall
# We use the Kinetic reference for all ROS distros as it's not distro-specific and up to date
rosinstall_generator --upstream mavros | tee -a /tmp/mavros.rosinstall

这里使用了kinetic版本来指代了所有ros的版本,无需我们自己指定,然后进入工作空间开始构建

wstool merge -t src /tmp/mavros.rosinstall
wstool update -t src -j4
rosdep install --from-paths src --ignore-src -y

3、安装剩余依赖

./src/mavros/mavros/scripts/install_geographiclib_datasets.sh

4、编译

cd ~/catkin_ws
catkin build

如果出现下列信息则表明编译成功,我这里不是首次编译,所以编译很快,首次编译会比较慢。

Image

成功之后打开.bashrc文件,在其中写入

# >>> Mavros pkg initialize >>>
source ~/catkin_ws/devel/setup.bash
# <<< Mavros pkg initialize <<<

注意,这个一定要放置在PX4之前,如下图所示

Image

5.2 安装Mavros(源码装法)推荐

直接运行以下指令即可,参考自XTDrone教程

sudo apt install ros-melodic-mavros ros-melodic-mavros-extras
wget https://gitee.com/robin_shaun/XTDrone/raw/master/sitl_config/mavros/install_geographiclib_datasets.sh
sudo chmod a+x ./install_geographiclib_datasets.sh
sudo ./install_geographiclib_datasets.sh

5.3 测试mavros

在终端输入

roslaunch mavros px4.launch fcu_url:="udp://:14540@127.0.0.1:14557"

来测试mavros是否安装成功,如果没有报错,那说明安装成功。如下所示

Image

6. 测试mavros与sitl通信

接下来我们测试MAVROSSITL通信是否正常,先打开QGC地面站,然后输入

roslaunch px4 mavros_posix_sitl.launch
rostopic echo /mavros/state

如果出现了connected: True,则表明通信成功,如下所示。

Image

如果在终端输入

commander takeoff # 起飞
commander land    # 降落

无人机将会起飞和降落,并且mavros显示信息会发生变化。


Reference

  • Ubuntu安装教程
  • ROS安装教程
  • Gazebo安装教程
  • QGC安装教程
  • PX4官网配置教程
  • Mavros官网配置教程

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

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

相关文章

Java常见面试题(含答案,持续更新中~~)

目录 1、JVM、JRE和JDK的关系 2、什么是字节码&#xff1f;采用字节码的最大好处是什么 3、Java和C的区别与联系 4、Java和GO的区别与联系 5、 和 equals 的区别是什么&#xff1f; 6、Oracle JDK 和 OpenJDK 的对比 7、String 属于基础的数据类型吗&#xff1f; 8、fi…

外星人入侵游戏-(创新版)

&#x1f308;write in front&#x1f308; &#x1f9f8;大家好&#xff0c;我是Aileen&#x1f9f8;.希望你看完之后&#xff0c;能对你有所帮助&#xff0c;不足请指正&#xff01;共同学习交流. &#x1f194;本文由Aileen_0v0&#x1f9f8; 原创 CSDN首发&#x1f412; 如…

【Tensorflow 2.12 电影推荐项目搭建】

Tensorflow 2.12 电影推荐项目搭建 学习笔记工具、环境创建项目项目配置安装相关python包召回模型实现排序模型实现实现电影推荐导入模块设置要推荐的用户召回推荐排序推荐推荐结果结尾学习笔记 Tensorflow 2.12 电影推荐项目搭建记录~ Tensorflow是谷歌开源的机器学习框架,可…

再次理解Android账号管理体系

目录 ✅ 0. 需求 &#x1f4c2; 1. 前言 &#x1f531; 2. 使用 2.1 账户体系前提 2.2 创建账户服务 2.3 操作账户-增删改查 &#x1f4a0; 3. 源码流程 ✅ 0. 需求 试想&#xff0c;自己去实现一个账号管理体系&#xff0c;该如何做呢&#xff1f; ——————————…

MySQL 学习笔记(基础)

首先解释数据库DataBase&#xff08;DB&#xff09;&#xff1a;即存储数据的仓库&#xff0c;数据经过有组织的存储 数据库管理系统DataBase Management System&#xff08;DBMS&#xff09;&#xff1a;管理数据库的软件 SQL&#xff08;Structured Query Language&#xf…

3D视觉到三维视觉之结构光

3D视觉是计算机视觉的终极体现形式 2D视觉技术主要在二维空间下完成工作&#xff0c;三维信息基本上没有得到任何利用&#xff0c;而三维信息才真正能够反映物体和环境的状态&#xff0c;也更接近人类的感知模式。近年来&#xff0c;学术界和工业界推出了一系列优秀的算法和产…

redis 哨兵(sentinel)机制

1. 前言 sentinel&#xff08;哨兵&#xff09;是Redis 的高可用性解决方案之一。通过哨兵可以创建一个当主服务器出现故障时自动将从服务器升级为主服务器的分布式系统&#xff0c;解决了主从复制出现故障时需要人为干预的问题。 redis 的主从复制的作用有数据预热、负载均衡…

【初阶数据结构】树(tree)的基本概念——C语言

目录 一、树&#xff08;tree&#xff09; 1.1树的概念及结构 1.2树的相关概念 1.3树的表示 1.4树在实际中的运用&#xff08;表示文件系统的目录树结构&#xff09; 二、二叉树的概念及结构 2.1二叉树的概念 2.2现实中真正的二叉树 2.3特殊的二叉树 2.4二叉树的性质…

使用 Feature Flags 实现数据库灰度迁移的监控与可观测性

作者&#xff1a;观测云与胡博 场景描述 很多企业会遇到数据库升级、或数据库迁移的情况&#xff0c;尤其是在自建数据库服务向云数据库服务、自建机房向云机房、旧数据库向新数据库迁移等场景。 然而&#xff0c;我们需要在整个移植过程中保证其稳定性、避免数据遗失、服务宕…

获取spring容器中的bean实例

在开发过程中&#xff0c;我们可能需要动态获取spring容器中的某个bean的实例&#xff0c;此时我们就会用到ApplicationContext spring应用上下文&#xff0c;这里做一下记录&#xff0c;网上很多类似的的工具类。 先写好工具类再测试一下是否好用 工具类&#xff1a; packag…

【pytest】生成测试报告

0. 脚本&#xff1a; fixture/test_fixtures_02.py # 功能函数 import pytestdef multiply(a, b):return a * bclass TestMultiply:# fixturesclassmethoddef setup_class(cls):print("setup_class>")classmethoddef teardown_class(cls):print("teardown_c…

最小二乘法

Least Square Method 1、相关的矩阵公式2、线性回归3、最小二乘法3.1、损失函数&#xff08;Loss Function&#xff09;3.2、多维空间的损失函数3.3、解析法求解3.4、梯度下降法求解 1、相关的矩阵公式 P r e c o n d i t i o n : ξ ∈ R n , A ∈ R n ∗ n i : σ A ξ σ ξ…

Linux驱动之INPUT设备驱动

目录 一、开发环境 二、编写按键input设备的注册与事件上报 2.1 修改设备树文件 1 添加 pinctrl 节点 2、添加 KEY 设备节点 3、检查 PIN 是否被其他外设使用 2.2 驱动程序编写 2.3 测试APP编写 2.4 运行测试 三、Linux内核自带按键input设备驱动 3.1 自带按键驱动程序源码简…

C#实现钉钉自定义机器人发送群消息帮助类

一、自定义机器人发送群消息使用场景 在企业中,针对一些关键指标内容(如每天的生产产量、每天的设备报警信息等信息),需要同时给多人分享,此时就可以将需要查看这些数据的人员都拉到一个群中,让群里的机器人将这些关键指标内容推送到群里即可【(目前已实现在钉钉群里创建…

Web 器学习笔记(基础)

Filter 过滤器 概念&#xff1a;表示过滤器&#xff0c;是 JavaWeb 三大组件&#xff08;Servlet、Filter、Listener&#xff09;之一 作用&#xff1a;顾名思义可以过滤资源的请求&#xff0c;并实现特殊的需求 Filter 接口及它核心的 doFilter() 方法&#xff08;执行前就是…

Excel 公式函数:学习基本示例

数据准备 对于本教程&#xff0c;我们将使用以下数据集。 家居用品预算 S / N项目数量价格小计价格适中吗&#xff1f;1芒果96002橘子312003番茄125004食用油565005汤力水133900 房屋建筑项目时间表 S/NITEM开始日期结束日期持续时间&#xff08;天&#xff09;1调查土地0…

000_差分信号

1.什么是差分信号 差分信号又叫做差模信号&#xff0c;使用差分信号传输时&#xff0c;需要2根信号线&#xff0c;这2根信号线的振幅相等&#xff0c;相位相反&#xff0c;通过2根信号线的电压差值来表示逻辑0和逻辑1。 差分信号表示逻辑值如下图&#xff1a; 2.差分信号的特…

IDEA2023.2.1中创建第一个Tomcat的web项目

首先&#xff0c;创建一个普通的java项目。点击【file】-【new】-【project】 创建一个TomcatDemo项目 创建如下图 添加web部门。点击【file】-【project structure】 选择【modules】-选中项目“TomcatDemo” 点击项目名上的加号【】&#xff0c;添加【web】模块 我们就会发现…

【Vue】快速入门案例与工作流程的讲解

&#x1f389;&#x1f389;欢迎来到我的CSDN主页&#xff01;&#x1f389;&#x1f389; &#x1f3c5;我是Java方文山&#xff0c;一个在CSDN分享笔记的博主。&#x1f4da;&#x1f4da; &#x1f31f;在这里&#xff0c;我要推荐给大家我的专栏《Vue快速入门》。&#x1f…

Springboot 实践(18)Nacos配置中心参数自动刷新测试

前文讲解了Nacos 2.2.3配置中心的服务端的下载安装&#xff0c;和springboot整合nacos的客户端。Springboot整合nacos关键在于使用的jar版本要匹配&#xff0c;文中使用版本如下&#xff1a; ☆ springboot版本: 2.1.5.RELEASE ☆ spring cloud版本 Greenwich.RELEASE ☆ sp…