ROS2学习笔记(八)从turtlesim学习ROS2的启动文件

前言

学习ROS2的路,并不能通过学习ROS1代替,因为ROS2的“内核”不同于ROS1,必须认认真真从头开始重新学习。

Ubuntu版本:20.04

ROS版本:Foxy

学习笔记回顾

1.ROS2启动文件

当我们要启动一个大型项目时需要同时运行多个节点,会非常麻烦,如果运行单个启动文件可以启动整个系统包括所有节点和配置,会非常方便。ROS2中的启动文件就有这样的功能。

2.创建launch文件

$ mkdir ros2_ws
$ cd ros2_ws
$ mkdir launch
$ touch launch/turtlesim_mimic_launch.py

使用文本编辑器打开新文件。

3.编写launch文件

编写一个turtlesim包的启动文件,该文件的目标是启动两个海龟模拟器,让一只海龟模仿另一只海龟运动,启动文件代码如下所示:

# 引入ROS2 launch模块
from launch import LaunchDescription
from launch_ros.actions import Node

# 启动launch文件描述
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'
        ),
        # 启动mimic
        Node(
            package='turtlesim',
            executable='mimic',
            name='mimic',
            # /input/pose主题被重新映射到/turtlesim1/turtle1/pose
            # /output/cmd_vel主题将被映射到/turtlesim2/turtle1/cmd_vel
            remappings=[
                ('/input/pose', '/turtlesim1/turtle1/pose'),
                ('/output/cmd_vel', '/turtlesim2/turtle1/cmd_vel'),
            ]
        )
    ])

通过上面的重映射操作,可以看出mimic节点通过订阅turtle1的位置,转换成对turtle2的速度指令发布出去,可以让turtle2模仿turtle1完成同样的运动

4.ros2 launch

启动文件语法如下所示:

$ ros2 launch <package_name> <launch_file_name>

启动文件看看效果:

$ cd launch
$ ros2 launch turtlesim_mimic_launch.py
----
[INFO] [launch]: Default logging verbosity is set to INFO
[INFO] [turtlesim_node-1]: process started with pid [11714]
[INFO] [turtlesim_node-2]: process started with pid [11715]
[INFO] [mimic-3]: process started with pid [11716]

打开新的终端发布小海龟控制命令控制小海龟移动:

$ 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}}"

我们可以看到两只海龟在同一条路上。
在这里插入图片描述

5.rqt_graph工具

启动新终端,使用如下命令查看节点中的关系:

$ rqt_graph

在这里插入图片描述

总结

启动文件简化了复杂系统的启动方式,好好的运用他们。

Reference:

https://docs.ros.org/en/foxy/Tutorials/Launch-Files/Creating-Launch-Files.html

结语

本文也是基于笔者的学习和使用经验总结的,主观性较强,如果有哪些不对的地方或者不明白的地方,欢迎评论区留言交流~

为了能和读者进一步讨论问题,建立了一个微信群,方便给大家解答问题,也可以一起讨论问题。
加群链接

おすすめ

転載: blog.csdn.net/xiaokai1999/article/details/119010354