# 第 3 章 ROS2节点通信之话题与服务 ## 1.章节介绍 上一节我们对ROS2的基本概念、构建工具以及采用Python和C++调用ROS2的客户端库完成了节点的编写。 本节我们将重心放回节点和节点之间的数据传递上来,因为ROS2给我们带来的最大遍历除了调试工具就是通信机制上了。 同样的,本章的内容也分为三部分。 - 入门篇,主要介绍通信的原理以及编程语言的一些特性,这些其实属于计算机的基础部分知识,但在学校里可能又很难学到的部分。 - 基础篇,该篇主要分为话题通信、服务通信和自定义通信接口上来。 - 进阶篇,通过对DDS原生API的学习,带你深入了解ROS2的通信原理,为你深入使用ROS2打牢基础。 ## 2.食用方法 如果你对通信的底层原理以及编程语言中多线程Lambda等不熟悉,建议你从基础章节开始学习。 如果你对ROS2的话题服务API使用以及自定义接口比较熟悉可以直接跳过入门篇。 ## 3.章节目录 - 章节导读 - 基础篇-中间件与面向对象基础 - 1.从底层理解通信 - 2.通信中间件之ZMQ - 3.多线程回调函数和锁 - 4.现代编程利器之Lambda表达式 - 5.消息的序列化与反序列化 - 入门篇-话题与服务 - 1.ROS2话题入门 - 2.话题之RCLCPP实现 - 3.话题之RCLPY实现 - 4.ROS2服务入门 - 5.服务之RCLCPP实现 - 6.服务之RCLPY实现 - 7.ROS2接口介绍 - 8.自定义话题接口通信 - 9.自定义服务接口通信 - 进阶篇-中间件进阶 - 1.原始数据类型与包装类型 - 2.通信质量Qos配置指南 - 3.DDS进阶之Fast-DDS环境搭建 - 4.使用DDS进行订阅发布 - 5.ROS2消息序列化思考与实践