[ROS基础-7] Launch文件编写启动多节点实验

系列文章目录

[ROS基础-1] Linux系统介绍与ubuntu安装(virtualbox)
[ROS基础-2] Ubuntu系统基本操作与基本命令讲解
[ROS基础-3] ROS系统安装与基本配置
[ROS基础-4] ROS系统框架
[ROS基础-5] Turtlesim和键盘控制节点实验
[ROS基础-6] 发布话题消息控制Turtlesim运动实验
[ROS基础-7] Launch文件编写启动多节点实验



前言

目前我们启动节点的方式为挨个打开,如果节点较多,则需要打开众多的终端而导致操作困难,接下来我们来介绍一键启动多节点的方式——启动文件(Launch File)


一、launch启动文件基本元素

(1) launch

XML文件必须拥有一个根元素,<launch>为launch文件的跟标签吗,其他内容必须包括在该标签之内

(2) node

启动ROS节点所采用的为<node>标签,其语法如

<node pkg="package_name" type="executable_name" name="node_name" />

上述为启动一个节点的标准格式,需要有pkgtypename三个属性

  • pkg:节点所在的功能包名称
  • type:节点执行文件的名称
  • name:节点运行的名称

除了上面三个常用的属性,node还有其他属性:

  • output="screen":在终端中打印该节点的标准输出
  • respawn="true":复位属性,该节点停止时会重启,默认为false
  • required=”true“:必要属性,该节点终止后launch其他节点也会终止
  • ns="namespace":命名空间,为节点内的相对名称添加命名空间前缀
  • args="arguments":输入节点所需参数

(3) param

parameter是ROS系统运行中的参数,被储存在参数服务器之中。<param>元素加载参数后,launch文件中的节点可以通过ros::param::get()获取parameter的数值。

<param name="output_frame" value="odom" />
  • name:参数名称
  • value:参数数值

(4) rosparam

系统中参数众多,挨个加载比较麻烦,所以衍生出rosparam,该元素可以将一个YAML格式文件中的参数全部加载到参数服务器当中。

<rosparam file="${find haha}/config/haha.yaml" command="load" ns="local_costmap" />
  • file:指定文件路径
  • commad:需要设置为load属性
  • na:命名空间

(5) arg

argument也是用于参数设置的元素,类似launch文件内部的局部变量,仅限于launch文件使用

<arg name="arg_name" default="arg_value"/>

文件内的使用方法

<node pgk="haha" type="haha" name="haha" args="${arg arg_name}"/>

(6) remap

ROS提供了重映射机制以解决本地系统无法兼容别人的功能包的接口,大白话说就是别人的接口,重新取了个本地系统认识的名字以供系统识别。

<remap from="/other_haha" to="/haha" />

将话题/other_haha重映射为/haha供launch文件中的节点使用,但是其数据是一样的

(7) include

一个ROS系统中往往存在多个launch文件,且存在各自依赖的关系,为了减少开发量,ROS提供了嵌套复用,<include>标签旨在导入其他launch文件到当前文件,语法和常用属性如下

<include file="$(find haha)/launch/haha.launch" ns="hah"/>
  • file ="$(find pkg-name)/path/filename.xml":导入的指定launch文件
  • ns="NAME_SPACE":导入相对NAME_SPACE命名空间

二、launch启动多节点控制小海龟

这边就以上一博客为基础编辑launch文件,首先是有键盘控制的例程,跟着上一节,在地址~/catkin_ws/src/leraning_topic/launch,新建文件名为learning_launch

<launch>
	<!--海龟仿真器-->
	<node pkg="turtlesim" type="turtlesim_node" name="sim"/>

	<!--键盘控制-->
	<node pkg="turtlesim" type="turtle_teleop_key" name="teleop" output="screen"/>

</launch>

保存之后打开终端执行

cd ~/catkin_ws
source devel/setup.bash
roslaunch learning_topic learning_launch.launch

执行之后就可以在打开一个终端的情况下控制海龟了。


总结

本节讲述了launch的构成、各个元素描述等,此外,以启动小海龟并实现控制为案例。

ROS学习并非一朝一夕可以完成,接下来我也会坚持发表关于ROS学习的笔记,如有哪里不对的,也可以请各位指正。

祝大家变得更强!

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ROS(Robot Operating System)是一个开源的机器人操作系统,它提供了很多工具和库,方便我们构建、测试和部署机器人应用。ROS节点(node)是ROS系统中的基本构建块,它们可以执行各种任务,并通过ROS通信机制与其他节点通信。 在ROS中,我们可以使用launch文件来管理节点启动和运行。launch文件一个XML格式的文件,其中包含了我们需要启动节点、参数、话题、服务等信息。在本次实验中,我们将学习如何编写一个简单的launch文件来管理ROS节点启动和运行,并对实验过程进行总结。 实验步骤: 1. 创建ROS工作空间 首先,我们需要创建一个ROS工作空间,如果已经有了可以跳过此步骤。在终端输入以下命令: ``` mkdir -p ~/catkin_ws/src cd ~/catkin_ws/ catkin_make source devel/setup.bash ``` 2. 创建ROS节点ROS工作空间的src目录下创建一个ROS节点。在终端输入以下命令: ``` cd ~/catkin_ws/src catkin_create_pkg my_node rospy ``` 这里创建了一个名为“my_node”的ROS包,其中使用了ROS的Python库rospy。 3. 编写ROS节点代码 在my_node包中创建一个名为“my_node.py”的Python文件,并将以下代码复制到文件中: ``` #!/usr/bin/env python import rospy def main(): rospy.init_node('my_node') rospy.loginfo('Hello, ROS!') if __name__ == '__main__': main() ``` 这个ROS节点非常简单,它只是打印了一条信息“Hello, ROS!”。当然,我们也可以在这里添加更多的代码完成其他任务。 4. 编写ROS launch文件 在my_node包中创建一个名为“my_node.launch”的launch文件,并将以下代码复制到文件中: ``` <launch> <node pkg="my_node" type="my_node.py" name="my_node" output="screen"/> </launch> ``` 这个launch文件定义了一个ROS节点,其中“pkg”属性指定了节点所在的ROS包,“type”属性指定了节点的Python文件,“name”属性指定了ROS节点的名称,“output”属性指定了节点输出的消息类型。 5. 运行ROS launch文件 在终端输入以下命令来启动ROS launch文件: ``` roslaunch my_node my_node.launch ``` 在终端中将会看到输出“Hello, ROS!”,说明ROS节点已经成功启动实验总结: 通过本次实验,我们学习了如何使用ROS launch文件来管理ROS节点启动和运行。在编写launch文件的过程中,需要注意以下几点: 1. 在launch文件中定义的节点必须与Python文件中的节点名称相同。 2. 在编写launch文件时,需要指定节点所在的ROS包、Python文件以及节点的名称。 3. 在运行launch文件时,需要使用“roslaunch”命令,并指定launch文件所在的ROS包和launch文件的名称。 总的来说,ROSlaunch文件非常方便,可以大大简化我们的节点管理工作。在实际的机器人应用中,我们可以使用launch文件启动多个节点,并通过ROS通信机制将它们连接在一起,完成更加复杂的任务。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值