ROS+PX4+Gazebo仿真环境配置全流程解析

上一期文章介绍了我们即将发布的仿真平台,并提到后续需要在Ubuntu系统上进行PX4软件在环仿真。本期文章将为大家详细介绍如何配置Ubuntu环境以及安装ROS和PX4仿真环境。具体配置包括:Ubuntu 20.04 + ROS Noetic + PX4 + Python3

需要注意的是,PX4版本迭代较快,新旧版本在默认参数配置上可能稍有出入。若非特殊需求,建议不要安装过旧的版本;此外,PX4+ROS的仿真环境实际上PX4只是作为一个工作空间,因此即使版本不符合要求,也仅需要重新下载编译,并更新环境变量,一般不会对整个ROS环境造成影响。

仿真平台搭建过程主要有三个步骤:

  1. 安装Ubuntu20.04;
  2. 安装ROS Noetic;
  3. 安装PX4环境。

1. Ubuntu安装

Ubuntu安装教程网上较多,此处不再详细叙述。下面简单介绍u盘安装Ubuntu的过程,该方法需要一台用于镜像烧录的电脑和制作启动盘的u盘。双系统和虚拟机安装过程类似可以自行寻找教程。具体步骤如下:

  1. 制作u盘启动盘。在Ubuntu官网下载Ubuntu20.04镜像文件,用rufus或者ultraISO等工具写入u盘中。(注意:此举会覆盖掉u盘中的内容并且修改u盘分区,使其不可用于文件拷贝,请确保u盘中没有重要文件;在系统安装完成后,可以使用diskgenius等工具修复u盘。)
  2. Ubuntu安装。u盘插入待安装系统的电脑,启动进入bios,选择从u盘启动,开始安装。(注意:真机和虚拟机的安装过程相同,因此可以参考这篇博客的安装过程。)
  3. 添加中文支持。部分教程会提供终端改为中文的教程。个人建议终端保持原样,这样在出现报错信息时便于搜索。
  4. 建议使用英文系统,文件夹路径不会有中文,避免一些潜在的bash路径问题。
  5. 如果安装双系统后,开机出现启动引导问题,无法启动Ubuntu系统或Windows系统,可以使用boot-repair工具。使用u盘启动盘,bios进入u盘的Ubuntu系统,下载boot-repair软件(需要联网)。下载方式参考此链接:https://help.ubuntu.com/community/Boot-Repair。
    打开boot-repair后,选择recommended repair即可,系统会自动为你创建Windows+Ubuntu的引导方式。进入bios可以修改启动顺序。

2. ROS Noetic安装

Ubuntu20.04对应的ros版本为ROS Noetic。强烈建议安装前先实现终端走代理,可解决大部分网络问题。

1.换源。由于官方源在国外,用官方源安装软件可能网速较慢,因此可以换用国内的镜像源。若已经实现终端代理,可直接使用官方源跳过此步。

2.更新源

sudo apt update
sudo apt upgrade

3.设置ros源:

sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'

4.设置密钥:

curl -s https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc | sudo apt-key add -

若提示没有安装curl,先安装:

sudo apt install curl

5.ros安装。ros提供 ros-noetic-desktop-fullros-noetic-desktopros-noetic-ros-base三种不同版本,其中ros-noetic-desktop-full包含附件最全,除非设备储存空间十分有限,否则建议安装此版本。安装命令

sudo apt update
sudo apt install ros-noetic-desktop-full

6.设置环境变量。在home目录下,按ctrl+h显示出隐藏文件,在.bashrc文件末尾添加如下一行指令。

source /opt/ros/noetic/setup.bash

这步是为了将ros的相关命令地址写入.bashrc文件,以便在终端调用ros相关指令。

7.rosdep安装。

sudo apt install python3-rosdep
sudo rosdep init
sudo rosdep update

在执行后两句是即使代理配置完成也有相当概率无法完成,此时可以使用国内大佬写的工具rosdepc,也可以通过手动更改文件实现。

8.测试。安装完成后,可进行简单测试:打开三个终端,分别输入以下指令并运行。

roscore 
rosrun turtlesim turtlesim_node 
rosrun turtlesim turtle_teleop_key

