ROS的launch启动文件

ros中如果需要多节点同时启动,如果在终端依次输入太麻烦了。launch启动文件就可以实现多节点的启动和配置,本内容主要是对ROS的学习做一下记录欢迎大家一起讨论学习,下面直接上干货。

1.<launch>

  launch文件是一个XML文件,launch文件必须含有一个根元素。launch中所有的内容都要包含在这个标签内。

<launch>
...
</launch>

2.<node>

启动文件的核心是启动ROS节点,这个标签笔者会重点讲解,采样<node>标签定义,语法如下:

<node name="listener1" pkg="rospy_tutorials" type="listener.py" args="--test" respawn="true" />

这个标签的功能最主要的是pkg,type和name。pkg就是你功能包的名字,type就是你可执行文件的名字。name呢就是覆盖你在程序开始ros::init()中节点的名字。我们还有以下属性:

                        args                           传递的参数
                        output                 日志输出(log/screen)
                        respawn        “true”,如果节点失效则重启(默认flase)
                        required        “true”,如果节点失效则关闭launch(默认不设置)
                        ns                 在此命名空间中运行此节点

前面几个属性都很好理解,ns这个参数我们可以来实验一下,我们创建一个工作空间再创建一个launch文件,这个文件功能很简单就是启动ROS自带的小海龟。

<launch>
    <node pkg="turtlesim" type="turtlesim_node" name="myturle" ns="test1" />
    <node pkg="turtlesim" type="turtle_teleop_key" name="mykeyturle" />

</launch>

这里我们将节点重新取名字,并且设置turtlesim_node在test1工作空间下,我们在终端输入rqt_graph:

 可以看出我们在节点前加入/test1,把属于/myturle的节点前都加上这个命名空间。我们再到终端输入rostopic list:

 可以看到我们的话题中也都加上了test1的命名空间,这样在运行别功能包也可以直接在别基础上修改一下前面的名称了。

3.<param>

该标签是ROS系统中运行的参数,存储在参数服务器中(roscore)简单的来说就是方便各个节点来读取的参数:

<param name="test1" value="odom" />

在程序中需要读取可以使用ros::parm::get()获取,或者使用ros句柄中的函数如下:

 ros::NodeHandle private_nh("~"); //Create a node handle //创建节点句柄
 private_nh.param<std::string>("usart_port_name",  usart_port_name,  "/dev/wheeltec_controller"); 

4.<rosparam>

这个标签的功能是帮助我们获取.yaml文件中的参数并且加载到参数服务器中,我们可以设置command属性为load和命名空间ns:

<rosparam file="你的路径/你的文件.yaml" command="load" ns="tets" />

5、<arg>

这个标签就是只在launch文件内生成有效的参数,和程序中的临时变量功能差不多。一般是给在param中使用,比如我们需要设置非常多的param就需要在launch中设置一个参数。并且赋值给param同时我们如果需要修改,只需要到arg标签下修改。

<arg name="hoge" value="fuga" />
<param name="foo" value="$(arg hogo)" />
<node pkg="you" type="hello" name="test" args="$(arg hogo)" />

6.<group>

这个标签有两个功能一个是划分若干个节点进入同一个命名空间,一个是条件判断

1划分命名空间
<group ns="group_name">
    ...(这里运行你的节点)
</group>

2条件判断
<group if="condition">

    ...
</group>

7.<include>

该标签是在launch文件中启动其他的launch文件,类似c中的<include>

<include file="你的路径/你的文件.launch" />

当然还有其他以下标签,这里笔者就不记录了。如果用到就会加入进来,上面都是经常使用到的标签,学习ros中的launch可以多看看别写的launch文件,这个也不需要死记硬背忘记了回头查阅一下就行。如果想要了解的更加详细一下为ROS官网教程:

roslaunch/XML - ROS Wiki

猜你喜欢

转载自blog.csdn.net/HHB791829200/article/details/128875561