ROS机器人编程:原理与应用
作者 : [美]怀亚特·S. 纽曼(Wyatt S. Newman) 著
译者 : 李笔锋 祝朝政 刘锦涛 译何明 李静 张瑞雷 审
丛书名 : 机器人学译丛
出版日期 : 2019-05-07
ISBN : 978-7-111-62576-6
定价 : 199.00元
教辅资源下载
扩展信息
语种 : 简体中文
页数 : 463
开本 : 16
原书名 : A Systematic Approach to Learning Robot Programming with ROS
原出版社: Taylor & Francis -CRC Press
属性分类: 教材
包含CD : 无CD
绝版 :
图书简介

本书共分为六部分。第一部分介绍了如何编写ROS节点和ROS工具,也覆盖了消息、类和服务器。第二部分是用ROS进行模拟和可视化,其中包括坐标转换。第三部分讨论了ROS的感知过程。第四部分介绍了ROS中的移动机器人控制和导航。第五部分介绍了ROS机器人臂的相关知识。第六部分涉及系统集成和更高级别的控制,包括基于感知的移动操作。

图书特色

图书前言

ROS(Robot Operating System,机器人操作系统)正在成为现代机器人学的实际标准编程方法。ROS wiki(https://www.ros.org/history/)写道:
ROS生态系统现在由全世界数以万计的用户组成,覆盖了从桌面爱好项目到大型工业自动化系统。
为什么是ROS?在1956年,Joseph Engelberger创立了Unimation公司,世界上第一个机器人公司[7]。然而,在过去的半个世纪里,机器人技术的进步令人失望。世界范围内的机器人学研究也仅限于实验室里的演示和探奇。这一领域的新生研究人员通常一无所有,从头开始构建新型机器人,解决执行器和传感器接口的问题,构建底层的伺服控制,并且通常在实现更高级的机器人能力之前就已经精疲力竭了,而这些自定义的机器人和软件很少被复用于后续工作。
人们认识到采用构建巴比塔的模式是徒劳的,构建更智能的机器人的任务需要持续的、协作的努力,并建立在能够不断达到更高层能力的基础上。在1984年,Vincent Hayward和Richard Paul引入了机器人控制C库(Robot Control C Library, RCCL)[15]作为解决这一长期问题的方法。不幸的是,RCCL没有获得机器人研究人员足够的认可。National Instruments[24]和Microsoft[39-40]均引入了试图使机器人编程标准化的产品。然而,研究人员发现这些方法烦琐而昂贵。
ROS于2007年由斯坦福人工智能实验室发起[26],它试图统一零碎的谷歌所采用的机器人学方法,且于2008年至2013年得到Willow Garage的支持[12],随后自2013年至今得到谷歌开源机器人基金会(Open Source Robotics Foundation,OSRF)的支持[10]。ROS方法遵循了开源软件和分布式协作的现代方法。此外,它桥接和提升了其他并行的开源工作,包括OpenCV[28]、PointCloudLibrary[21]、Open Dynamics Engine[8]、Gazebo[19]和Eigen[20]。对于研究人员而言,ROS在开放性和易用性方面可能与RCCL相似,而谷歌持续七年的支持是ROS存活的关键。
ROS现在在学术界、工业界和研究机构中得到了全世界的广泛使用。开发人员提供了数以千计的软件包,包括来自一些世界领先的专家在相关领域的解决方案。新的机器人公司在它们的产品上提供了ROS接口,并且已建立的工业机器人公司也引入了ROS接口。随着广泛采用ROS作为机器人编程实际标准的做法,人们对提高机器人的能力有了新的希望。在最近的DARPA机器人挑战赛中,大多数入围的团队使用了ROS。新型自动驾驶汽车的开发商正在开发ROS。新的机器人公司正在崛起,这部分是由ROS资源驱动的。鉴于ROS的势头和功绩,显而易见,当今的机器人工程师必须精通ROS编程。
什么是ROS?将其称为“机器人操作系统”并不全面。简洁地定义ROS很困难,因为它包含了很多方面,包括:编程风格(特别是依赖于松散耦合的分布式节点),节点间通信的接口定义和范例,库和包合并的接口定义,可视化、调试、数据记录和系统诊断的工具集合,共享源代码的存储仓库,桥接多个有用的、独立的开源库的桥梁。因此,ROS是机器人程序员的一种生活方式,而不只是一种简单的操作系统。ROS的定义可以参考ROS wiki(https://wiki.ros.org/ROS/Introduction):
ROS是一个针对机器人的开源、元级操作系统。它提供了用户在操作系统上所期望的服务,包括硬件抽象、低层设备控制、常用功能的实现、进程之间的消息传递以及包管理。它还提供了在多台计算机上获取、生成、编写以及运行代码的工具和库。
ROS的主要目标是支持机器人研究和开发中的代码复用。ROS是一个分布式的进程(也称节点)框架,它能使可执行的文件单独设计以及在运行时松散耦合。这些进程可以打包成易于共享和分发的包。ROS还支持一个代码库的联合系统,能够同时分发协作。从文件系统级到社区级的这个设计实现了开发和部署的独立决策,但所有这些都可以与ROS的基础底层工具一起使用。
Brian Gerkey在网上的评论(https://answers.ros.org/question/12230/what-is-ros-exactly-middleware-framework-operating-system/)如下。
我是这样解释ROS的:
1.?管道:ROS提供了发布-订阅消息传递基础结构,旨在支持分布式计算系统的快速、轻松构建。
2.?工具:ROS提供了一套广泛用于配置、启动、反思、调试、可视化、记录、测试和停止的分布式计算系统的工具。
3.?功能:聚焦于移动性、操作性和感知性,ROS提供了实现机器人有用的功能的广泛库集。
4.?生态系统:ROS拥有规模庞大的社区支持,并通过着力聚焦于集成和文档而不断改进。ros.org是一个一站式的站点,在这里可以查找和了解来自世界各地开发者的成千上万个可用ROS包。
来自参考文献[13]对ROS的解释如下:
ROS(发音Ross[rs])的主要目标是提供一个统一的开源编程框架,用于在各种真实世界和仿真环境中控制机器人。
来自参考文献[13]中的ROS管道:
ROS中的核心实体称为节点。节点通常是用Python或C++编写的小程序,用于执行一些相对简单的任务或过程。节点可以相互独立地启动和停止,并通过传递消息进行通信。节点可以在某些主题上发布消息或向其他节点提供服务。
例如,发布器节点可能会报告从连接到机器人微控制器的传感器传来的数据。/head-sonar主题上数值为0.5的消息意味着传感器当前检测的物体有0.5 m远。任何想从这个传感器知晓读数的节点只需订阅/head-sonar主题即可。为了使用这些值,订阅器节点定义了一个回调函数,每当新消息到达订阅的主题时它就会执行。这种情况发生的频率取决于发布器节点更新其消息的速率。
节点还可以定义一个或多个服务。当从另一个节点发送请求时,ROS服务会产生某个行为或发送应答。一个简单的例子就是打开或关闭LED的服务。一个更复杂的例子是,当给定一个目标位置和机器人的初始位姿时,返回一个移动机器人导航规划的服务。
学习ROS的方法:ROS有很多功能、工具、风格和习惯。ROS的学习曲线陡峭,因为在富有成效地使用它之前需要掌握很多细节。ROS wiki有文档和一系列教程的链接。然而,这些对于ROS的初学者而言可能很难遵循,因为定义是分散的,并且所呈现的细节水平千差万别,从未经说明的示例到面向复杂用户的解释。本书的目的是从简单的代码示例以及相应的操作理论层面向读者介绍ROS的基本组件。这种介绍只会触及表面,但应该能让读者开始建立有用的ROS节点,并使教程变得更可读。
ROS代码可以用C++或Python编写。本书仅使用C++。对于Python,读者可参考《ROS机器人编程实践》(中文版已出版,ISBN:978-7-111-58529-9)[34]。
本书配套的代码示例假定采用Linux Ubuntu 14.04和ROS Indigo。如果你使用PC运行Windows或使用Mac运行OSX,则一个选择是安装VirtualBox来设置虚拟Linux计算机,以便在不影响原操作系统的情况下运行。关于安装VirtualBox、Ubuntu、ROS以及附带的代码示例和工具,包括在https://github.com/wsnewman/learning_ros的子目录additional_documents中。(该目录还包括使用git的入门指南。)
配置计算机来使用ROS可能是一个挑战。可参考《机器人操作系统(ROS)浅析》(中文版已出版)[27]以进一步阐明和协助ROS的安装,并获得ROS组织和通信的更多细节和幕后解释。(关于ROS的其他书籍列于:https://wiki.ros.org/Books。)
ROS安装的在线描述链接是:https://wiki.ros.org/indigo/Installation/Ubuntu。
安装ROS时,用户有命名ROS工作区的选择权。在本书中,假定该目录位于用户的主目录下,并命令为ros_ws。如果你为ROS工作区选择另外一个名称,请将在本书中所有地方的ros_ws替换为该名称。
本书的代码示例可以在以下网址找到:https://github.com/wsnewman/learning_ros。与此代码一起使用的一些附加包位于:https://github.com/wsnewman/learning_ros_external_
packages。应将两个软件库都复制到子目录~/ros_ws/src中的用户ROS工作区,以便能够编译示例。要想手动安装这些软件,请在设置ROS环境后,cd至~/ros_ws/src并输入:



这将使此处引用的所有示例代码都显示在这两个子目录中。
或者(推荐此方法),使用软件库https://github.com/wsnewman/learning_ros_setup_scripts中包含的自动安装ROS的脚本,来安装本书的示例代码、安装其他有用的工具以及设置ROS工作区。网站在线提供了获取和运行这些脚本的说明。这些说明适用于本地Ubuntu-14.04安装或Ubuntu-14.04的VirtualBox安装。(注意,当运行计算密集型或图形密集型代码时,VirtualBox可能会卡顿。本机Linux安装和兼容的GPU处理器更可取。)
本书内容无法面面俱到。感兴趣的学生、研究者、自动化工程师或机器人爱好者可以自行探索数以千计的ROS包。此外,还有在线教程有更详细的细节和扩展内容。本书的目的是提供一个概览,使读者能够理解ROS、ROS包和ROS工具的组织,将现有ROS包纳入新的应用中,并开发新的包用于机器人和自动化系统。本书使读者能够更好地了解现有的在线文档以便进一步学习。
本书内容分为六部分:
ROS基础
ROS中的仿真和可视化
ROS中的感知处理
ROS中的移动机器人
ROS中的机械臂
系统集成与高级控制
每个主题都覆盖了广泛的领域,包含了大量专业研究成果。本书无法一一在这些领域指导读者。然而,机器人系统需要集成的元素横跨硬件集成、人机界面、控制理论、运动学和动力学、操作规划、运动规划、图像处理、场景解释和人工智能等一系列主题。机器人工程师必须是通才,因此至少需要了解这些领域的基本实践。ROS生态系统的一个目的就是让工程师可以导入以上每个领域现有的包,并将它们集成到一个定制的系统中,而不必成为每个领域的专家。因此,了解每个领域的ROS接口和ROS方法对系统集成商来说极具价值,可以充分利用世界各地的机器人研究者、计算机科学家和软件工程师所贡献的专业知识。
致谢
在学术界,工作乐趣之一就是经常接触聪明且富有激情的学生们。感谢我的前顾问Chad Rockey和Eric Perko,他们于2010年将我带入ROS的大门。从此,我从一个ROS质疑者变成了传播者。感谢这一路相伴的学生们,包括Tony Yanick、Bill Kulp、Ed Venator、Der-Lin Chow、Devin Schwab、Neal Aungst、Tom Shkurti、TJ Pech和Luc Bettaieb,他们帮我实现了转变并学习了新的ROS技巧。
感谢Sethu Vijayakumar教授和苏格兰信息学与计算机科学联盟,感谢他们对我在爱丁堡大学开设ROS课程和本书基础课程时给予的支持。感谢爱丁堡大学的Chris Swetenham、Vladimir Ivan和Michael Camilleri,我们在DARPA机器人挑战赛中一起开展ROS编程合作。在这个过程中,他们教会了我很多额外的ROS编程技巧。
感谢Hung Hing Ying家庭的支持,他们的基金会使得我成为香港大学的Hung Hing Ying客座教授,期间与香港大学DARPA机器人挑战赛团队一起组织并开展工作。这是一次宝贵的实践ROS的经历。感谢东京大学的Kei Okada及其学生对我们港大团队所做的贡献,包括ROS使用的宝贵意见和技巧。
感谢Taylor and Francis的资深策划编辑Randi Cohen,她鼓励并指导了本书的出版。感谢为本书提出了宝贵建议的审稿者,他们是NASA Goddard空间飞行中心和马里兰大学的Craig Carignan博士和广东工业大学的Juan Rojas教授。
最后,感谢我的妻子Peggy Gallagher、女儿Clea和Alair Newman的支持,以及不断的鼓励和帮助。
感谢谷歌和开源机器人基金、许多创建了有价值的ROS包和在线教程以及回答大量ROS问题的在线贡献者,正是有了他们的支持,ROS才能成功。
作者简介
Wyatt S. Newman是凯斯西储大学电气工程和计算机科学系的教授,自1988年开始执教。他的研究领域是机电一体化、机器人学和计算智能,拥有12项专利并发表了超过150篇学术出版物。他在哈佛大学获得了工程科学专业的学士学位,在麻省理工学院热流体科学系获得了机械工程专业的硕士学位,在哥伦比亚大学获得了控制理论和网络理论专业的电机工程理学硕士学位,在麻省理工学院设计与控制系获得了机械工程专业的博士学位。他是机器人学方面的NSF青年研究员,担任过以下职务:飞利浦实验室高级研究员、飞利浦Natuurkundig实验室的访问科学家、美国桑迪亚国家实验室智能系统和机器人中心的访问学者、NASA格伦研究中心的NASA夏季教员、普林斯顿大学神经科学的访问学者、爱丁堡大学信息学院的杰出访问学者、香港大学的Hung Hing Ying杰出客座教授。他带领机器人团队参加了2007年DARPA城市挑战赛和2015年DARPA机器人挑战赛,并将继续致力于机器人的广泛应用。

上架指导

机器人

封底文字

ROS(机器人操作系统)已成为机器人领域的实际标准编程方法,并成功应用于大型工业自动化系统。本书不同于以往ROS相关图书只注重实践操作,还对ROS的底层原理做了深入的解释,对机器人学的一些基础知识也做了必要的介绍。除了系统讲解ROS内部的工作机制外,还着重介绍了移动机器人和机械臂的工作原理,以及系统集成与高级控制等方面的应用,能够让读者充分了解ROS原理及其在机器人主要领域的实践应用。

本书特色:
覆盖六大主题:ROS基础、ROS仿真和可视化、ROS中的感知处理、ROS中的移动机器人、ROS中的机械臂、系统集成和高级控制。
在ROS基本知识(包括ROS工具和节点、定义消息、使用类以及创建库)的基础上,讲解了如何使用Gazebo和rviz进行仿真和可视化,以及如何使用立体相机、三维激光雷达和深度相机等完成感知处理。
从理论联系实践的层面诠释了移动机器人的运动控制和导航,机械臂的运动学、运动规划和关节控制。
最后,整体论述了系统集成与高级控制。

译者序

易科机器人实验室联手机械工业出版社华章分社,为传播最新的机器人技术以及方便国内读者学习,引进出版了一系列ROS入门与实践的书籍,如侧重于入门基础的《ROS机器人程序设计(原书第2版)》(ISBN:978-7-111-55105-8)、《ROS机器人高效编程(原书第3版)》(ISBN:978-7-111-57846-8),以及体现当前ROS开发应用最新成果的《ROS机器人项目开发11例》(ISBN:978-7-111-59817-6)、《ROS机器人开发:实用案例分析》(ISBN:978-7-111-59372-0)。除此之外,近年来国内亦有许多专家贡献了大量的作品,所涵盖的内容已经非常丰富了。但翻遍所有已出版的ROS图书,心中不免又有一点遗憾,总感觉似乎还缺少这么一本书—它在宽度上,能够概述机器人学相关基础;在深度上,又能挖掘ROS底层原理。为了弥补此缺憾,我们团队成员以及相关专家甚至为此开过数次研讨会,甚至都拟定了初步的提纲,差点就要撸起袖子来自己干了!
2018年,Wyatt S. Newman教授出版了《A Systematic Approach to Learning Robot Programming with ROS》,我们发现此书不同于以往图书只是注重实践操作,它对ROS的底层原理做了深入的解释,对一些机器人学基础知识也做了必要的介绍,这对于机器人入门学习是非常有帮助的,正是符合我们之前设想的一本难得的好书!因而决定翻译引进。在书名翻译上,我们也是几经周折,先后调整了三四次。为了凸显此书特色,我们再三斟酌决定增加副书名“原理与应用”。为了言简意赅,机械工业出版社华章分社的老师也建议不必直译书名,而是关注国内读者阅读习惯,最后本书命名为《ROS机器人编程:原理与应用》。
关于ROS诸多优势在此不过多赘述,接下来补充介绍此书不同于已有图书的特点。我们认为,它是迄今为止已出版ROS图书中涉及领域最为系统全面的一本,除了系统讲解ROS内部的工作机制外,还着重介绍了移动机器人与机械臂的基本原理,以及系统集成、高级控制等方面的应用,能够让读者充分了解ROS原理以及在机器人主要领域的实践应用。但也正如作者所言:ROS涵盖了机器人研究的众多领域,每一个具体领域都需要专业的知识,甚至可以作为一个科研方向进行研究。希望本书能够帮助你为未来的研究与工作奠定良好的基础,找到自己真正感兴趣的方向,深入下去!
此书适合本科高年级学生、研究生和工程技术人员。此书内容系统且深入,附有大量示例代码,尤其适合需要自学的朋友。愿此书能够陪伴你开启美好的学习之旅!
最后感谢机械工业出版社华章分社的领导及张梦玲编辑对此书的大力支持!感谢易科机器人实验室的张瑞雷博士、林远山博士和吴中红博士审阅此书并提出宝贵的修改意见。感谢河海大学国防生机器人运动与视觉实验室的吕泽宇、乔睿哲和刘官明同学参与了文字审校工作。感谢华东师范大学机器人运动与视觉实验室负责人张新宇副教授的帮助与支持!

图书目录

译者序
前言
第一部分 ROS基础 / 1
第1章 概述:ROS工具和节点 / 2
1.1 ROS基础概念 / 2
1.2 编写ROS节点 / 5
1.2.1 创建ROS程序包 / 5
1.2.2 编写一个最小的ROS发布器 / 8
1.2.3 编译ROS节点 / 11
1.2.4 运行ROS节点 / 12
1.2.5 检查运行中的最小发布器节点 / 13
1.2.6 规划节点时间 / 15
1.2.7 编写一个最小ROS订阅器 / 17
1.2.8 编译和运行最小订阅器 / 19
1.2.9 总结最小订阅器和发布器节点 / 21
1.3 更多的ROS工具:catkin_simple、roslaunch、rqt_console和rosbag / 21
1.3.1 用catkin_simple简化CMakeLists.txt / 21
1.3.2 自动启动多个节点 / 23
1.3.3 在ROS控制台观察输出 / 25
1.3.4 使用rosbag记录并回放数据 / 26
1.4 最小仿真器和控制器示例 / 28
1.5 小结 / 32
第2章 消息、类和服务器 / 33
2.1 定义自定义消息 / 33
2.1.1 定义一条自定义消息 / 34
2.1.2 定义一条变长的消息 / 38
2.2 ROS服务介绍 / 43
2.2.1 服务消息 / 43
2.2.2 ROS服务节点 / 45
2.2.3 与ROS服务手动交互 / 47
2.2.4 ROS服务客户端示例 / 48
2.2.5 运行服务和客户端示例 / 50
2.3 在ROS中使用C++类 / 51
2.4 在ROS中创建库模块 / 56
2.5 动作服务器和动作客户端介绍 / 61
2.5.1 创建动作服务器包 / 62
2.5.2 定义自定义动作服务器消息 / 62
2.5.3 设计动作客户端 / 68
2.5.4 运行示例代码 / 71
2.6 参数服务器介绍 / 80
2.7 小结 / 84
第二部分 ROS中的仿真和可视化 / 85
第3章 ROS中的仿真 / 86
3.1 简单的2维机器人仿真器 / 86
3.2 动力学仿真建模 / 93
3.3 统一的机器人描述格式 / 95
3.3.1 运动学模型 / 95
3.3.2 视觉模型 / 98
3.3.3 动力学模型 / 99
3.3.4 碰撞模型 / 102
3.4 Gazebo介绍 / 104
3.5 最小关节控制器 / 112
3.6 使用Gazebo插件进行关节伺服控制 / 118
3.7 构建移动机器人模型 / 124
3.8 仿真移动机器人模型 / 132
3.9 组合机器人模型 / 136
3.10 小结 / 139
第4章 ROS中的坐标变换 / 141
4.1 ROS中的坐标变换简介 / 141
4.2 转换侦听器 / 149
4.3 使用Eigen库 / 156
4.4 转换ROS数据类型 / 161
4.5 小结 / 163
第5章 ROS中的感知与可视化 / 164
5.1 rviz中的标记物和交互式标记物 / 168
5.1.1 rviz中的标记物 / 168
5.1.2 三轴显示示例 / 172
5.1.3 rviz中的交互式标记物 / 176
5.2 在rviz中显示传感器值 / 183
5.2.1 仿真和显示激光雷达 / 183
5.2.2 仿真和显示彩色相机数据 / 189
5.2.3 仿真和显示深度相机数据 / 193
5.2.4 rviz中点的选择 / 198
5.3 小结 / 201
第三部分 ROS中的感知处理 / 203
第6章 在ROS中使用相机 / 204
6.1 相机坐标系下的投影变换 / 204
6.2 内置相机标定 / 206
6.3 标定立体相机内参 / 211
6.4 在ROS中使用OpenCV / 217
6.4.1 OpenCV示例:寻找彩色像素 / 218
6.4.2 OpenCV示例:查找边缘 / 223
6.5 小结 / 224
第7章 深度图像与点云信息 / 225
7.1 从扫描LIDAR中获取深度信息 / 225
7.2 立体相机的深度信息 / 230
7.3 深度相机 / 236
7.4 小结 / 237
第8章 点云数据处理 / 238
8.1 简单的点云显示节点 / 238
8.2 从磁盘加载和显示点云图像 / 244
8.3 将发布的点云图像保存到磁盘 / 246
8.4 用PCL方法解释点云图像 / 248
8.5 物体查找器 / 257
8.6 小结 / 261
第四部分 ROS中的移动机器人 / 263
第9章 移动机器人的运动控制 / 264
9.1 生成期望状态 / 264
9.1.1 从路径到轨迹 / 264
9.1.2 轨迹构建器库 / 268
9.1.3 开环控制 / 273
9.1.4 发布期望状态 / 274
9.2 机器人状态估计 / 282
9.2.1 从Gazebo获得模型状态 / 282
9.2.2 里程计 / 286
9.2.3 混合里程计、GPS和惯性传感器 / 292
9.2.4 混合里程计和LIDAR / 297
9.3 差分驱动转向算法 / 302
9.3.1 机器人运动模型 / 303
9.3.2 线性机器人的线性转向 / 304
9.3.3 非线性机器人的线性转向 / 306
9.3.4 非线性机器人的非线性转向 / 308
9.3.5 仿真非线性转向算法 / 309
9.4 相对于地图坐标系的转向 / 312
9.5 小结 / 317
第10章 移动机器人导航 / 318
10.1 构建地图 / 318
10.2 路径规划 / 323
10.3 move_base客户端示例 / 328
10.4 修改导航栈 / 331
10.5 小结 / 335
第五部分 ROS中的机械臂 / 337
第11章 底层控制 / 338
11.1 单自由度移动关节机器人模型 / 338
11.2 位置控制器示例 / 339
11.3 速度控制器示例 / 342
11.4 力控制器示例 / 344
11.5 机械臂的轨迹消息 / 349
11.6 7自由度臂的轨迹插值动作服务器 / 353
11.7 小结 / 354
第12章 机械臂运动学 / 355
12.1 正向运动学 / 356
12.2 逆向运动学 / 360
12.3 小结 / 365
第13章 手臂运动规划 / 366
13.1 笛卡儿运动规划 / 367
13.2 关节空间规划的动态规划 / 368
13.3 笛卡儿运动动作服务器 / 372
13.4 小结 / 376
第14章 Baxter仿真器进行手臂控制 / 377
14.1 运行Baxter仿真器 / 377
14.2 Baxter关节和主题 / 379
14.3 Baxter夹具 / 382
14.4 头盘控制 / 385
14.5 指挥Baxter关节 / 387
14.6 使用ROS关节轨迹控制器 / 390
14.7 关节空间记录和回放节点 / 391
14.8 Baxter运动学 / 397
14.9 Baxter笛卡儿运动 / 399
14.10 小结 / 404
第15章 object-grabber包 / 405
15.1 object-grabber代码组织 / 405
15.2 对象操作查询服务 / 407
15.3 通用夹具服务 / 410
15.4 object-grabber动作服务器 / 412
15.5 object-grabber动作客户端示例 / 415
15.6 小结 / 425
第六部分 系统集成与高级控制 / 427
第16章 基于感知的操作 / 428
16.1 外部相机标定 / 428
16.2 综合感知和操作 / 431
16.3 小结 / 440
第17章 移动操作 / 441
17.1 移动机械手模型 / 441
17.2 移动操作 / 442
17.3 小结 / 446
第18章 总结 / 447
参考文献 / 449

教学资源推荐
作者: [美]桑德拉·切卡莱丽(Saundra K.Ciccarelli),[美]诺兰·怀特(J. Noland White) 著
作者: (美)罗伯特 M. 卡普兰(Robert M. Kaplan)加利福尼亚大学洛杉矶分校 丹尼斯 P. 萨库兹(Dennis P. Saccuzzo)圣迭戈州立大学
作者: (美)埃略特·阿伦森(Elliot Aronson)加利福尼亚大学圣克鲁兹分校 提摩太 D. 威尔逊(Timothy D. Wilson) 弗吉尼亚大学 罗宾 M.埃克特 (Robin M. Akert)威尔士利学院 著
作者: 主 编 刘 平(封面只上主编) 副主编 李 坚 窦 乐 梁 旭 邸 砧参 编 梁宁娜 钟育秀 张 颖 张 超
参考读物推荐
作者: [美]哈丽特·勒纳(Harriet Lerner)著
作者: [美]亚当·奥尔特(Adam Alter)著
作者: