前言 本书主要内容如下。 第1章是ROS概述与开发环境搭建。本章介绍ROS机器人操作系统的相关概念,ROS的安装步骤,以及ROS程序的编写、编译、运行流程和ROS集成开发环境的搭建,最后总结ROS的设计目标、发展历程、体系架构等内容。 第2章是ROS通信机制。通信机制是ROS体系中的核心内容之一,在机器人系统中,不同模块之间的数据传输都有赖于通信机制。本章主要介绍ROS中的话题通信、服务通信和参数服务器以及通信机制相关的一些指令,并且对不同通信机制做了综合比较。 第3章是ROS通信机制进阶。本章侧重于通信机制编程语法的介绍,包括编程中与通信机制相关的API、C++程序头文件与源文件的使用、Python程序模块导入等。 第4章是ROS运行管理。本章介绍ROS程序运行时的管理策略,包括元功能包、launch文件、工作空间覆盖、节点重名、话题名称设置、参数名称设置以及ROS中的分布式通信实现。 第5章是ROS常用组件。在ROS中为开发者封装了一些比较实用的工具,本章主要介绍这些工具的使用,包括TF坐标变换、rosbag和rqt工具箱。通过TF坐标变换可以方便地实现机器人系统中的静态或动态位姿转换;rosbag可以在机器人运行时录制、回放数据;rqt工具箱则是一系列工具的集合,可以很方便地调试ROS程序,提高程序开发效率。 第6章是ROS机器人系统仿真。仿真是机器人系统的重要模块之一,通过仿真可以降低研发成本,缩短开发时间。本章介绍如何将URDF与RViz结合以实现机器人建模与可视化,并介绍如何使用Gazebo搭建仿真环境。 第7章是仿真环境下的机器人导航。本章介绍如何在仿真环境下实现机器人导航,包括导航模块(地图、定位、感知、路径规划、运动控制)的系统性介绍,并通过一个案例完整地展现如何实现导航功能,最后介绍导航中使用的一些消息。 第8章是机器人平台设计。本章介绍如何从0到1搭建一台机器人,包括基于Arduino的底盘设计、控制系统安装、分布式环境搭建以及雷达、摄像头等传感器的集成。第9章是实体机器人导航。将仿真环境下的功能迁移到实体机器人上是机器人程序研发中的重要环节之一。本章主要介绍如何基于VSCode搭建远程开发环境,如何将前面在仿真环境下开发的导航功能部署到实体机器人上。 第10章是ROS进阶。话题通信、服务通信、参数服务器这3种通信方式在ROS中是最基本、最常用的通信方式,但是上述3种通信机制都存在一定的局限性。本章主要介绍ROS中关于通信机制的进阶策略,包括action通信与动态配置参数,除此之外,还介绍ROS中pluginlib和nodelet的使用,pluginlib可以提高程序灵活性,nodelet可以提高数据交互效率。 本书包含了编者团队的相关研究进展及学术成果。本书由张新钰组织编写,赵虚左、邱楠、郭世纯等参与了重要章节的编写,周沫、詹坤、赵珊珊、沈志远、李明、肖黎、李阳、桑明等参与了文字校对工作。 感谢国家重点研发计划和国家自然科学基金委员会的项目支持。 特别感谢清华大学出版社的谢琛老师在本书撰写过程中的指导和帮助。感谢多年来对编者团队给予大力支持和帮助的各位师长、同事和朋友。 作为前沿研究成果,本书中的表述可能会存在不妥之处,衷心希望各位专家学者和广大读者不吝批评和指正。 作者2023年2月