上述第一个命令是打开一个roscore,roscore用于统一协调管理所有ros话题、节点和服务,是ros运行的基础;第二个命令是打开海龟仿真界面,第三个命令用于打开键盘控制终端。

3 PX4安装

px4的安装有:px4下载编译、mavros安装、qground安装三步。其中px4是飞控代码,基于px4搭建的仿真环境即是用了其提供的软在环仿真功能;mavros是有mavlink封装而来的ros功能包,飞控的控制一般是采用mavlink协议,通过mavros我们可以直接利用ros提供的话题、服务等对与飞控进行通信;qground是地面站平台,直接与px4进行通信(无需通过ros),地面站可现实无人机状态、设置飞控参数、控制无人机飞行,还提供模拟摇杆功能,我们主要利用地面站进行无人机状态监视。

3.1 PX4+Gazebo

1.第一步中,px4并不一定需要安装在用户目录下,可根据个人习惯安装在指定路径。

cd 安装目录
git clone https://github.com/PX4/PX4-Autopilot.git --recursive

如果要使用其他版本的px4,例如1.13.0版本,则使用以下命令:

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

2.进入安装目录,下载安装相关组件

cd PX4-Autopilot/
git submodule update --init --recursive

3.执行.sh脚本

bash ./PX4-Autopilot/Tools/setup/ubuntu.sh

4.期间可能出错,需要更新一下pip和Pillow

python3 -m pip install --upgrade pip
python3 -m pip install --upgrade Pillow

如果有其他安装错误,可以尝试使用:

bash ./PX4-Autopilot/Tools/setup/ubuntu.sh --fix-missing

5.最后进入PX4-Autopilot目录下编译启动gazebo中的模型

make px4_sitl_default gazebo

在终端输入commander takeoff,可以控制无人机起飞;在终端输入commander land,可以控制无人机降落。

6.编译完成后,在home文件的.bashrc中添加环境变量,“安装目录”为你的PX4-Autopilot文件夹所在目录:

source 安装目录/PX4-Autopilot/Tools/simulation/gazebo-classic/setup_gazebo.bash 安装目录/PX4-Autopilot 安装目录/PX4-Autopilot/build/px4_sitl_default
export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:安装目录/PX4-Autopilot
export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:安装目录/PX4-Autopilot/Tools/simulation/gazebo-classic/sitl_gazebo-classic

这里需要注意,不同版本的gazebo模型目录可能会不一致,如果使用旧版本,需要自行对照正确的路径。如果无法确定路径位置,可以找自己对应版本的px4 user guide。user guider的Drone Apps&APIs→ROS with MAVROS→ROS/MAVROS with Gazebo Simulation的文章中,有详细介绍对应的路径位置。

3.2 MAVROS

1.安装MAVROS

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

2.安装 GeographicLib 数据集

sudo /opt/ros/noetic/lib/mavros/install_geographiclib_datasets.sh

3.3 安装QGC

安装QGC地面站,参考官方网站即可。

3.4 仿真

通过以下命令可以开启px4软件在环仿真,打开qgc地面站会自动连接上飞机。

roslaunch px4 mavros_posix_sitl.launch

能看到gazebo中无人机模型,qgc地面站连接上无人机。在终端中输入commander takeoff, commander land可以控制无人机起飞和降落。

4 显卡驱动安装

这一步并非必须,只是为了提高gazebo运行流畅度,不影响仿真环境的正常使用,但是推荐安装显卡驱动。显卡驱动安装可以参考此篇教程。显卡驱动安装流程参考。推荐使用方法2,采用Ubuntu自带的驱动管理程序来安装显卡驱动。

笔者曾采用上述链接中的方法1进行安装后,开机黑屏,屏幕左上方光标闪烁。该问题是选用驱动不合理导致的。可以重启进入ubuntu的恢复模式,选择root选项,在命令行中删除nvidia显卡驱动

sudo apt --purge remove nvidia*

然后重新尝试安装其他版本的驱动程序。

5 总结

