ROS学习记录10——.launch文件的编写与使用

零.前言

roslacunch,只是方便我们一次运行大量节点,或者通过单个脚本运行多个节点的工具。
这部分没啥好讲的,主要使用为机翻+调校官方文档,外加一些实例,
官方文档的地址:roslaunch/XML

一.元素结构

roslaunch也是由xml语言构成,文件后缀为.launch.
launch文件因该由开始与结束,其他参数均为该TAG的子元素。
其子元素有:
``
文本着重会讲个别的元素。

二.标签讲解

2.1

标记指定您希望启动的ROS节点。
这是最常见的roslaunch标签,因为它支持最重要的功能:启动和关闭节点。
roslaunch不保证节点开始的顺序,因为无法从外部知道何时完全初始化节点,因此所有启动的代码都必须能够按任意顺序启动。
举例:

以带有命令行参数--test的方式去调用rospy_tutorials包中的可执行文件listener.py ,来启动listener1节点。如果该节点意外终止,则会重新启动该节点。

里可以添加以下常见的参数

  • pkg=“mypackage”, 包名
  • type=“nodetype” ,执行文件的名称如果是用Python编写的就填写xxx.py,如果是cpp就写编译生成的可执行文件名
  • name=“nodename”,这将会覆盖掉ros::init()定义的node_name
  • args=“arg1 arg2 arg3”, 带的参数
  • respawn=“true”,默认为false,节点挂掉/退出后是否重新启动。
  • required=“true”,如果该节点退出/挂掉,会杀死roslaunch的所有进程。
  • clear_params=“true|false”,在启动之前,删除节点的私有名称空间中的所有参数。
  • output=“log|screen”, 若为screen,stdout/stderr 会显示在屏幕上,若为logstdout/stderr 会被记录到$ROS_HOME/log,仅显示stderr。注stderr是那个红色的错误字体。

2.2

比如这行代码则为整个ros运行期间创建一个publish_frequency的变量(参数),类型为double,值为10.0
也就是说,这个变量在节点中也可以使用。

2.3

类似于linux的bash文件,通过这样可以定义一个在该launch文件里有效的变量名。比如, 这样,后面的launch文件里所有的$(arg test)均会被"123"替换.

三.实例

本节通过启动上篇文章的.urdf来实现通过自定义launch来实现Rviz的启动。
首先创建功能包,我就以学习记录3的top举例。(好了,假设现在功能包创建好了)
创建urdf文件夹并复制我们上篇的意大利炮进文件夹。
ROS学习记录10——.launch文件的编写与使用_第1张图片

创建launch文件夹和.launch文件

<launch>
    <param name="robot_description" textfile="$(find top)/urdf/mortar.urdf" />
    <param name="use_gui" value="true"/>
    <node name="joint_state_publisher" pkg="joint_state_publisher" type="joint_state_publisher" >node>
    <node name="robot_state_publisher" pkg="robot_state_publisher" type="state_publisher" />
    <node name="rviz" pkg="rviz" type="rviz" args="-d $(find top)/urdf/config.rviz" />
launch>

解释:

  • robot_description 这个变量是rviz节点会用的,需要写入urdf的文件路径。$(find xxx)可以找到xxx包的位置,这样textfile就是我们的路径了。
  • use_gui 是下个节点的需要的变量,用于是否可视化显示调节关节移动的信息。
  • 紧接着的两个node是用于发布joint的状态和发布joint和link相对位置(TF实现)的节点。
  • rviz是显示rviz的节点,且添加了参数,若有rviz的配置文件,则可以读取,若没有,等会儿保存一个就行。

如果没有出现机器人模型,要么是工作空间的问题,要么就是launch的代码与你工作空间或者文件不匹配
ros noetic需要改成

<launch>
    <param name="robot_description" textfile="$(find slam_nb)/urdf/car.urdf" />
    <param name="use_gui" value="true"/>
    <node name="joint_state_publisher" pkg="joint_state_publisher_gui" type="joint_state_publisher_gui" />
    <node name="robot_state_publisher" pkg="robot_state_publisher" type="robot_state_publisher" />
    <node name="rviz" pkg="rviz" type="rviz" args="-d $(find slam_nb)/urdf/config.rviz" required="true">node>
launch>

现在 我们运行下这个launch:

roslaunch top show_mortar.urdf

得到这个
ROS学习记录10——.launch文件的编写与使用_第2张图片
我们暂时将这个改为base_link:
ROS学习记录10——.launch文件的编写与使用_第3张图片
再添加显示RobotModel的选项:
ROS学习记录10——.launch文件的编写与使用_第4张图片我们的迫击炮就出来了:
ROS学习记录10——.launch文件的编写与使用_第5张图片这里选择file->save config as: 到我们的launch文件里所描述的位置
ROS学习记录10——.launch文件的编写与使用_第6张图片ROS学习记录10——.launch文件的编写与使用_第7张图片
再次运行就默认配置啦:
ROS学习记录10——.launch文件的编写与使用_第8张图片

你可能感兴趣的:(ROS学习记录,linux,ros,rviz,建模,gazebo)