ROS2 的基础概念
ROS2 的基础概念
ROS是什么?
ROS: Robot Operating System
ROS本质上其实就是用于快速搭建机器人的软件库(核心是通信)和工具集。
追求的是:稳定、安全和实时的通信能力!
ROS2 系统架构
可分为5层:操作系统层、DDS实现层、DDS接口层、ROS2客户端层、应用层。
- 操作系统层:为 ROS2 提供了硬件驱动。
- DDS实现层:数据分布服务(Data Distribution Service),DDS基于实时发布订阅协议(Real-time Publish-Subscribe, RTPS)来实现数据分布。
- DDS接口层:定义了RMW(ROS Middleware Interface, ROS中间件接口),再由不同DDS进行实现,为ROS2客户端层提供统一的调用接口。
- ROS2客户端层:提供了ROS2客户端库(ROS2 Client Library,RCL),使用这些库提供的不同接口,可以完成对ROS2可信功能的调用,如话题、服务、参数和动作。
- 应用层:所有基于RCL开发的程序都属于应用层。
rclpy 是 ROS 2 中用于 Python 编程的客户端库,它是 ROS Client Library for Python 的缩写,提供了与 ROS 2 系统交互的功能,包括创建节点、发布和订阅消息、调用和提供服务等。
rosidl 是 ROS Interface Definition Language 的缩写,是 ROS 2 中用于定义和生成消息(msg)、服务(srv)和动作(action)接口的工具和格式。
ROS2 四大核心通信机制
话题(Topic)、服务(Service)、参数(Parameter)、动作(Action)
- 话题通信:是指一种发布——订阅通信模式,即发布者将消息发布(Publish)到某个话题上,订阅者订阅(Subscribe)话题即可获取消息,数据是单向传输的。
- 服务通信:服务通信是双向的,可以分为服务端和客户端,客户端发送请求(Request)到服务端,服务端处理并回复结果(Response)。
- 参数通信:用于机器人的参数(Parameter)设定和读取。
- 动作通信:与服务通信相似,但是服务端可以反馈处理进度并可以随时取消,通常用于复杂的机器人行为。


