- 商品参数
-
- 作者:
拉姆库玛·甘地那坦(Ramkumar著
- 出版社:机械工业出版社
- 出版时间:2021-01
- 开本:16开
- ISBN:9787487389447
- 版权提供:机械工业出版社
店铺公告
本店存在书、古旧书、收藏书、二手书等特殊商品,因受采购成本限制,可能高于定价销售,明码标价,介意者勿拍!
1.书籍因稀缺可能导致售价高于定价,图书实际定价参见下方详情内基本信息,请买家看清楚且明确后再拍,避免价格争议!
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 |
◆前言:◆ 机器人操作系统(Robot Operating System,ROS),是目前最流行的机器人学中间件,在全世界诸多大学和与机器人相关的行业中得到了广泛应用。自从ROS推出以来,许许多多搭载了ROS的机器人进入市场,用户能够通过其应用程序轻松使用这些机器人。ROS的一个主要特点是它的开源特性。ROS不需要用户重新发明“轮子”;相反,ROS中标准化的机器人操作和应用程序开发十分简单。 本书全面更新和修订了第1版,将介绍更新的ROS功能包、更引人入胜的项目案例以及一些新增特性。本书中的项目案例均基于ROS Melodic Morenia,对应的Ubuntu版本为Ubuntu Bionic 18.04。 通过本书,读者将理解机器人是怎样应用于各行各业的,并将一步步地了解构建异构机器人解决方案的流程与步骤。除了介绍ROS中的服务调用和动作特性之外,本书还将介绍一些更酷的技术,让机器人以智能的方式处理复杂的任务。这些知识将为读者构建更智能、更具自主化能力的机器人铺平道路。此外,我们还将介绍ROS-2,以便读者能够了解此版本与以前的ROS版本之间的差异,并在为应用程序选择特定中间件方面提供帮助。 企业和研究机构主要关注计算机视觉和自然语言处理领域。虽然本书的第1版介绍了一些简单的视觉应用程序,如物体检测和人脸跟踪,但本版还将介绍行业中使用最广泛的智能扬声器平台之一——亚马逊的Alexa,以及如何使用它控制机器人。同时,我们将引入新的硬件,如NVIDIA Jetson Nano、华硕Tinkerboard和BeagleBone Black,并探索它们与ROS融合应用的能力。 虽然人们可能知道如何控制单台机器人,但ROS社区用户面临的最常见问题之一是使用多个机器人协同工作,无论它们是否属于同一类型。在这种情况下,控制问题将变得十分复杂,因为机器人可能遵循相似的话题名称,并可能导致操作序列的混乱。本书将重点针对可能的冲突提出相应的解决方案。 本书还涉及强化学习,包括如何将强化学习应用于机器人学和ROS之中。此外,读者还将发现其他更有趣的项目,如构建自动驾驶汽车、使用ROS进行深度学习,以及使用虚拟现实头盔(VR头盔)和Leap Motion(一种体感控制器)构建遥操作解决方案。目前这些领域的技术还处于发展之中,相应的研究人员正在不断地进行研究。 读者对象 本书主要面向学生、机器人技术爱好者、相关领域的专业人员。此外,本书还适用于那些对从头开始学习和编写运动控制与传感器感知程序、算法感兴趣的人。本书甚至可能有助于初创企业开发新产品,或帮助研究人员利用现有资源创造新的创新成果。本书也适用于那些想在软件领域工作或成为机器人软件工程师的人。 本书主要内容 第1章主要向初学者概述ROS的基础知识。本章将帮助读者理解ROS软件框架的基本思想和概念。 第2章介绍ROS的最新框架——ROS-2。基于该框架,读者将能够使用ROS进行实时应用程序的开发。本章的结构与第1章类似,主要是帮助读者厘清ROS-1与ROS-2之间的区别,同时理解两个版本的能力与局限。 第3章介绍怎样在模拟环境下构建移动机器人以及机械臂,并将两者结合起来,通过ROS 对其进行控制。 第4章介绍基于状态机进行复杂机器人任务处理的技术,这些技术使得读者可以在使用机器人执行连续和复杂的任务管理时进行策略调整。 第5章是第3章、第4章内容的综合应用,基于这两章内容构建一个用户应用程序。该应用程序的功能是控制移动机械臂运送物品。本章将详细介绍上述应用程序的构建过程。 第6章介绍通过ROS在多个机器人间进行通信的方法,其中的机器人既可以是同类型的,也可以是不同类型的(即异构多机器人系统)。在此基础上,还将介绍对一组多机器人进行单独或同时控制的方法。 第7章介绍新型的嵌入式控制器及处理器板,例如基于STM32的控制器、Tinkerboard、Jetson Nano以及其他类似产品。本章还将介绍怎样通过ROS控制这些板卡的GPIO(General-Purpose Input/Output,通用输入/输出接口),以及如何通过Alexa提供的语音交互功能进行语音控制。 第8章介绍机器人学领域最重要的学习技术之一——强化学习。本章将介绍强化学习的内涵,并通过实例介绍强化学习背后的数学知识。此外,还将通过一系列实例展示强化学习技术是如何在ROS中进行应用的。 第9章介绍深度学习在机器人领域的应用。本章将介绍如何使用深度学习实现图像识别,还将介绍使用SVM(Support Vector Machine,支持向量机)的应用程序。 第10章是本书中最有趣的内容之一。本章将展示如何使用ROS和Gazebo构建一辆模拟的自动驾驶汽车。 第11章展示如何通过VR头盔和体感控制器Leap Motion实现对机器人的远程操控。本章将介绍VR头盔的应用,这是当前最流行的技术之一。 第12章通过一个项目展示如何在ROS下使用OpenCV库。在本项目中,将构建一个最基本的人脸跟踪器,实现摄像头对人脸的实时跟踪。本章将使用诸如Dynamixel的智能伺服系统实现机器人的旋转。 充分利用本书 读者需要一台运行Linux系统(最佳版本为Ubuntu 18.04)的个人计算机。 个人计算机配置需求为:具有显卡,内存不小于4GB(8GB更佳)。这主要是为了更好地运行Gazebo,也是为了更好地进行点云和计算机视觉处理。 读者最好能够拥有书中提到的传感器、执行器以及I/O板,并且能够将这些硬件连接到自己的计算机上,同时为了能够复制相关代码,读者需要安装Git。 如果读者使用Windows系统,则推荐下载VirtualBox,并在其中安装和配置Ubuntu。不过,需要提醒的一点是,在虚拟机中运行ROS相关程序、连接某些硬件时可能存在某些问题。 下载示例代码及彩色图像 本书的示例代码及所有截图和样图,可以从http://www.packtpub.com通过个人账号下载,也可以访问华章图书官网http://www.hzbook.com,通过注册并登录个人账号下载。 下载完成后,读者可以将代码压缩包解压到本地(请确保已经安装了解压缩软件),具体操作系统的相应解压缩软件如下: Windows下为WinRAR/7-Zip。 Mac下为Zipeg/iZip/UnRarX。 Linux下为7-Zip/PeaZip。 此外,读者还可以通过GitHub下载本书代码,网址为: http://github.com/PacktPublishing/ROS-Robotics-Projects-SecondEdition 如果代码有所更新,则上述网址相应的仓库代码也会进行更新。 本书约定 代码段示例: 输入或输出命令行示例: 表示警告或重要的说明。 表示提示和技巧。 |
智能机器人越来越多地走进千家万户,在民生、工业、军事等诸多领域发挥着越来越重要的作用。例如,在突如其来的新冠肺炎疫情中,许多机器人厂家推出了多种消毒机器人,这种机器人提升了相关场所的消毒效率,降低了人工消毒的风险,在多个国家和地区的防疫工作中大显身手。当前许多公司推出了各种各样的机器人,如著名的桌面机器人TurtleBot,以及针对自动驾驶研发的低速自动驾驶套件Openwalker,即本书封面的机器人。面对着各种各样的机器人,我们要学习哪些知识?怎样才能掌握通用的机器人开发技能呢?机器人操作系统(Robot Operating System,ROS)便是我们给出的答案。
ROS具有强大的功能、开源的特性、稳定的社区、广泛的硬件支持,已成为应用最为广泛的机器人操作系统,既是科学研究的利器,又是商业应用开发的“神兵”,吸引着越来越多的研究人员、机器人爱好者、相关从业者投身ROS学习和应用的大潮中。
机器人应用领域越发广泛,这要求业界人员掌握设计和开发不同应用场景的机器人系统的知识和能力;而要学好ROS,则需要进行大量实践操练。这就需要一本既涵盖多种应用场景,又提供大量实例的书籍来供各类人员学习。而本书正是针对上述需求而撰写的。
本书主要具有以下特点:
1.内容覆盖多个应用领域,能满足不同领域人员的学习需求
本书在12章的内容里对不同方面的ROS主题进行了较为深入的阐述,主要包括ROS-1与ROS-2的特性、移动机械臂模拟与应用开发、基于状态机的复杂任务处理(以餐厅服务员机器人为例)、送货机器人应用程序开发、多机器人协同、嵌入式平台ROS应用、强化学习应用(gym-gazebo和gym-gazebo2)、深度学习应用(TensorFlow)、自动驾驶汽车、基于VR头盔与手势识别传感器的机器人远程操控、基于OpenCV与伺服系统的人脸识别与跟踪,能够满足各个领域人员的不同学习需求。
2.既介绍基本原理,也讲述重要代码,满足深入学习ROS的需求
本书对包含的绝大多数主题都进行了较为深入的论述,如对强化学习原理、深度学习原理、高级主题的重要代码等都进行了阐述,适合读者对相关内容进行较为深入的学习,做到知其然,更知其所以然。当然,需要说明的是,作者并未对高深主题进行过于深入的论述,毕竟有些主题本身就是一个极其宏大的学科领域,如深度学习、机械臂动力学等,这些内容还需要读者自行学习更为专业的教材。
3.内容新颖,让读者能够及时享受ROS的最新成果
本书英文版出版于2019年12月,相较于第1版,本版本更新了除深度学习应用(基于TensorFlow)、自动驾驶汽车、基于OpenCV与伺服系统的人脸识别与跟踪等三个主题之外的所有内容,而且在嵌入式平台相关内容中介绍了最新的嵌入式硬件Jetson Nano和Raspberry Pi 3/4以及相应的ROS配置方法,内容十分新颖,基本保证了书中内容均为ROS的最新内容——基于ROS Melodic Morenia(截至2020年5月,ROS Noetic Ninjemys尚未发布,仍处于计划状态),而自2018年发展至今,两年的时间已使得绝大多数功能包都完成了由早期版本向ROS Melodic Morenia的迁移,这也是ROS官方当前推荐使用的长期支持版。
本书第1~5章由潘丽翻译,第6~8章由徐茜翻译,第9~11章由陈媛媛翻译,第12章由吴中红翻译,全书由潘丽统稿。
本书翻译过程得到了机械工业出版社李忠明编辑的大力帮助,在此谨表谢意。此外,在此也向组织出版了“机器人设计与制作系列”书籍的机械工业出版社华章公司、将ROS在国内的传播推广开来的胡春旭老师(古月居博主、《ROS机器人开发实践》作者)、组织了多届ROS暑期学校的华东师范大学张新宇博士、易科机器人的刘锦涛博士、致力于ROS课程建设的张瑞雷博士、星火计划发起人杨帆老师与林天麟博士、推出ROS学习神器ROS2GO的天之博特的田博博士(及张瑞雷博士、胡春旭老师)等表示崇高的敬意。得益于先行者们的无私奉献,国内的ROS发展才如此如火如荼。
需要说明的是,由于译者能力有限,也由于本书英文版部分论述不太符合国人的阅读和理解习惯,因此尽管译者本着忠于原文、语句通顺的原则进行翻译,但不可避免有不当之处,烦请读者不吝赐教,可向译者邮箱yizhousan@163.com发送邮件交流讨论。
译者
2020年5月于武汉
1