在gazebo仿真环境中加载多个机器人

这篇具有很好参考价值的文章主要介绍了在gazebo仿真环境中加载多个机器人。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


前言

单个机器人的各项仿真实验都基本完成,也实现了远程控制,接下来主要对多机器人编队进行仿真实验,在进行多机器人编队控制前,先要在gazebo仿真中加载多个机器人。


一、基本概念

在gazebo中添加多个机器人需要写或修改launch文件,通过在网上翻看别人的代码,大致明白了调用gazebo仿真launch文件中各部分代码的意思。下面是一些最最基本的概念,在修改launch前稍微了解一下。

1、xacro

类似于函数实现,提高代码复用率,优化代码结构,提高安全性
(1)宏定义

<xacro:macro name="宏名称" params="参数列表(多参数之前使用空格分隔)">
....
  参数调用格式:${参数名}
</xacro:macro>

(2)宏调用

<xacro:宏名称 参数1=xxx 参数2=xxx/>

(3)文件包含
机器人由多部件组成,不同部件可能封装为单独的xacro文件,最后再将不同的文件集成,组合为完整机器人,可以使用文件包含实现。

<robot name="xxx" xmls:xacro="http://wiki.ros.org/xacro">
      <xacro:include filename="my_base.xacro">
      <xacro:include filename="my_camera.xacro">
      <xacro:include filename="my_laser.xacro">
      ....
</robot>

在launch文件中直接加载xacro的方法

command="$(find xacro)/xacro $(find 文件名)/urdf/.urdf.xacro(文件名)"

2、Gazebo 加载单个机器人模型

<launch>
 
 		<!-- 将Urdf文件的内容加载到参数服务器-->
 		<param name="robot_description"textfile=“$(find文件夹名)/urdf/.urdf文件“>

		<!--启动gazebo-->
		<include file="$(find gazebo_ros)/launch/empty_world.launch"/>

		<!--在gazebo中显示机器人模型-->
		<node pkg="gazebo_ros"type="spawn_model"name="model"args="-urdf-model mycar-param robot_description"/>
		</launch>

二、原先launch文件代码

在大致看了上述的说明后就能看懂,在gazebo仿真环境中加载一个机器人的launch文件了。
gazebo仿真可以多个机器人吗,ROS学习系列,机器人,ROS,人工智能,多机器人编队
复制粘贴如下:根据上面的基本概念可以大概的明白代码所描述的内容。
(如我在图中添加的注释)

<launch>
<!--在所提供的burger, waffle, waffle_pi三种机器人呢模型中选择要加载的类型-->
  <arg name="model" default="$(env TURTLEBOT3_MODEL)" doc="model type [burger, waffle, waffle_pi]"/> 

<!--设置机器人的x,y,z坐标,相当于宏定义方面下面使用和后面的修改-->
  <arg name="x_pos" default="-2.0"/>
  <arg name="y_pos" default="-0.5"/>
  <arg name="z_pos" default="0.0"/>

 <!-- 运行gazebo仿真环境 -->
  <include file="$(find gazebo_ros)/launch/empty_world.launch">
    <arg name="world_name" value="$(find turtlebot3_gazebo)/worlds/turtlebot3_world.world"/>
    <arg name="paused" value="false"/>
    <arg name="use_sim_time" value="true"/>
    <arg name="gui" value="true"/>
    <arg name="headless" value="false"/>
    <arg name="debug" value="false"/>
  </include>

<!--在launch文件中直接加载机器人xacro模型描述文件-->
  <param name="robot_description" command="$(find xacro)/xacro --inorder $(find turtlebot3_description)/urdf/turtlebot3_$(arg model).urdf.xacro" />

<!--在gazeb中显示机器人模型,并设置初始的坐标位置-->
  <node pkg="gazebo_ros" type="spawn_model" name="spawn_urdf"  args="-urdf -model turtlebot3_$(arg model) -x $(arg x_pos) -y $(arg y_pos) -z $(arg z_pos) -param robot_description" />

</launch>

gazebo启动结果如下:

gazebo仿真可以多个机器人吗,ROS学习系列,机器人,ROS,人工智能,多机器人编队

三、 修改launch文件加载多个机器人

在理解了launch调用和加载的各项指令后,接下来实现在gazebo中加载多个机器人,相比于单机器人,多机器人仿真需要在原基础上加入标签,做到用同样的descripion配置文件加载多个独立的机器人。

