launch文件详解

哇居然有小朋友关注我,为我唯一的粉丝更新一下hhh。考虑以后把记录都写在上面好啦

看到一篇写的很全的文章,mark一下,也是方便以后查阅

https://blog.csdn.net/qq_33444963/article/details/77893881

wiki连接

http://wiki.ros.org/roslaunch/XML

 

机器人是一个系统工程,通常一个机器人运行操作时要开启很多个node,对于一个复杂的机器人的启动操作应该怎么做呢?当然,我们并不需要每个节点依次进行rosrun,ROS为我们提供了一个命令能一次性启动master和多个node。该命令是:

roslaunch pkg_name file_name.launch

roslaunch命令首先会自动进行检测系统的roscore有没有运行,也即是确认节点管理器是否在运行状态中,如果master没有启动,那么roslaunch就会首先启动master,然后再按照launch的规则执行。launch文件里已经配置好了启动的规则。所以roslaunch就像是一个启动工具,能够一次性把多个节点按照我们预先的配置启动起来,减少我们在终端中一条条输入指令的麻烦。

<launch>			<!--根标签-->
<node>				<!--需要启动的node及其参数-->
<include>			<!--包含其他launch-->
<machine>			<!--指定运行的机器-->
<env-loader>		        <!--设置环境变量-->
<param>				<!--定义参数到参数服务器-->
<rosparam>			<!--启动yaml文件参数到参数服务器-->
<arg>				<!--定义变量-->
<remap>				<!--设定参数映射-->
<group>				<!--设定命名空间-->
</launch>			<!--根标签-->

用好group,remap,arg,可以省很多事。arg和param作为单独的标签出现,则作用在整个文件;如果出现在node标签下,则作为局部变量作用该节点下。因为参数名后面跟的是缺省值,给过一次后参数值会从外向里一层层传递下去,就是说可以在已有的launch文件上再封装一层,改变参数值更安全。

贴一个在写的launch文件

<?xml version="1.0"?>

<launch>
  <arg name="paused" default="false"/>
  <arg name="use_sim_time" default="true"/>
  <arg name="gui" default="true"/>
  <arg name="headless" default="false"/>
  <arg name="debug" default="false"/>
  <arg name="model" default="$(find hector_quadrotor_description)/urdf/quadrotor.gazebo.xacro" />

  <include file="$(find gazebo_ros)/launch/empty_world.launch">
    <arg name="paused" value="$(arg paused)"/>
    <arg name="use_sim_time" value="$(arg use_sim_time)"/>
    <arg name="gui" value="$(arg gui)"/>
    <arg name="headless" value="$(arg headless)"/>
    <arg name="debug" value="$(arg debug)"/>
  </include>

  <group ns="uav1">
     <include file="$(find hector_quadrotor_gazebo)/launch/spawn_quadrotor.launch">
       <arg name="name" value="uav1" />
       <arg name="tf_prefix" value="uav1" />
       <arg name="model" value="$(arg model)" />
       <arg name="y" value="-1.0" />
     </include>
  </group>

  <node pkg="rosservice" type="rosservice" name="enable_motors" args="call --wait /uav1/enable_motors true"/>
</launch>

附:launch文件中起service的方法

<node pkg="rosservice" type="rosservice" name="enable_motors" args="call --wait /uav1/enable_motors true"/>

https://answers.ros.org/question/11271/call-a-service-at-startup-with-a-launch-file/

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值