机器人编程趣味实践12-启动工具(launch)

之前大部分案例,每输入一条指令就需要新开一个窗口,如何开启大工程……

  • launch

目标

创建启动文件以运行复杂的 ROS 2 系统。简单的launch,功能强大细节知识点后续介绍。

基础知识

在到目前为止的教程中,一直需要给运行的每个新节点打开新终端。 随着创建具有越来越多同时运行的节点的更复杂的系统,打开终端和重新输入配置细节变得乏味。

启动文件允许同时启动和配置多个包含 ROS 2 节点的可执行文件。

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

功能包要点

  1. rqt_graph
  2. turtlesim
  3. source

实践

1 配置

新建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'),
            ]
        )
    ])

如下图所示:

2 代码注解

这些导入语句会引入一些 Python 启动模块。类似C++的头文件功能。

from launch import LaunchDescription
from launch_ros.actions import Node

接下来,启动描述正式开始:

def generate_launch_description():
   return LaunchDescription([

   ])

LaunchDescription 内是一个由三个节点组成的系统,全部来自turtlesim 包。 该系统的目标是启动两个机器人窗口,让一只机器人模仿另一只机器人的运动。

启动描述中的前两个操作启动两个turtlesim窗口:

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

请注意,两个节点之间的唯一区别是它们的命名空间值。 唯一的命名空间允许系统启动两个模拟器而不会发生节点名称或主题名称冲突。

该系统中的两只机器人都接收关于同一主题的命令,并在同一主题上发布它们的姿势。 如果没有唯一的命名空间,就无法区分针对一只机器人或另一只机器人的消息。

最后一个节点也来自turtlesim包,但是一个不同的可执行文件:mimic。

Node(
    package='turtlesim',
    executable='mimic',
    name='mimic',
    remappings=[
      ('/input/pose', '/turtlesim1/turtle1/pose'),
      ('/output/cmd_vel', '/turtlesim2/turtle1/cmd_vel'),
    ]
)

此节点以重新映射的形式添加了配置详细信息。模拟的 /input/pose 主题被重新映射到 /turtlesim1/turtle1/pose,它的 /output/cmd_vel 主题被重新映射到 /turtlesim2/turtle1/cmd_vel。 这意味着 mimic 将订阅 /turtlesim1/sim 的姿势主题并重新发布它以供 /turtlesim2/sim 的速度命令主题订阅。 换句话说,turtlesim2 将模仿turtlesim1 的动作。

3 启动launch

如果没有将此文件添加到功能包中,则需要到对应文件夹手动启动:

  1. cd launch
  2. ros2 launch turtlesim_mimic_launch.py

详细细节后续讲解。

可以直接启动启动文件(如上面所做的那样),或由包提供。 当它由包提供时,语法为:ros2 launch <package_name> <launch_file_name>

在后面的教程中了解有关创建包的更多信息。

两个turtlesim窗口将打开,将看到以下[INFO]消息,告诉启动文件已启动的节点:

使用速度指令查看效果如下:

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

可以修改速度。

4 查看系统节点信息

使用rqt_graph。

总结

启动文件简化了运行具有许多节点和特定配置详细信息的复杂系统。 可以使用 Python 创建启动文件,并使用 ros2 launch 命令运行它们。


-Fin-


 

  • 6
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 16
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zhangrelay

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值