Ros2Supervisor 节点
目标 用一个默认的监督员机器人扩展界面,命名为 Ros2Supervisor
.
辅导水平: 高级
时间 10 分钟
背景介绍
在本教程中,您将学习如何启用 Ros2Supervisor
Webots 节点可通过创建附加服务和主题与模拟进行交互,从而增强界面功能。例如,您可以在模拟运行时直接从 ROS 2 界面录制动画或生成 Webots 节点。这些说明详细列出了当前已实现的功能以及使用方法。
先决条件
在继续本教程之前,请确保您已完成以下内容:
了解 ROS 2 节点和初级课程涵盖的主题 教程.
了解 Webots 和 ROS 2 及其界面软件包。
熟悉 设置机器人模拟(基础).
"(《世界人权宣言》) 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 仿真的接口。该节点创建了多个服务和主题,以便与模拟进行交互和修改。