具有ns属性,可以将节点组推送到单独的命名空间中。在前面的基础上,我通过指令touch + test(文件名).launch创建了新的test.launch文件在launch文件中改写成以下内容:
gazebo仿真可以多个机器人吗,ROS学习系列,机器人,ROS,人工智能,多机器人编队

<launch>
<!--首先我将原先选择机器人模型,全部设置为了waffle机器人模型-->
  <arg name="model" default="$(env TURTLEBOT3_MODEL)" doc="model type turtlebot3_waffle"/>

<!--因为需要给每个机器人设置初始位置,我将原先的宏定义删除,选择直接在加载的时候定义机器人的初始位置-->

  <!-- 运行gazebo仿真环境 --> <!-- 没有变化 -->
  <include file="$(find gazebo_ros)/launch/empty_world.launch">
    <arg name="world_name" value="$(find turtlebot3_gazebo)/worlds/turtlebot3_world.world"/>
    <arg name="paused" value="false"/>
    <arg name="use_sim_time" value="true"/>
    <arg name="gui" value="true"/>
    <arg name="headless" value="false"/>
    <arg name="debug" value="false"/>
  </include>

 <!-- 加载多个机器人时需要加入<group>标签 -->
 <!-- 注意每个机器人都要有一个命名空间,且名字不同-->
 <!--.urdf.xacro后要声明且在下面显示模型后面也要跟上命名空间的名字 -->
<group ns="1">
  <param name="robot_description" command="$(find xacro)/xacro --inorder '$(find turtlebot3_description)/urdf/turtlebot3_waffle.urdf.xacro' ns:=1" />
   <!---param robot_description后可以指定机器人的初始位置,类似于默认参数,如果不传入数据默认机器人的初始位置是(000),传入实参后会改变初始位置 -->
  <node pkg="gazebo_ros" type="spawn_model" name="spawn_urdf"  args="-urdf -model 1 -param robot_description -x -2.0" />
</group>

<group ns="2">
  <param name="robot_description" command="$(find xacro)/xacro --inorder '$(find turtlebot3_description)/urdf/turtlebot3_waffle.urdf.xacro' ns:=2" />
  <node pkg="gazebo_ros" type="spawn_model" name="spawn_urdf"  args="-urdf -model 2 -param robot_description -x -1.5" />
</group>

<group ns="3">
  <param name="robot_description" command="$(find xacro)/xacro --inorder '$(find turtlebot3_description)/urdf/turtlebot3_waffle.urdf.xacro' ns:=3" />
  <node pkg="gazebo_ros" type="spawn_model" name="spawn_urdf"  args="-urdf -model 3 -param robot_description -x -2.0 -y 0.7" />
</group>

<group ns="4">
  <param name="robot_description" command="$(find xacro)/xacro --inorder '$(find turtlebot3_description)/urdf/turtlebot3_waffle.urdf.xacro' ns:=4" />
  <node pkg="gazebo_ros" type="spawn_model" name="spawn_urdf"  args="-urdf -model 4 -param robot_description -x -1.5 -y 0.7" />
</group>

</launch>

运行test.launch文件,即可在Gazebo仿真环境中加载多个机器人模型。
gazebo仿真可以多个机器人吗,ROS学习系列,机器人,ROS,人工智能,多机器人编队


总结

在Gazebo仿真环境中成功加载了多个机器人模型,接下来想办法实现在Gazebo中实现多机器人的编队控制。文章来源地址https://www.toymoban.com/news/detail-860311.html

