ROS机器人操作系统基础 / 普通高等教育机器人工程专业系列教材
定价:¥69.00
作者: 邬洪迈,夏齐霄,金晓明,李克鸿
出版时间:2026-05-22
出版社:机械工业出版社
- 机械工业出版社
- 9787111804314
- 1-1
- 2026-05-22
- 409
内容简介
本书以培养学生的工程素质和增强学生的动手能力为目的,按照实践驱动的思路精心设计并开展兼具基础性和实用性的教学活动。全书共10章,从三个维度介绍机器人操作系统(ROS)的原理及应用,包括基础知识(ROS简介、机器人简介、ROS的结构),训练技能(ROS的基本操作、ROS的常用工具、机器人的SLAM与导航),应用融合(机器人的视觉识别、机器人的语音识别、ROS中的Gazebo仿真、ROS的愿景—ROS 2)。全书代码示例采用C++和Python语言编写,所有代码均可免费获取(关注封底“身边的信息学”微信服务号,输入本书5位书号80431即可获取)。
为配合教学,本书还配有教学用PPT等教学资源,需要的教师可登录机械工业出版社教育服务网(www.cmpedu.com)或联系编辑索取(微信:18515977506,电话:010-88379753)。
本书适合作为高等院校机器人工程、人工智能、自动化工程等专业的课程教材,同时可作为该领域技术人员的实践参考用书,助力读者掌握机器人技术。
为配合教学,本书还配有教学用PPT等教学资源,需要的教师可登录机械工业出版社教育服务网(www.cmpedu.com)或联系编辑索取(微信:18515977506,电话:010-88379753)。
本书适合作为高等院校机器人工程、人工智能、自动化工程等专业的课程教材,同时可作为该领域技术人员的实践参考用书,助力读者掌握机器人技术。
目录
第1章 ROS简介 1
1.1 ROS的源头 1
1.1.1 ROS的概念 1
1.1.2 ROS解决的问题 3
1.1.3 ROS的目标 3
1.1.4 ROS平台 4
1.2 ROS的安装 4
1.2.1 虚拟机软件VMware的下载与安装 4
1.2.2 在虚拟机中安装Ubuntu 18.04 8
1.2.3 设置系统分辨率 13
1.2.4 安装VMware Tools 13
1.2.5 安装Melodic 15
1.3 小结 21
1.4 习题 21
第2章 机器人简介 22
2.1 机器人的发展概述 22
2.1.1 机器人的概念 23
2.1.2 机器人的特点 24
2.2 机器人的组成 25
2.2.1 控制论范畴 25
2.2.2 系统论范畴 26
2.3 机器人的分类 26
2.4 智能机器人 28
2.5 小结 29
2.6 习题 29
第3章 ROS的结构 30
3.1 ROS的结构 30
3.1.1 ROS开源社区级 30
3.1.2 ROS文件系统级 31
3.1.3 ROS计算图级 32
3.2 数据的通信方式 35
3.2.1 基于话题的异步RPC数据通信 35
3.2.2 基于服务的同步RPC数据通信 36
3.2.3 节点的连接 37
3.3 小结 37
3.4 习题 38
第4章 ROS的基本操作 39
4.1 文件系统工具 39
4.2 创建ROS包 42
4.2.1 catkin功能包的结构 42
4.2.2 为catkin创建工作空间 42
4.2.3 创建和编译catkin功能包 44
4.2.4 包依赖项 45
4.3 节点 46
4.3.1 roscore 47
4.3.2 使用rosnode 48
4.4 ROS话题 49
4.4.1 使用rostopic 50
4.4.2 使用rqt_graph 53
4.4.3 使用rqt_plot 53
4.5 ROS服务和参数 54
4.5.1 使用rosservice 55
4.5.2 使用rosparam 57
4.6 使用rqt_console和roslaunch 59
4.6.1 使用rqt_console和rqt_logger level 59
4.6.2 使用roslaunch 61
4.7 创建ROS msg和srv 64
4.7.1 使用msg 64
4.7.2 使用srv 66
4.8 编写一个简单的发布器与订阅器 68
4.8.1 编写发布器节点 68
4.8.2 编写订阅器节点 74
4.9 编写一个简单的服务端和客户端 79
4.9.1 编写服务端节点 79
4.9.2 编写客户端节点 83
4.10 ROS数据记录与回放 87
4.11 小结 89
4.12 习题 90
第5章 ROS的常用工具 92
5.1 ROS的TF2坐标变换 92
5.1.1 TF2坐标变换初探 92
5.1.2 TF2坐标变换 94
5.1.3 TF2坐标变换示例 96
5.2 ROS的launch文件 105
5.3 ROS的可视化工具 107
5.3.1 Qt工具 107
5.3.2 rviz 108
5.3.3 Gazebo 109
5.4 小结 114
5.5 习题 114
第6章 机器人的SLAM与导航 115
6.1 SLAM简介 115
6.1.1 SLAM分类 115
6.1.2 激光雷达SLAM的关键步骤 116
6.2 导航简介 117
6.2.1 机器人导航的路径规划 117
6.2.2 机器人导航的数据要求 120
6.2.3 导航的基本控制器 127
6.2.4 ROS的costmap 127
6.2.5 ROS的costmap_2d 128
6.2.6 ROS的move_base 130
6.2.7 ROS的gmapping 132
6.2.8 ROS的amcl 134
6.3 智能服务机器人及其定位与导航 138
6.3.1 ARTRobot-ROS智能服务机器人的参数 138
6.3.2 ARTRobot-ROS智能服务机器人的定位 139
6.3.3 ARTRobot-ROS智能服务机器人的导航 143
6.4 小结 147
6.5 习题 147
第7章 机器人的视觉识别 148
7.1 ROS中常见的相机 148
7.1.1 Kinect 2.0 148
7.1.2 Astra相机 149
7.1.3 广角镜头 151
7.2 ROS中的图像话题格式 152
7.2.1 sensor_msgs/Image 152
7.2.2 sensor_msgs/PointCloud2 153
7.3 基于Python在ROS中编写一个视觉功能包 154
7.3.1 rospy 156
7.3.2 rospy中常见的API和消息类型 156
7.3.3 OpenCV 159
7.3.4 cv_bridge 160
7.4 相机标定 163
7.5 颜色识别 165
7.6 ROS二维码识别 167
7.7 ROS物体跟踪 169
7.8 ROS实现动态物体识别 171
7.9 小结 174
7.10 习题 174
第8章 机器人的语音识别 175
8.1 ROS消息包 175
8.1.1 ROS消息包介绍 175
8.1.2 ROS中的图像桥梁 176
8.2 ROS中的小海龟例程 176
8.2.1 ROS中的几何消息包geometrymsgs 177
8.2.2 roscpp的常用API 177
8.2.3 roscpp的其他常用API 178
8.2.4 编写一个速度控制节点操作小海龟 179
8.3 科大讯飞官方语音平台 180
8.3.1 简介 180
8.3.2 注册流程 180
8.3.3 SDK下载 182
8.4 科大讯飞官方API简介 184
8.4.1 语音识别类 184
8.4.2 语音合成类 184
8.5 科大讯飞实现语音交互功能 184
8.5.1 ROS实现语音输入的功能 185
8.5.2 ROS实现文字转语音的功能 186
8.5.3 ROS实现与机器人的简单对话 187
8.5.4 ROS实现语音控制小海龟 189
8.6 小结 190
8.7 习题 191
第9章 ROS中的Gazebo仿真 192
9.1 知识准备 192
9.1.1 URDF的含义 193
9.1.2 URDF文件的组成 194
9.1.3 使用SolidWorks创建机器人建模的功能包 196
9.1.4 URDF模型的创建 196
9.1.5 优化URDF模型 198
9.1.6 添加激光雷达模型 199
9.1.7 添加Kinect模型 201
9.2 机器人运动学分析 204
9.2.1 机器人运动学正解 204
9.2.2 机器人运动学逆解 205
9.3 Gazebo中的运动学规划插件 205
9.4 控制Gazebo中的模型运动 208
9.5 激光雷达建图算法 209
9.6 小结 213
9.7 习题 213
第10章 ROS的愿景——ROS 2 214
10.1 ROS 2概述 214
10.1.1 ROS 1的困局 214
10.1.2 ROS 2的优势 215
10.2 ROS 2的安装 216
10.2.1 ROS 2的安装方式 216
10.2.2 ROS 2的安装工具 216
10.2.3 ROS 2的安装步骤 216
10.2.4 ROS 2的官方案例 220
10.3 ROS 2的架构 220
10.3.1 ROS 2的系统架构 221
10.3.2 ROS 2的通信架构 221
10.3.3 ROS 2与ROS 1的融合 227
10.4 ROS 2的练习案例 228
10.5 小结 234
10.6 习题 235
习题参考答案 236
1.1 ROS的源头 1
1.1.1 ROS的概念 1
1.1.2 ROS解决的问题 3
1.1.3 ROS的目标 3
1.1.4 ROS平台 4
1.2 ROS的安装 4
1.2.1 虚拟机软件VMware的下载与安装 4
1.2.2 在虚拟机中安装Ubuntu 18.04 8
1.2.3 设置系统分辨率 13
1.2.4 安装VMware Tools 13
1.2.5 安装Melodic 15
1.3 小结 21
1.4 习题 21
第2章 机器人简介 22
2.1 机器人的发展概述 22
2.1.1 机器人的概念 23
2.1.2 机器人的特点 24
2.2 机器人的组成 25
2.2.1 控制论范畴 25
2.2.2 系统论范畴 26
2.3 机器人的分类 26
2.4 智能机器人 28
2.5 小结 29
2.6 习题 29
第3章 ROS的结构 30
3.1 ROS的结构 30
3.1.1 ROS开源社区级 30
3.1.2 ROS文件系统级 31
3.1.3 ROS计算图级 32
3.2 数据的通信方式 35
3.2.1 基于话题的异步RPC数据通信 35
3.2.2 基于服务的同步RPC数据通信 36
3.2.3 节点的连接 37
3.3 小结 37
3.4 习题 38
第4章 ROS的基本操作 39
4.1 文件系统工具 39
4.2 创建ROS包 42
4.2.1 catkin功能包的结构 42
4.2.2 为catkin创建工作空间 42
4.2.3 创建和编译catkin功能包 44
4.2.4 包依赖项 45
4.3 节点 46
4.3.1 roscore 47
4.3.2 使用rosnode 48
4.4 ROS话题 49
4.4.1 使用rostopic 50
4.4.2 使用rqt_graph 53
4.4.3 使用rqt_plot 53
4.5 ROS服务和参数 54
4.5.1 使用rosservice 55
4.5.2 使用rosparam 57
4.6 使用rqt_console和roslaunch 59
4.6.1 使用rqt_console和rqt_logger level 59
4.6.2 使用roslaunch 61
4.7 创建ROS msg和srv 64
4.7.1 使用msg 64
4.7.2 使用srv 66
4.8 编写一个简单的发布器与订阅器 68
4.8.1 编写发布器节点 68
4.8.2 编写订阅器节点 74
4.9 编写一个简单的服务端和客户端 79
4.9.1 编写服务端节点 79
4.9.2 编写客户端节点 83
4.10 ROS数据记录与回放 87
4.11 小结 89
4.12 习题 90
第5章 ROS的常用工具 92
5.1 ROS的TF2坐标变换 92
5.1.1 TF2坐标变换初探 92
5.1.2 TF2坐标变换 94
5.1.3 TF2坐标变换示例 96
5.2 ROS的launch文件 105
5.3 ROS的可视化工具 107
5.3.1 Qt工具 107
5.3.2 rviz 108
5.3.3 Gazebo 109
5.4 小结 114
5.5 习题 114
第6章 机器人的SLAM与导航 115
6.1 SLAM简介 115
6.1.1 SLAM分类 115
6.1.2 激光雷达SLAM的关键步骤 116
6.2 导航简介 117
6.2.1 机器人导航的路径规划 117
6.2.2 机器人导航的数据要求 120
6.2.3 导航的基本控制器 127
6.2.4 ROS的costmap 127
6.2.5 ROS的costmap_2d 128
6.2.6 ROS的move_base 130
6.2.7 ROS的gmapping 132
6.2.8 ROS的amcl 134
6.3 智能服务机器人及其定位与导航 138
6.3.1 ARTRobot-ROS智能服务机器人的参数 138
6.3.2 ARTRobot-ROS智能服务机器人的定位 139
6.3.3 ARTRobot-ROS智能服务机器人的导航 143
6.4 小结 147
6.5 习题 147
第7章 机器人的视觉识别 148
7.1 ROS中常见的相机 148
7.1.1 Kinect 2.0 148
7.1.2 Astra相机 149
7.1.3 广角镜头 151
7.2 ROS中的图像话题格式 152
7.2.1 sensor_msgs/Image 152
7.2.2 sensor_msgs/PointCloud2 153
7.3 基于Python在ROS中编写一个视觉功能包 154
7.3.1 rospy 156
7.3.2 rospy中常见的API和消息类型 156
7.3.3 OpenCV 159
7.3.4 cv_bridge 160
7.4 相机标定 163
7.5 颜色识别 165
7.6 ROS二维码识别 167
7.7 ROS物体跟踪 169
7.8 ROS实现动态物体识别 171
7.9 小结 174
7.10 习题 174
第8章 机器人的语音识别 175
8.1 ROS消息包 175
8.1.1 ROS消息包介绍 175
8.1.2 ROS中的图像桥梁 176
8.2 ROS中的小海龟例程 176
8.2.1 ROS中的几何消息包geometrymsgs 177
8.2.2 roscpp的常用API 177
8.2.3 roscpp的其他常用API 178
8.2.4 编写一个速度控制节点操作小海龟 179
8.3 科大讯飞官方语音平台 180
8.3.1 简介 180
8.3.2 注册流程 180
8.3.3 SDK下载 182
8.4 科大讯飞官方API简介 184
8.4.1 语音识别类 184
8.4.2 语音合成类 184
8.5 科大讯飞实现语音交互功能 184
8.5.1 ROS实现语音输入的功能 185
8.5.2 ROS实现文字转语音的功能 186
8.5.3 ROS实现与机器人的简单对话 187
8.5.4 ROS实现语音控制小海龟 189
8.6 小结 190
8.7 习题 191
第9章 ROS中的Gazebo仿真 192
9.1 知识准备 192
9.1.1 URDF的含义 193
9.1.2 URDF文件的组成 194
9.1.3 使用SolidWorks创建机器人建模的功能包 196
9.1.4 URDF模型的创建 196
9.1.5 优化URDF模型 198
9.1.6 添加激光雷达模型 199
9.1.7 添加Kinect模型 201
9.2 机器人运动学分析 204
9.2.1 机器人运动学正解 204
9.2.2 机器人运动学逆解 205
9.3 Gazebo中的运动学规划插件 205
9.4 控制Gazebo中的模型运动 208
9.5 激光雷达建图算法 209
9.6 小结 213
9.7 习题 213
第10章 ROS的愿景——ROS 2 214
10.1 ROS 2概述 214
10.1.1 ROS 1的困局 214
10.1.2 ROS 2的优势 215
10.2 ROS 2的安装 216
10.2.1 ROS 2的安装方式 216
10.2.2 ROS 2的安装工具 216
10.2.3 ROS 2的安装步骤 216
10.2.4 ROS 2的官方案例 220
10.3 ROS 2的架构 220
10.3.1 ROS 2的系统架构 221
10.3.2 ROS 2的通信架构 221
10.3.3 ROS 2与ROS 1的融合 227
10.4 ROS 2的练习案例 228
10.5 小结 234
10.6 习题 235
习题参考答案 236