本文详细介绍了如何在 Ubuntu 20.04 系统上搭建 ROS Noetic + PX4 仿真环境,涵盖了从系统安装到仿真软件配置的全过程。通过本文的步骤,希望大家可以顺利完成环境搭建,如果出现一些安装问题,欢迎大家与我交流探讨。

END
后续会陆续带来规划、控制相关的文章、仿真分享。

迅翼SwiftWing致力于固定翼技术共享,汇聚固定翼领域技术极客,推动固定翼技术持续创新!

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

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

相关文章

基础入门-APP应用微信小程序原生态开发H5+Vue技术WEB封装打包反编译抓包点

知识点: 1、基础入门-APP应用-开发架构安全问题 2、基础入门-小程序应用-开发架构安全问题 通用: 1、反编译-得到源码-源码提取资产(泄漏的配置信息)-安全测试 2、抓包-资产-安全测试 一、演示案例-移动App-开发架构-原生&H…

Elasticsearch:使用 Open Crawler 和 semantic text 进行语义搜索

作者:来自 Elastic Jeff Vestal 了解如何使用开放爬虫与 semantic text 字段结合来轻松抓取网站并使其可进行语义搜索。 Elastic Open Crawler 演练 我们在这里要做什么? Elastic Open Crawler 是 Elastic 托管爬虫的后继者。 Semantic text 是 Elasti…

Qt之自定义标题栏拓展(十)

Qt开发 系列文章 - user-defined-titlebars(十) 目录 前言 一、方式一 1.效果演示 2.创建标题栏类 3.可视化UI设计 4.定义相关函数 5.使用标题栏类 二、方式二 1.效果演示 2.创建标题栏类 3.定义相关函数 4.使用标题栏类 总结 前言 Qt自带…

vue3前端组件库的搭建与发布(一)

前言: 最近在做公司项目中,有这么一件事情,很是头疼,就是同一套代码,不同项目,要改相同bug,改好多遍,改的都想吐,于是就想做一个组件库,这样更新一下就全都可…

学技术学英文:代码中的锁:悲观锁和乐观锁

本文导读: 1. 举例说明加锁的场景: 多线程并发情况下有资源竞争的时候,如果不加锁,会出现数据错误,举例说明: 业务需求:账户余额>取款金额,才能取钱。 时间线 两人共有账户 …

Qt编译MySQL数据库驱动

目录 Qt编译MySQL数据库驱动 测试程序 Qt编译MySQL数据库驱动 (1)先找到MySQL安装路径以及Qt安装路径 C:\Program Files\MySQL\MySQL Server 8.0 D:\qt\5.12.12 (2)在D:\qt\5.12.12\Src\qtbase\src\plugins\sqldrivers\mysql下…

CTFHUB-web(SSRF)

内网访问 点击进入环境,输入 http://127.0.0.1/flag.php 伪协议读取文件 /?urlfile:///var/www/html/flag.php 右击查看页面源代码 端口扫描 1.根据题目提示我们知道端口号在8000-9000之间,使用bp抓包并进行爆破 POST请求 点击环境,访问flag.php 查看页…

游戏引擎学习第43天

仓库 https://gitee.com/mrxiao_com/2d_game 介绍运动方程 今天我们将更进一步,探索运动方程,了解真实世界中的物理,并调整它们,以创建一种让玩家感觉愉悦的控制体验。这并不是在做一个完美的物理模拟,而是找到最有趣…

YashanDB共享集群产品能力观测:细节足见功底

本文基于前泽塔数科研发总监-王若楠2024年11月在“2024年国产数据库创新生态大会”-“根”技术专场的演讲整理形成,主要对崖山共享集群YAC的架构、功能、高可用性、性能四大方面进行全面测试,并分享了测试环境和测试结论。 年初,基于某些商业…

VMware ubuntu16.04怎么设置静态IP联网

1.将VMware桥接到当前电脑使用的网络上面; 2.点击网络符号,编辑连接; 3.双击有线连接1; 4.选择IPv4设置,将地址,子网掩码,网关,DNS服务器设置好,保存; 5.在终…

ElasticSearch的自动补全功能(拼音分词器、自定义分词器、DSL实现自动补全查询、RestAPI实现自动补全查询)

