[套装书]ROS机器人项目开发11例(原书第2版)+ROS机器人开发:实用案例分析(2册)

作者
拉姆库玛·甘地那坦 郎坦·约瑟夫 卡罗尔·费尔柴尔德 托马斯L.哈曼
丛书名
机器人设计与制作系列
出版社
机械工业出版社
ISBN
9782101251550
简要
简介
内容简介书籍计算机书籍 ---------------------------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机器人开发:实用案例分析--------------------------- 本书针对基于ROS的机器人开发技术进行了全面综合的介绍,不仅涵盖ROS框架的基础知识,还详细描述模拟机器人模型的构建方法和真实机器人操控。本书循序渐进地以实例形式讲解移动机器人、飞行机器人、机器人手臂等各类机器人的ROS实现。通过控制这些机器人,无论是模拟还是在现实中,你都可以使用ROS控制来驱动、移动机器人,甚至是让机器人飞行。
目录



---------------------------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机器人开发:实用案例分析---------------------------


译者序
作者简介
前言
第1章 ROS初体验1
1.1 ROS的用途以及学习ROS的好处1
1.2 哪些机器人采用了ROS2
1.3 安装并启动ROS4
1.3.1 配置Ubuntu系统的软件源4
1.3.2 设置Ubuntu系统软件源列表5
1.3.3 设置Ubuntu系统密钥5
1.3.4 安装ROS Indigo5
1.3.5 初始化rosdep6
1.3.6 环境设置6
1.3.7 安装rosinstall7
1.3.8 故障排除—ROS环境测试7
1.4 生成一个catkin工作空间7
1.5 ROS的功能包与清单8
1.5.1 ROS清单9
1.5.2 探索ROS功能包9
1.6 ROS节点与ROS节点管理器11
1.6.1 ROS节点11
1.6.2 ROS节点管理器12
1.6.3 确定节点和主题的ROS命令14
1.7 第一个ROS机器人模拟程序—Turtlesim15
1.7.1 启动Turtlesim节点15
1.7.2 Turtlesim节点16
1.7.3 Turtlesim主题与消息18
1.7.4 Turtlesim的参数服务器20
1.7.5 移动乌龟的ROS服务22
1.8 ROS命令小结23
1.9 本章小结24
第2章 构建一个模拟的两轮ROS机器人25
2.1 rviz25
2.1.1 安装和启动rviz26
2.1.2 使用rviz27
2.2 生成并构建ROS功能包29
2.3 构建差分驱动的机器人URDF30
2.3.1 生成机器人底座31
2.3.2 使用roslaunch32
2.3.3 添加轮子35
2.3.4 添加小脚轮37
2.3.5 添加颜色38
2.3.6 添加碰撞属性40
2.3.7 移动轮子41
2.3.8 tf和robot_state_publisher简介42
2.3.9 添加物理学属性42
2.3.10 试用URDF工具43
2.4 Gazebo45
2.4.1 安装并启动Gazebo45
2.4.2 使用roslaunch启动Gazebo46
2.4.3 使用Gazebo47
2.4.4 机器人URDF的修改50
2.4.5 Gazebo模型验证51
2.4.6 在Gazebo中查看URDF51
2.4.7 机器人模型调整53
2.4.8 移动机器人模型53
2.4.9 其他的机器人仿真环境54
2.5 本章小结55
第3章 TurtleBot机器人操控56
3.1 TurtleBot机器人简介56
3.2 下载TurtleBot模拟器软件57
3.3 在Gazebo中启动TurtleBot模拟器58
3.3.1 常见问题与故障排除60
3.3.2 ROS命令与Gazebo61
3.3.3 模拟环境下使用键盘远程控制TurtleBot63
3.4 控制一台真正的TurtleBot机器人的准备64
3.5 联接上网本与远程计算机66
3.5.1 网络类型67
3.5.2 网络地址67
3.5.3 远程计算机网络设置68
3.5.4 上网本网络设置69
3.5.5 安全外壳协议联接69
3.5.6 网络设置小结70
3.5.7 排查网络联接中的故障70
3.5.8 TurtleBot机器人系统测试70
3.6 TurtleBot机器人的硬件规格参数72
3.7 移动真实的TurtleBot机器人73
3.7.1 采用键盘远程控制TurtleBot机器人移动74
3.7.2 采用ROS命令控制TurtleBot机器人移动75
3.7.3 编写第一个Python脚本程序控制TurtleBot机器人移动76
3.8 rqt工具简介79
3.8.1 rqt_graph79
3.8.2 rqt的消息发布与主题监控82
3.9 TurtleBot机器人的里程计84
3.9.1 模拟的TurtleBot机器人的测程84
3.9.2 真实的TurtleBot机器人的里程计在rviz下的显示86
3.10 TurtleBot机器人的自动充电88
3.11 本章小结90
第4章 TurtleBot机器人导航91
4.1 TurtleBot机器人的3D视觉系统92
4.1.1 3D视觉传感器原理92
4.1.2 3D传感器对比92
4.1.3 障碍物规避的缺陷96
4.2 配置TurtleBot机器人并安装3D传感器软件96
4.2.1 Kinect96
4.2.2 ASUS与PrimeSense98
4.2.3 摄像头软件结构98
4.2.4 术语界定98
4.3 独立模式下测试3D传感器99
4.4 运行ROS可视化节点100
4.4.1 使用Image Viewer可视化数据100
4.4.2 使用rviz可视化数据102
4.5 TurtleBot机器人导航105
4.5.1 采用TurtleBot机器人构建房间地图105
4.5.2 采用TurtleBot机器人实现自主导航109
4.5.3 rqt_reconfigure116
4.5.4 进一步探索ROS导航117
4.6 本章小结117
第5章 构建模拟的机器人手臂119
5.1 Xacro的特点119
5.2 采用Xacro建立一个关节式机器人手臂URDF121
5.2.1 使用Xacro属性标签121
5.2.2 使用roslaunch启动rrbot124
5.2.3 使用Xacro的包含与宏标签126
5.2.4 给机器人手臂添加网格129
5.3 在Gazebo中控制关节式机器人手臂133
5.3.1 添加Gazebo特定的元素133
5.3.2 将机器人手臂固定在世界坐标系下135
5.3.3 在Gazebo中查看机器人手臂135
5.3.4 给Xacro添加控件136
5.3.5 采用ROS命令行控制机器人手臂140
5.3.6 采用rqt控制机器人手臂141
5.4 本章小结143
第6章 机器人手臂摇摆的关节控制144
6.1 Baxter简介145
6.1.1 Baxter,一款研究型机器人146
6.1.2 Baxter模拟器147
6.2 Baxter的手臂147
6.2.1 Baxter的俯仰关节149
6.2.2 Baxter的滚转关节149
6.2.3 Baxter的坐标系149
6.2.4 Baxter手臂的控制模式150
6.2.5 Baxter手臂抓手151
6.2.6 Baxter手臂的传感器152
6.3 下载Baxter软件152
6.3.1 安装Baxter SDK软件152
6.3.2 安装Baxter模拟器154
6.3.3 配置Baxter shell155
6.3.4 安装MoveIt156
6.4 在Gazebo中启动Baxter模拟器157
6.4.1 启动Baxter模拟器157
6.4.2 “热身”练习161
6.4.3 弯曲Baxter手臂163
6.4.4 Baxter手臂控制器的调校173
6.5 Baxter手臂与正向运动学174
6.5.1 关节与关节状态发布器174
6.5.2 理解tf177
6.5.3 rviz下的tf坐标系180
6.5.4 查看机器人元素的tf树181
6.6 MoveIt简介182
6.6.1 采用MoveIt给Baxter手臂进行运动规划184
6.6.2 在场景中添加物体185
6.6.3 采用MoveIt进行避障运动规划186
6.7 配置真实的Baxter机器人188
6.8 控制真实的Baxter机器人190
6.8.1 控制关节到达航路点190
6.8.2 控制关节的力矩弹簧191
6.8.3 关节速度控制演示192
6.8.4 其他示例192
6.8.5 视觉伺服和抓握192
6.9 反向运动学193
6.10 本章小结196
第7章 空中机器人基本操控198
7.1 四旋翼飞行器简介199
7.1.1 风靡的四旋翼飞行器199
7.1.2 滚转角、俯仰角与偏航角200
7.1.3 四旋翼飞行器原理201
7.1.4 四旋翼飞行器的组成203
7.1.5 添加传感器203
7.1.6 四旋翼飞行器的通信204
7.2 四旋翼飞行器的传感器204
7.2.1 惯性测量单元205
7.2.2 四旋翼飞行器状态传感器205
7.3 放飞前的准备工作205
7.3.1 四旋翼飞行器检测206
7.3.2 飞行前检测列表206
7.3.3 飞行中的注意事项207
7.3.4 需要遵循的规则和条例207
7.4 在无人机中使用ROS208
7.5 Hector四旋翼飞行器简介208
7.5.1 下载Hector Quadrotor功能包209
7.5.2 在Gazebo中启动Hector四旋翼飞行器210
7.6 Crazyflie 2.0简介216
7.6.1 无ROS情况下的Crazy-flie控制218
7.6.2 使用Crazyradio PA进行通信218
7.6.3 加载Crazyflie ROS软件219
7.6.4 放飞前的检查222
7.6.5 使用teleop操控Crazy-flie飞行222
7.6.6 在运动捕获系统下飞行226
7.6.7 控制多个Crazyflie飞行226
7.7 Bebop简介227
7.7.1 加载bebop_autonomy软件228
7.7.2 Bebop飞行前的准备229
7.7.3 使用命令控制Bebop飞行230
7.8 本章小结231
第8章 使用外部设备控制机器人233
8.1 创建自定义ROS游戏控制器接口233
8.1.1 测试游戏控制器234
8.1.2 使用joy ROS功能包236
8.1.3 使用自定义游戏控制器接口控制Turtlesim237
8.2 创建自定义ROS Android设备接口242
8.2.1 使用Turtlebot Remocon进行操控242
8.2.2 使用Android设备实现ROS机器人的自定义控制245
8.3 在Arduino或树莓派上创建ROS节点249
8.3.1 使用Arduino249
8.3.2 使用树莓派260
8.4 本章小结261
第9章 操控Crazyflie执行飞行任务262
9.1 执行任务所需的组件263
9.1.1 用于Windows的Kinect v2263
9.1.2 Crazyflie操作263
9.1.3 任务软件结构264
9.1.4 OpenCV与ROS265
9.2 安装任务所需的软件266
9.2.1 安装libfreenect2267
9.2.2 安装iai_kinect2269
9.2.3 使用iai_kinect2元包271
9.3 任务设置277
9.3.1 探测Crazyflie与目标277
9.3.2 使用Kinect与OpenCV281
9.3.3 对Crazyflie进行跟踪283
9.4 Crazyflie控制285
9.5 放飞Crazyflie290
9.5.1 悬停290
9.5.2 飞往静止目标292
9.5.3 吸取的经验294
9.6 本章小结295
第10章 ROS功能扩展296
10.1 通过声音控制机器人296
10.1.1 Sphinx库297
10.1.2 Rospeex库298
10.2 给机器人添加语音功能299
10.3 给机器人添加人脸识别功能299
10.3.1 采用级联分类器进行人脸识别300
10.3.2 采用OpenCV进行人脸识别301
10.4 本章小结303

推荐

车牌查询
桂ICP备20004708号-3