到了这里,关于在gazebo仿真环境中加载多个机器人的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Gazebo机器人仿真

    本文基于 B站冰达机器人Gazebo教程,针对在仿真过程中出现的问题提出相应解决办法。 目标 : 设计出一台具备激光雷达、IMU和相机的机器人仿真模型用于相关实验。 获取实验功能包: 克隆完成后在工作空间路径下编译功能包 安装其他依赖 获取gazebo模型库: 自制实验场景

    2024年02月16日
    浏览(48)
  • 机器人Gazebo仿真应用

      Gazebo是一个优秀的功能强大开源物理环境仿真平台,具备强大的物理引擎,高质量的图形渲染等优异优点,可在机器人和周围环境加入多种物理属性,对机器人传感器信息通过插件形式加入仿真,并以可视化的方式进行显示。通过终端命令“roscore”启动ROS,重新打开一个终

    2024年02月04日
    浏览(52)
  • 机器人仿真-gazebo学习笔记(4)xacro和传感器添加

    URDF文件不具备代码复用的特性(在上一篇文章也能发现,其实左右轮是极其相似的但还是要单独描述),一个复杂的机器人模型会拥有大量了的传感器和关节组件,这时候使用URDF文件就太难阅读了。精简化、可复用、模块化的xacro文件来了。 1.优势: ·精简模型代码: xacro是一

    2024年02月06日
    浏览(62)
  • 基于Gazebo搭建移动机器人,并结合SLAM系统完成建图仿真

    博客地址:https://www.cnblogs.com/zylyehuo/ gazebo小车模型创建及仿真详见之前博客 gazebo小车模型(附带仿真环境) - zylyehuo - 博客园 gazebo+rviz 仿真 - zylyehuo - 博客园 参考链接 Autolabor-ROS机器人入门课程《ROS理论与实践》 安装 gmapping 包(用于构建地图): sudo apt install ros-melodic-gmapping 安

    2024年02月04日
    浏览(52)
  • 【ROS仿真实战】获取机器人在gazebo位置真值的三种方法(三)

    在ROS和Gazebo中,获取机器人的位置信息通常通过ROS消息传递进行。在这篇文章中,我们将介绍三种获取机器人在Gazebo中位置真值的方法:使用ROS tf库、使用自己编写Gazebo Model Plugin以及libgazebo_ros_p3d Plugin。 ROS tf库是ROS中用于管理坐标变换的库,它可以通过ROS消息传递来管理不

    2024年02月06日
    浏览(74)
  • (二)基于wpr_simulation 的Ros机器人运动控制,gazebo仿真

    一、创建工作空间          二、下载wpr_simulation源码 git clone https://github.com/6-robot/wpr_simulation.git 三、编译 ~/catkin_make  目录下catkin_make source devel/setup.bash 四、运行 roslaunch wpr_simulation wpb_simple.launch 启动另一个终端,执行: rosrun rqt_robot_steering rqt_robot_steering 鼠标改变速度和角

    2024年01月20日
    浏览(59)
  • 【ROS2机器人入门到实战】Gazebo仿真插件之两轮差速

    当前平台文章汇总地址:ROS2机器人从入门到实战 获取完整教程及配套资料代码,请关注公众号鱼香ROS获取 教程配套机器人开发平台:两驱版| 四驱版 为方便交流,搭建了机器人技术问答社区:地址 fishros.org.cn 小鱼又来了,完成了上节课的Gazebo加载FishBot,但是机器人还是不

    2024年02月03日
    浏览(70)
  • 基于Gazebo搭建移动机器人,并结合SLAM系统完成定位和建图仿真

    博客地址:https://www.cnblogs.com/zylyehuo/ gazebo小车模型创建及仿真详见之前博客 gazebo小车模型(附带仿真环境) - zylyehuo - 博客园 gazebo+rviz 仿真 - zylyehuo - 博客园 参考链接 Autolabor-ROS机器人入门课程《ROS理论与实践》 安装 gmapping 包(用于构建地图): sudo apt install ros-melodic-gmapping 安

    2024年02月04日
    浏览(47)
  • Ubuntu18.04 Turtlebot2机器人移动控制 Rviz Gazebo仿真实现

    操作系统为ubuntu18.04 安装ROS Melodic Turtlebot2,很多大佬分享了详细的安装过程,在这里就不多赘述,安装遇到问题多百度,大部分都是可以解决的。 前期学习了赵虚左老师的ROS入门课程,结合Turtlebot2资料这里方便大家打开,放的创客制造的文档,也推荐大家去看官方文档 首先

    2023年04月25日
    浏览(74)
  • ROS仿真软件Turtlebot-Gazebo的安装使用以及错误处理[机器人避障]

            很多时候由于机器人价格比较贵,而且会因为环境因素、操作失误或者摔坏等,所以我们可以先在仿真软件上做测试,也可以避免这些问题,虽然没有那么真实感,可毕竟是免费的嘛。我们可以在这些仿真的机器人身上去学习如何控制机器人,读取它们的传感器数

    2024年02月08日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包