ROS2 创建一个launch文件

您一直在为运行的每个新节点打开新终端。当您创建越来越多的节点同时运行的更复杂的系统时,打开终端并重新输入配置详细信息将变得乏味。

Launch 文件使您可以同时启动和配置许多包含 ROS 2 节点的可执行文件。

使用 ros2 launch 命令运行一个启动文件将立即启动整个系统-所有节点及其配置。

1 配置

首先创建一个 launch 文件夹,作为后续放置 launch 文件的目录:

$ mkdir launch

接下来就可以创建 launch 文件啦:

Linux:

$ touch launch/turtlesim_mimic_launch.py

macOs:

$ touch launch/turtlesim_mimic_launch.py

Winows:

$ type nul > launch/turtlesim_mimic_launch.py

没错,ROS2 中的 launch 文件其实是一个 python 的脚本。

2 Write the launch file

接下来我们尝试使用launch文件来启动小海龟仿真器中的几个节点,可以将以下内容拷贝到 turtlesim_mimic_launch.py 文件中:

from launch import LaunchDescription
from launch_ros.actions import Node


def generate_launch_description():
    return LaunchDescription([
        Node(
            package='turtlesim',
            namespace='turtlesim1',
            executable='turtlesim_node',
            name='sim'
        ),
        Node(
            package='turtlesim',
            namespace='turtlesim2',
            executable='turtlesim_node',
            name='sim'
        ),
        Node(
            package='turtlesim',
            executable='mimic',
            name='mimic',
            remappings=[
                ('/input/pose', '/turtlesim1/turtle1/pose'),
                ('/output/cmd_vel', '/turtlesim2/turtle1/cmd_vel'),
            ]
        )
    ])

LaunchDescription 中描述了三个节点的启动,都是 turtlesim 包中的节点。

Node(
    package='turtlesim',
    namespace='turtlesim1',
    executable='turtlesim_node',
    name='sim'
),
Node(
    package='turtlesim',
    namespace='turtlesim2',
    executable='turtlesim_node',
    name='sim'
),

这是前两个节点的描述,可以看到除了命名空间之外,其他的内容都是一样的,这里是启动了两个海龟仿真器,通过命名空间区分开,不然会有同名节点的问题。唯一的名称空间使系统可以启动两个模拟器,而不会出现节点名或主题名冲突的情况。

package 表示节点所在的功能包,executable 表示要运行的可执行文件名,name 表示启动后的节点名。

该系统中的两个海龟都接收同一主题的命令,并在同一主题上发布其姿势。如果没有唯一的名称空间,就无法区分用于一只乌龟或另一只乌龟的消息。最后一个节点启动的是 turtlesim 功能包中的 mimic 节点,其中主要是在配置 mimcremapping 重映射参数。

该节点以重新映射的形式添加了配置详细信息。mimic/input/pose 主题重新映射到 /turtlesim1/turtle1/pose,而 /output/cmd_vel 主题重新映射到 /turtlesim2/turtle1/cmd_vel。这意味着 mimic 对象将订阅 /turtlesim1/sim 的 pose 主题,然后重新发布以供 /turtlesim2/sim 的 velocity 命令主题订阅。换句话说, turtlesim2 将模仿 turtlesim1 的动作。

3 ros2 launch

为了验证我们的猜想,可以试下启动launch文件看看效果啦。

$ cd launch
$ ros2 launch turtlesim_mimic_launch.py

注意:
这里我们可以直接启动 launch 文件,如果 launch 文件在功能包(参考 creating packages )中的话,也可以用如下语法启动:

$ ros2 launch <package_name> <launch_file_name>

很快可以看到两个小海龟仿真窗口启动啦,终端中也有如下提示:

为了看到 turtle2 是否会模仿 turtle1,我们需要在让 turtle1 动起来:

$ ros2 topic pub -r 1 /turtlesim1/turtle1/cmd_vel geometry_msgs/msg/Twist "{linear: {x: 2.0, y: 0.0, z: 0.0}, angular: {x: 0.0, y: 0.0, z: -1.8}}"

没错,turtle2turtle1 的动作完全一致。

3 使用 rqt_graph 观测系统

为了看到更明确的节点关系,我们可以使用之前介绍的 rqt_graph 工具来观测下系统:

$ rqt_graph

这样是不是很清晰,和我们前边的猜想一样,mimic 节点订阅 turtle1 的位姿,然后转换成速度指令发布给 turtle2

好啦,这就是 launch 文件,可以实现多个节点的配置和启动,我们可以使用 python 完成 launch 文件,使用 ros2 launch 命令启动 launch 文件。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,098评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,213评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,960评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,519评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,512评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,533评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,914评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,574评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,804评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,563评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,644评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,350评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,933评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,908评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,146评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,847评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,361评论 2 342