一个实际的机器人一般包括 N 个节点,实际运行调试时每个节点开一个终端去启动效率太低,也不方便管理。
Launch 脚本就是用于启动多个节点,支持不同节点使用不同的配置及参数,方便在不同环境下启动配置不同的机器人程序。
ROS2 Launch 脚本的使用
ROS2 参数
ROS2 节点可以声明多个参数,其它节点可以查看或修改参数,参数的设置和获取实际是通过服务实现的,只是 ROS2 提供了针对参数提供了更加方便的 API
C++ 节点声明参数
创建一个功能包
ROS2 服务
ROS2 中的服务就类似于 RPC 调用,每个节点提供服务,其它节点可以调用服务并获取返回值
服务查看
查看节点提供的服务
1ros2 node info /turtlesim1 2 3 4 5 6 7 8 9 10 11 12 13 14 15Service Servers: /clear: std_srvs/srv/Empty /kill: turtlesim/srv/Kill /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 /turtlesim/describe_parameters: rcl_interfaces/srv/DescribeParameters /turtlesim/get_parameter_types: rcl_interfaces/srv/GetParameterTypes /turtlesim/get_parameters: rcl_interfaces/srv/GetParameters /turtlesim/get_type_description: type_description_interfaces/srv/GetTypeDescription /turtlesim/list_parameters: rcl_interfaces/srv/ListParameters /turtlesim/set_parameters: rcl_interfaces/srv/SetParameters /turtlesim/set_parameters_atomically: rcl_interfaces/srv/SetParametersAtomically服务和话题一样,包括服务名和服务参数定义,可以查看服务的详细定义
ROS2 话题
ROS2 中节点通过发布和订阅话题来传递信息,一个节点可以作为发布者发布信息,也可以同时作为订阅者订阅其它节点发布的话题。
话题由主题和消息类型组成:
- 主题是一个字符串
- 消息类型是传输数据的格式
话题查看
启动小海龟节点
ROS2 节点
ROS2 中的节点是一个通过 ROS2 和其它节点通信的实体。
Python 实现节点
C++ 实现节点
| |
节点包管理
一个机器人程序一般会有很多节点,ROS2 使用功能包管理节点,功能包的优点: