ROS的launch文件创建

1 使用launch文件
Launch文件是ROS提供的,可以同时运行多个nodes的文件。Launch文件以一种特殊的XML格式编写,在ROS packages中使用广泛。
创建launch功能包
首先在工作空间src下面创建一个功能包
$catkin_cteate_pkg package_launch (里面有cmakelistx和packxml文件,无src文件)
然后再在package_launch文件夹里面新建一个launch文件夹,把.launch文件放在里面即可(其实launch文件只要考虑绝对路径就可以)

1.1 运行launch文件
$ roslaunch package_name launch_file_name
Eg: roslaunch turtlesim example.launch

(1)Tip1: rosrun只能运行一个nodes, roslaunch可以同时运行多个nodes.
Tip2: launch文件可以不被包含于package中。此时,只需指出该launch文件的绝对路径,即可运行。

$ roslaunch completely_path

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

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

(2)详细显示(request verbosity)
$ roslaunch -v package_name launch_file_name

(3) 结束launch文件
ctrl+c

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

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



Launch文件中的其他elements必须都在这一对tags之间。
(3) launch文件的核心是一系列node elements,每个node element启动一个node。Node element看起来如下:

******<node
pkg=”package_name” type=”executable_name” name=”node_name”

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

Tip2: 也可以写成

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

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

pkg和type属性指出ROS应该运行哪个pkg中的哪个node,注意:此处的type是可执行文件的名称,而name则是可以任意给出的,它覆盖了原有文件中ros::init指定的node name。
在这里插入图片描述
(5) 输出到控制台

用output属性, output=”screen”;这种方法仅显示一个node。
若显示所有nodes的输出,用–screen命令行。
$ roslaunch --screen package_name launch_file_name
如果正在运行的文件没有显示想要对输出,可以查看该node属性集中是否有 output=”screen”.
output=”screen” 表示在终端中会显示程序执行的信息,比如话题订阅与发布的相关消息

(5)group属性

<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,两个组里面都使用相同的turtlesim节点并命名为’sim’。 这样可以让我们同时启动两个turtlesim模拟器而不会产生命名冲突。(当然如果直接用不同的命名也是可以的,比如一个叫sim_1,一个叫sim_2,这样也可以同时多次启动同一节点).

(6)roslaunch 修改参数 param rosparam

<launch>

	<param name="/turtle_number"   value="2"/>

    <node pkg="turtlesim" type="turtlesim_node" name="turtlesim_node">
		<param name="turtle_name1"   value="Tom"/>
		// <param name>放在这里跟上面的区别是命名空间不一样
		<param name="turtle_name2"   value="Jerry"/>

		<rosparam file="$(find learning_launch)/config/param.yaml" command="load"/>
	</node>
	//<rosparam file="$(find learning_launch)表示查找功能包,config在功能包下面的文件夹

    <node pkg="turtlesim" type="turtle_teleop_key" name="turtle_teleop_key" output="screen"/>

</launch>
(7)launch文件的嵌套
```xml
<launch>

	<include file="$(find learning_launch)/launch/simple.launch" />
//include表示嵌套另外一个launch文件,启动此launch时同时启动另外一个launch
    <node pkg="turtlesim" type="turtlesim_node" name="turtlesim_node">
		<remap from="/turtle1/cmd_vel" to="/cmd_vel"/>
	</node>
	//remap表示重映射  更改话题名.

</launch>
PS:对于启动py文件只要在type后面加上python文件的后缀.py

  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要创建一个ROSlaunch文件,你可以按照以下步骤进行操作: 1. 首先,在你的ROS工作空间中找到你想要创建launch文件的功能包。可以使用命令`cd <workspace>/src/<package_name>`进入该功能包的目录。 2. 在功能包的目录下创建一个名为`launch`的文件夹。你可以使用命令`mkdir launch`来创建。 3. 进入`launch`文件夹,使用文本编辑器创建一个新的launch文件。你可以使用命令`touch <launch_file_name>.launch`来创建一个空的launch文件。 4. 打开这个新创建的launch文件,并按照你的需求编写launch文件的内容。你可以参考ROSlaunch文件语法和示例来编写你的launch文件。在launch文件中,你可以指定要启动的节点、节点的参数配置以及节点之间的关系等。 5. 保存并关闭launch文件。 6. 现在,你可以使用`ros2 launch`命令来启动你的launch文件。使用命令`ros2 launch <package_name> <launch_file_name>`,将会启动整个系统,包括所有在launch文件中指定的节点和它们的配置。 总结起来,要创建一个ROSlaunch文件,你需要在功能包中创建一个名为`launch`的文件夹,并在其中创建一个launch文件。然后,按照你的需求编写launch文件的内容,并使用`ros2 launch`命令来启动该launch文件。 #### 引用[.reference_title] - *1* *3* [ROS2入门教程—创建一个launch文件](https://blog.csdn.net/qq_29923461/article/details/120404577)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [ROS学习(4)——launch文件的编写](https://blog.csdn.net/bulletstart/article/details/130794565)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值