ROS之launch文件解析

ROS中的launch文件用于管理和启动多个节点。它允许同时运行多个节点,通过XML格式定义节点、参数、重映射等。launch文件可以包含namespace、节点重启策略、输出重定向以及使用arguments进行参数传递。通过`roslaunch`命令,可以指定verbosity级别、运行在特定namespace内,甚至控制节点的日志输出。此外,launch文件还能通过``标签包含其他launch文件,通过``定义局部参数,并通过``进行名称映射。
摘要由CSDN通过智能技术生成

Launch 文件

1 使用launch文件

1.1 运行launch文件

$ roslaunch package_namelaunch_file_name

Eg: roslaunchturtlesim example.launch

(1)Tip1: rosrun只能运行一个nodes, roslaunch可以同时运行多个nodes.

Tip2: launch文件可以不被包含于package中。此时,只需指出该launch文件的绝对路径,即可运行。

$ roslaunchcompletely_path

Eg:$ roslaunch~/opt/ros/indigo/share/turtlesim/launch/example.launch

Tip3: 为便于执行,每个node最好是相互独立的。

(2)详细显示(requestverbosity)

$ roslaunch -vpackage_name launch_file_name

(3) 结束launch文件

ctrl+c

2 创建launch文件

(1) launch文件一般以.launch后缀作为文件名,放在packagelaunch文件夹下。最简单的launch文件可以仅包含几个nodes

(2) Launch文件是XML文件,每个XML文件必须有一个root element而launch文件的rootelement由一对launch 标签定义。

<launch>

...

</launch>

Launch文件中的其他elements必须都在这一对tags之间。

(3) launch文件的核心是一系列nodeelements,每个node element启动一个node。Node element看起来如下:

<node

  pkg=”package_name” type=”executable_name”name=”node_name”

/>

Tip1: 最后的“/”是必不可少的

Tip2: 也可以写成<node pkg=.. type=... name=...></node>

如果该node中有其他tags,则必须使用这种形式。

(4) 一个node element包含三个必须的属性:pkg, type, name.

pkg和type属性指出ROS应该运行哪个pkg中的哪个node,注意:此处的type是可执行文件的名称name则是可以任意给出的,它覆盖了原有文件中ros::init指定的node name

(5) 使用匿名(anonymousname)

  name=”$(anon base_name)”

(6) node 日志文件(log file)

运行roslaunch和用rosrun运行单个节点的区别之一是,默认情况下,roslaunch运行的nodes的标准输出会重定向到logfile,不显示在控制台。   ??????????????

该日志文件的位置和名称如下:

~/.ros/log/run_id/node_name-number-stdout.log

其中,run_id是master启动后生成的特殊标识符,number是表示nodes数量的整数。如,turtlesim-1-stdout.log;teleop_key-3-stdout.log.

(7) 输出到控制台

output属性, output=screen”;这种方法仅显示一个node

若显示所有nodes的输出,用--screen命令行。

$ roslaunch--screen package_name launch_file_name

如果正在运行的文件没有显示想要对输出,可以查看该node属性集中是否有 output=screen.

(8) 要求重生(requestrespawning)

    开启所有nodes后,roslaunch会监视每个node,记录那些仍然活动的nodes。对于每个node,当其终止后,我们可以要求roslaunch重启该node,通过使用respawn属性。

    respawn=”true”

(10) 必需的nodes

required属性与respawn相反,不能同时对同一个node使用。当一个必需的节点终止时,roslaunch会做出响应,终止其他所有的节点并退出它自己。所以如果你给单个的一个节点同时设置了这2个属性,roslaunch 命令会抱怨

required=”true”

当一个required node终止后,所有其他的nodes都会终止,并退出。这种命令有时很有用。比如,当一个很重要的node失败后,整个会话都会被扔掉,那些加上了respawn属性的nodes也会停止。

(11) 在独立的窗口运行各nodes

我们在各自的termin运行rosrun node_name;但是运行roslaunch时,所有的nodes

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值