ROS launch文件

  • 1.arg标签
  • 2.group标签
  • 3.param标签
  • 4.ns标签
<!--指明了一个 xml 的版本><?xml version="1.0"?><launch><!-- support multi robot --><arg name="robot_name" default=""/>   <!-- support multi robot --><!-- robot frame --><arg name="base_frame"       default="base_footprint" />    <arg name="odom_frame"       default="odom" /><arg name="imu_frame"       default="imu" /> <!-- pub topic --><arg name="odom_topic"       default="odom" /><!-- do NOT use '/' in topic name--><arg name="imu_topic"       default="imu" /><arg name="battery_topic"       default="battery" /><!-- sub topic --><arg name="cmd_vel_topic"       default="cmd_vel" /> <!-- do NOT use '/' in topic name--><arg name="ackermann_cmd_topic"       default="ackermann_cmd" /><!-- config param --><arg name="pub_imu"       default="False" /><arg name="sub_ackermann"       default="False" /><arg name="pub_sonar"       default="False" /><!-- base control node --><!--ros namespace name can NOT be empty,so need evaluate use multi robot or not--><group if="$(eval robot_name == '')"><node name="base_control"   pkg="base_control"  type="base_control.py" output="screen"><param name="baudrate"   value="115200"/>  <param name="port"  value='/dev/move_base'/><param name="base_id"    value="$(arg base_frame)"/> <!-- base_link name --><param name="odom_id"    value="$(arg odom_frame)"/>      <!-- odom link name --><param name="imu_id"    value="$(arg imu_frame)"/>      <!-- imu link name --><param name="sub_ackermann" value="$(arg sub_ackermann)"/> <!-- sub ackermann topic or not --></node></group>--><group unless="$(eval robot_name == '')"><group ns="$(arg robot_name)"><node name="base_control"   pkg="base_control"  type="base_control.py" output="screen"><param name="baudrate"   value="115200"/>  <param name="port"  value='/dev/move_base'/><param name="base_id"    value="$(arg robot_name)/$(arg base_frame)"/> <!-- base_link name --><param name="odom_id"    value="$(arg robot_name)/$(arg odom_frame)"/>      <!-- odom link name --><param name="imu_id"    value="$(arg robot_name)/$(arg imu_frame)"/>      <!-- imu link name --><param name="sub_ackermann" value="$(arg sub_ackermann)"/> <!-- sub ackermann topic or not --></node></group></group></launch>

1.arg标签

这里面arg标签用来在 launch 文件中声明参数。

default的内容则是对参数赋值。如无参数传入则使用 launch 文件中定义的值。

也可在启动launch文件时传入参数的值。

传入 pub_imu 的值为 true
roslaunch base_control base_control.launch pub_imu:=ture

2.group标签

group标签会将group里的内容划分成一个组。

里面用到了一个if unless语句,如下。意思是如果robot_name为空,执行第一个group的内容;否则执行第二个。

<group if="$(eval robot_name == '')"><group unless="$(eval robot_name == '')">

下面这个代码:节点的名称name、该节点所在的包名pkg,节点的可执行文件type、输出方式output,“screen”表示输出在当前终端屏幕。

<node name="base_control"   pkg="base_control"  type="base_control.py" output="screen">

3.param标签

下面这个代码:param标签也是用来声明参数。

param声明的变量是节点所接收的,用来设置传入节点的参数,arg的参数是launch文件所接收的。

参数的值是通过value直接传入的。

可以传入固定值,如下。

 <param name="baudrate"   value="115200"/>

可以传入参数,如下。下面这个value值是arg标签声明的参数base_frame

<param name="base_id"    value="$(arg base_frame)"/> <!-- base_link name -->
<param name="odom_id"    value="$(arg odom_frame)"/>      <!-- odom link name -->

4.ns标签

第二个group里面还有group标签,对应ns。

<group unless="$(eval robot_name == '')"><group ns="$(arg robot_name)">

以imu_id话题为例,传入robot_name为abc,查看话题列表显示的就是abc/imu_id,这样可防止话题名重名。

下面是之前写的一个例子https://blog.csdn.net/qq_40828914/article/details/120977892

  <group ns="turtlesim1"><node pkg="turtlesim" name="sim" type="turtlesim_node"/></group><group ns="turtlesim2"><node pkg="turtlesim" name="sim" type="turtlesim_node"/></group>

