Ros2Supervisor 节点

目标 用一个默认的监督员机器人扩展界面,命名为 Ros2Supervisor.

辅导水平: 高级

时间 10 分钟

背景介绍

在本教程中,您将学习如何启用 Ros2Supervisor Webots 节点可通过创建附加服务和主题与模拟进行交互,从而增强界面功能。例如,您可以在模拟运行时直接从 ROS 2 界面录制动画或生成 Webots 节点。这些说明详细列出了当前已实现的功能以及使用方法。

先决条件

在继续本教程之前,请确保您已完成以下内容:

"(《世界人权宣言》) Ros2Supervisor

"(《世界人权宣言》) Ros2Supervisor 由两大部分组成:

  • 在模拟世界中添加一个 Webots 机器人节点。它的 监事 字段设置为 "true"。

  • 一个 ROS 2 节点,作为外部控制器连接到 Webots 机器人(与您自己的机器人插件类似)。

ROS 2 节点充当控制器,调用监管者应用程序接口函数来控制模拟世界或与之互动。用户与 ROS 2 节点的交互主要通过服务和主题进行。

这些节点可在 Webots 启动时使用 ros2_supervisor 参数中的 WebotsLauncher.

网点 = WebotsLauncher(
    世界=路径连接替换([软件包目录, '世界';, 世界]),
    模式=模式,
    ros2_supervisor=正确
)

"(《世界人权宣言》) webots._supervisor 对象也必须包含在 启动说明 由启动文件返回。

返回 启动说明([
    网点,
    网点._主管,

    # 一旦 Webots 模拟退出,该操作将杀死所有节点
    启动.行动.注册事件处理程序(
        事件处理程序=启动.事件处理程序.进程结束时(
            target_action=网点,
            on_exit=[
                启动.行动.发射事件(事件=启动.活动.关闭())
            ],
        )
    )
])

启动文件的更多信息 webots_ros2 项目见 设置机器人模拟(基础).

时钟主题

"(《世界人权宣言》) Ros2Supervisor 节点负责获取 Webots 模拟的时间,并将其发布到 /时钟 主题。这意味着,必须生成 Ros2Supervisor 如果其他节点的 使用模拟时间 参数设置为 .更多信息 /时钟 可在 ROS 维基百科.

导入 Webots 节点

"(《世界人权宣言》) Ros2Supervisor 节点还可以通过服务从字符串中生成 Webots 节点。

该服务被命名为 /Ros2Supervisor/spawn_node_from_string 类型为 webots_ros2_msgs/srv/SpawnNodeFromString.......。 SpawnNodeFromString 类型期望一个 数据 字符串作为输入,并返回一个 成功 布尔型。

上位节点会从给定的字符串中获取导入节点的名称,并将其添加到实习生列表中,以备日后删除(参见 删除 Webots 导入的节点).

节点的导入使用 importMFNodeFromString(nodeString) API 功能.

下面是一个导入名为 进口机器人:

玫瑰2 服务 致电 /Ros2Supervisor/spawn_node_from_string webots_ros2_msgs/srv/SpawnNodeFromString "data:Robot { name \"imported_robot\" }";

备注

如果尝试在节点字符串中导入某些 PROTO,则必须在 .wbt world 文件中将其各自的 URL 声明为 EXTERNPROTO 或 IMPORTABLE EXTERNPROTO。

删除 Webots 导入的节点

一旦使用 /Ros2Supervisor/spawn_node_from_string 服务,也可以将其移除。

这可以通过将节点名称发送到名为 /Ros2Supervisor/remove_node 属于 std_msgs/msg/String.

如果节点确实在导入的列表中,则会使用 删除() 应用程序接口方法.

下面是如何移除 进口机器人 机器人

玫瑰2 主题 酒吧 --一次 /Ros2Supervisor/remove_node std_msgs/msg/String "{data: imported_robot}";

录制动画

"(《世界人权宣言》) Ros2Supervisor node 还创建了两个额外的服务来记录 HTML5 动画。

"(《世界人权宣言》) /Ros2Supervisor/animation_start_recording 服务属于 webots_ros2_msgs/srv/SetString 并允许启动动画。动画 设置字符串 类型期望一个 价值 字符串作为输入,并返回一个 成功 布尔值。输入 价值 表示保存动画文件的目录的绝对路径。

下面是一个如何启动动画的示例:

玫瑰2 服务 致电 /Ros2Supervisor/animation_start_recording webots_ros2_msgs/srv/SetString "{value: ";<ABSOLUTE_PATH>/index.html"}";

"(《世界人权宣言》) /Ros2Supervisor/animation_stop_recording 服务属于 webots_ros2_msgs/srv/GetBool 并允许停止动画。

玫瑰2 服务 致电 /Ros2Supervisor/animation_stop_recording webots_ros2_msgs/srv/GetBool "{ask: True}";

摘要

在本教程中,您将学习如何启用 Ros2Supervisor 以及如何扩展与 Webots 仿真的接口。该节点创建了多个服务和主题,以便与模拟进行交互和修改。