描述
开 本: 16开纸 张: 胶版纸包 装: 平装是否套装: 否国际标准书号ISBN: 9787111551058丛书名: 机器人设计与制作系列
内容简介
无论是业余爱好者还是专业的机器人开发人员,在开始进行机器人系统及程序设计时,首先要面对的问题都是基本的如何驱动机器人的轮子的设计。ROS通过软件代码复用集成了众多已经开发完成的功能组件。本书专门帮助读者从对ROS一无所知到能够通过ROS系统完成小型机器人系统的开发和编程工作。本书提供了各种实际的示例代码供读者学习和理解ROS的软件框架。你可以在仿真环境中自行构建机器人相应的功能程序。本书第2版在第1版的基础上增加了与ROSHydro一起工作,如何创建、可视化和处理不同传感器的点云信息,如何控制和利用多关节机械臂,并提供简单易懂的实用教程编写自己的机器人。
目 录
Contents 目 录推荐序一推荐序二译者序前言作者简介审校者简介第1章 ROS Hydro系统入门 11.1 PC安装教程 31.2 使用软件库安装ROS Hydro 31.2.1配置Ubuntu软件库 41.2.2添加软件库到sources.list文件中 41.2.3设置密钥 51.2.4安装ROS 51.2.5初始化rosdep 61.2.6配置环境 61.2.7安装rosinstall 71.3 如何安装VirtualBox和Ubuntu 81.3.1下载VirtualBox 81.3.2创建虚拟机 81.4在BeagleBone Black上安装ROS Hydro 111.4.1准备工作 121.4.2配置主机和source.list文件 131.4.3设置密钥 141.4.4安装ROS功能包 141.4.5初始化rosdep 151.4.6在BeagleBone Black中配置环境 151.4.7在BeagleBone Black中安装rosinstall 151.5 本章小结 15第2章 ROS系统架构及概念 162.1 理解ROS文件系统级 162.1.1工作空间 172.1.2功能包 182.1.3综合功能包 192.1.4消息 202.1.5服务 212.2 理解ROS计算图级 222.2.1节点与nodelet 232.2.2主题 242.2.3服务 252.2.4消息 262.2.5消息记录包 262.2.6节点管理器 262.2.7参数服务器 272.3 理解ROS开源社区级 272.4 ROS系统试用练习 282.4.1ROS文件系统导览 282.4.2创建工作空间 292.4.3创建ROS功能包和综合功能包 302.4.4编译ROS功能包 302.4.5使用ROS节点 312.4.6如何使用主题与节点交互 332.4.7如何使用服务 362.4.8使用参数服务器 382.4.9创建节点 382.4.10 编译节点 412.4.11创建msg和srv文件 422.4.12使用新建的srv和msg文件 442.4.13启动文件 482.4.14动态参数 502.5 本章小结 54第3章 可视化和调试工具 553.1 调试ROS节点 573.1.1使用gdb调试器调试ROS节点 573.1.2ROS节点启动时调用gdb调试器 583.1.3ROS节点启动时调用valgrind分析节点 593.1.4设置ROS节点core文件转储 593.2 日志信息 593.2.1输出日志信息 593.2.2设置调试信息级别 603.2.3为特定节点配置调试信息级别 613.2.4信息命名 623.2.5按条件显示信息与过滤信息 623.2.6显示信息的方式——单次、可调、组合 633.2.7使用rqt_console和rqt_logger_level在运行时修改调试级别 633.3 检测系统状态 663.3.1检测节点、主题、服务和参数 673.3.2使用rqt_graph在线检测节点状态图 703.4 设置动态参数 713.5 当出现异常状况时使用 roswtf 723.6 可视化节点诊断 743.7 绘制标量数据图 753.8 图像可视化 773.9 3D可视化 793.9.1使用rqt_rviz在3D世界中实现数据可视化 793.9.2主题与坐标系的关系 823.9.3可视化坐标变换 823.10 保存与回放数据 833.10.1什么是消息记录包文件 843.10.2使用rosbag在消息记录包中记录数据 843.10.3回放消息记录包文件 853.10.4检查消息记录包文件的主题和消息 863.11 应用rqt与rqt_gui插件 883.12 本章小结 88第4章 在ROS下使用传感器和执行器 904.1 使用游戏杆或游戏手柄 904.1.1joy_node如何发送游戏杆动作消息 914.1.2使用游戏杆数据在turtlesim中移动海龟 924.2 使用激光雷达——Hokuyo URG-04lx 954.2.1了解激光雷达如何在ROS中发送数据 964.2.2访问和修改激光雷达数据 984.3 使用Kinect传感器查看3D环境中的对象 1004.3.1如何发送和查看Kinect数据 1014.3.2创建使用Kinect的示例 1024.4 使用伺服电动机——Dynamixel 1044.5 使用Arduino添加更多的传感器和 执行器 1074.6 在Arduino上使用超声波传感器 1114.7 距离传感器如何发送消息 1134.7.1创建使用超声波的示例 1134.7.2Xsens如何在ROS中发送数据 1164.7.3创建使用Xsens的示例 1164.8 使用10自由度低成本惯性测量模组IMU 1184.8.1下载加速度传感器库 1194.8.2Arduino Nano和10自由度传感器编程 1204.8.3创建ROS节点以使用10自由度传感器数据 1214.9 GPS的使用 1234.9.1GPS如何发送信息 1254.9.2创建一个使用GPS的工程实例 1264.10 本章小结 127第5章 计算机视觉 1285.1 连接和运行摄像头 1295.1.1FireWire IEEE1394摄像头 1295.1.2USB摄像头 1335.2 使用OpenCV制作USB摄像头 驱动程序 1345.2.1通过cv_bridge使用OpenCV处理ROS图像 1395.2.2使用image transport发布图像 1395.2.3在ROS中使用OpenCV 1405.2.4显示摄像头输入的图像 1405.3 标定摄像头 1415.4 ROS图像管道 1485.5 计算机视觉任务中有用的ROS功能包 1525.6 使用viso2实现视觉里程计 1535.6.1摄像头位姿标定 1545.6.2运行viso2在线演示 1575.6.3使用低成本双目摄像头运行viso2 1595.7 使用RGBD深度摄像头实现视觉里程计 1605.7.1安装fovis 1605.7.2用Kinect RGBD深度摄像头运行fovis 1605.8 计算两幅图像的单应性 1615.9 本章小结 162第6章 点云 1636.1 理解点云库 163
前 言
前 言 Preface本书第2版概括性地介绍了ROS系统的各种工具。ROS是一个先进的机器人操作系统框架,现今已有数百个研究团体和公司将其应用在机器人行业中。对于机器人技术的非专业人士来说,它也相对容易上手。在本书中,你将了解如何安装ROS,如何开始使用ROS的基本工具,以及最终如何应用先进的计算机视觉和导航工具。 在阅读本书的过程中无需使用任何特殊的设备。书中每一章都附带了一系列的源代码示例和教程,你可以在自己的计算机上运行。这是你唯一需要做的事情。 当然,我们还会告诉你如何使用硬件,这样你可以将你的算法应用到现实环境中。我们在选择设备时特意选择一些业余用户负担得起的设备,同时涵盖了在机器人研究中最典型的传感器或执行器。 最后,由于ROS系统的存在使得整个机器人具备在虚拟环境中工作的能力。你将学习如何创建自己的机器人并结合功能强大的导航功能包集。此外如果使用Gazebo仿真环境,你将能够在虚拟环境中运行一切。第2版在最后增加了一章,讲如何使用“Move it!”包控制机械臂执行抓取任务。读完本书后,你会发现已经可以使用ROS机器人进行工作了,并理解其背后的原理。 主要内容第1章介绍安装ROS系统最简单的方法,以及如何在不同平台上安装ROS,本书使用的版本是ROS Hydro。这一章还会说明如何从Debian软件包安装或从源代码进行编译安装,以及在虚拟机和ARM CPU中安装。 第2章涉及ROS框架及相关的概念和工具。该章介绍节点、主题和服务,以及如何使用它们,还将通过一系列示例说明如何调试一个节点或利用可视化方法直观地查看通过主题发布的消息。 第3章进一步展示ROS强大的调试工具,以及通过对节点主题的图形化将节点间的通信数据可视化。ROS提供了一个日志记录API来轻松地诊断节点的问题。事实上,在使用过程中,我们会看到一些功能强大的图形化工具(如rqt_console和rqt_graph),以及可视化接口(如rqt_plot和rviz)。最后介绍如何使用rosbag和rqt_bag记录并回放消息。 第4章介绍ROS系统与真实世界如何连接。这一章介绍在ROS下使用的一些常见传感器和执行器,如激光雷达、伺服电动机、摄像头、RGB-D传感器、GPS等。此外,还会解释如何使用嵌入式系统与微控制器(例如非常流行的Arduino开发板)。 第5章介绍ROS对摄像头和计算机视觉任务的支持。首先使用FireWire和USB摄像头驱动程序将摄像头连接到计算机并采集图像。然后,你就可以使用ROS的标定工具标定你的摄像头。我们会详细介绍和说明什么是图像管道,学习如何使用集成了OpenCV的多个机器视觉API。最后,安装并使用一个视觉里程计软件。 第6章将展示如何在ROS节点中使用点云库。该章从基本功能入手,如读或写PCL数据片段以及发布或订阅这些消息所必需的转换。然后,将在不同节点间创建一个管道来处理3D数据,以及使用PCL进行缩减采样、过滤和搜索特征点。 第7章介绍在ROS系统中实现机器人的第一步是创建一个机器人模型,包括在Gazebo仿真环境中如何从头开始对一个机器人进行建模和仿真,并使其在仿真环境中运行。你也可以仿真摄像头和激光测距传感器,为后续学习如何使用ROS的导航功能包集和其他工具奠定基础。 第8章是两章关于ROS导航功能包集中的第1章。该章介绍如何对你的机器人进行使用导航功能包集所需的初始化配置。然后用几个例子对导航功能包集进行说明。 第9章延续第8章的内容,介绍如何使用导航功能包集使机器人有效地自主导航。该章介绍使用ROS的Gazebo仿真环境和rviz创建一个虚拟环境,在其中构建地图、定位机器人并用障碍回避做路径规划。 第10章讨论ROS中移动机器人机械臂的一个工具包。该章包含安装这个包所需要的文档,以及使用MoveIt!操作机械臂进行抓取、放置,简单的运动规划等任务的演示示例。 预备知识我们写作本书的目的是让每位读者都可以完成本书的学习并运行示例代码。基本上,你只需要在计算机上安装一个Linux发行版。虽然每个Linux发行版应该都能使用,但还是建议你使用Ubuntu 12.04 LTS。这样你可以根据第1章的内容安装ROS Hydro。 对于ROS的这一版本,你将需要Ubuntu 14.04之前的版本,因为之后的版本已经不再支持Hydro了。 对于硬件要求,一般来说,任何台式计算机或笔记本电脑都满足。但是,最好使用独立显卡来运行Gazebo仿真环境。此外,如果有足够的外围接口将会更好,因为这样你可以连接几个传感器和执行器,包括摄像头和Arduino开发板。 你还需要Git(git-core Debian软件包),以便从本书提供的源代码中复制库。同样,你需要具备Bash命令行、GNU/Linux工具的基本知识和一些C/C 编程技巧。 目标读者本书的目标读者包括所有机器人开发人员,可以是初学者也可以是专业人员。它涵盖了整个机器人系统的各个方面,展示了ROS系统如何帮助完成使机器人真正自主化的任务。对于听说过却从未使用过ROS的机器人专业学生或科研人员来说,本书将是非常有益的。ROS初学者能从本书中学习ROS软件框架的很多先进理念和工具。不仅如此,经常使用ROS的用户也可能从某些章节中学习到一些新东
评论
还没有评论。