作者 |
伯纳多·朗奎洛·贾蓬 拉姆库玛·甘地那坦 郎坦·约瑟夫 |
丛书名 |
机器人设计与制作系列 |
出版社 |
机械工业出版社 |
ISBN |
9782108241555 |
简要 |
简介 |
内容简介书籍计算机书籍 ---------------------------8083413 - ROS机器人编程实践--------------------------- 本书首先介绍GoPiGo3及其配备的传感器和执行器。然后,通过从零开始创建3D模型并使用Gazebo在ROS中运行模拟机器人来使用GoPiGo3的数字孪生模型。接下来展示如何使用GoPiGo3构建和运行一个了解周围环境的自主移动机器人。还探索了机器人如何学习尚未在代码中编程但通过观察其环境而获得的任务。本书甚至还涵盖深度学习和强化学习等主题。在本书的末尾,读者将熟悉在机器人技术中构建特定用途应用程序的基础知识,并具备从零起步开发高度智能自主机器人的能力。本书适合机器人技术人员和业余爱好者阅读。 ---------------------------8077994 - 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的接口。 |
目录 |
[套装书具体书目] 8077994 - ROS机器人项目开发11例(原书第2版) - 9787111672449 - 机械工业出版社 - 定价 99 8083413 - ROS机器人编程实践 - 9787111689157 - 机械工业出版社 - 定价 89 ---------------------------8083413 - ROS机器人编程实践--------------------------- 译者序 前言 作者简介 审校者简介 第一部分 物理机器人组装与测试 第1章 组装机器人 2 1.1GoPiGo3机器人介绍 2 1.1.1机器人技术角度 3 1.1.2编程角度 3 1.1.3机器人套件和资源 4 1.2熟悉嵌入式硬件 7 1.2.1GoPiGo3开发板 7 1.2.2Raspberry Pi 3B+ 9 1.2.3为什么机器人需要CPU 10 1.3深入理解机电 10 1.4整合到一起 17 1.5快速硬件测试 18 1.5.1资源 18 1.5.2DexterOS入门 19 1.5.3用Bloxter编程 20 1.5.4校准机器人 20 1.5.5驱动机器人 22 1.5.6检查传感器 22 1.5.7关闭机器人 23 1.6总结 23 1.7习题 24 1.8进一步阅读 24 第2章 GoPiGo3的组件测试 25 2.1技术要求 25 2.2Python和JupyterLab入门 25 2.2.1为GoPiGo3启动JupyterLab 26 2.2.2硬件测试 29 2.3传感器和驱动的组件测试 32 2.3.1快速入门传感器和电动机 32 2.3.2机器人漫游 32 2.3.3距离传感器 35 2.3.4伺服软件包 40 2.3.5巡线跟随器 42 2.3.6IMU 43 2.3.7Raspberry Pi 43 2.3.8GoPiGo3项目 45 2.4总结 46 2.5习题 46 2.6进一步阅读 47 第3章 ROS入门 48 3.1技术要求 48 3.2ROS基本概念 49 3.2.1ROS图 50 3.2.2roscore 51 3.2.3工作空间和catkin 51 3.3配置ROS开发环境 52 3.3.1安装ROS 52 3.3.2集成开发环境 55 3.4ROS节点之间的通信—消息和主题 56 3.4.1创建工作空间 56 3.4.2设置ROS软件包 60 3.4.3发布主题的节点 62 3.4.4订阅主题的节点 65 3.4.5在同一节点中合并发布者和订阅者 67 3.5对ROS使用公开可用的软件包 69 3.6总结 69 3.7习题 70 3.8进一步阅读 70 第二部分 使用Gazebo进行 机器人仿真 第4章 创建虚拟两轮ROS机器人 72 4.1技术要求 72 4.2RViz机器人可视化入门 73 4.3使用URDF构建差动驱动机器人 74 4.3.1用于GoPiGo3的URDF概述 75 4.3.2机器人主体URDF 76 4.3.3左右轮的URDF模型 79 4.4使用RViz在ROS中查看GoPiGo3模型 81 4.4.1理解roslaunch命令 82 4.4.2通过RViz控制GoPiGo3机器人的车轮 84 4.5URDF模型中的机器人参考坐标系 86 4.6在构建时使用RViz查看模型 88 4.6.1在RViz窗口中更改模型的外观 88 4.6.2使用ROS工具进行检查 89 4.7总结 90 4.8习题 90 4.9进一步阅读 91 第5章 使用Gazebo进行机器人行为仿真 92 5.1技术要求 92 5.2Gazebo仿真器入门 93 5.3修改机器人URDF 96 5.3.1扩展URDF以生成SDF机器人定义 97 5.3.2碰撞和物理性质 97 5.3.3Gazebo标签 99 5.4验证Gazebo模型并查看URDF 99 5.5移动模型 102 5.6总结 105 5.7习题 105 5.8进一步阅读 106 第三部分 使用SLAM进行自主导航 第6章 在ROS中编程—命令和工具 108 6.1技术要求 109 6.2设置物理机器人 109 6.2.1下载并设置Ubuntu Mate 18.04 109 6.2.2访问自定义 110 6.2.3设置VNC服务器(x11vnc) 110 6.2.4Geany IDE 112 6.2.5安装GoPiGo3和DI传感器的驱动程序 112 6.2.6设置Pi Camera 114 6.2.7安装ROS Melodic 115 6.3ROS编程快速入门 116 6.3.1设置工作空间 116 6.3.2克隆ROS软件包 117 6.3.3第一次执行ROS节点 117 6.4案例研究1:编写ROS距离传感器软件包 118 6.4.1创建一个新软件包 119 6.4.2编写自己的源代码 119 6.5使用ROS命令 125 6.5.1Shell命令 125 6.5.2执行命令 126 6.5.3信息命令 127 6.5.4软件包和catkin工作空间 128 6.6创建并运行发布者和订阅者节点 129 6.7使用roslaunch自动执行节点 131 6.8案例研究2:ROS GUI开发工具—Pi Camera 133 6.8.1使用rqt_graph分析ROS图 134 6.8.2使用rqt_image_view显示图像数据 135 6.8.3用rqt_plot绘制传感器数据的时间序列 135 6.8.4使用rqt_bag播放录制的ROS会话 136 6.9使用ROS参数自定义机器人功能 138 6.10总结 140 6.11习题 140 6.12进一步阅读 141 第7章 机器人控制与仿真 142 7.1技术要求 142 7.2设置GoPiGo3开发环境 143 7.3案例研究3:使用键盘进行远程控制 146 7.3.1在机器人中运行gopigo3节点 146 7.3.2遥控软件包 149 7.3.3在笔记本电脑上运行远程操作 149 7.4使用ROS主题进行远程控制 151 7.4.1运动控制主题—/cmd_vel 151 7.4.2使用/cmd_vel直接驱动GoPiGo3 152 7.4.3检查GoPiGo3的X、Y和Z轴 154 7.4.4组合运动 154 7.5远程控制物理和虚拟机器人 155 7.5.1将ROS主节点还原到本地计算机 155 7.5.2用Gazebo仿真GoPiGo3 156 7.5.3同时在真实世界和仿真中运行 158 7.6总结 159 7.7习题 160 7.8进一步阅读 160 第8章 使用Gazebo进行虚拟SLAM和导航 162 8.1技术要求 162 8.1.1ROS导航软件包 163 8.1.2在本地计算机上运行ROS主节点 164 8.2使用Gazebo进行动态仿真 164 8.3导航组件 171 8.4机器人感知和SLAM 172 8.4.1添加LDS 172 8.4.2SLAM概念 176 8.5使用GoPiGo3练习SLAM和导航 178 8.5.1探索使用SLAM构建地图的环境 178 8.5.2使用导航沿着计划的轨迹行驶 180 8.6总结 182 8.7习题 182 8.8进一步阅读 183 第9章 用于机器人导航的SLAM 184 9.1技术要求 184 9.2为机器人准备LDS 186 9.2.1设置YDLIDAR 186 9.2.2与Raspberry Pi集成 188 9.2.3从远程笔记本电脑处理YDLIDAR数据 193 9.3在ROS中创建导航应用程序 195 9.4使用GoPiGo3练习导航 196 9.4.1绘制环境图 196 9.4.2在现实世界中导航GoPiGo3 198 9.5总结 199 9.6习题 199 9.7进一步阅读 199 第四部分 使用机器学习的 自适应机器人行为 第10章 在机器人技术中应用机器学习 202 10.1技术要求 202 10.2在系统中配置TensorFlow 203 10.2.1安装pip 203 10.2.2安装TensorFlow及其他依赖项 204 10.2.3使用GPU获得更好的性能 204 10.3机器人技术中的机器学习 205 10.3.1机器学习的核心概念 206 10.3.2机器学习线程 207 10.4从机器学习到深度学习 208 10.4.1机器学习算法 208 10.4.2深度学习和神经网络 210 10.5通过编程将机器学习应用于机器人技术的方法 213 10.5.1应用程序编程的一般方法 213 10.5.2集成机器学习任务 214 10.6深度学习应用于机器人技术—计算机视觉 215 10.6.1Gazebo中的目标识别 216 10.6.2现实世界中的目标识别 217 10.7总结 220 10.8习题 220 10.9进一步阅读 221 第11章 使用OpenAI Gym进行机器学习 222 11.1技术要求 223 11.2OpenAI Gym简介 224 11.2.1安装OpenAI Gym 224 11.2.2安装OpenAI ROS 226 11.2.3智能体、人工智能和机器学习 226 11.2.4倒立摆示例 227 11.2.5Q-learning说明—自动驾驶出租车示例 231 11.3运行环境 235 11.4配置环境文件 236 11.5运行仿真并绘制结果 237 11.6总结 240 11.7习题 240 11.8进一步阅读 241 第12章 通过强化学习实现目标 242 12.1技术要求 242 12.2使用TensorFlow、Keras和Anaconda配置环境 243 12.2.1TensorFlow后端 243 12.2.2使用Keras进行深度学习 244 12.2.3ROS依赖软件包 244 12.3了解ROS机器学习软件包 244 12.3.1训练场景 245 12.3.2用于运行强化学习任务的ROS软件包结构 245 12.4设置训练任务参数 246 12.5训练GoPiGo3避开障碍物到达目标位置 247 12.5.1如何运行仿真 249 12.5.2场景1—前往目标位置 249 12.5.3场景2—避开障碍物前往目标位置 251 12.6总结 255 12.7习题 256 12.8进一步阅读 256 附录 习题答案 257 ---------------------------8077994 - 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 |