[套装书]ROS机器人项目开发11例(原书第2版)+ROS机器人高效编程(原书第3版)(2册)[POD]

作者
拉姆库玛·甘地那坦 郎坦·约瑟夫 阿尼尔·马哈塔尼
丛书名
机器人设计与制作系列
出版社
机械工业出版社
ISBN
9782101251526
简要
简介
内容简介书籍计算机书籍 ---------------------------ROS机器人项目开发11例(原书第2版)--------------------------- 本书涵盖新的ROS发行版中的项目——ROS Melodic Morenia with Ubuntu Bionic(18.04)。从基本原理开始,本书向你介绍了ROS-2,并帮助你了解它与ROS-1的不同之处。你将能够在ROS中建模并构建工业移动机械手臂,并在Gazebo 9中进行模拟。然后,你将了解如何使用状态机处理复杂的机器人应用程序,以及一次处理多个机器人。本书还向你介绍了新的、流行的硬件,如Nvidia的Jetson Nano、华硕修补板和Beaglebone Black,并允许你探索与ROS的接口。 ---------------------------ROS机器人高效编程(原书第3版)--------------------------- 本书包含了大量示例,帮助你开发机器人程序,并为你提供使用开源ROS库和工具的完整解决方案。本书主要内容包括:ROS的概念、命令行工具、可视化GUI以及如何调试ROS,如何将机器人传感器和执行器连接到ROS,如何从摄像头和3D传感器获取数据并分析数据,如何在机器人/传感器和环境仿真中使用Gazebo,如何设计机器人,如何使用OpenCV3.0为机器人添加视觉功能,如何使用新版本的PCL向机器人添加3D感知功能。本书适合各个阶层的机器人开发人员和机器人爱好者阅读。
目录



---------------------------ROS机器人项目开发11例(原书第2版)---------------------------


