如何在Gazebo中实现多机器人编队仿真

2023-09-18 10:32:37


前言

实现在gazebo仿真环境中添加多个机器人后,接下来进行编队控制,对具体的实现过程进行记录。


一、仿真前的配置

本文的多机器人编队,在turtlebot3单个机器人的建图、导航等功能的基础上进行,需要在自己的远程PC和台式机中安装配置以下功能包

(1)turtlebot3单个机器人的配置:可以看之前的文章双系统ubuntu20.04(neotic版本)从0实现Gazebo仿真slam建图

(2)进行多机器人编队仿真前需要将已经写好的FourTB3s功能包配置在自己的工作空间src文件夹下,且成功编译,如果不知道怎么编译可以看这篇ROS如何将拷贝的功能包成功运行在自己的工作空间中

(3)需要在自己的src文件夹中打开终端输入:

git clone https://gitee.com/kay2022/turbot3.git

下载一个turbot3的包,如果git clone遇到问题可以参考双系统 + Ubuntu20.04 + ros2 (foxy) git clone -b连接不成功的解决记得下载完成后要重新编译。

二、实现步骤

1.检查PC和台式机是否通讯成功

【PC端】 终端输入:roscore
【台式机】终端输入:rostopic list
通讯成功如下图(具体通信配置过程可参考:虚拟机作为master远程控制台式机中的机器人在仿真环境中进行slam地图构建与自主导航
【PC显示】
在这里插入图片描述
【台式机显示】
台式机端

2.编队中对单个机器人进行独立的控制

【台式机】终端输入:roslaunch turtlebot3_gazebo test.launch 启动gazebo仿真环境(四个机器人,可以增添或减少可参考文章:在gazebo仿真环境中加载多个机器人
加载成功界面:
在这里插入图片描述
【PC】终端输入:ROS_NAMESPACE=tb3_0 roslaunch turtlebot3_teleop turtlebot3_teleop_key.launch
注意:ROS_NAMESPACE=“后面接想要控制的机器人的名字”,这个名字要与写的加载gazebo的launch中起的机器人名字一致,启动后可通过键盘控制单个机器人移动。
在这里插入图片描述
可以在台式机gazebo的仿真环境中,指明某个机器人控制其独立的移动,如图控制tb3_0单个机器人的移动,若控制其他机器人同理。

在这里插入图片描述

在这里插入图片描述

3、对机器人进行编队控制

【PC】打开FourTB3文件夹,并在该文件夹下打开终端,输入:python3 FourTB3sPerform.py为方便机器人进行编队运动,可以将gazebo环境中的障碍物去掉
在这里插入图片描述【PC端显示】
在这里插入图片描述

【台式机显示】
在这里插入图片描述在这里插入图片描述
【总览】
在这里插入图片描述

更多推荐

Linux 终端与进程

有趣的问题Linux中的终端,控制台,TTY,PTY究竟是什么?它们与进程有什么关系?历史回顾:控制台(Console)控制台是一个直接控制设备的面板(属于设备的一部分)计算机设备的控制台:按键&指示灯(键盘&显示器)早期的电子计算机必然有一个控制台历史回顾:终端(Terminal)终端是一台独立于计算机的机器,是能够

css经典面试题(二)

文章目录1、清除浮动2、opacity:0、visibility:hidden、display:none的区别3、css画一个三角形4、常见的主流浏览器前缀5、重绘与重排的区别?6、如何优化图片7、CSS3中transition和animation的属性分别有哪些8、居中为什么要使用transform(为什么不使用ma

差分进化算法解析:Scala实现详细指南及其在优化问题中的应用

1.差分进化算法简介差分进化算法(DifferentialEvolution,DE)是一种演化计算的方法,主要用于连续空间的优化问题。与其他进化算法如遗传算法不同,DE专门设计用于处理实数编码的解,使其成为处理连续优化问题的理想选择。该算法的基本思想是通过结合当前代的个体与他们的变异体产生新的试验点,然后用某种选择准则

界面组件DevExpress WinForms v23.1亮点 - 全新升级HTML & CSS模板

DevExpressWinForms拥有180+组件和UI库,能为WindowsForms平台创建具有影响力的业务解决方案。DevExpressWinForms能完美构建流畅、美观且易于使用的应用程序,无论是Office风格的界面,还是分析处理大批量的业务数据,它都能轻松胜任!DevExpressWinForm控件已正

Games101作业0(vscode连接VB虚拟机)

作业0配置环境:基本配置在pa0中都有,下面介绍使用vscode连接VB虚拟机快捷开发vscode连接VB虚拟机1.用户名可以看到Username为cs18并非为css1802.密钥在window主机生成密钥ssh-keygen#一路回车3.VB虚拟机配置sshsshd_config配置cd/etc/ssh/vimss

【Java】防沉迷实名认证系统接口测试代码(已全示例通过)

下面的代码以及置顶文件使用并修改了作者:jspp@qq.com的开源代码,只作学习使用,侵删背景:在接入Taptap的防沉迷实名认证前,需要先通过国家防沉迷实名认证系统的接口测试,要求全部示例通过才能允许使用接口:核心代码:接口加密需要使用密钥对请求报文体数据进行AES-128/GCM+BASE64算法加密import

应用在摄像头对焦镜头中的马达驱动芯片

摄像头(CAMERA或WEBCAM)又称为电脑相机、电脑眼、电子眼等,是一种视频输入设备,被广泛的运用于视频会议、远程医疗及实时监控等方面。普通的人也可以彼此通过摄像头在网络进行有影像、有声音的交谈和沟通。另外,人们还可以将其用于当前各种流行的数码影像、影音处理等。摄像头可分为数字摄像头和模拟摄像头两大类。数字摄像头可

创建线程的方式打开记事本

更好的阅读体验\huge{\color{red}{更好的阅读体验}}更好的阅读体验今天操作系统课老师讲到进程,提出了一个有趣的小实验:能否以系统调用的方式利用Windows创建进程的系统调用函数来打开一个软件。闲着蛋疼的我立马来了兴趣,姑且写一个玩玩(头文件<windows.h>:包含了WindowsAPI的核心功能。

【JavaScript】深拷贝和浅拷贝

在JavaScript中,深拷贝(DeepCopy)和浅拷贝(ShallowCopy)是两种不同的对象复制方法,它们涉及到如何复制对象的属性以及如何处理对象内部的嵌套引用。以下是它们的解释:浅拷贝(ShallowCopy):浅拷贝是一种对象复制方法,它仅复制对象的一层属性,而不会递归复制对象内部的嵌套对象。当你进行浅拷

小谈设计模式(4)—单一职责原则

小谈设计模式(4)—单一职责原则专栏介绍专栏地址专栏介绍单一职责原则核心思想职责的划分单一变化原则高内聚性低耦合性核心总结举例图书类(Book)用户类(User)图书管理类(Library)分析不遵守单一职责原则,可能引发的问题类的职责不清晰类的修改影响范围过大难以重用和扩展Java代码实现程序分析总结专栏介绍专栏地址

Linux简介和比较:开源操作系统的优势与差异

文章目录第1章:Linux简介和基础知识Linux是什么以及它的历史Linux发行版介绍Linux基本命令行操作Linux和Dos操作系统的比较1.发展历史和用途2.内核和源代码3.用户界面和用户体验4.功能和应用程序5.硬件兼容性6.支持和社区Linux和Windows操作系统的比较1.开源vs.闭源2.费用3.用户

热文推荐