Ros2术语
ros2术语
ros2 节点
- ROS2 节点就是一个ROS2程序, 可以把想象成机器人系统中的 “小程序” 或 “微服务”, 每个节点负责一件明确的事情.
- ROS 2 的节点之间不会直接调用彼此, 而是通过 中间件(DDS) 进行通信.
通信方式主要有三种:
- Topic(话题)
- Service(服务)
- Action(动作)
Topic(话题)
Topic = 发布者(Publisher) + 订阅者(Subscriber) 之间的消息通道, 非常适合传输持续不断的数据,例如: 摄像头图像流, 激光雷达点云, IMU 数据, 机器人状态, 控制指令流.
ros2 run turtlesim turtlesim_node
# 查看节点列表
ros2 node list
# 查看节点信息
ros2 node info /turtlesim
# 打印信息如下:
# 订阅者
Subscribers:
# 话题名字: /parameter_events
# 话题类型: rcl_interfaces/msg/ParameterEvent
/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
/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/list_parameters: rcl_interfaces/srv/ListParameters
/turtlesim/set_parameters: rcl_interfaces/srv/SetParameters
/turtlesim/set_parameters_atomically: rcl_interfaces/srv/SetParametersAtomically
Service Clients:
Action Servers:
/turtle1/rotate_absolute: turtlesim/action/RotateAbsolute
Action Clients:
# 输出话题的内容
ros2 topic echo /turtle1/pose
# 查看话题详细信息
ros2 topic info /turtle1/cmd_vel
# 查看话题类型的详细信息
ros2 interface show geometry_msgs/msg/Twist
# 发布话题
ros2 topic pub /turtle1/cmd_vel geometry_msgs/msg/Twist "{liner: {x:0.5, y:0.0}, angular:{z:0.0}}"
Service(服务)
Service = 请求(Request) + 响应(Response)的同步通信机制, 非常适合一次性、需要明确结果的任务。例如: 让机械臂移动到某个位置,查询机器人当前模式,重置传感器.
服务是双向通信,是有结果的话题.
ros2 run turtlesim turtlesim_node
ros2 service list -t
ros2 interface show turtlesim/srv/Spawn
ros2 service call /spawn turtlesim/srv/Spawn "{x: 1, y: 1}"
Action(动作)
Action = 可反馈、可取消、需要较长时间执行的任务通信机制。例如:例子:机器人导航到目标点, 机械臂抓取物体, 执行路径规划.