A-A+

ROS机器人程序设计(第2版)补充材料汇总贴

2016年11月10日 ROS 评论 1 条 阅读 1 次

51AiAf13sQL._SX349_BO1,204,203,200_

亚马逊链接   豆瓣链接

 

国内权威ROS机器人程序设计最新版,易科机器人实验室倾情推荐。

本书是入门机器人操作系统的一站式指南,从零开始,帮助读者快速通过ROS系统完成小型机器人系统的开发和编程工作。

本书译者张瑞雷博士已将此书的ROS程序升级为最新的Indigo和Kinetic版本,并会持续在博客中发布。

以下是部分链接汇总:

ROS机器人程序设计(原书第2版)学习镜像(Live CD Kinetic)

ROS机器人程序设计(原书第2版)学习镜像(Live CD Indigo)

 

ROS机器人程序设计(原书第2版)补充资料 (零) 源代码和资料说明等

ROS机器人程序设计(原书第2版)补充资料 (壹) 第一章 ROS系统入门

ROS机器人程序设计(原书第2版)补充资料 (贰) 第二章 ROS系统架构及概念

ROS机器人程序设计(原书第2版)补充资料 (叁) 第三章 可视化和调试工具

ROS机器人程序设计(原书第2版)补充资料 (肆) 第四章 在ROS下使用传感器和执行器

ROS机器人程序设计(原书第2版)补充资料 (伍) 第五章 计算机视觉

ROS机器人程序设计(原书第2版)补充资料 (陆) 第六章 点云 PCL

ROS机器人程序设计(原书第2版)补充资料 (柒) 第七章 3D建模与仿真

ROS机器人程序设计(原书第2版)补充资料 (捌) 第八章 导航功能包集入门

ROS机器人程序设计(原书第2版)补充资料 (玖) 第九章 导航功能包集进阶

ROS机器人程序设计(原书第2版)补充资料 (拾) 第十章 使用MoveIt!

 

PPT等正在陆续制作中,多多提意见,以便于改进,为ROS普及尽一份力;-) 未完待续......

 

 

图书信息

书 名: ros机器人程序设计(原书第2版)
图书定价: 69元
作 者: (西)恩里克·费尔南德斯(Enrique Fernández)
出 版 社: 机械工业出版社
出版日期: 2016-11-01
ISBN 号: 9787111551058
开 本: 16开
页 数: 0
版 次: 1-1

目录

