本书首先介绍GoPiGo3及其配备的传感器和执行器。然后,通过从零开始创建3D模型并使用Gazebo在ROS中运行模拟机器人来使用GoPiGo3的数字孪生模型。接下来展示如何使用GoPiGo3构建和运行一个了解周围环境的自主移动机器人。还探索了机器人如何学习尚未在代码中编程但通过观察其环境而获得的任务。本书甚至还涵盖深度学习和强化学习等主题。在本书的末尾,读者将熟悉在机器人技术中构建特定用途应用程序的基础知识,并具备从零起步开发高度智能自主机器人的能力。本书适合机器人技术人员和业余爱好者阅读。
目录
- 译者序
- 前言
- 作者简介
- 审校者简介
- 第一部分物理机器人组装与测试
- 第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