文章目录 1. 什么是自动补全2. 拼音分词器2.1 初识拼音分词器2.2 下载拼音分词器2.3 安装拼音分词器2.4 测试拼音分词器 3. 自定义分词器3.1 拼音分词器存在的问题3.2 分词器(analyzer)的组成3.3 如何自定义分词器3.4 拼音分词器的可选参数3.5 配置自定义…

Windows环境 (Ubuntu 24.04.1 LTS ) 国内镜像,用apt-get命令安装RabbitMQ,java代码样例

一、环境 Windows11 WSL(Ubuntu 24.04.1) 二、思路 1 用Windows中的Ubuntu安装RabbitMQ,贴近Linux的线上环境; 2 RabbitMQ用erlang语言编写的,先安装erlang的运行环境; 2 用Linux的apt-get命令安装,解决软件依赖…

医学预测模型的网页应用必要模块设计(重制版)

医学预测模型的网页应用必要模块设计(重制版) 刘岳鹏 摘要: 网页应用(Web APP)承载医学临床预测模型并在临床实践中实现与用户的互动,必要的功能模块设计将有助于Web APP更好地在临床实践中发挥其功能。在此…

【他山之石】Leading-Trim: The Future of Digital Typesetting:数字排版的未来 —— Leading-Trim

文章目录 【他山之石】Leading-Trim: The Future of Digital Typesetting:数字排版的未来 —— Leading-TrimHow an emerging CSS standard can fix old problems and raise the bar for web apps1. The problem with text boxes today2. How we got here: a histor…

【k8s集群应用】Kubernetes 容器编排系统

文章目录 Kubernetes 容器编排系统背景与发展Kubernetes 基本概念Kubernetes 集群架构与组件Kubernetes 核心组件Master 组件配置存储中心Node 组件 Kubernetes核心概念1. Pod2. Pod控制器3. Label与Label选择器4. Service5. Ingress6. Volume7. Name与Namespace K8S创建Pod资源…

梳理你的思路(从OOP到架构设计)_简介EIT造形

目录 1、 复习<基类 /子类>的扩充(extends)结构 典型的<基类/子类>代码结构 <基类/子类>代码结构的变形 2、 从<基类/子类>结构到EIT造形 3、 EIT造形的基本形与变形 1、 复习<基类 /子类>的扩充(extends)结构 典型的<基类/子类>代码…

Rust vs C: PNG解码器性能之争的启示

在系统编程领域,C语言一直是性能标杆。但最近一个现象引发了广泛讨论:用 Rust 实现的 PNG 解码器性能竟然超越了 C 语言版本。这个看似反直觉的结果背后,折射出现代编程语言发展的新趋势。 让我们深入解析这个有趣的技术现象。PNG解码本质上是把压缩的图像数据还原成像素数据的…

【收藏】Cesium 限制相机倾斜角(pitch)滑动范围

1.效果 2.思路 在项目开发的时候&#xff0c;有一个需求是限制相机倾斜角&#xff0c;也就是鼠标中键调整视图俯角时&#xff0c;不能过大&#xff0c;一般 pitch 角度范围在 0 至 -90之间&#xff0c;-90刚好为正俯视。 在网上查阅了很多资料&#xff0c;发现并没有一个合适的…

MyBatis-Plus 实用工具:SqlHelper

SqlHelper 是MyBatis-Plus的一款SQL 辅助工具类&#xff0c;提供了一些常用的方法&#xff0c;简便我们的操作&#xff0c;提高开发效率。文档 最常用的是SqlHelper.table(Obj.class) 返回的 TableInfo 对象通常包含以下常用方法&#xff1a; 1. getTableName() 获取表名。示例…

游戏无界,RayLink远程控制电脑打造极致游戏体验

在数字化浪潮席卷全球的今天&#xff0c;电子游戏已经成为我们日常生活中不可或缺的娱乐方式。“游戏无界限”的理念正在逐步改变着玩家们的游戏体验。远程操控电脑技术的兴起&#xff0c;仿佛为游戏世界打开了一扇新的大门&#xff0c;打破了时间和空间的限制&#xff0c;让玩…