推荐序一
推荐序二
译者序
前言
作者简介
审校者简介
第1章 ROS Hydro系统入门 1
1.1 PC安装教程 3
1.2 使用软件库安装ROS Hydro 3
1.2.1 配置Ubuntu软件库 4
1.2.2 添加软件库到sources.list文件中 4
1.2.3 设置密钥 5
1.2.4 安装ROS 5
1.2.5 初始化rosdep 6
1.2.6 配置环境 6
1.2.7 安装rosinstall 7
1.3 如何安装VirtualBox和Ubuntu 8
1.3.1 下载VirtualBox 8
1.3.2 创建虚拟机 8
1.4 在BeagleBone Black上安装ROS Hydro 11
1.4.1 准备工作 12
1.4.2 配置主机和source.list文件 13
1.4.3 设置密钥 14
1.4.4 安装ROS功能包 14
1.4.5 初始化rosdep 15
1.4.6 在BeagleBone Black中配置环境 15
1.4.7 在BeagleBone Black中安装rosinstall 15
1.5 本章小结 15
第2章 ROS系统架构及概念 16
2.1 理解ROS文件系统级 16
2.1.1 工作空间 17
2.1.2 功能包 18
2.1.3 综合功能包 19
2.1.4 消息 20
2.1.5 服务 21
2.2 理解ROS计算图级 22
2.2.1 节点与nodelet 23
2.2.2 主题 24
2.2.3 服务 25
2.2.4 消息 26
2.2.5 消息记录包 26
2.2.6 节点管理器 26
2.2.7 参数服务器 27
2.3 理解ROS开源社区级 27
2.4 ROS系统试用练习 28
2.4.1 ROS文件系统导览 28
2.4.2 创建工作空间 29
2.4.3 创建ROS功能包和综合功能包 30
2.4.4 编译ROS功能包 30
2.4.5 使用ROS节点 31
2.4.6 如何使用主题与节点交互 33
2.4.7 如何使用服务 36
2.4.8 使用参数服务器 38
2.4.9 创建节点 38
2.4.10 编译节点 41
2.4.11 创建msg和srv文件 42
2.4.12 使用新建的srv和msg文件 44
2.4.13 启动文件 48
2.4.14 动态参数 50
2.5 本章小结 54
第3章 可视化和调试工具 55
3.1 调试ROS节点 57
3.1.1 使用gdb调试器调试ROS节点 57
3.1.2 ROS节点启动时调用gdb调试器 58
3.1.3 ROS节点启动时调用valgrind分析节点 59
3.1.4 设置ROS节点core文件转储 59
3.2 日志信息 59
3.2.1 输出日志信息 59
3.2.2 设置调试信息级别 60
3.2.3 为特定节点配置调试信息级别 61
3.2.4 信息命名 62
3.2.5 按条件显示信息与过滤信息 62
3.2.6 显示信息的方式——单次、可调、组合 63
3.2.7 使用rqt_console和rqt_logger_level在运行时修改调试级别 63
3.3 检测系统状态 66
3.3.1 检测节点、主题、服务和参数 67
3.3.2 使用rqt_graph在线检测节点状态图 70
3.4 设置动态参数 71
3.5 当出现异常状况时使用 roswtf 72
3.6 可视化节点诊断 74
3.7 绘制标量数据图 75
3.8 图像可视化 77
3.9 3D可视化 79
3.9.1 使用rqt_rviz在3D世界中实现数据可视化 79
3.9.2 主题与坐标系的关系 82
3.9.3 可视化坐标变换 82
3.10 保存与回放数据 83
3.10.1 什么是消息记录包文件 84
3.10.2 使用rosbag在消息记录包中记录数据 84
3.10.3 回放消息记录包文件 85
3.10.4 检查消息记录包文件的主题和消息 86
3.11 应用rqt与rqt_gui插件 88
3.12 本章小结 88
第4章 在ROS下使用传感器和执行器 90
4.1 使用游戏杆或游戏手柄 90
4.1.1 joy_node如何发送游戏杆动作消息 91
4.1.2 使用游戏杆数据在turtlesim中移动海龟 92
4.2 使用激光雷达——Hokuyo URG-04lx 95
4.2.1 了解激光雷达如何在ROS中发送数据 96
4.2.2 访问和修改激光雷达数据 98
4.3 使用Kinect传感器查看3D环境中的对象 100
4.3.1 如何发送和查看Kinect数据 101
4.3.2 创建使用Kinect的示例 102
4.4 使用伺服电动机——Dynamixel 104
4.5 使用Arduino添加更多的传感器和
执行器 107
4.6 在Arduino上使用超声波传感器 111
4.7 距离传感器如何发送消息 113
4.7.1 创建使用超声波的示例 113
4.7.2 Xsens如何在ROS中发送数据 116
4.7.3 创建使用Xsens的示例 116
4.8 使用10自由度低成本惯性测量模组IMU 118
4.8.1 下载加速度传感器库 119
4.8.2 Arduino Nano和10自由度传感器编程 120
4.8.3 创建ROS节点以使用10自由度传感器数据 121
4.9 GPS的使用 123
4.9.1 GPS如何发送信息 125
4.9.2 创建一个使用GPS的工程实例 126
4.10 本章小结 127
第5章 计算机视觉 128
5.1 连接和运行摄像头 129
5.1.1 FireWire IEEE1394摄像头 129
5.1.2 USB摄像头 133
5.2 使用OpenCV制作USB摄像头 驱动程序 134
5.2.1 通过cv_bridge使用OpenCV处理ROS图像 139
5.2.2 使用image transport发布图像 139
5.2.3 在ROS中使用OpenCV 140
5.2.4 显示摄像头输入的图像 140
5.3 标定摄像头 141
5.4 ROS图像管道 148
5.5 计算机视觉任务中有用的ROS功能包 152
5.6 使用viso2实现视觉里程计 153
5.6.1 摄像头位姿标定 154
5.6.2 运行viso2在线演示 157
5.6.3 使用低成本双目摄像头运行viso2 159
5.7 使用RGBD深度摄像头实现视觉里程计 160
5.7.1 安装fovis 160
5.7.2 用Kinect RGBD深度摄像头运行fovis 160
5.8 计算两幅图像的单应性 161
5.9 本章小结 162
第6章 点云 163
6.1 理解点云库 163
6.1.1 不同的点云类型 164
6.1.2 PCL中的算法 164
6.1.3 ROS的PCL接口 165
6.2 我的第一个PCL程序 166
6.2.1 创建点云 167
6.2.2 加载和保存点云到硬盘 170
6.2.3 可视化点云 173
6.2.4 滤波和缩减采样 176
6.2.5 配准与匹配 181
6.2.6 点云分区 184
6.3 分割 187
6.4 本章小结 191
第7章 3D建模与仿真 192
7.1 在ROS中自定义机器人的3D模型 192
7.2 创建第一个URDF文件 192
7.2.1 解释文件格式 194
7.2.2 在rviz里查看3D模型 195
7.2.3 加载网格到机器人模型 197
7.2.4 使机器人模型运动 198
7.2.5 物理属性和碰撞属性 198
7.3 xacro——一个更好的机器人建模方法 199
7.3.1 使用常量 199
7.3.2 使用数学方法 200
7.3.3 使用宏 200
7.3.4 使用代码移动机器人 201
7.3.5 使用SketchUp进行3D建模 204
7.4 在ROS中仿真 205
7.4.1 在Gazebo中使用URDF 3D模型 206
7.4.2 在Gazebo中添加传感器 208
7.4.3 在Gazebo中加载和使用地图 211
7.4.4 在Gazebo中移动机器人 213
7.5 本章小结 215
第8章 导航功能包集入门 216
8.1 ROS导航功能包集 216
8.2 创建变换 217
8.2.1 创建广播机构 218
8.2.2 创建侦听器 218
8.2.3 查看坐标变换树 221
8.3 发布传感器信息 221
8.4 发布里程数据信息 224
8.4.1 Gazebo如何获取里程数据 225
8.4.2 创建自定义里程数据 228
8.5 创建基础控制器 232
8.5.1 使用Gazebo创建里程数据 233
8.5.2 创建自己的基础控制器 235
8.6 使用ROS创建地图 237
8.6.1 使用map_server保存地图 238
8.6.2 使用map_server加载地图 239
8.7 本章小结 240
第9章 导航功能包集进阶 241
9.1 创建功能包 241
9.2 创建机器人配置 241
9.3 配置全局和局部代价地图 243
9.3.1 基本参数的配置 244
9.3.2 全局代价地图的配置 245
9.3.3 局部代价地图的配置 245
9.3.4 基本局部规划器配置 246
9.4 为导航功能包集创建启动文件 247
9.5 为导航功能包集设置rviz 248
9.5.1 2D位姿估计 248
9.5.2 2D导航目标 249
9.5.3 静态地图 249
9.5.4 粒子云 251
9.5.5 机器人占地空间 251
9.5.6 局部代价地图 252
9.5.7 全局代价地图 252
9.5.8 全局规划 254
9.5.9 局部规划 254
9.5.10 规划器规划 254
9.5.11 当前目标 255
9.6 自适应蒙特卡罗定位 256
9.7 使用rqt_reconfigure修改参数 258
9.8 机器人避障 259
9.9 发送目标 260
9.10 本章小结 262
第10章 使用MoveIt! 264
10.1 MoveIt!体系结构 264
10.1.1 运动规划 265
10.1.2 规划场景 267
10.1.3 运动学 268
10.1.4 碰撞检测 268
10.2 在MoveIt!中集成一个机械臂 268
10.2.1 工具箱里有什么 268
10.2.2 使用设置助手生成一个MoveIt!包 269
10.2.3 集成到rviz 273
10.2.4 集成到Gazebo或实际机器人的手臂 276
10.3 简单的运动规划 277
10.3.1 规划单个目标 278
10.3.2 规划一个随机目标 278
10.3.3 规划预定义的群组状态 280
10.3.4 显示目标的运动 280
10.4 考虑碰撞的运动规划 280
10.4.1 将对象添加到规划场景中 281
10.4.2 从规划的场景中删除对象 282
10.4.3 应用点云进行运动规划 283
10.5 抓取和放置任务 284
10.5.1 规划的场景 285
10.5.2 感知 288
10.5.3 抓取 288
10.5.4 抓取操作 290
10.5.5 放置操作 292
10.5.6 演示模式 295
10.5.7 在Gazebo中仿真 295
10.6 本章小结 296

 

 

