作者 |
伯纳多·朗奎洛·贾蓬 卡罗尔·费尔柴尔德托马斯· L.哈曼 |
丛书名 |
机器人设计与制作系列 |
出版社 |
机械工业出版社 |
ISBN |
9782108241562 |
简要 |
简介 |
内容简介书籍计算机书籍 ---------------------------8083413 - ROS机器人编程实践--------------------------- 本书首先介绍GoPiGo3及其配备的传感器和执行器。然后,通过从零开始创建3D模型并使用Gazebo在ROS中运行模拟机器人来使用GoPiGo3的数字孪生模型。接下来展示如何使用GoPiGo3构建和运行一个了解周围环境的自主移动机器人。还探索了机器人如何学习尚未在代码中编程但通过观察其环境而获得的任务。本书甚至还涵盖深度学习和强化学习等主题。在本书的末尾,读者将熟悉在机器人技术中构建特定用途应用程序的基础知识,并具备从零起步开发高度智能自主机器人的能力。本书适合机器人技术人员和业余爱好者阅读。 ---------------------------8067954 - ROS机器人开发:实用案例分析(原书第2版)--------------------------- 本书不仅涵盖ROS的基础知识,还循序渐进地讲解了ROS机器人的高级应用特性。书中首先对ROS的基本配置进行介绍,内容包括ROS的安装、基本概念、主要的功能包与工具等。然后对相应的故障排查方法进行了论述。之后通过模拟的方式,先对Tu rtIesim的ROS组成模块进行描述,再对其他几类典型机器人的ROS组成模块进行相应的介绍。对ROS组成模块的介绍,一般遵循的流程是首先介绍基本的ROS命令,然后对ROS的功能包、节点、主题以及消息进行论述,以此来对ROS机器人操作系统的整体内容进行详细的阐述。为了对书中选用的机器人的整体性能进行描述,书中还给出了相关机器人的技术资料。 |
目录 |
[套装书具体书目] 8067954 - ROS机器人开发:实用案例分析(原书第2版) - 9787111648598 - 机械工业出版社 - 定价 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 ---------------------------8067954 - ROS机器人开发:实用案例分析(原书第2版)--------------------------- 译者序 前言 作者简介 审校者简介 第1章 ROS初体验 1 1.1 ROS的用途以及学习ROS的好处 1 1.2 哪些机器人采用了ROS 2 1.3 安装并启动ROS 4 1.3.1 配置Ubuntu系统的软件源 4 1.3.2 设置Ubuntu系统软件源列表 5 1.3.3 设置Ubuntu系统密钥 5 1.3.4 安装ROS Kinetic 5 1.3.5 初始化rosdep 6 1.3.6 环境设置 6 1.3.7 安装 rosinstall 6 1.3.8 故障排除—ROS环境测试 7 1.4 创建catkin工作空间 7 1.5 ROS的功能包与清单 8 1.5.1 ROS清单 8 1.5.2 探索ROS功能包 8 1.6 ROS节点、话题与消息 10 1.6.1 ROS节点 11 1.6.2 ROS话题 11 1.6.3 ROS消息 11 1.6.4 ROS节点管理器 12 1.6.5 确定节点和话题的ROS命令 13 1.7 第一个ROS机器人模拟程序turtlesim 15 1.7.1 启动turtlesim节点 15 1.7.2 turtlesim节点 16 1.7.3 turtlesim话题与消息 18 1.7.4 通过发布/turtle1/cmd_vel话题控制乌龟运动 20 1.7.5 通过键盘或游戏手柄控制乌龟移动 22 1.7.6 turtlesim的参数服务器 22 1.7.7 控制乌龟移动的ROS服务 24 1.8 ROS命令小结 25 1.9 本章小结 26 第2章 构建一个模拟的两轮ROS机器人 27 2.1 Rviz简介 27 2.1.1 安装和启动Rviz 28 2.1.2 熟悉Rviz界面 29 2.2 生成并构建ROS功能包 32 2.3 构建差分驱动的机器人URDF 33 2.3.1 创建机器人底座 33 2.3.2 使用roslaunch 34 2.3.3 添加轮子 37 2.3.4 添加小脚轮 39 2.3.5 添加颜色 41 2.3.6 添加碰撞属性 42 2.3.7 移动轮子 43 2.3.8 tf和robot_state_publisher简介 44 2.3.9 添加物理学属性 45 2.3.10 试用URDF工具 46 2.4 Gazebo 47 2.4.1 安装并启动Gazebo 48 2.4.2 使用roslaunch启动Gazebo 49 2.4.3 熟悉Gazebo界面 50 2.4.4 机器人URDF的修改 54 2.4.5 Gazebo模型验证 55 2.4.6 在Gazebo中查看URDF 56 2.4.7 机器人模型调整 57 2.4.8 移动机器人模型 58 2.4.9 其他的机器人模拟环境 59 2.5 本章小结 60 第3章 TurtleBot机器人操控 61 3.1 TurtleBot 2机器人简介 61 3.2 下载TurtleBot 2模拟器软件 63 3.3 在Gazebo中启动TurtleBot 2模拟器 63 3.3.1 常见问题与故障排除 65 3.3.2 ROS命令与Gazebo 66 3.3.3 模拟环境下使用键盘远程控制TurtleBot 2 68 3.4 控制真正的TurtleBot 2机器人的设置 69 3.5 连接上网本与远程计算机 71 3.5.1 网络类型 71 3.5.2 网络地址 72 3.5.3 远程计算机网络设置 73 3.5.4 上网本网络设置 73 3.5.5 SSH连接 74 3.5.6 网络设置小结 74 3.5.7 排查网络连接中的故障 75 3.5.8 TurtleBot 2机器人系统测试 75 3.6 TurtleBot 2机器人的硬件规格参数 76 3.7 移动真实的TurtleBot 2机器人 78 3.7.1 采用键盘远程控制TurtleBot 2机器人移动 78 3.7.2 采用ROS命令控制TurtleBot 2机器人移动 79 3.7.3 编写第一个Python脚本程序控制TurtleBot 2机器人移动 80 3.8 rqt工具简介 83 3.8.1 rqt_graph 83 3.8.2 rqt的消息发布与话题监控 86 3.9 TurtleBot机器人的测程 87 3.9.1 模拟的TurtleBot 2机器人的测程 91 3.9.2 Rviz下真实的TurtleBot 2机器人的测程显示 93 3.10 TurtleBot机器人的自动充电 95 3.11 TurtleBot 3介绍 96 3.12 下载TurtleBot 3模拟软件 98 3.13 在Rviz中启动TurtleBot 3模拟软件 99 3.14 在Gazebo中启动TurtleBot 3模拟软件 100 3.15 硬件装配与测试 103 3.16 下载TurtleBot 3机器人软件包 103 3.16.1 在远程计算机上安装软件 103 3.16.2 在SBC上安装软件 104 3.17 TurtleBot 3与远程计算机的网络连接 107 3.17.1 远程计算机网络设置 108 3.17.2 TurtleBot 3网络设置 108 3.17.3 SSH通信测试 110 3.17.4 网络连接的故障处理 110 3.18 控制真实的TurtleBot 3移动 111 3.19 本章小结 113 第4章 TurtleBot机器人导航 114 4.1 TurtleBot机器人的3D视觉系统 115 4.1.1 3D视觉传感器原理 115 4.1.2 3D传感器对比 116 4.2 配置TurtleBot机器人并安装3D 传感器软件 123 4.2.1 Kinect 123 4.2.2 ASUS与PrimeSense 123 4.2.3 Intel RealSense 124 4.2.4 摄像头软件结构 124 4.2.5 术语定义 125 4.3 独立模式下测试3D传感器 125 4.4 运行ROS节点进行可视化 126 4.4.1 使用Image Viewer可视化数据 126 4.4.2 使用Rviz可视化数据 128 4.5 TurtleBot机器人导航 131 4.5.1 采用TurtleBot 2机器人构建房间地图 132 4.5.2 采用TurtleBot 2机器人实现自主导航 136 4.5.3 导航至指定目标点 142 4.5.4 基于Python脚本与地图实现航路点导航 144 4.5.5 TurtleBot 3机器人的SLAM 151 4.5.6 使用TurtleBot 3进行自主导航 152 4.5.7 rqt_reconfigure 153 4.5.8 进一步探索ROS导航 155 4.6 本章小结 155 第5章 构建模拟的机器人手臂 156 5.1 Xacro的特点 156 5.2 采用Xacro建立一个关节式机器人手臂URDF 157 5.2.1 指定名空间 158 5.2.2 使用Xacro属性标签 158 5.2.3 扩展Xacro 161 5.2.4 使用Xacro的包含与宏标签 163 5.2.5 给机器人手臂添加网格 166 5.3 在Gazebo中控制关节式机器人手臂 171 5.3.1 添加Gazebo特性元素 171 5.3.2 将机器人手臂固定在世界坐标系下 173 5.3.3 在Gazebo中查看机器人手臂 173 5.3.4 给Xacro添加控制组件 174 5.3.5 采用ROS命令行控制机器人手臂 178 5.3.6 采用rqt控制机器人手臂 179 5.4 本章小结 182 第6章 机器人手臂摇摆的关节控制 183 6.1 Baxter简介 184 6.1.1 研究型机器人Baxter 185 6.1.2 Baxter模拟器 186 6.2 Baxter的手臂 186 6.2.1 Baxter的俯仰关节 187 6.2.2 Baxter的滚转关节 188 6.2.3 Baxter的坐标系 188 6.2.4 Baxter手臂的控制模式 189 6.2.5 Baxter手臂的抓手 189 6.2.6 Baxter手臂的传感器 190 6.3 下载Baxter软件 190 6.3.1 安装Baxter SDK软件 190 6.3.2 安装Baxter模拟器 192 6.3.3 配置Baxter shell 193 6.3.4 安装MoveIt! 194 6.4 在Gazebo中启动Baxter模拟器 195 6.4.1 启动Baxter模拟器 196 6.4.2 “热身”练习 199 6.4.3 弯曲Baxter手臂 200 6.5 Baxter手臂与正向运动 209 6.5.1 关节与关节状态发布器 209 6.5.2 理解tf 212 6.5.3 直接指定关节组件角度 215 6.5.4 Rviz下的tf坐标系 216 6.5.5 查看机器人元素的tf树 217 6.6 MoveIt!简介 217 6.6.1 使用MoveIt!对Baxter手臂进行运动规划 219 6.6.2 在场景中添加物体 220 6.6.3 采用MoveIt!进行避障运动规划 222 6.7 配置真实的Baxter机器人 223 6.8 控制真实的Baxter机器人 225 6.8.1 控制关节到达航路点 225 6.8.2 控制关节的力矩弹簧 226 6.8.3 关节速度控制演示 227 6.8.4 其他示例 227 6.8.5 视觉伺服和抓取 227 6.9 反向运动 228 6.10 使用状态机实现YMCA 231 6.11 本章小结 236 第7章 空中机器人基本操控 237 7.1 四旋翼飞行器简介 238 7.1.1 风靡的四旋翼飞行器 238 7.1.2 滚转角、俯仰角与偏航角 238 7.1.3 四旋翼飞行器原理 239 7.1.4 四旋翼飞行器的组成 241 7.1.5 添加传感器 241 7.1.6 四旋翼飞行器的通信 242 7.2 四旋翼飞行器的传感器 243 7.2.1 惯性测量单元 243 7.2.2 四旋翼飞行器状态传感器 243 7.3 飞行前的准备工作 244 7.3.1 四旋翼飞行器检测 244 7.3.2 飞行前检测列表 245 7.3.3 飞行中的注意事项 245 7.3.4 需要遵循的规则和条例 245 7.4 在无人机中使用ROS 246 7.5 Hector四旋翼飞行器 246 7.5.1 下载Hector四旋翼飞行器 248 7.5.2 在Gazebo中启动Hector四旋翼飞行器 249 7.6 Crazyflie 2.0简介 256 7.6.1 无ROS情况下的Crazyflie控制 257 7.6.2 使用Crazyradio PA进行通信 258 7.6.3 加载Crazyflie ROS软件 259 7.6.4 飞行前的检查 261 7.6.5 使用teleop操控Crazyflie飞行 262 7.6.6 在运动捕获系统下飞行 265 7.6.7 控制多个Crazyflie飞行 266 7.7 Bebop简介 266 7.7.1 加载bebop_autonomy软件 268 7.7.2 使用命令控制Bebop飞行 270 7.8 本章小结 271 第8章 使用外部设备控制机器人 272 8.1 创建自定义ROS游戏控制器接口 272 8.1.1 测试游戏控制器 273 8.1.2 使用joy ROS功能包 275 8.1.3 使用自定义游戏控制器接口控制turtlesim 275 8.2 创建自定义ROS Android设备接口 280 8.2.1 安装Android Studio和工具 280 8.2.2 安装ROS-Android开发环境 281 8.2.3 术语定义 282 8.2.4 ROS-Android开发环境介绍 283 8.3 在Arduino或树莓派上创建ROS节点 284 8.3.1 使用Arduino 284 8.3.2 使用树莓派 294 8.4 本章小结 295 第9章 操控Crazyflie执行飞行任务 296 9.1 执行任务所需的组件 297 9.1.1 Kinect Windows v2 297 9.1.2 Crazyflie操作 298 9.1.3 任务软件结构 298 9.1.4 OpenCV与ROS 300 9.2 安装任务所需的软件 301 9.2.1 安装libfreenect2 301 9.2.2 安装iai_kinect2 304 9.2.3 使用iai_kinect2元包 305 9.3 任务设置 311 9.3.1 探测Crazyflie与目标 311 9.3.2 使用Kinect与OpenCV 314 9.3.3 对Crazyflie进行跟踪 317 9.4 Crazyflie控制 319 9.5 试飞Crazyflie 324 9.5.1 悬停 324 9.5.2 飞往静止目标 326 9.5.3 学到的经验 327 9.6 本章小结 328 第10章 基于MATLAB的Baxter控制 329 10.1 安装MATLAB机器人系统工具箱 329 10.1.1 MATLAB与机器人系统工具箱版本检查 330 10.1.2 机器人系统工具箱下的ROS命令 330 10.2 机器人系统工具箱与Baxter模拟器的使用 330 10.2.1 在MATLAB中安装Baxter消息 330 10.2.2 运行Baxter模拟器和MATLAB 332 10.2.3 控制Baxter运动 334 10.3 本章小结 337 |