【ROS2】初级:CLI工具- 理解节点

2024-07-10 1021阅读

目标:了解 ROS 2 中节点的功能以及与之交互的工具。

 教程级别:初学者

 时间:10 分钟

 目录

  •  背景

    • 1 ROS 2 图

    • 两个节点在 ROS 2

  •  先决条件

  •  任务

    •  1 ros2 运行

    • 2 ros2 节点列表

    • 3 ros2 节点信息

  •  摘要

  •  下一步

  •  相关内容

     背景

    1 ROS 2 图表

    在接下来的几个教程中,您将学习一系列构成所谓的“ROS(2)图”的核心 ROS 2 概念。

    ROS 图是一个 ROS 2 元素的网络,它们同时一起处理数据。如果您将它们全部映射出来并将它们可视化,它包含了所有可执行文件及其之间的连接。

    2 个节点在 ROS 2 中

    在 ROS 中的每个节点都应负责单一的模块化目的,例如控制轮子马达或发布激光测距仪的传感器数据。每个节点都可以通过主题、服务、动作或参数向其他节点发送和接收数据。

    【ROS2】初级:CLI工具- 理解节点

    一个完整的机器人系统由许多节点协同工作组成。在 ROS 2 中,一个单独的可执行文件(C++程序、Python 程序等)可以包含一个或多个节点。

     先决条件

    前一个教程向您展示了如何安装此处使用的 turtlesim 包。

    始终不要忘记在您打开的每个新终端中获取 ROS 2 的源。

     任务

    1 ros2 运行 

    命令 ros2 run 可以从包中启动一个可执行文件。

    ros2 run  

    要运行 turtlesim,请打开一个新的终端,并输入以下命令:

    ros2 run turtlesim turtlesim_node

    乌龟仿真窗口将会打开,正如你在之前的教程中看到的。

    在这里,包名是 turtlesim ,可执行文件名是 turtlesim_node 。

    我们仍然不知道节点名称。但是,您可以使用 ros2 node list 来找到节点名称。

    2 ros2 节点列表 

    ros2 node list 将向您显示所有正在运行的节点的名称。当您想要与节点交互,或者当您有一个运行了许多节点的系统并需要跟踪它们时,这特别有用。

    在另一个终端仍在运行 turtlesim 的同时,打开一个新终端,并输入以下命令:

    ros2 node list

    终端将返回节点名称:

    /turtlesim

    打开另一个新终端并使用以下命令启动 teleop 节点:

    ros2 run turtlesim turtle_teleop_key

    在这里,我们再次提到 turtlesim 包,但这次我们的目标是名为 turtle_teleop_key 的可执行文件。

    返回到您运行 ros2 node list 的终端,并再次运行它。现在,您将看到两个活动节点的名称:

    /turtlesim
    /teleop_turtle
     2.1 重新映射

    重映射https://design.ros2.org/articles/ros_command_line_arguments.html#name-remapping-rules 允许您将默认节点属性(如节点名称、主题名称、服务名称等)重新分配给自定义值。在上一教程中,您使用重映射在 turtle_teleop_key 上更改了 cmd_vel 主题和目标 turtle2。

    【ROS2】初级:CLI工具- 理解节点

    现在,让我们重新分配我们的 /turtlesim 节点的名称。在新终端中,运行以下命令:

    ros2 run turtlesim turtlesim_node --ros-args --remap __node:=my_turtle

    由于您再次在 turtlesim 上调用 ros2 run ,将会打开另一个 turtlesim 窗口。但是,如果您现在返回到您运行 ros2 node list 的终端,并再次运行它,您将会看到三个节点名称:

    /my_turtle
    /turtlesim
    /teleop_turtle

    3 ros2 节点信息

    现在您知道了节点的名称,您可以通过以下方式访问有关它们的更多信息:

    ros2 node info 

    要检查您最新的节点, my_turtle ,请运行以下命令:

    ros2 node info /my_turtle

    ros2 node info 返回订阅者、发布者、服务和动作的列表。即与该节点交互的 ROS 图连接。输出应如下所示:

    /my_turtle
      Subscribers:
        /parameter_events: rcl_interfaces/msg/ParameterEvent
        /turtle1/cmd_vel: geometry_msgs/msg/Twist
      Publishers:
        /parameter_events: rcl_interfaces/msg/ParameterEvent
        /rosout: rcl_interfaces/msg/Log
        /turtle1/color_sensor: turtlesim/msg/Color
        /turtle1/pose: turtlesim/msg/Pose
      Service Servers:
        /clear: std_srvs/srv/Empty
        /kill: turtlesim/srv/Kill
        /my_turtle/describe_parameters: rcl_interfaces/srv/DescribeParameters
        /my_turtle/get_parameter_types: rcl_interfaces/srv/GetParameterTypes
        /my_turtle/get_parameters: rcl_interfaces/srv/GetParameters
        /my_turtle/list_parameters: rcl_interfaces/srv/ListParameters
        /my_turtle/set_parameters: rcl_interfaces/srv/SetParameters
        /my_turtle/set_parameters_atomically: rcl_interfaces/srv/SetParametersAtomically
        /reset: std_srvs/srv/Empty
        /spawn: turtlesim/srv/Spawn
        /turtle1/set_pen: turtlesim/srv/SetPen
        /turtle1/teleport_absolute: turtlesim/srv/TeleportAbsolute
        /turtle1/teleport_relative: turtlesim/srv/TeleportRelative
      Service Clients:
      Action Servers:
        /turtle1/rotate_absolute: turtlesim/action/RotateAbsolute
      Action Clients:

    【ROS2】初级:CLI工具- 理解节点

    现在尝试在 /teleop_turtle 节点上运行相同的命令,看看它的连接与 my_turtle 有何不同。

    您将在即将到来的教程中了解更多关于 ROS 图连接概念以及消息类型的信息。

     摘要

    节点是 ROS 2 中的一个基本元素,它在机器人系统中服务于一个单一的、模块化的目的。

    在本教程中,您通过运行可执行文件 turtlesim_node 和 turtle_teleop_key ,使用了在 turtlesim 包中创建的节点。

    您已经学会了如何使用 ros2 node list 来发现活动节点名称,以及使用 ros2 node info 来内省单个节点。这些工具对于理解复杂的现实世界机器人系统中的数据流动至关重要。

     下一步

    现在您已经了解了 ROS 2 中的节点,您可以继续学习主题https://docs.ros.org/en/jazzy/Tutorials/Beginner-CLI-Tools/Understanding-ROS2-Topics/Understanding-ROS2-Topics.html 教程。主题是连接节点的通信类型之一。

     相关内容 

    概念页面对节点概念添加了更多细节。

VPS购买请点击我

免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

目录[+]