译者序
前言
作者简介
第1章 ROS入门 1
1.1 技术要求 2
1.2 ROS概述 2
1.2.1 ROS发行版 3
1.2.2 支持的操作系统 3
1.2.3 支持的机器人及传感器 4
1.2.4 为什么选择ROS 5
1.3 ROS基础 6
1.3.1 文件系统层级 7
1.3.2 计算图层级 7
1.3.3 ROS社区层级 9
1.3.4 ROS中的通信 9
1.4 ROS客户端库 10
1.5 ROS工具 11
1.5.1 ROS的可视化工具RViz 11
1.5.2 rqt_plot 11
1.5.3 rqt_graph 12
1.6 ROS模拟器 13
1.7 在Ubuntu 18.04 LTS上安装ROS Melodic 13
1.8 在VirtualBox上设置ROS 18
1.9 Docker简介 19
1.9.1 为什么选择Docker 20
1.9.2 安装Docker 20
1.10 设置ROS工作空间 23
1.11 ROS在工业界和学术界的机遇 25
1.12 本章小结 25
第2章 ROS-2及其特性简介 26
2.1 技术要求 27
2.2 ROS-2概述 27
2.2.1 ROS-2发行版 28
2.2.2 支持的操作系统 28
2.2.3 支持的机器人及传感器 29
2.2.4 为什么选择ROS-2 29
2.3 ROS-2基础 30
2.3.1 什么是DDS 30
2.3.2 DDS的实现 30
2.3.3 计算图 31
2.3.4 ROS-2社区层级 32
2.3.5 ROS-2中的通信 32
2.3.6 ROS-2的变化 33
2.4 ROS-2客户端库 33
2.5 ROS-2工具 34
2.5.1 RViz2 34
2.5.2 Rqt 36
2.6 安装ROS-2 36
2.6.1 开始安装 37
2.6.2 获取ROS-2源码 38
2.6.3 ROS-1、ROS-2以及共存环境设置 41
2.6.4 运行测试节点 42
2.7 设置ROS-2工作空间 44
2.8 编写ROS-2节点 45
2.8.1 ROS-1代码示例 45
2.8.2 ROS-2代码示例 46
2.8.3 ROS-1发布者节点与ROS-2发布者节点的区别 49
2.9 ROS-1和ROS-2的通信 50
2.10 本章小结 52
第3章 构建工业级移动机械臂 53
3.1 技术要求 54
3.2 常见的移动机械臂 54
3.3 移动机械臂应用场景 55
3.4 移动机械臂构建入门 56
3.4.1 单位及坐标系 57
3.4.2 Gazebo及ROS机器人模型格式设定 57
3.5 机器人底座构建 58
3.5.1 机器人底座需求 58
3.5.2 软件参数 60
3.5.3 机器人底座建模 60
3.5.4 机器人底座模拟 64
3.5.5 机器人底座测试 68
3.6 机械臂构建 70
3.6.1 机械臂需求 71
3.6.2 软件参数 72
3.6.3 机械臂建模 72
3.6.4 机械臂模拟 74
3.6.5 机械臂测试 77
3.7 系统集成 78
3.7.1 移动机械臂建模 78
3.7.2 移动机械臂模拟与测试 79
3.8 本章小结 80
第4章 基于状态机的复杂机器人任务处理 81
4.1 技术要求 81
4.2 ROS动作机制简介 82
4.2.1 服务器–客户端结构概述 82
4.2.2 actionlib示例:机械臂客户端 83
4.2.3 基于actionlib的服务器–客户端示例:电池模拟器 85
4.3 服务员机器人应用示例 90
4.4 状态机简介 92
4.5 SMACH简介 93
4.6 SMACH入门 96
4.6.1 SMACH-ROS的安装与使用 96
4.6.2 简单示例 96
4.6.3 餐厅机器人应用示例 98
4.7 本章小结 102
第5章 构建工业级应用程序 103
5.1 技术要求 103
5.2 应用案例:机器人送货上门 104
5.3 机器人底座智能化 106
5.3.1 添加激光扫描传感器 106
5.3.2 配置导航栈 108
5.3.3 环境地图构建 110
5.3.4 机器人底座定位 111
5.4 机械臂智能化 111
5.4.1 Moveit简介 112
5.4.2 安装与配置Moveit 113
5.4.3 通过Moveit控制机械臂 117
5.5 应用程序模拟 120
5.5.1 环境地图构建与保存 120
5.5.2 选择目标点 120
5.5.3 添加目标点 121
5.5.4 状态机构建 121
5.6 机器人改进 121
5.7 本章小结 122
第6章 多机器人协同 123
6.1 技术要求 123
6.2 集群机器人基本概念 124
6.3 集群机器人分类 125
6.4 ROS中的多机器人通信 125
6.4.1 单个roscore和公共网络 126
6.4.2 群组/名称空间的使用 127
6.4.3 基于群组/名称空间的多机器人系统构建示例 128
6.5 多master概念简介 131
6.5.1 multimaster_fkie功能包简介 132
6.5.2 安装multimaster_fkie功能包 133
6.5.3 设置multimaster_fkie功能包 133
6.6 多机器人应用示例 136
6.7 本章小结 138
第7章 嵌入式平台上的ROS应用及其控制 139
7.1 技术要求 139
7.2 嵌入式板基础知识 140
7.2.1 重要概念介绍 141
7.2.2 机器人领域微控制器和微处理器的区别 142
7.2.3 板卡选型步骤 142
7.3 微控制器板简介 143
7.3.1 Arduino Mega 143
7.3.2 STM32 144
7.3.3 ESP8266 145
7.3.4 ROS支持的嵌入式板 146
7.3.5 对比表格 147
7.4 单板计算机简介 147
7.4.1 CPU板 148
7.4.2 GPU板 151
7.5 Debian与Ubuntu 152
7.6 在Tinkerboard S平台上设置操作系统 153
7.6.1 基础需求 153
7.6.2 安装Tinkerboard Debian操作系统 153
7.6.3 安装Armbian和ROS 154
7.6.4 使用可用的ROS镜像安装 156
7.7 在BeagleBone Black平台上设置ROS 156
7.7.1 基础需求 156
7.7.2 安装Debian 操作系统 157
7.7.3 安装Ubuntu和ROS 158
7.8 在Raspberry Pi 3/4平台上设置ROS 159
7.8.1 基础需求 159
7.8.2 安装Raspbian和ROS 159
7.8.3 安装Ubuntu和ROS 160
7.9 在Jetson Nano平台上设置ROS 161
7.10 通过ROS控制GPIO 161
7.10.1 Tinkerboard S 162
7.10.2 BeagleBone Black 163
7.10.3 Raspberry Pi 3/4 164
7.10.4 Jetson Nano 165
7.11 嵌入式板基准测试 166
7.12 Alexa入门及连接ROS 168
7.12.1 Alexa 技能构建前提条件 168
7.12.2 创建Alexa技能 169
7.13 本章小结 173
第8章 强化学习与机器人学 174
8.1 技术要求 174
8.2 机器学习概述 175
8.2.1 监督学习 175
8.2.2 无监督学习 175
8.2.3 强化学习 176
8.3 理解强化学习 176
8.3.1 探索与开发 177
8.3.2 强化学习公式 177
8.3.3 强化学习平台 178
8.3.4 机器人领域的强化学习应用 179
8.4 马尔可夫决策过程与贝尔曼方程 179
8.5 强化学习算法 181
8.5.1 出租车问题应用示例 181
8.5.2 TD预测 182
8.5.3 TD控制 183
8.6 ROS中的强化学习功能包 189
8.6.1 gym-gazebo 189
8.6.2 gym-gazebo2 194
8.7 本章小结 196
第9章 ROS下基于TensorFlow的深度学习 197
9.1 技术要求 197
9.2 深度学习及其应用简介 198
9.3 机器人领域的深度学习 198
9.4 深度学习库 199
9.5 TensorFlow入门 200
9.5.1 在Ubuntu 18.04 LTS上安装TensorFlow 200
9.5.2 TensorFlow概念 202
9.5.3 在TensorFlow下编写第一行代码 204
9.6 ROS下基于TensorFlow的图像识别 206
9.6.1 基础需求 207
9.6.2 ROS图像识别节点 207
9.7 scikit-learn简介 210
9.8 SVM及其在机器人领域的应用简介 211
9.9 本章小结 214
第10章 ROS下的自动驾驶汽车构建 215
10.1 技术要求 215
10.2 自动驾驶汽车入门 216
10.3 典型自动驾驶汽车基本组件 218
10.3.1 GPS、IMU和车轮编码器 218
10.3.2 摄像头 219
10.3.3 超声波传感器 219
10.3.4 LIDAR与RADAR 219
10.3.5 自动驾驶汽车的软件模块体系结构 221
10.4 ROS下的自动驾驶汽车模拟与交互 222
10.4.1 Velodyne LIDAR模拟 223
10.4.2 ROS下的Velodyne传感器接口 224
10.4.3 激光扫描仪模拟 225
10.4.4 模拟代码扩展 226
10.4.5 ROS下的激光扫描仪接口 227
10.4.6 Gazebo下的立体与单目摄像头模拟 228
10.4.7 ROS下的摄像头接口 229
10.4.8 Gazebo下的GPS模拟 230
10.4.9 ROS下的GPS接口 231
10.4.10 Gazebo下的IMU模拟 231
10.4.11 ROS下的IMU接口 233
10.4.12 Gazebo下的超声波传感器模拟 233
10.4.13 低成本LIDAR传感器 235
10.5 Gazebo下带传感器的自动驾驶汽车模拟 236
10.6 ROS下的DBW汽车接口 241
10.6.1 功能包安装 241
10.6.2 自动驾驶汽车及传感器数据可视化 241
10.6.3 基于ROS与DBW通信 243
10.7 Udacity开源自动驾驶汽车项目简介 243
10.7.1 Udacity的开源自动驾驶汽车模拟器 244
10.7.2 MATLAB ADAS工具箱 246
10.8 本章小结 246
第11章 基于VR头盔和Leap Motion的机器人遥操作 247
11.1 技术要求 248
11.2 VR头盔和Leap Motion传感器入门 248
11.3 项目设计和实施 250
11.4 在Ubuntu 14.04.5上安装Leap Motion SDK 251
11.4.1 可视化Leap Motion控制器数据 252
11.4.2 使用Leap Motion可视化工具 252
11.4.3 安装用于Leap Motion控制器的ROS驱动程序 253
11.5 RViz中Leap Motion数据的可视化 255
11.6 使用Leap Motion控制器创建遥操作节点 256
11.7 构建ROS-VR Android应用程序 258
11.8 ROS-VR应用程序的使用及与Gazebo的交互 260
11.9 VR下的TurtleBot模拟 262
11.9.1 安装TurtleBot模拟器 262
11.9.2 在VR中控制TurtleBot 262
11.10 ROS-VR应用程序故障排除 263
11.11 ROS-VR应用与Leap Motion遥操作功能集成 264
11.12 本章小结 265
第12章 基于ROS、Open CV和Dynamixel伺服系统的人脸识别与跟踪 266
12.1 技术要求 266
12.2 项目概述 267
12.3 硬件和软件基础需求 267
12.4 使用RoboPlus配置Dynamixel伺服系统 271
12.5 Dynamixel与ROS连接 275
12.6 创建人脸跟踪器ROS功能包 276
12.7 使用人脸跟踪ROS功能包 278
12.7.1 理解人脸跟踪器代码 279
12.7.2 理解CMakeLists.txt 283
12.7.3 track.yaml文件 284
12.7.4 启动文件 284
12.7.5 运行人脸跟踪器节点 285
12.7.6 face_tracker_control功能包 286
12.7.7 平移控制器配置文件 287
12.7.8 伺服系统参数配置文件 287
12.7.9 人脸跟踪控制器节点 288
12.7.10 创建CMakeLists.txt 289
12.7.11 测试人脸跟踪器控制功能包 290
12.7.12 节点集成 291
12.7.13 固定支架并设置电路 291
12.7.14 最终运行 292
12.8 本章小结 292


