本书是目前机器人开发领域比较全面、系统的入门书籍,紧紧围绕工程实践进行内容和章节安排,不要求多好的数学基础,也没有过多的抽象理论,示例丰富、贴近实战,特别易于理解和上手实践。
全书共9章,分三个部分。*部分为基础部分(第1~2章),介绍了ROS的历史、开发环境搭建和基本概念;第二部分为实战部分(第3~7章),介绍了如何利用ROS去开发、调试相关的功能;第三部分为仿真部分(第8~9章),介绍了如何进行ROS的建模和仿真。另外在附录中介绍了常用的Linux、ROS基本命令。
随着关键器件的研究突破,服务机器人这几年发展得如火如荼,无论是担当物品运输的物流机器人还是进行室内清洁的扫地机器人,是执行空中侦察的无人机还是承载人类自动驾驶梦想的无人驾驶汽车,机器人总能为我们带来无限的遐想。随着技术的不断成熟和商业推广的不断开展,一个曾被认为是科幻中的世界也许某一天就会展现在我们面前。
作为机器人主流操作系统之一,ROS目前已经成为事实上的行业标准,同Android在智能手机领域的地位一样。但作为承载人类能听、会说以及会运动等特性的设备助理大脑,ROS在涉及较多跨学科知识的同时,其系统化的文档却较少,因此学习门槛相对较高。
本书注重ROS的基本概念和核心内容,努力为读者提供系统化的视角,同时从开发实践出发,希望能让读者快速上手,迅速掌握开发一款能听会说的机器人的技能。由于机器人导航相关的导航算法等内容已经逐渐由专业的底盘厂商提供,同时导航涉及较多的专业算法和跨学科知识,考虑到本书的篇幅、专业性以及阅读对象,导航相关的内容在本书中不做过多介绍,有兴趣的读者可以查阅相关的资料和书籍进行学习。
与市面上ROS相关书籍(主要介绍较旧的ROS Indigo、ROS Kinetic)不同,本书中的相关代码和环境搭建依托于当前最新的Ubuntu 18.04和ROS Melodic而进行,力图为读者提供最新的专业知识和行业解读。
读者对象
本书主要适合于有一定C 基础、对机器人开发感兴趣但尚无过多接触的软件工程师和理工科学生。
如何阅读本书
本书共包含9章和1个附录,具体如下。
第1章介绍了机器人的发展历史以及ROS的发展历程,并介绍了如何搭建ROS环境。
第2章从一个简单的实例开始介绍了ROS的基本概念,如节点、话题、消息、服务、动作等。
第3章从一个基本的程序开始介绍了如何开发ROS程序包,以及如何编译、调试ROS程序包。
第4章介绍了如何进行ROS的核心技能(消息、服务、动作、启动等)开发,以及如何进行参数配置和分布式计算。
第5章介绍了ROS和运动控制相关的坐标系、控制器等,为读者学习定位、导航等打下基础。
第6章介绍了ROS如何实现与语音交互相关的语音识别、语义合成、声源定位等,这些内容有助于读者开发会说的机器人。
第7章介绍了ROS如何与OpenCV结合进行图像、视觉处理,如何传输、处理图片,如何进行视频流处理等,这些内容有助于读者开发会看的机器人。
第8章介绍了如何进行ROS机器人建模,从最基础的URDF概念到如何利用Solid-works快速建模。
第9章介绍了如何在Gazebo中进行机器人仿真,以及如何搭建仿真环境。
最后的附录介绍了与Linux、ROS相关的基本命令行工具,使缺乏基础的读者也能快速上手。
勘误和支持
由于笔者的水平有限,再加上编写时间仓促,书中难免会出现一些表达不尽人意甚至错误的地方,恳请读者批评指正(可以通过mzl626@163.com与笔者进行交流)。期待能够得到大家的真挚反馈,在技术的道路上我们一起共勉。
致谢
感谢机械工业出版社华章公司的杨绣国编辑,在大半年的时间里她始终支持我的写作,并能允许我根据自己的时间安排写作计划。
感谢我的家人和孩子,他们一直尊重我的写作爱好,允许我把大量的业余时间(一部分本是用来陪伴他们的)花到写作上。
无为斋主
智能硬件和人工智能领域的资深专家,已出版技术著作3部,拥有15项授权发明专利,曾受邀在多家高校、论坛做技术讲座或授课,在智能硬件、移动互联网、企业服务、服务机器人、人工智能等领域拥有十余年的实践经验,目前在一个行业知名企业从事智能硬件和人工智能领域的技术开发与管理工作。
前言
第1章 机器人基础1
1.1 机器人发展历史 1
1.2 ROS发展历程 5
1.3 安装ROS环境 6
第2章 理解ROS 11
2.1 启动小海龟 11
2.2 系统架构 12
2.3 理解节点管理器 16
2.4 理解节点 19
2.5 理解话题 21
2.6 理解消息 23
2.7 理解服务 28
2.8 理解动作 30
2.9 理解参数 32
第3章 开发ROS 35
3.1 你好ROS 35
3.2 编译ROS 42
3.3 编译配置 49
3.4 调试ROS 62
第4章 资源与配置 67
4.1 消息通信 67
4.2 订阅服务 73
4.3 执行动作 77
4.4 启动管理 81
4.5 配置参数 89
4.6 分布式计算 97
第5章 运动控制 99
5.1 坐标系 99
5.1.1 理解坐标系 99
5.1.2 坐标变换 101
5.1.3 消息过滤 108
5.1.4 添加坐标系 111
5.2 控制器 113
5.2.1 控制器架构 114
5.2.2 双轮差速控制 121
第6章 语音处理 125
6.1 语音基础 127
6.2 语音识别 129
6.3 语音合成 137
6.4 声源定位 142
第7章 视觉处理 144
7.1 相机标定 144
7.2 图像处理 147
7.3 视频处理 152
第8章 机器人建模 157
8.1 URDF模型基础 157
8.2 实现URDF模型 169
8.3 使用Xacro建模 178
8.4 使用Solidworks建模 186
第9章 机器人仿真 193
9.1 Gazebo场景 194
9.1.1 场景基础 194
9.1.2 创建场景 198
9.2 Gazebo模型 199
9.3 启动仿真 207
附录A 常见Linux、ROS命令 210
参考文献 217