推荐序一

21世纪是什么样的世纪?是物联网的世纪?是VR的世纪?也许吧,但我更相信21世纪是机器人的世纪。

目前,我国已经步入经济转型的拐点区间,人口红利越来越难以支撑中国经济的发展和进步。在很多行业都已经开始了机器换人、生产工艺升级换代的步伐。工信部、发改委、财政部日前联合印发了《机器人产业发展规划(2016—2020年)》。这份规划指出:“到2020年,我国工业机器人年产量达到10万台,其中六轴及以上机器人达到5万台以上;服务机器人年销售收入超过300亿元,在助老、助残、医疗康复等领域实现小批量生产及应用;要培育3家以上的龙头产业,打造5个以上机器人配套产业集群;工业机器人平均无故障时间要达到8万小时;智能机器人实现创新应用。”从这个规划中可以看出,机器人未来的政策空间和市场发展空间都是非常巨大的。一方面,发展工业机器人在满足我国制造业的转型升级、提质增效,实现“中国制造2025”等方面具有极为重大的意义,是全面推进实施制造强国战略的重要一步。另一方面,从服务机器人来说,也要满足未来市场需求的增长。首先,这包括了基本生活需求,比如说养老、助老、助残等。其次是国家安全需求,比如救灾、抢险、海底勘探、航天、国防。最后还有家庭服务和娱乐机器人,比如娱乐、儿童教育、智能家居应用等。同时,科技部目前也在进行“十三五”科技创新规划战略研究,根据已经披露的内容,其中对机器人(尤其是服务机器人)非常重视,并会在近期遴选并启动一批相应的重大科技项目。