---------------------------ROS机器人高效编程(原书第3版)---------------------------


推荐序一
推荐序二
译者序
前言
作者简介
审校者简介
第1章 ROS入门 1
1.1 PC安装教程 3
1.2 使用软件库安装ROS Kinetic 3
1.2.1 配置Ubuntu软件库 4
1.2.2 添加软件库到sources.list文件中 4
1.2.3 设置密钥 5
1.2.4 安装ROS 5
1.2.5 初始化rosdep 6
1.2.6 配置环境 6
1.2.7 安装rosinstall 7
1.3 如何安装VirtualBox和Ubuntu 8
1.3.1 下载VirtualBox 8
1.3.2 创建虚拟机 9
1.4 通过Docker镜像使用ROS 11
1.4.1 安装Docker 11
1.4.2 获取和使用ROS Docker镜像和容器 11
1.5 在BeagleBone Black上安装ROS Kinetic 12
1.5.1 准备工作 13
1.5.2 配置主机和source.list文件 16
1.5.3 设置密钥 16
1.5.4 安装ROS功能包 17
1.5.5 为ROS初始化rosdep 17
1.5.6 在BeagleBone Black中配置环境 18
1.5.7 在BeagleBone Black中安装rosinstall 18
1.5.8 BeagleBone Black基本ROS示例 18
1.6 本章小结 19
第2章 ROS架构及概念 20
2.1 理解ROS文件系统级 20
2.1.1 工作空间 21
2.1.2 功能包 22
2.1.3 元功能包 23
2.1.4 消息 24
2.1.5 服务 25
2.2 理解ROS计算图级 25
2.2.1 节点与nodelet 27
2.2.2 主题 28
2.2.3 服务 29
2.2.4 消息 29
2.2.5 消息记录包 30
2.2.6 节点管理器 30
2.2.7 参数服务器 30
2.3 理解ROS开源社区级 31
2.4 ROS试用练习 32
2.4.1 ROS文件系统导览 32
2.4.2 创建工作空间 32
2.4.3 创建ROS功能包和元功能包 33
2.4.4 编译ROS功能包 34
2.4.5 使用ROS节点 35
2.4.6 如何使用主题与节点交互 37
2.4.7 如何使用服务 39
2.4.8 使用参数服务器 41
2.4.9 创建节点 42
2.4.10 编译节点 44
2.4.11 创建msg和srv文件 45
2.4.12 使用新建的srv和msg文件 48
2.4.13 launch文件 51
2.4.14 动态参数 53
2.5 本章小结 57
第3章 可视化和调试工具 58
3.1 调试ROS节点 60
3.1.1 使用gdb调试器调试ROS节点 60
3.1.2 在ROS节点启动时调用gdb调试器 61
3.1.3 在ROS节点启动时调用valgrind分析节点 62
3.1.4 设置ROS节点core文件转储 62
3.2 日志消息 62
3.2.1 输出日志消息 62
3.2.2 设置调试消息级别 63
3.2.3 为特定节点配置调试消息级别 64
3.2.4 消息命名 65
3.2.5 按条件显示消息与过滤消息 65
3.2.6 显示消息的方式——单次、可调以及其他组合 66
3.2.7 使用rqt_console和rqt_logger_level在运行时修改调试级别 66
3.3 检测系统状态 69
3.4 设置动态参数 73
3.5 当出现异常状况时使用roswtf 75
3.6 可视化节点诊断 77
3.7 绘制标量数据图 78
3.8 图像可视化 81
3.9 3D可视化 83
3.9.1 使用rqt_rviz在3D世界中实现数据可视化 83
3.9.2 主题与坐标系的关系 86
3.9.3 可视化坐标变换 87
3.10 保存与回放数据 88
3.10.1 什么是消息记录包文件 89
3.10.2 使用rosbag在消息记录包文件中记录数据 89
3.10.3 回放消息记录包文件 90
3.10.4 查看消息记录包文件的主题和消息 91
3.11 应用rqt与rqt_gui插件 93
3.12 本章小结 93
第4章 3D建模与仿真 95
4.1 在ROS中自定义机器人的3D模型 95
4.2 创建第一个URDF文件 95
4.2.1 解释文件格式 97
4.2.2 在rviz里查看3D模型 98
4.2.3 加载网格到机器人模型中 100
4.2.4 使机器人模型运动 100
4.2.5 物理和碰撞属性 101
4.3 xacro——一种更好的机器人建模方法 102
4.3.1 使用常量 102
4.3.2 使用数学方法 103
4.3.3 使用宏 103
4.3.4 使用代码移动机器人 103
4.3.5 使用SketchUp进行3D建模 107
4.4 在ROS中仿真 109
4.4.1 在Gazebo中使用URDF 3D模型 109
4.4.2 在Gazebo中添加传感器 112
4.4.3 在Gazebo中加载和使用地图 115
4.4.4 在Gazebo中移动机器人 116
4.5 本章小结 118
第5章 导航功能包集入门 119
5.1 ROS导航功能包集 119
5.2 创建变换 120
5.2.1 创建广播器 121
5.2.2 创建侦听器 121
5.2.3 查看坐标变换树 124
5.3 发布传感器信息 124
5.4 发布里程数据信息 127
5.4.1 Gazebo如何获取里程数据 128
5.4.2 使用Gazebo创建里程数据 131
5.4.3 创建自定义里程数据 132
5.5 创建基础控制器 135
5.6 使用ROS创建地图 139
5.6.1 使用map_server保存地图 141
5.6.2 使用map_server加载地图 141
5.7 本章小结 142
第6章 导航功能包集进阶 144
6.1 创建功能包 144
6.2 创建机器人配置 144
6.3 配置全局和局部代价地图 147
6.3.1 基本参数的配置 147
6.3.2 全局代价地图的配置 148
6.3.3 局部代价地图的配置 149
6.3.4 底盘局部规划器配置 149
6.4 为导航功能包集创建启动文件 150
6.5 为导航功能包集设置rviz 151
6.5.1 2D位姿估计 152
6.5.2 2D导航目标 152
6.5.3 静态地图 154
6.5.4 粒子云 154
6.5.5 机器人占地空间 155
6.5.6 局部代价地图 156
6.5.7 全局代价地图 156
6.5.8 全局规划 157
6.5.9 局部规划 158
6.5.10 规划器规划 158
6.5.11 当前目标 159
6.6 自适应蒙特卡罗定位 160
6.7 使用rqt_reconfigure修改参数 161
6.8 机器人避障 162
6.9 发送目标 163
6.10 本章小结 166
第7章 使用MoveIt! 167
7.1 MoveIt!体系结构 167
7.1.1 运动规划 169
7.1.2 规划场景 169
7.1.3 世界几何结构显示器 170
7.1.4 运动学 170
7.1.5 碰撞检测 170
7.2 在MoveIt!中集成一个机械臂 171
7.2.1 工具箱里有什么 171
7.2.2 使用设置助手生成一个MoveIt!功能包 172
7.2.3 集成到RViz中 176
7.2.4 集成到Gazebo或实际机械臂中 179
7.3 简单的运动规划 180
7.3.1 规划单个目标 181
7.3.2 规划一个随机目标 181
7.3.3 规划预定义的群组状态 183
7.3.4 显示目标的运动 183
7.4 考虑碰撞的运动规划 184
7.4.1 将对象添加到规划场景中 184
7.4.2 从规划的场景中删除对象 185
7.4.3 应用点云进行运动规划 186
7.5 抓取和放置任务 187
7.5.1 规划的场景 188
7.5.2 要抓取的目标对象 189
7.5.3 支撑面 189
7.5.4 感知 191
7.5.5 抓取 191
7.5.6 抓取操作 193
7.5.7 放置操作 195
7.5.8 演示模式 197
7.5.9 在Gazebo中仿真 198
7.6 本章小结 199
第8章 在ROS下使用传感器和执行器 200
8.1 使用游戏杆或游戏手柄 200
8.1.1 joy_node如何发送游戏杆动作消息 201
8.1.2 使用游戏杆数据移动机器人模型 202
8.2 使用Arduino添加更多的传感器和执行器 206
8.2.1 创建使用Arduino的示例程序 207
8.2.2 由ROS和Arduino控制的机器人平台 210
8.3 使用9自由度低成本IMU 217
8.3.1 安装Razor IMU ROS库 219
8.3.2 Razor如何在ROS中发送数据 221
8.3.3 创建一个ROS节点以使用机器人中的9DoF传感器数据 222
8.3.4 使用机器人定位来融合传感器数据 223
8.4 使用IMU——Xsens MTi 225
8.5 GPS的使用 226
8.5.1 GPS如何发送信息 228
8.5.2 创建一个使用GPS的工程示例 229
8.6 使用激光测距仪——Hokuyo URG-04lx 230
8.6.1 了解激光如何在ROS中发送数据 231
8.6.2 访问和修改激光数据 232
8.7 创建launch文件 234
8.8 使用Kinect传感器查看3D环境中的对象 235
8.8.1 Kinect如何发送和查看传感器数据 236
8.8.2 创建使用Kinect的示例 238
8.9 使用伺服电动机——Dynamixel 239
8.9.1 Dynamixel如何发送和接收运动命令 241
8.9.2 创建和使用伺服电动机示例 241
8.10 本章小结 243
第9章 计算机视觉 244
9.1 ROS摄像头驱动程序支持 245
9.1.1 FireWire IEEE1394摄像头 245
9.1.2 USB摄像头 249
9.1.3 使用OpenCV制作USB摄像头驱动程序 250
9.2 ROS图像 255
9.3 ROS中的OpenCV库 256
9.3.1 安装OpenCV 3.0 256
9.3.2 在ROS中使用OpenCV 256
9.4 使用rqt_image_view显示摄像头输入的图像 257
9.5 标定摄像头 257
9.5.1 如何标定摄像头 258
9.5.2 双目标定 261
9.6 ROS图像管道 264
9.7 计算机视觉任务中有用的ROS功能包 269
9.7.1 视觉里程计 270
9.7.2 使用viso2实现视觉里程计 270
9.7.3 摄像头位姿标定 271
9.7.4 运行viso2在线演示 273
9.7.5 使用低成本双目摄像头运行viso2 276
9.8 使用RGBD深度摄像头实现视觉里程计 276
9.8.1 安装fovis 276
9.8.2 用Kinect RGBD深度摄像头运行fovis 277
9.9 计算两幅图像的单应性 278
9.10 本章小结 279
第10章 点云 280
10.1 理解点云库 280
10.1.1 不同的点云类型 281
10.1.2 PCL中的算法 281
10.1.3 ROS的PCL接口 282
10.2 我的第一个PCL程序 283
10.2.1 创建点云 284
10.2.2 加载和保存点云到硬盘中 287
10.2.3 可视化点云 290
10.2.4 滤波和缩减采样 294
10.2.5 配准与匹配 298
10.2.6 点云分区 301
10.3 分割 305
10.4 本章小结 308

推荐

车牌查询
桂ICP备20004708号-3