此处我们创建了两个分组,并以命名空间(namespace)标签来区分,其中一个名为turtulesim1,另一个名为turtlesim2,两个分组中都有相同的名为sim的turtlesim节点。这样可以让我们同时启动两个turtlesim模拟器,而不会产生命名冲突。

ROS launch文件相关推荐

  1. ROS学习(七):ROS launch 文件

    ROS launch 文件: 为了方便.高效地操作多个节点,可以编写 .launch 文件,然后用 roslaunch 命令运行. launch文件的格式是: <launch> ... & ...

  2. ROS - launch文件

    launch文件是个XML格式的文件,而XML格式文件是由各种标签标识组成的. <launch><node pkg="prometheus_demo" type= ...

  3. ros launch文件编写和节点启动顺序控制

    ROS可以通过launch文件进行节点的管理.初始参数的设置,但是launch文件不能指定节点的启动顺序,因此本文简单介绍下通过launch进行节点启动管理,通过shell来控制节点启动顺序. 1,我 ...

  4. ROS中launch文件使用笔记

    1. 常用标签 <launch> <!--根标签--> <node> <!--需要启动的node及其参数--> <include> < ...

  5. linux开机启动roscore,树莓派ubuntuMate系统中开机自启动ROS的launch文件

    0x00 为何需要开机自启动launch文件 在ROS开发后期阶段由于功能已经趋于稳定,因此就需要系统在一上电启动后就自动把ROS下的各节点程序加载运行,这样就省去了我们还得手动输入roslaunch ...

  6. ROS笔记(9) launch文件

    ROS笔记(9) launch文件 1. 简介 2. launch 3. node 4. param 5. rosparam 6. arg 7. remap 8. include 9. 简单的 lau ...

  7. Ros学习——launch文件解析

    launch文件的重点是:节点(node)元素的集合. roslaunch 则是让所有的节点共享同一个终端. 1.标签(元素)说明 1. group标签 2. node标签 <group ns= ...

  8. ROS:launch文件的语法规范

    在ROS应用中,一般涉及多个节点,而每个节点又有很多参数需要设置.为了方便.高效地操作多个节点,可以编写 .launch 文件,然后用roslaunch命令运行. 注意:存储启动文件的目录不一定必须命 ...

  9. ROS | launch启动文件的使用

    ROS | launch启动文件的使用 1. launch文件功能 2. launch文件语法 2.1 <launch>标签 2.2 <node>标签 2.3 <para ...

最新文章

  1. Python画出心目中的自己
  2. 走到尽头的技术-MVC
  3. 删除python类中所有未使用的方法?
  4. 用python进行股票数据分析_利用python进行股票数据分析
  5. J2EE 领域的一些技术框架结构图
  6. 2019Q1中高端人才报告:薪资TOP10,平均年薪超23万元
  7. 云鲸扫拖一体机器人说明书_云鲸小白鲸扫拖一体机器人好用吗?真实的测评带你走进智能化家居时代...
  8. 作为技术人员,年会中尽量找熟人喝酒
  9. 海康IP摄像头rtsp解码(ubuntu上使用)
  10. python制作录屏软件_自制录屏软件,不到30行代码(仅供学习研究)
  11. 从《学书津梁》看五体创作思路(篆书)
  12. jquery.nicescroll参数说明
  13. Hive考试练习题前75分答案
  14. 【报告分享】2021中国消费者洞察-埃森哲(附下载)
  15. 升级Mac内置的vim
  16. C语言数据的输入输出
  17. 计算机视觉算法岗 面试经验 (转载)
  18. Matlab中的while循环
  19. symbian 模拟器 相关
  20. 树洞外链更新至2.2-支持本地/远程储存,新增用户系统

热门文章

  1. Linux新安装后设置root密码
  2. 如何用c语言从txt文件中读取数据
  3. 转学到斯坦福大学计算机专业,斯坦福大学转学申请条件有哪些?
  4. 数字图像处理基础与应用 第四章
  5. log4j:WARN No appenders could be found for logger (org.apache.ibatis.logging.LogFactory). log4j:WARN
  6. 解释器android,Android的设计模式-解释器模式
  7. 前端处理带t的时间_适合家用的跑步机?阿迪达斯轻爵T-19i跑步机测评|adidas|商用机...
  8. usb连接不上 艾德克斯电源_艾德克斯HT3150联机和IT6720校准联机记
  9. python打开浏览器并最大化_我需要Selenium以更大的分辨率打开它的Web浏览器(最好是最大化)...
  10. 忘记mysql数据库名称_忘记MySQL数据库密码的解决办法