< >
Home » ROS2入门教程 » ROS2入门教程-在单个进程中组合多个节点

ROS2入门教程-在单个进程中组合多个节点

说明:

  • 介绍如何在单个进程中组合多个节点

步骤:

  • 查看工作区中已注册和可用的组件
$ ros2 component types
composition
  composition::Talker
  composition::Listener
  composition::Server
  composition::Client
  • 启动组件容器
ros2 run rclcpp_components component_container
  • 通过ros2命令行工具验证容器是否正在运行
$ ros2 component list
/ComponentManager
  • 将返回加载组件的唯一ID以及节点名称
$ ros2 component load /ComponentManager composition composition::Talker
Loaded component 1 into '/ComponentManager' container node as '/talker'
  • 运行另一个命令
$ ros2 component load /ComponentManager composition composition::Listener

Loaded component 2 into '/ComponentManager' container node as '/listener'

  • 检查容器的状态
$ ros2 component list
/ComponentManager
   1  /talker
   2  /listener
  • 使用ROS服务与服务器和客户端的运行时组合
ros2 run rclcpp_components component_container
  • 运行另一个命令
ros2 component load /ComponentManager composition composition::Server
ros2 component load /ComponentManager composition composition::Client
  • 使用ROS服务的编译时组合
ros2 run composition manual_composition
  • 使用 dlopen 的运行时组合
ros2 run composition dlopen_composition `ros2 pkg prefix composition`/lib/libtalker_component.so `ros2 pkg prefix composition`/lib/liblistener_component.so
  • 使用启动动作组合
ros2 launch composition composition_demo.launch.py
  • 启动组件容器
ros2 run rclcpp_components component_container
  • 通过ros2命令行工具验证容器是否正在运行
$ ros2 component list
/ComponentManager
  • 返回加载组件的唯一 ID 以及节点名称
$ ros2 component load /ComponentManager composition composition::Talker
Loaded component 1 into '/ComponentManager' container node as '/talker'
$ ros2 component load /ComponentManager composition composition::Listener
Loaded component 2 into '/ComponentManager' container node as '/listener'
  • 使用唯一 ID 从组件容器中卸载节点
$ ros2 component unload /ComponentManager 1 2
Unloaded component 1 from '/ComponentManager' container
Unloaded component 2 from '/ComponentManager' container
  • 重新映射容器名称和命名空间
ros2 run rclcpp_components component_container --ros-args -r __node:=MyContainer -r __ns:=/ns
  • 使用更新的容器名称加载组件
ros2 component load /ns/MyContainer composition composition::Listener
  • 重新映射组件名称和命名空间,启动组件容器
ros2 run rclcpp_components component_container
  • 重新映射名称和命名空间
# Remap node name
ros2 component load /ComponentManager composition composition::Talker --node-name talker2
# Remap namespace
ros2 component load /ComponentManager composition composition::Talker --node-namespace /ns
# Remap both
ros2 component load /ComponentManager composition composition::Talker --node-name talker3 --node-namespace /ns2


$ ros2 component list
/ComponentManager
   1  /talker2
   2  /ns/talker
   3  /ns2/talker3

纠错,疑问,交流: 请进入讨论区点击加入Q群

获取最新文章: 扫一扫右上角的二维码加入“创客智造”公众号


标签: ros2入门教程