也许看完上面这些,你会觉得这更像是新闻描述,机器人产业真的这么火爆吗?当然。即使刨除工业机器人,只谈其他的智能机器人或服务机器人,这也是一个相当庞大的产业。例如,目前世界上最大的服务机器人公司应该还是美国的直觉外科公司。他们生产的达芬奇机器人系统在全世界已经应用了3000余套,其完成的手术超过千万例。由机器人完成的各类微创手术让无数患者获得新生。这家公司的市值超过300亿美元。中国目前估值最高的机器人公司是大疆创新,其年营收额已经超过10亿美元,估值超过百亿美元。要知道,10年前这家公司刚刚在深圳创立时,还比较弱小。因此,相信机器人产业在未来的前景一定非常广阔。

但是我们也注意到在军用国防、救灾救援、养老、家庭服务、儿童教育等领域,至今没有一个世界级的机器人公司存在。有很多爱好者都希望自己能够制造一个智能轮椅、一个智能儿童教育机器人或是一个家庭服务机器人,也许这样的机器人会像乔布斯和沃兹尼亚克在车库里做出的苹果电脑一样改变世界。但我们看到的很多人,自己只是机械工程师、电气工程师或者自动控制工程师,开发一个控制机器人的软件系统是遥不可及的事情;又或者自己虽然是软件工程师,但是并不知道如何控制和驱动底层设备。这要怎么办呢?没关系, ROS机器人操作系统可以帮忙。

ROS最初是作为科研辅助工具由斯坦福大学开发的。类似的机器人操作系统在世界各国还有很多。有些操作系统面向实时机器人控制,有些操作系统面向机器人仿真,有些操作系统面向用户交互。这些操作系统大部分都相对封闭,各成体系,没有在学术界和产业界造成影响。而由于ROS极大的开放性和包容性,它能够兼容其他机器人开发工具、仿真工具和操作系统,使之融为一体。这使得ROS不断发展壮大,并成为应用和影响力最广泛的机器人软件平台。

随着ROS 2.0的开发,ROS能够兼容除Linux之外更多的操作系统,如Windows、Android;能够支持从工业计算机到Adruino开发板等各类型的硬件;能够采集RGB-D摄像头、普通摄像头和各种类型的传感器数据;能够驱动类人形机器人、四轴飞行器等各类型的机器人。而且新版本的ROS在采用SOA架构的基础上,集成了MVC框架,更加有利于机器人人机交互界面的开发与机器人控制。

学习ROS,本身就是掌握一把通往未来的钥匙。自从本人2012年翻译本书第1版之后,关于ROS的书籍也渐渐多了起来。但和其他书籍相比,本书经过了时间的检验,第2版从内容到示例对学习ROS都更有帮助。希望大家都能够成为机器人软件设计方面的专家。希望在中国的机器人设计领域能够出现新的领军人物,将中国的机器人带入世界一流行列。

刘品杰,本书第1版译者

 

推荐序二

记得第一次接触ROS的时候我还在学校做研究,当时跟一些海外学者交流时得知有这个专为机器人设计的操作系统。我很是兴奋,一心想把ROS用在我们最新研发的机器人上,于是就马上动手玩起来。由于当时ROS尚在起步阶段,说明文档不太全面,同时社区支持又很少,不知道经过多少折腾才好不容易把它运行起来。体验后发现它的设计框架确实很适合作为机器人敏捷开发工具——算法及控制等代码很容易被复用,避免了很多重复劳动。但奈何当时的功能包不多,而且系统对运算资源要求高,最终没有用在当时的机器人项目上。

