ROS 2机器人操作系统与Gazebo机器人仿真

news/2025/10/8 10:21:50/文章来源:https://www.cnblogs.com/dslw0820/p/19129209

在ROS 2系统中,驱动多台机器人涉及多个关键组件和概念,这些组件协同工作以实现多机器人系统的有效控制和协调。多机器人系统通常涉及协同工作和任务分配。ROS 2通过服务、参数服务器和自定义消息等功能,实现任务分配和协同工作的有效管理,例如,一个中心节点可以分配任务给多台机器人,并收集和汇总任务执行的结果。以下通过两个群机器人的控制案例,介绍利用ROS 2实现多机器人控制的方法。
4.3.1 案例:随机游走
利用ROS 2的通信机制,在TurtleSim在仿真环境中创建多个小海龟,并使这些小海龟在仿真环境中随机游走,效果如图4-6所示。

图4-6 随机游走
实现多个小海龟的随机游走,需要先创建多个小海龟,然后需要向创建的各个小海龟发布控制速度的话题。创建小海龟可通过在Launch文件里调用/spwan服务实现,根据命名空间创建控制各个小海龟运动的节点。具体的实现步骤如下:
1.编写控制节点
创建控制一个小海龟随机游走的random_walk.py节点,代码如下:

ros2_ws4/src/turtle_exercise/turtle_exercise/random_walk.py

import rclpy
from rclpy.node import Node
from geometry_msgs.msg import Twist
import random

class RandomWalk(Node):
def init(self):
super().init('random_walk')
self.turn = False if random.random() < 0.5 else True
self.current_msg = Twist()
self.walk = self.create_timer(3, self.random_speed)
self.cmd_publisher = self.create_publisher(Twist, 'cmd_vel', 10)

def random_speed(self):msg = Twist()if self.turn:sign = 1 if random.random() < 0.5 else -1msg.angular.z = random.uniform(1.0  ,  2 * 1.0 ) * sign  msg.linear.x = 0.0self.walk.cancel()self.walk = self.create_timer(random.uniform(0, 2.0), self.random_speed)else:msg.angular.z = 0.0msg.linear.x = 1.0self.walk.cancel()bu = random.uniform(2.5, 4.5)self.walk = self.create_timer(bu, self.random_speed)self.turn = not self.turnself.cmd_publisher.publish(msg)

def main(args=None):
rclpy.init(args=args)
node = RandomWalk()
try:
rclpy.spin(node)
except Exception:
rclpy.shutdown()
exit(0)
rclpy.shutdown()

if name == 'main':
main()
以上代码定义了一个继承自Node的RandomWalk类,主要功能是:
(1)在类初始化方法方法__init__()。定义变量self.turn表示机器人是否转向,并初始化为随机的布尔值。定义变量self.current_msg,并初始化为一个空的Twist消息对象,用于存储当前的运动指令。创建一个定时器self.walk,每隔3s触发一次self.random_speed()回调函数,实现机器人的随机移动。创建了一个话题发布者self.cmd_publisher,发布Twist消息到'cmd_vel'话题,控制小海龟的运动。
(2)定时器回调函数random_speed()。如果变量self.turn为True,则表示当前要转向,随机选择一个方向(正向或反向),设置线速度设置为0,生成一个随机的角速度;如果self.turn为False,则表示当前直行,设置角速度为0,线速度设置为1。self.walk.cancel()取消当前的定时器,根据不同情况重新创建一个定时器,以实现不同的定时运动间隔。最后,使用self.cmd_publisher.publish(msg)发布生成的Twist消息,控制机器人的运动。
2.编写Launch文件
编写Launch文件启动所需的节点,完成多个小海龟的生成多并使其随机游走。创建random_walk_launch.py文件,代码如下:

ros2_ws4/src/turtle_exercise/launch/random_walk_launch.py

from launch import LaunchDescription
from launch_ros.actions import Node
from launch.actions import ExecuteProcess
import random

def generate_launch_description():
turtle_num = 10
ld = LaunchDescription()

sim = Node(package='turtlesim',executable='turtlesim_node',name='sim')
ld.add_action(sim)for i in range (turtle_num):name = 'turtle' + str(i+1)turtle = Node(package='turtle_exercise',executable='random_walk',namespace=name)ld.add_action(turtle)x=random.random()*11y=random.random()*11cmd=f'x: {x}, y: {y}, name: {name}'ep=ExecuteProcess(cmd=[['ros2 service call ','/spawn ' ,'turtlesim/srv/Spawn ','"{' + cmd + '}"',]], shell=True)ld.add_action(ep)return ld

