当前位置: 首页 > news >正文

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

在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.hskmm.com/?act=detail&tid=26568

相关文章:

  • 2025 年次氯酸钠发生器厂家最新推荐榜:覆盖电解法 / 食盐电解等类型,聚焦专利技术与成本优势的品牌深度解析水厂/大型/小型/食盐电解产生次氯酸钠发生器厂家推荐
  • 2025 年二氧化氯发生器厂家最新推荐排行榜:电解式设备厂家综合实力测评及优质企业选购指南电解/电解法/电解食盐/电解盐二氧化氯发生器厂家推荐
  • 2025 年章丘二手磁选机服务公司最新推荐榜单:含回收置换 / 全型号设备及优质售后企业权威排行
  • Navicat配置MySQL自动备份
  • 2025 年最新铝镁锰板厂商口碑排行榜:实力厂家推荐及 100 万㎡工程案例与 20 年质保深度解读铝镁锰板屋面板/保温板/卷/墙面板 铝镁锰板金属屋面板
  • 2025 年国内铝板厂家最新推荐排行榜:1-7 系主流铝板企业实力测评及优选指南1060/1100/3003/3004/5052/5083/6061/6063/6082铝板厂家推荐
  • 2025 年染井吉野樱种植服务公司最新推荐排行榜:苗木分枝点规格详解与景观适配指南及优质企业榜单染井吉野樱花苗/五公分染井吉野樱/十公分染井吉野樱/染井吉野樱批发公司推荐
  • 2025 年国内磁选机厂家最新推荐排行榜:立环 / 高梯度 / 油冷立环磁选机优质厂商实力解析
  • 2025 年北京红旗国悦经销商最新推荐排行榜:行业标杆与新锐品牌齐聚,购车选品指南重磅发布北京丰田考斯特/北京红旗国悦12座/北京考斯特4S店/北京丰田柯斯达/北京考斯特商务车经销商推荐
  • LINUX之TCP内核参数解析
  • 焦糖饼干头文件c++最新同步
  • 2025 年最新三维扫描仪厂家权威推荐排行榜:空间 / 高精度 / 手持激光等类型设备优选企业全解析工业/便携式/拍照式/蓝光三维扫描仪厂家推荐
  • 2025 年上海刑事辩护律师 / 刑事案件律师 / 刑事诉讼律师 / 刑事犯罪律师 / 刑事纠纷律师事务所推荐:徐海燕律师团队专业法律服务
  • 垂起固定翼无人机应用及科技分析
  • 2025 年可行性研究报告公司最新推荐排行榜:权威筛选国内实力机构,助力企业精准选型
  • 2025 年离散制造领域 MES 厂商最新推荐榜单:全面解析头部服务商实力,助力企业数智化转型mes制造执行系统/mes系统 mes软件/mes生产制造执行系统/mes生产管理系统厂商推荐
  • 2025螺杆泵厂家最新推荐榜:高效耐用与专业定制实力之选
  • 稳时复位仿真攻略
  • 2025 年硫化仪厂家最新推荐排行榜:聚焦实力厂家技术亮点、售后保障及适配场景指南无转子/橡胶硫化仪/硫化仪门尼粘度仪/有转子硫化仪厂家推荐
  • 2025 年 WMS 公司最新推荐排行榜:全面盘点品牌核心技术优势助力仓储效率提升 28%+ 及选型指南 wms仓库管理软件/wms仓库管理系统软件/wms出入库管理系统公司推荐
  • T/CCSA 663-2025《医疗科研云平台科技要求》标准解读与深度分析
  • 题解:P14118 [SCCPC 2021] Hotpot
  • 编程笔记 - C++ 引用和指针的区别
  • 题解:P14127 [SCCPC 2021] K-skip Permutation
  • 题解:[P11184 带余除法]
  • 10 8
  • 2025双氧水厂家权威推荐榜:优质生产与稳定供应实力之选
  • 英国AI数据中心发展规划:技术挑战与产业反馈
  • 2025 年工业风机厂家最新推荐排行榜:涵盖离心高温防腐耐磨防爆等类型设备实力厂商精选高温/防腐/耐磨/防爆/除尘/不锈钢/锅炉风机厂家推荐
  • 2025 年拉力试验机厂家最新推荐榜单:聚焦专精特新企业技术实力与口碑,助力钢铁、线缆、轨道交通等行业精准选购