由于其开源性以及对商用友好的版权协议,ROS很快得到越来越多的关注及支持。现在ROS已有飞快的发展,越来越多机器人相关的软件工具亦加入ROS的行列。国外一些商用的机器人也开始支持ROS系统,甚至基于ROS进行开发。相信这个趋势会一直持续下去并会蔓延到世界各地。而我亦深深体会到国内对ROS的关注在近年有显著的上升。

从前在国内学习ROS可谓孤军作战,身边没几个人听说过ROS,而且只能从国外网站学习ROS的相关知识,完全没有中文的资料可以查看。幸好国内有不少有心人积极推动ROS的发展,不遗余力地对国外ROS相关的文章进行翻译,并且发表一些原创的教学文章,丰富ROS的中文资源,这使学习ROS变得更方便。

我与本书译者通过共同举办ROS国内推广课程而结缘。他对推动ROS在国内的发展起到了举足轻重的作用,并运营着国内著名的ROS交流社区。本书亦是他贡献ROS中文社群的作品之一。而本书的作者同样是ROS界的权威,有丰富的ROS实战经验,使用ROS进行过多种机器人的开发。书中从ROS的架构概念到常用的调试工具、功能包及传感器的信息处理都有所涉及,是ROS入门必看书之一。希望本书能让你快速进入ROS的世界,探索ROS的精彩。

林天麟,博士,NXROBO创始人& CEO

 

译者序

机器人对于现代人类而言并不陌生和神秘,它在百年前的科幻小说中首次出现,而现在已经逐步进入人类生活的方方面面,机器时代即将到来!

智能机器人的程序究竟是如何设计出来的呢?

智能机器人需要具备强健的“肢”、明亮的“眼”、灵巧的“嘴”以及聪慧的“脑”,这一切的实现实际上涉及诸多技术领域,需要艰辛的设计、开发与调试过程,必然会遇到棘手的问题和挑战。而一个小型的开发团队难以完成机器人各个方面的开发工作,因而需要一套合作开发的框架与模式,以期能够快速集成已有的功能,省却重复劳动的时间。早在2008年,我们在与澳大利亚的布劳恩教授交流时,就得知他们开发了一套商业化的“RoBIOS”机器人操作系统,这套系统将一些常用的机器人底层功能进行了封装,可极大简化高级功能的开发。据他们介绍,这是最早的“机器人操作系统”,但由于产品不开源且价格昂贵,我们最终未能一试为快。后来在网络中不断地寻觅,最终发现了ROS,由于其开源、开放的特性,一下子就引起了我们极大的兴趣。

我们于2010年建立了易科机器人QQ群进行讨论,从而结识了国内最早期的一些机器人研究者和ROS探索者。由于早期相关资料非常匮乏,我们于2012年创建了博客(blog.exbot.net)以进行技术分享与交流。易科机器人开发组成员在此期间贡献了大量的教程和开发笔记,在此向他们的无私奉献表示感谢与敬意!近年来,随着机器人的迅猛发展,ROS得到了更为广泛的使用,国内也出现了一些优秀的项目,包括“星火计划”ROS公开课(blog.exbot.net/spark)、“HandsFree”ROS机器人开发平台(wiki.exbot.net)等。

出版界近年来也是硕果累累,此书第一版便是国内第一本ROS译著,由于实用性强,已经多次翻印。第二版针对近年来ROS的最新发展,对书中部分内容进行了修订,并增加了“6 点云”和“10 MoveIt!”两章。本书涵盖了使用ROS进行机器人编程的最新知识与方法,通过ROS编程实践能够帮助你理解机器人系统设计与应用的现实问题。在机器人开发实践中,我们想除了成功的喜悦外,你还会看到机器人学目前所处的于发展阶段:核心技术尚未成熟、诸多功能尚不完备、bug多多……但我们相信,有了ROS的开源精神和完备的合作开发框架,很多问题会迎刃而解。唯一迫切需要的就是期待你加入到机器的开发和研究中来,一起来推动开源机器人技术发展与普及!

本书第二版与第一版的重叠部分主要沿用了刘品杰的第一版翻译,个别词汇根据习惯进行了修改,1-5和第10章由张瑞雷翻译,第6章由张波翻译,7-9章由刘锦涛翻译,吴中红和李静老师对全书进行了审阅,最后由刘锦涛对全书进行了修改润色和统稿整理。感谢杨维保、马文科等对本书提出的修改建议!

我们将在books.exbot.net中发布本书的其他相关资源。

 

译者

2016.5.20

标签:

1 条留言  访客:1 条  博主:0 条

  1. 网赚助手

    网赚助手评论引流大全已经收录了您的博客!

给我留言

Copyright © ExBot易科机器人实验室 保留所有权利.   Theme   Robin modified by poyoten

用户登录

分享到: