(1)国内首本引进ROS机器人程序设计的译著,让你了解 ROS系统的各种工具。
(2)提供了各种实际的示例代码供读者学习和理解ROS的软件框架。
(3)本书可以帮助读者从对ROS一无所知到能够通过ROS系统完成小型机器人系统的开发和编程工作。
Aaron Martinez 是一位计算机工程师、企业家和数字化制造专家。他硕士毕业于拉斯帕尔马斯大学的IUCTC(科学与网络技术研究所)。之后,参与过拉斯帕尔马斯大学AVORA项目。在这个项目中,他负责设计AUV (自主式水下机器人),并在意大利参加了欧洲学生自主式水下挑战(SAUC-E)。
Enrique Fernández 是一名计算机工程师和机器人专家。他硕士毕业于拉斯帕尔马斯大学智能系统与计算工程学院。在2012年参加了欧洲学生自主式水下挑战(SAUC-E),并作为合作者参加了2013年的比赛。 2012年,他因开发水下云台视觉系统而获奖。现在,他是Pal-Robotics实验室的SLAM工程师。Enrique在博士学习期间发表了数篇学术论文和专著。其中,有两篇论文在2011年被国际机器人与自动化会议(ICRA 2011)所收录。
译者简介
刘品杰,硕士,技术方向为工业自动化控制、DCS/PLC/SCADA系统研发、机器人技术等。先后参与过国产化核电站DCS控制系统研发、国产化油气管道大型SCADA系统研发。历任系统开发工程师、产品经理、项目经理。
译者序
前
第1章 ROS系统入门
1.1 使用软件源安装ROS Electric
1.1.1 添加软件源到sources.list文件中
1.1.2 设置密码
1.1.3 安装
1.1.4 环境配置
1.2 使用软件源安装ROS Fuerte
1.2.1 配置Ubuntu软件源
1.2.2 配置source.list文件
1.2.3 设置密码
1.2.4 安装
1.2.5 环境配置
1.2.6 独立工具
1.3 如何安装VirtualBox和Ubuntu
1.3.1 下载VirtualBox
1.3.2 创建虚拟机
1.4 本章小结
第2章 ROS系统架构及示例
2.1 理解ROS文件系统级
2.1.1 功能包
2.1.2 功能包集
2.1.3 消息类型
2.1.4 服务类型
2.2 理解ROS计算图级
2.2.1 节点
2.2.2 主题
2.2.3 服务
2.2.4 消息
2.2.5 消息记录包
2.2.6 节点管理器
2.2.7 参数服务器
2.3 理解ROS开源社区级
2.4 ROS系统试用练习
2.4.1 ROS文件系统导览
2.4.2 创建工作空间
2.4.3 创建ROS功能包
2.4.4 编译ROS功能包
2.4.5 使用ROS节点
2.4.6 使用主题与节点交互
2.4.7 学习如何使用服务
2.4.8 使用参数服务器
2.4.9 创建节点
2.4.10 编译节点
2.4.11 创建msg和srv文件
2.4.12 使用新建的srv和msg文件
2.5 本章小结
第3章 调试和可视化
3.1 调试ROS节点
3.1.1 使用GDB调试器调试ROS节点
3.1.2 ROS节点启动时调用GDB调试器
3.1.3 设置ROS节点core文件转存
3.2 调试信息
3.2.1 输出调试信息
3.2.2 设置调试信息级别
3.2.3 为特定节点配置调试信息级别
3.2.4 信息命名
3.2.5 条件显示信息与过滤信息
3.2.6 信息的更多功能——单次显示、可调、组合
3.2.7 使用rosconsole和rxconsole在运行时修改调试级别
3.3 监视系统状态
3.3.1 节点、主题与服务列表
3.3.2 使用rxgraph在线监视节点状态图
3.4 当奇怪的事情发生——使用roswtf
3.5 画标量数据图
3.5.1 用rxplot画出时间趋势曲线
3.5.2 另一个画图工具rxtools
3.6 图像可视化
3.6.1 显示单一图片
3.6.2 FireWire接口摄像头
3.6.3 使用双目立体视觉
3.7 3D可视化
3.7.1 使用rviz在3D世界中实现数据可视化
3.7.2 主题与坐标系的关系
3.7.3 可视化坐标变换
3.8 保存与回放数据
3.8.1 什么是消息记录包文件
3.8.2 使用rosbag在包文件中记录数据
3.8.3 回放消息记录文件
3.8.4 使用rxbag检查消息记录包的主题和消息
3.9 rqt插件与rx应用
3.10 本章小结
第4章 在ROS下使用传感器和执行机构
4.1 使用游戏杆或游戏手柄
4.1.1 joy_node如何发送游戏杆动作消息
4.1.2 使用游戏杆数据在turtlesim中移动海龟
4.2 使用激光雷达——Hokuyo URG-04lx
4.2.1 了解激光雷达如何在 ROS 中发送数据
4.2.2 访问和修改激光雷达数据
4.3 使用Kinect传感器查看3D环境
4.3.1 如何发送和查看Kinect数据
4.3.2 创建和使用Kinect示例
4.4 使用伺服电动机——Dynamixel
4.4.1 Dynamixel如何发送和接收运动命令
4.4.2 创建和使用伺服电动机示例
4.5 使用Arduino添加更多的传感器和执行机构
4.6 使用惯性测量模组——Xsens MTi
4.6.1 Xsens如何在ROS中发送数据
4.6.2 创建和使用Xsens示例
4.7 使用低成本惯性测量模组IMU-10自由度
4.7.1 下载加速度传感器库
4.7.2 Arduino Nano和10自由度传感器编程
4.7.3 创建ROS节点并使用10自由度传感器数据
4.8 本章小结
第5章 3D建模与仿真
5.1 自定义机器人在ROS中的3D模型
5.2 创建及时个URDF文件
5.2.1 解释文件格式
5.2.2 在rviz里查看3D模型
5.2.3 加载图形到机器人模型
5.2.4 使机器人模型运动
5.2.5 物理和碰撞属性
5.3 xacro——一个写机器人模型的更好方法
5.3.1 使用常量
5.3.2 使用数学方法
5.3.3 使用宏
5.3.4 使用代码移动机器人
5.3.5 使用SketchUp进行3D建模
5.4 在ROS中仿真
5.4.1 在Gazebo中使用URDF3D模型
5.4.2 在Gazebo中添加传感器
5.4.3 在Gazebo中加载和使用地图
5.4.4 在Gazebo中移动机器人
5.5 本章小结
第6章 机器视觉
6.1 连接和运行摄像头
6.1.1 FireWire IEEE1394 摄像头
6.1.2 USB摄像头
6.2 使用OpenCV制作USB摄像头驱动程序
6.2.1 创建 USB 摄像头驱动功能包
6.2.2 使用ImageTransport API摄像头帧
6.2.3 使用 cv_bridge 进行OpenCV 和 ROS 图像处理
6.2.4 使用ImageTransport 图像
6.2.5 在ROS中使用OpenCV
6.2.6 显示摄像头输入的图像
6.3 如何标定摄像头
6.4 ROS 图像管道
6.5 对于计算机视觉任务有用的 ROS功能包
6.6 使用viso2执行视觉测距
6.6.1 摄像头位姿标定
6.6.2 运行 viso2 在线演示
6.6.3 使用低成本双目摄像头运行 viso2
6.7 本章小结
第7章 导航功能包集入门
7.1 ROS导航功能包集
7.2 创建转换
7.2.1 创建广播机构
7.2.2 创建侦听器
7.2.3 查看坐标变换树
7.3 传感器信息
7.4 里程数据
7.4.1 Gazebo如何获取里程数据
7.4.2 创建自定义里程数据
7.5 创建基础控制器
7.5.1 使用Gazebo 创建里程数据
7.5.2 创建基础控制器
7.6 使用ROS创建地图
7.6.1 使用map_server保存地图
7.6.2 使用map_server加载地图
7.7 本章小结
第8章 导航功能包集进阶
8.1 创建功能包
8.2 创建机器人配置
8.3 配置全局和局部代价地图
8.3.1 基本参数的配置
8.3.2 全局代价地图的配置
8.3.3 局部代价地图的配置
8.4 基本局部规划器配置
8.5 为导航功能包集创建启动文件
8.6 为导航功能包集设置rviz
8.6.1 2D位姿估计
8.6.2 2D导航目标
8.6.3 静态地图
8.6.4 点云
8.6.5 机器人立足点
8.6.6 障碍
8.6.7 膨胀障碍
8.6.8 全局规划
8.6.9 局部规划
8.6.10 规划器规划
8.6.11 当前目标
8.7 自适应蒙特卡罗定位
8.8 避免障碍
8.9 发送目标
8.10 本章小结
第9章 在实践中学习
9.1 REEM——类人形PAL机器人
9.1.1 从官方软件源安装REEM
9.1.2 使用Gazebo仿真环境运行REEM
9.2 PR2——柳树车库机器人
9.2.1 安装 PR2仿真环境
9.2.2 在仿真环境中运行PR2
9.2.3 生成地图与定位
9.2.4 在仿真环境中运行PR2演示程序
9.3 Robonaut 2——NASA的敏捷型人形机器人
9.3.1 从软件源安装Robonaut 2
9.3.2 在国际空间站的固定支座上运行Robonaut2
9.4 Husky——Clearpath的轮式机器人
9.4.1 安装Husky仿真环境
9.4.2 运行Husky仿真环境
9.5 TurtleBot——低成本移动机器人
9.5.1 安装TurtleBot仿真环境
9.5.2 运行TurtleBot仿真环境
9.6 本章小结
第1章
ROS系统入门
欢迎来到本书的第1章。本章会介绍如何安装ROS系统。与其说ROS是一个操作系统,不如说它是一种新的标准化机器人软件框架。通过ROS,你可以使用大量的示例代码和开源程序轻松地完成机器人编程和控制。同时,你还能够理解如何使用各种传感器与执行机构,并为你的机器人增加如自动导航和视觉定位等新的功能。在这里,我们要感谢相关的基金会及社区对开源软件的贡献,并不断地开发出近期的算法和功能使ROS系统不断进步。
本书包含以下知识:
在特定版本的Ubuntu系统下安装ROS框架
学习ROS的基本操作
调试数据和数据可视化
在ROS框架下对机器人编程
创造3D模型并进行仿真
使用导航功能包集使机器人进行自动导航
在本章中,首先要在Ubuntu系统中安装完整版本的ROS。Ubuntu不仅能够支持ROS,而且它也是ROS官方推荐的操作系统。当然,你也可以在其他的操作系统中安装ROS。但是在其他操作系统中,ROS大多是实验性质的移植版本,因此容易出现各种安装和程序执行错误。因此在学习和使用本书的过程中,推荐使用Ubuntu。
在开始安装之前,首先了解一下ROS的历史。
Robot Operating System(ROS)是一种得到广泛使用的机器人操作与控制系统软件框架。该框架使用了当前流行的面向服务(SOA)的软件技术,通过网络协议将节点间数据通信解耦。这样就能够轻松地集成不同语言不同功能的代码。ROS的基本原理是无需改动就能够在不同的机器人上复用代码。基于这些,我们就可以在不同的机器人上分享和复用已经实现的功能,而不需要做太多的工作,避免了重复劳动。
2007年,斯坦福大学人工智能实验室(SAIL)在斯坦福AI机器人项目(Stanford AI Robot project)的支持下开发了ROS。2008年之后,则主要在Willow Garage公司支持下与其他20多家研究机构进行联合研发ROS。
现在已经有很多家研究机构通过增加ROS支持的硬件或开放软件源代码的方式加入ROS系统的开发中。同样,也有很多家公司将其产品逐步进行软件迁移并在ROS系统中应用。部分ROS系统支持的平台如下图所示。这些平台往往会开放大量的代码、示例和仿真环境,以便开发人员轻松地开展工作。
ROS系统已经支持这些机器人中的传感器和执行机构,同时每天ROS软件框架所支持的设备也在大量增加。
ROS提供了一个标准的操作系统环境,包括硬件抽象、底层设备控制、通用功能的实现、进程间消息转发和功能包管理等。它将多路复用传感器、控制器、运动状态、规划目标、执行机构及其他设备全部抽象成节点(node),并能对各个节点进程间消息的发生和接受的处理过程通过节点状态图展示。它的各种库都是面向类Unix系统的(ROS主要支持Ubuntu Linux,而其他系统如Fedora和Mac OS X则是实验性质的)。
-ros-pkg包主要作为开发高级库的基础软件源。其很多功能是和ROS系统绑定的,如导航库和rviz可视化界面都基于这个源。其中的一些库包含很多强大的工具,可以帮助我们方便使用ROS并了解机器人的实时状态。其中,可视化工具、仿真环境和调试工具是最重要的几个。
ROS是一个使用BSD(Berkeley Software Distribution)开源协议的开源软件。无论是商业应用,还是科学研究,它都是免费的。-ros-pkg包受到了多个开源协议的限制。
ROS致力于机器人的代码复用,这样每次研发新的机器人时,开发人员和科学家们再也不必全部推倒重来。通过ROS,你可以集中精力做更多的事情,应用不同代码库中的代码,再完善,并再次分享。
ROS已经了多个版本,近期的版本是Groovy。在本书中,我们使用的版本是Fuerte,因为这个版本更加稳定。因此需要说明的是,本书中的示例和教程不一定都能够在Groovy下使用。
下面我们会介绍如何安装Electric版本和Fuerte版本的ROS。不同的ROS版本对应不同的Ubuntu版本,所以某些机器人可能仍然使用老版本的Ubuntu。即使在本书中我们使用Fuerte,但是在实际工作中,你仍然可能需要安装Electric以便运行一些老版本的代码。
如前文所述,本书中所使用的操作系统是Ubuntu,如果你习惯使用其他操作系统又想完成本书的学习,好的选择就是安装一个带有Ubuntu的虚拟机。因此,我会在介绍虚拟机的安装方法。
当然,如果你想在其他系统中安装ROS,你可以根据链接wiki.ros.org/fuerte/Installation中的指导来完成。
……
不错,有参考价值
还行
????
很喜欢。
不错
非常好,值得珍藏
质量很好
很好
纸质很好是正版
还不错
其他都挺好的,就是有褶皱,有点失望。
好评
1万个赞
书很好,客服也没问题,但是建议当当换家快递吧,至少能在网上查到包裹到哪了
很好,以后会继续支持
快递渣到爆,,,慢的很,,,派送慢,明明自己无法派送却说我要延迟,能不能有点儿节操
很薄的一本书。还没看
买的书太多太多了,导致积累了很多未评价的订单,也因此失去很多积分的机会,很不公平。所以我统一用这段话作为评价内容,说明这款产品没问题,至少优秀;精彩的书我会不吝赞扬,而比较垃.圾的产品,我也会用心的差评,以提醒其他读者留意。
好书,ROS上手的基本手册!
不错不错~~~~~~~~~~~~
纸张真一般
挺好的,还行。
翻译的不错,内容排版循循渐进,可读性强
纸质还不错,还没开始看,刚收到
虚拟机的下载地址已更改,没法下载, 比较基础 ,像运动正向和逆向学没有。
中文的关于ROS的书太少了,这是第一本,希望能有更多更实用的书出现。
学习老美人家研制的技术,值得一看,感觉真的挺好,没有办法,相关的书籍也不多,研究机器人只能硬啃了