在以上代码中,利用Python语言中的循环创建了控制小海龟的节点和生成小海龟的服务调用,并通过对控制节点命名空间的设置使控制节点与特定的小海龟建立联系,对小海龟实现控制。
3.运行仿真
编译和安装功能包后,运行Launch文件,命令如下:
ros2 launch turtle_exercise random_walk_launch.py
上述命令的运行效果如图4-6所示,在仿真环境中生成多个小海龟,并使小海龟们进行随机游走。

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

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

相关文章

2025 年次氯酸钠发生器厂家最新推荐榜:覆盖电解法 / 食盐电解等类型,聚焦专利技术与成本优势的品牌深度解析水厂/大型/小型/食盐电解产生次氯酸钠发生器厂家推荐

随着水处理消毒需求的持续增长,次氯酸钠发生器因现场制备、安全环保的特性,成为水厂、污水处理厂等场景的关键设备。但当前市场乱象凸显:部分设备盐耗、电耗过高,长期运行成本居高不下;技术储备不足导致设备适配性…

2025 年最新铝镁锰板厂商口碑排行榜:实力厂家推荐及 100 万㎡工程案例与 20 年质保深度解读铝镁锰板屋面板/保温板/卷/墙面板 铝镁锰板金属屋面板

在当前建筑材料市场中,铝镁锰板因轻质、耐用、美观等优势,已成为钢结构厂房、机场、体育馆等大型项目的核心材料。但随着市场需求增长,供应商数量激增,产品质量却呈现明显分化,部分厂商存在原材料以次充好、生产工…

2025 年二氧化氯发生器厂家最新推荐排行榜:电解式设备厂家综合实力测评及优质企业选购指南电解/电解法/电解食盐/电解盐二氧化氯发生器厂家推荐

随着我国水处理行业朝着精细化、智能化方向发展,消毒设备作为水质安全的关键环节,其性能与成本已成为水厂、污水处理厂、养殖企业等用户的核心关注点。当前市场上二氧化氯发生器品牌数量激增,既有深耕行业多年的老牌…

渔具网站建设策划书前言网络推广计划书范文

1.导入的excel模版 2.点击导入&#xff0c;显示excel导入弹窗 3.点击选择文件&#xff0c;会调用本地文件夹里面的excel文件 4.选中文件&#xff0c;点击 导入 html部分 <a-button type"primary" click"onImportXls">导入</a-button><…

郯城县网站建设网站域名查ip

(方式一 ) 通过QGis创建形状图层点 1、如下gif&#xff0c;演示了创建形状图层 2、如下gif&#xff0c;演示了在高德地图上&#xff0c;形状图层上添加点 3、如下gif&#xff0c;演示了对形状图层点查看详细信息 4、如下gif&#xff0c;演示了对形状图层点查看属性表&#xff0…

eclipes网站建设教程美艺网站建设

目录 目录的权限 目录的权限 1、可执行权限: 如果目录没有可执行权限, 则无法cd到目录中. 2、可读权限: 如果目录没有可读权限, 则无法用ls等命令查看目录中的文件内容. 3、可写权限: 如果目录没有可写权限, 则无法在目录中创建文件, 也无法在目录中删除文件. 上面三个权限是…

那个网站点击率高做物流网站的图片素材

基于AFM的物质表面微观结构及力学性质表征仿真实验 说明&#xff1a; 本次实验为本科生《基础物理实验》课程中的虚拟实验部分&#xff0c;在虚拟实验平台中进行。 一、实验目的&#xff1a; 1. 掌握AFM的基本成像原理及系统结构&#xff1b; 2. 掌握AFM的基本操作技巧及操…

2025 年国内铝板厂家最新推荐排行榜:1-7 系主流铝板企业实力测评及优选指南1060/1100/3003/3004/5052/5083/6061/6063/6082铝板厂家推荐

随着工业制造、建筑装饰、交通运输等领域对铝板需求的持续增长,市场上铝板品牌数量激增,但产品质量、工艺水平与服务能力却存在显著差距。部分企业因原材料把控不严、生产设备落后,导致铝板出现尺寸偏差、表面瑕疵、…

Fedora 38 安装 perl-JSON RPM 包步骤(含依赖问题解决及附安装包)​

Fedora 38 安装 perl-JSON RPM 包步骤(含依赖问题解决及附安装包)​​perl-JSON​ 是一个 ​Perl 语言的模块,它的作用是让 Perl 程序能够 ​轻松地处理 JSON 格式的数据。一、先确认你系统是 Fedora 38 这个包名字…

