描述
开 本: 16开纸 张: 胶版纸包 装: 平装-胶订是否套装: 否国际标准书号ISBN: 9787111598176
内容简介
本书的基本目标是通过项目实践讲解ROS,探讨具有ROS接口的各种新技术。例如,你将看到如何构建自动驾驶汽车的原型,如何使用ROS构建深度学习的应用程序,以及如何在ROS中构建虚拟现实(VR)应用程序。此外,还将介绍使用ROS及其库的大约多个项目和应用程序。
目 录
Contents 目 录
译者序
推荐序一
推荐序二
作者简介
审校者简介
前言
致谢
第1章 入门ROS机器人应用程序开发 1
1.1 ROS入门 2
1.1.1 ROS发行版 2
1.1.2 支持ROS的操作系统 3
1.1.3支持ROS的机器人和传感器 4
1.1.4为什么选择ROS 5
1.2 ROS基础 6
1.2.1文件系统级 7
1.2.2计算图级 8
1.2.3ROS社区级 9
1.2.4ROS通信 9
1.3ROS客户端库 10
1.4ROS工具 11
1.4.1Rviz(ROS可视化) 11
1.4.2rqt_plot 11
1.4.3rqt_graph 12
1.5ROS仿真器 13
1.6在Ubuntu 16.04 LTS上安装ROS Kinetic 13
1.7在VirtualBox上设置ROS 17
1.8设置ROS工作区 19
1.9ROS在工业和研究中的机遇 20
1.10 问题 22
1.11 本章总结 22
第2章 使用ROS、OpenCV和Dynamixel伺服舵机进行人脸检测与跟踪 23
2.1项目概述 23
2.2硬件和软件需求 24
2.3ROS与Dynamixel伺服舵机的接口 33
2.4创建人脸跟踪ROS包 34
2.5人脸跟踪功能包的工作原理 36
2.5.1理解人脸跟踪代码 38
2.5.2理解CMakeLists.txt 41
2.5.3track.yaml文件 43
2.5.4启动文件 43
2.5.5运行人脸跟踪器节点 44
2.5.6face_tracker_control功能包 45
2.5.7 云台控制器配置文件 46
2.5.8舵机参数配置文件 47
2.5.9人脸跟踪控制器节点 47
2.5.10 创建CMakeLists.txt 49
2.5.11 测试人脸跟踪控制功能包 49
2.5.12 集成所有节点 51
2.5.13 固定支架并安装电路 51
2.5.14 终测试 52
2.6 问题 52
2.7 本章总结 53
第3章 在ROS中构建一个像Siri的聊天机器人 54
3.1人机交互机器人 54
3.2构建人机交互机器人 55
3.3预备条件 56
3.4AIML入门 57
3.4.1AIML标签 57
3.4.2PyAIML解释器 58
3.4.3在Ubuntu 16.04 LTS上安装PyAIML 59
3.4.4使用PyAIML 59
3.4.5加载多个AIML文件 60
3.4.6在ROS中创建AIML机器人 62
3.4.7AIML ROS功能包 62
3.5 问题 70
3.6 本章总结 70
第4章 使用ROS控制嵌入式电路板 71
4.1主流嵌入式电路板入门 71
4.1.1如何选择Arduino开发板 71
4.1.2Raspberry Pi(树莓派)介绍 74
4.1.3Odroid开发板 76
4.2Arduino与ROS的接口 76
4.2.1使用Arduino和ROS监控光线亮度 79
4.2.2在PC上运行ROS串行服务器 81
4.2.3通过mbed连接STM32开发板和ROS 82
4.2.4使用Energia连接ROS与Tiva C Launchpad板 85
4.3在Raspberry Pi和Odroid上运行ROS 87
4.3.1将Raspberry Pi和Odroid连接到PC 88
4.3.2ROS控制GPIO引脚 90
4.4 问题 94
4.5 本章总结 95
第5章 使用手势远程操作机器人 96
5.1使用键盘遥控ROS龟 97
5.2使用手势进行遥控 98
5.3项目配置 100
5.4MPU-9250、Arduino和ROS连接 101
5.5在Rviz中可视化IMU TF 106
5.6将IMU数据转换为twist消息 107
5.7集成和终运行 109
5.8使用Android手机进行遥控 111
5.9 问题 113
5.10 本章总结 113
第6章 物体检测和识别 114
6.1物体检测和识别的快速入门 114
6.2ROS中的find_object_2d包 116
6.2.1安装find_object_2d包 116
6.2.2运行find_object_2d节点检测网络摄像头图像中的物体 117
6.2.3使用深度传感器运行find_object_2d节点 121
6.33D物体识别快速入门 124
6.4ROS中3D物体识别包的介绍 125
6.5从3D网格中检测和识别物体 127
6.5.1使用物体的3D模型进行训练 127
6.5.2使用捕获的3D模型进行训练 129
6.6识别物体 132
6.7 问题 135
6.8 本章总结 135
第7章 使用ROS和TensorFlow进行深度学习 136
7.1深度学习及其应用简介 136
7.2深度学习机器人 137
7.3深度学习库 138
7.4TensorFlow入门 139
7.4.1在Ubuntu 16.04 LTS上安装TensorFlow 139
7.4.2TensorFlow的概念 141
7.4.3在TensorFlow中编写我们的个程序 143
7.5使用ROS和TensorFlow进行图像识别 146
7.5.1前提条件 147
7.5.2ROS图像识别节点 147
7.6scikit-learn介绍 150
7.7SVM及其在机器人中的应用 151
7.8 问题 154
7.9 本章总结 154
第8章 在MATLAB和Android上运行ROS 156
8.1ROS-MATLAB接口入门 156
8.2在MATLAB中设置机器人工具箱 157
8.2.1MATLAB中的基本ROS功能 157
8.2.2列出ROS节点、主题和消息 158
8.3MATLAB与ROS网络通信 160
8.4利用MATLAB控制ROS机器人 163
8.4.1设计MATLAB GUI应用程序 164
8.4.2解释回调 166
8.4.3运行应用程序 168
8.5Android及其ROS接口入门 169
8.5.1安装rosjava 170
8.5.2通过Ubuntu软件包管理器安装android-sdk 172
8.6安装ROS-Android接口 174
8.7使用ROS-Android应用程序 175
8.8代码演练 180
8.9使用ROS-Android接口创建基本应用程序 182
8.10 问题 183
8.11 本章总结 184
第9章 构建自主移动机器人 185
9.1机器人规格和设计概述 185
9.2设计和选择机器人的电动机和轮子 186
9.2.1计算电动机扭矩 186
9.2.2电动机转速的计算 186
9.2.3设计总结 187
9.3构建机器人本体的2D和3D模型 187
9.3.1底盘 1
译者序
推荐序一
推荐序二
作者简介
审校者简介
前言
致谢
第1章 入门ROS机器人应用程序开发 1
1.1 ROS入门 2
1.1.1 ROS发行版 2
1.1.2 支持ROS的操作系统 3
1.1.3支持ROS的机器人和传感器 4
1.1.4为什么选择ROS 5
1.2 ROS基础 6
1.2.1文件系统级 7
1.2.2计算图级 8
1.2.3ROS社区级 9
1.2.4ROS通信 9
1.3ROS客户端库 10
1.4ROS工具 11
1.4.1Rviz(ROS可视化) 11
1.4.2rqt_plot 11
1.4.3rqt_graph 12
1.5ROS仿真器 13
1.6在Ubuntu 16.04 LTS上安装ROS Kinetic 13
1.7在VirtualBox上设置ROS 17
1.8设置ROS工作区 19
1.9ROS在工业和研究中的机遇 20
1.10 问题 22
1.11 本章总结 22
第2章 使用ROS、OpenCV和Dynamixel伺服舵机进行人脸检测与跟踪 23
2.1项目概述 23
2.2硬件和软件需求 24
2.3ROS与Dynamixel伺服舵机的接口 33
2.4创建人脸跟踪ROS包 34
2.5人脸跟踪功能包的工作原理 36
2.5.1理解人脸跟踪代码 38
2.5.2理解CMakeLists.txt 41
2.5.3track.yaml文件 43
2.5.4启动文件 43
2.5.5运行人脸跟踪器节点 44
2.5.6face_tracker_control功能包 45
2.5.7 云台控制器配置文件 46
2.5.8舵机参数配置文件 47
2.5.9人脸跟踪控制器节点 47
2.5.10 创建CMakeLists.txt 49
2.5.11 测试人脸跟踪控制功能包 49
2.5.12 集成所有节点 51
2.5.13 固定支架并安装电路 51
2.5.14 终测试 52
2.6 问题 52
2.7 本章总结 53
第3章 在ROS中构建一个像Siri的聊天机器人 54
3.1人机交互机器人 54
3.2构建人机交互机器人 55
3.3预备条件 56
3.4AIML入门 57
3.4.1AIML标签 57
3.4.2PyAIML解释器 58
3.4.3在Ubuntu 16.04 LTS上安装PyAIML 59
3.4.4使用PyAIML 59
3.4.5加载多个AIML文件 60
3.4.6在ROS中创建AIML机器人 62
3.4.7AIML ROS功能包 62
3.5 问题 70
3.6 本章总结 70
第4章 使用ROS控制嵌入式电路板 71
4.1主流嵌入式电路板入门 71
4.1.1如何选择Arduino开发板 71
4.1.2Raspberry Pi(树莓派)介绍 74
4.1.3Odroid开发板 76
4.2Arduino与ROS的接口 76
4.2.1使用Arduino和ROS监控光线亮度 79
4.2.2在PC上运行ROS串行服务器 81
4.2.3通过mbed连接STM32开发板和ROS 82
4.2.4使用Energia连接ROS与Tiva C Launchpad板 85
4.3在Raspberry Pi和Odroid上运行ROS 87
4.3.1将Raspberry Pi和Odroid连接到PC 88
4.3.2ROS控制GPIO引脚 90
4.4 问题 94
4.5 本章总结 95
第5章 使用手势远程操作机器人 96
5.1使用键盘遥控ROS龟 97
5.2使用手势进行遥控 98
5.3项目配置 100
5.4MPU-9250、Arduino和ROS连接 101
5.5在Rviz中可视化IMU TF 106
5.6将IMU数据转换为twist消息 107
5.7集成和终运行 109
5.8使用Android手机进行遥控 111
5.9 问题 113
5.10 本章总结 113
第6章 物体检测和识别 114
6.1物体检测和识别的快速入门 114
6.2ROS中的find_object_2d包 116
6.2.1安装find_object_2d包 116
6.2.2运行find_object_2d节点检测网络摄像头图像中的物体 117
6.2.3使用深度传感器运行find_object_2d节点 121
6.33D物体识别快速入门 124
6.4ROS中3D物体识别包的介绍 125
6.5从3D网格中检测和识别物体 127
6.5.1使用物体的3D模型进行训练 127
6.5.2使用捕获的3D模型进行训练 129
6.6识别物体 132
6.7 问题 135
6.8 本章总结 135
第7章 使用ROS和TensorFlow进行深度学习 136
7.1深度学习及其应用简介 136
7.2深度学习机器人 137
7.3深度学习库 138
7.4TensorFlow入门 139
7.4.1在Ubuntu 16.04 LTS上安装TensorFlow 139
7.4.2TensorFlow的概念 141
7.4.3在TensorFlow中编写我们的个程序 143
7.5使用ROS和TensorFlow进行图像识别 146
7.5.1前提条件 147
7.5.2ROS图像识别节点 147
7.6scikit-learn介绍 150
7.7SVM及其在机器人中的应用 151
7.8 问题 154
7.9 本章总结 154
第8章 在MATLAB和Android上运行ROS 156
8.1ROS-MATLAB接口入门 156
8.2在MATLAB中设置机器人工具箱 157
8.2.1MATLAB中的基本ROS功能 157
8.2.2列出ROS节点、主题和消息 158
8.3MATLAB与ROS网络通信 160
8.4利用MATLAB控制ROS机器人 163
8.4.1设计MATLAB GUI应用程序 164
8.4.2解释回调 166
8.4.3运行应用程序 168
8.5Android及其ROS接口入门 169
8.5.1安装rosjava 170
8.5.2通过Ubuntu软件包管理器安装android-sdk 172
8.6安装ROS-Android接口 174
8.7使用ROS-Android应用程序 175
8.8代码演练 180
8.9使用ROS-Android接口创建基本应用程序 182
8.10 问题 183
8.11 本章总结 184
第9章 构建自主移动机器人 185
9.1机器人规格和设计概述 185
9.2设计和选择机器人的电动机和轮子 186
9.2.1计算电动机扭矩 186
9.2.2电动机转速的计算 186
9.2.3设计总结 187
9.3构建机器人本体的2D和3D模型 187
9.3.1底盘 1
前 言
前 言 Preface本书是通过使用有趣的项目学习ROS的实用指南。这本书假设你有一些ROS的知识。但是,如果没有ROS的经验,你仍然可以使用本书开始学习ROS。第1章完全是为初学者准备的。ROS广泛应用于机器人公司、大学和机器人研究实验室,用于设计和编程机器人。如果你想在机器人软件领域工作,或者你想成为一名机器人软件工程师,那么本书十分适合你。
本书的基本目标是通过项目实践讲解ROS。这里讨论的项目也可以在学术或工业项目中重复使用。本书探讨了具有ROS接口的各种新技术。例如,你将看到如何构建自动驾驶汽车的原型,如何使用ROS构建深度学习的应用程序,以及如何在ROS中构建虚拟现实(VR)应用程序。这些只是几个着重提及的主题。此外,你将会学习使用ROS及其库的多个项目和应用程序。
你可以在满足预备条件之后使用各类项目。大多数项目可以在没有很多依赖的情况下完成。我们使用主流和可行的硬件组件来构建大多数项目。因此这使得我们在创建这些项目时不会遇到太多困难。
本书首先讲述了ROS的基础知识及其广泛的应用。第1章可以作为零基础初学者的起点。之后,将深入探讨ROS的各类项目。
我们来学习并用ROS实现酷炫的项目吧!
本书的主要内容第1章适用于ROS零基础的初学者。如果你没有ROS的相关经验,也不必担心。本章将帮助你了解ROS软件框架及概念。
第2章通过使用ROS和OpenCV库实现一个酷炫的项目。项目本质上是创建了一个人脸跟踪的应用程序,实现了以摄像头始终指向人脸的方式进行跟踪。我们将使用如Dynamixel这样的智能伺服系统使机器人在其轴上旋转。
第3章介绍如何提高机器人的互动性和智能化。该项目在ROS中创建一个可以使用文本或语音进行交流的聊天机器人。如果想要创建聊天或服务机器人,这个项目将会很有用。
第4章可以帮助你使用Arduino、嵌入式兼容板、Raspberry Pi或Odroid以及ROS接口制作机器人。在该章中,你将看到各种嵌入式开发板和与之配套的接口项目。
第5章包括如何使用Arduino和IMU制作手势控制设备。手势由ROS节点转换为运动命令。
第6章介绍检测物体的有趣项目。使用强大的ROS包学习二维物体和三维物体的识别。
第7章介绍了一个在机器人上使用先进技术开发的项目。使用TensorFlow库和ROS,可以实现有趣的深度学习应用程序。你可以使用深度学习实现图像识别,本章还有关于使用SVM的应用程序。
第8章介绍如何使用ROS、MATLAB和Android编写机器人应用程序。
第9章介绍如何在ROS的帮助下制作一个自主移动机器人。你可以了解如何使用导航、gmapping和AMCL等软件包实现机器人自主移动。
第10章介绍了本书中很有趣的一个项目。在该章中,我们将使用ROS和Gazebo实现自动驾驶汽车的仿真。
第11章展示了如何使用VR头戴设备和Leap Motion传感器控制机器人的动作。你可以使用虚拟现实这一前沿技术。
第12章介绍了如何在ROS中使用rosbridge开发交互式Web应用程序。
阅读前的准备工作一个运行Linux发行版的强大PC,好是Ubuntu 16.04 LTS。
使用带有独立显卡的笔记本电脑或台式机,推荐4~8GB的内存。主要用于运行Gazebo高端仿真以及处理点云和计算机视觉。
有本书提到的传感器、执行器和I/O板,并且应该能将它们全部连接到PC。
需要安装Git克隆软件包文件。
如果你是Windows用户,那么下载VirtualBox并设置Ubuntu。在VirtualBox中尝试将实际硬件与ROS进行连接时,可能会遇到问题。所以,好使用Linux系统。
本书的读者对象如果你是机器人爱好者或研究人员并想了解更多有关使用ROS开发机器人应用程序的信息,本书正是为你准备的。为了学习本书,你应该具备ROS、GNU / Linux和C ++编程等概念的基础知识。这本书也适用于想要探索ROS的高级功能的程序开发人员。
致 谢 Acknowledgements感谢购买我之前两本ROS书籍的读者。事实上,正是他们的鼓励促使我写了本书。
感谢Packt出版团队为书的出版所提供的支持。没有你们,出书就是一个遥远的梦想。
特别感谢Packt的编辑Amedh Pohad和Namrata Patil,感谢他们在写作过程中的指导和建议。
特别感谢Ruixiang Du等所有审校者对内容的改进和提出的建议,是你们使本书变得更完美。
我生命中重要的是我的家人,没有他们的支持,我不可能写完本书。我想把这本书奉献给我的父母,他们给了我写作的灵感。这是我关于ROS的第三本书。感谢他们一直以来的支持。
还要感谢我之前的公司ASIMOV Robotics,在本书中为几个项目提供了组件。非常感谢!
再次感谢我的读者。我希望你们也喜欢这本书,我的小小成就都源于你们的支持。
本书的基本目标是通过项目实践讲解ROS。这里讨论的项目也可以在学术或工业项目中重复使用。本书探讨了具有ROS接口的各种新技术。例如,你将看到如何构建自动驾驶汽车的原型,如何使用ROS构建深度学习的应用程序,以及如何在ROS中构建虚拟现实(VR)应用程序。这些只是几个着重提及的主题。此外,你将会学习使用ROS及其库的多个项目和应用程序。
你可以在满足预备条件之后使用各类项目。大多数项目可以在没有很多依赖的情况下完成。我们使用主流和可行的硬件组件来构建大多数项目。因此这使得我们在创建这些项目时不会遇到太多困难。
本书首先讲述了ROS的基础知识及其广泛的应用。第1章可以作为零基础初学者的起点。之后,将深入探讨ROS的各类项目。
我们来学习并用ROS实现酷炫的项目吧!
本书的主要内容第1章适用于ROS零基础的初学者。如果你没有ROS的相关经验,也不必担心。本章将帮助你了解ROS软件框架及概念。
第2章通过使用ROS和OpenCV库实现一个酷炫的项目。项目本质上是创建了一个人脸跟踪的应用程序,实现了以摄像头始终指向人脸的方式进行跟踪。我们将使用如Dynamixel这样的智能伺服系统使机器人在其轴上旋转。
第3章介绍如何提高机器人的互动性和智能化。该项目在ROS中创建一个可以使用文本或语音进行交流的聊天机器人。如果想要创建聊天或服务机器人,这个项目将会很有用。
第4章可以帮助你使用Arduino、嵌入式兼容板、Raspberry Pi或Odroid以及ROS接口制作机器人。在该章中,你将看到各种嵌入式开发板和与之配套的接口项目。
第5章包括如何使用Arduino和IMU制作手势控制设备。手势由ROS节点转换为运动命令。
第6章介绍检测物体的有趣项目。使用强大的ROS包学习二维物体和三维物体的识别。
第7章介绍了一个在机器人上使用先进技术开发的项目。使用TensorFlow库和ROS,可以实现有趣的深度学习应用程序。你可以使用深度学习实现图像识别,本章还有关于使用SVM的应用程序。
第8章介绍如何使用ROS、MATLAB和Android编写机器人应用程序。
第9章介绍如何在ROS的帮助下制作一个自主移动机器人。你可以了解如何使用导航、gmapping和AMCL等软件包实现机器人自主移动。
第10章介绍了本书中很有趣的一个项目。在该章中,我们将使用ROS和Gazebo实现自动驾驶汽车的仿真。
第11章展示了如何使用VR头戴设备和Leap Motion传感器控制机器人的动作。你可以使用虚拟现实这一前沿技术。
第12章介绍了如何在ROS中使用rosbridge开发交互式Web应用程序。
阅读前的准备工作一个运行Linux发行版的强大PC,好是Ubuntu 16.04 LTS。
使用带有独立显卡的笔记本电脑或台式机,推荐4~8GB的内存。主要用于运行Gazebo高端仿真以及处理点云和计算机视觉。
有本书提到的传感器、执行器和I/O板,并且应该能将它们全部连接到PC。
需要安装Git克隆软件包文件。
如果你是Windows用户,那么下载VirtualBox并设置Ubuntu。在VirtualBox中尝试将实际硬件与ROS进行连接时,可能会遇到问题。所以,好使用Linux系统。
本书的读者对象如果你是机器人爱好者或研究人员并想了解更多有关使用ROS开发机器人应用程序的信息,本书正是为你准备的。为了学习本书,你应该具备ROS、GNU / Linux和C ++编程等概念的基础知识。这本书也适用于想要探索ROS的高级功能的程序开发人员。
致 谢 Acknowledgements感谢购买我之前两本ROS书籍的读者。事实上,正是他们的鼓励促使我写了本书。
感谢Packt出版团队为书的出版所提供的支持。没有你们,出书就是一个遥远的梦想。
特别感谢Packt的编辑Amedh Pohad和Namrata Patil,感谢他们在写作过程中的指导和建议。
特别感谢Ruixiang Du等所有审校者对内容的改进和提出的建议,是你们使本书变得更完美。
我生命中重要的是我的家人,没有他们的支持,我不可能写完本书。我想把这本书奉献给我的父母,他们给了我写作的灵感。这是我关于ROS的第三本书。感谢他们一直以来的支持。
还要感谢我之前的公司ASIMOV Robotics,在本书中为几个项目提供了组件。非常感谢!
再次感谢我的读者。我希望你们也喜欢这本书,我的小小成就都源于你们的支持。
评论
还没有评论。