理解turtlebot_gazebo包里的turtlebot_world.launch文件源码

预备知识

一些标签的含义可以参考:
https://blog.csdn.net/u012424737/article/details/78854536

 $(env TURTLEBOT_GAZEBO_WORLD_FILE)
 # env 环境变量 因为后面没有默认值  在终端下必须对TURTLEBOT_GAZEBO_WORLD_FILE赋值
 $(optenv TURTLEBOT_BASE kobuki)
 #optional environment,TURTLEBOT_BASE环境变量,值为kobuki(韩国的一款小车)
<include>  <!--嵌套引用另一个launch文件>

源码:

1、turlebot_world.lauch文件

<launch>
  <!--定义一些参数 -->
  <arg name="world_file"  default="$(env TURTLEBOT_GAZEBO_WORLD_FILE)"/>
  <arg name="base"      value="$(optenv TURTLEBOT_BASE kobuki)"/> <!-- create, roomba  可选的机器人款式 -->
  <arg name="battery"   value="$(optenv TURTLEBOT_BATTERY /proc/acpi/battery/BAT0)"/>  <!-- /proc/acpi/battery/BAT0 --> 
  <arg name="gui" default="true"/>
  <arg name="stacks"    value="$(optenv TURTLEBOT_STACKS hexagons)"/>  <!-- circles, hexagons 底盘形状  圆形,六角形--> 
  <arg name="3d_sensor" value="$(optenv TURTLEBOT_3D_SENSOR kinect)"/>  <!-- kinect, asus_xtion_pro  3d传感器 --> 

  <!-- 打开一个gazebo空白地图,将world_file的地图加载进去-->
  <include file="$(find gazebo_ros)/launch/empty_world.launch">
    <arg name="use_sim_time" value="true"/>
    <arg name="debug" value="false"/>
    <arg name="gui" value="$(arg gui)" />
    <arg name="world_name" value="$(arg world_file)"/>
    <!--将empty.world替换了 -->
  </include>
  
  <!-- 加载机器人模型  引用kobuki.launch.xml文件  接下来会仔细分析该文件  传递了三个参数的值-->
  <include file="$(find turtlebot_gazebo)/launch/includes/$(arg base).launch.xml">
    <arg name="base" value="$(arg base)"/>
    <arg name="stacks" value="$(arg stacks)"/>
    <arg name="3d_sensor" value="$(arg 3d_sensor)"/>
  </include>
  
  <!-- 发布机器人的状态 -->
  <node pkg="robot_state_publisher" type="robot_state_publisher" name="robot_state_publisher">
    <param name="publish_frequency" type="double" value="30.0" />
  </node>
  
  <!-- Fake laser 虚假的激光???? -->
  <node pkg="nodelet" type="nodelet" name="laserscan_nodelet_manager" args="manager"/>
  <node pkg="nodelet" type="nodelet" name="depthimage_to_laserscan"
        args="load depthimage_to_laserscan/DepthImageToLaserScanNodelet laserscan_nodelet_manager">
    <param name="scan_height" value="10"/>
    <param name="output_frame_id" value="/camera_depth_frame"/>
    <param name="range_min" value="0.45"/>
    <remap from="image" to="/camera/depth/image_raw"/>
    <remap from="scan" to="/scan"/>
  </node>
</launch>

2、kobuki.launch.xml
可以帮助理解的网址:https://zhuanlan.zhihu.com/p/90489579

<launch>
  <arg name="base"/>
  <arg name="stacks"/>
  <arg name="3d_sensor"/>
 
   <!-- 加载机器人模型  turtlebot_description里有比较多的机器人模型文件 可替换-->
   <!-- xarco.py作用是为了向后兼容 xarco文件是urdf的改良型建模文件  这一段是重点 -->
  <arg name="urdf_file" default="$(find xacro)/xacro.py '$(find turtlebot_description)/robots/$(arg base)_$(arg stacks)_$(arg 3d_sensor).urdf.xacro'" />  
  <param name="robot_description" command="$(arg urdf_file)" />
 
  <!-- Gazebo model spawner  在gazebo中加载机器人模型!!!-->
  <node name="spawn_turtlebot_model" pkg="gazebo_ros" type="spawn_model"
        args="$(optenv ROBOT_INITIAL_POSE) -unpause -urdf -param robot_description -model mobile_base"/>
 
  <!-- Velocity muxer 这一块都是kobuki机器人的控制器部分  没太看懂-->
  <node pkg="nodelet" type="nodelet" name="mobile_base_nodelet_manager" args="manager"/>
  <node pkg="nodelet" type="nodelet" name="cmd_vel_mux"
        args="load yocs_cmd_vel_mux/CmdVelMuxNodelet mobile_base_nodelet_manager">
    <param name="yaml_cfg_file" value="$(find turtlebot_bringup)/param/mux.yaml" />
    <remap from="cmd_vel_mux/output" to="mobile_base/commands/velocity"/>
  </node>

  <!-- Bumper/cliff to pointcloud (not working, as it needs sensors/core messages) 不工作,因为他需要传感器或者核心信息  暂时不详细看-->
  <include file="$(find turtlebot_bringup)/launch/includes/kobuki/bumper2pc.launch.xml"/>
</launch>

3.turtlebot_description功能包
在这个功能包的robots文件夹下还有这些机器人模型
在这里插入图片描述

  • 1
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值