2025 年染井吉野樱种植服务公司最新推荐排行榜:苗木分枝点规格详解与景观适配指南及优质企业榜单染井吉野樱花苗/五公分染井吉野樱/十公分染井吉野樱/染井吉野樱批发公司推荐

在当前染井吉野樱苗木采购与景观工程领域,分枝点规格混乱、适配性不足的问题愈发凸显,给采购方和项目实施带来诸多困扰。市场上苗木分枝点标注随意,缺乏统一标准,部分供应商忽视科学培育,导致苗木移栽后景观效果差…

完整教程:BUUCTF[ACTF2020 新生赛]Include 1题解

完整教程:BUUCTF[ACTF2020 新生赛]Include 1题解pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas",…

2025 年国内磁选机厂家最新推荐排行榜:立环 / 高梯度 / 油冷立环磁选机优质厂商实力解析

在矿产加工与原料提纯行业中,磁选机作为核心分选设备,其品质、适配性与后续服务直接决定企业生产效率、产品纯度及运营成本。当前市场存在品牌杂乱、型号无序的问题,部分厂家产品单一,难以匹配不同规模企业的产能需…

云主机重装系统后网站重新部署吗网络推广工资

依赖 最佳实践的这部分阐述Chart.yaml中声明的dependencies。 版本 如果有可能的话&#xff0c;使用版本范围而不是某个固定的版本。建议的默认设置是使用补丁级别的版本的匹配&#xff1a; version: ~1.2.3 version: ~1.2.3 这样会匹配1.2.3以及该版本的任何补丁&#xff0…

2025 年最新三维扫描仪厂家权威推荐排行榜:空间 / 高精度 / 手持激光等类型设备优选企业全解析工业/便携式/拍照式/蓝光三维扫描仪厂家推荐

当前数字化浪潮下,三维扫描技术在文博保护、工业检测、医疗诊断、教育科研、电商展示等领域的应用愈发深入,市场对各类三维扫描设备的需求呈爆发式增长。但与此同时,市场上品牌繁杂、产品性能差异悬殊,从消费级到工…

2025 年北京红旗国悦经销商最新推荐排行榜:行业标杆与新锐品牌齐聚,购车选品指南重磅发布北京丰田考斯特/北京红旗国悦12座/北京考斯特4S店/北京丰田柯斯达/北京考斯特商务车经销商推荐

随着高端商务出行需求的持续升级,红旗国悦作为国车高端代表,其销售与定制服务市场愈发活跃,但也暗藏诸多选择难题。一方面,市场中既有深耕多年的老牌服务商,也涌现出大批新兴品牌,服务质量、定制能力与售后保障参…

LINUX之TCP内核参数解析

tcp_abort_on_overflow 0 如果全连接队列满了,server扔掉client发过来的ack; 1 server会发送一个reset包给client,表示废掉这个握手过程和这个连接tcp_adv_win_scale …

2025 年上海刑事辩护律师 / 刑事案件律师 / 刑事诉讼律师 / 刑事犯罪律师 / 刑事纠纷律师事务所推荐:徐海燕律师团队专业法律服务

随着上海市场经济的持续发展与法律体系的不断完善,各类刑事与民商事法律纠纷案件数量逐年增加,当事人对专业法律服务的需求也日益提升。在刑事领域,职务犯罪、经济犯罪、金融犯罪等案件呈现出复杂性、专业性更强的特…

广州市安全教育平台苏州seo培训多少钱

ChatGPT提问技巧——控制温度和TOP-P样本 “控制温度和Top-P抽样”在自然语言处理中&#xff0c;控制温度是指通过调整生成文本的随机性和多样性&#xff0c;而Top-P抽样是一种生成文本的策略&#xff0c;它选择概率最高的前P个词作为候选词汇。这两个技术常用于生成文本的质量…

网站建设优化的作用简单网页制作成品代码

目录 3.3基于RSRN模型的毫米波辐射图像去模糊重建方法 3.3.2非线性映射 3.3.3多尺度模糊提取

网站的推广方案怎么写广科网站开发

最近放假在写一个小项目&#xff0c;用到了闭包和匿名函数的知识&#xff0c;记录一下 What&#xff1f; 匿名函数&#xff1a;匿名函数&#xff08;英语&#xff1a;Anonymous Function&#xff09;在计算机编程中是指一类无需定义标识符&#xff08;函数名&#xff09;的函数…