开源机器人操作系统 ros
开源机器人操作系统一ROS 张建伟张立伟胡颖张俊编著 衅学出版社 北京 内容简介 目前,ROs( robot operating system)逐步成为机器人研发领域的通用性软件平 台。本书是国内第一本全面介绍ROS的中文版图书。 ROS是开源的用于机器人的一种后操作系统,或者说次级操作系统。它提 供类似操作系统所提供的功能,包含硬件抽象描述、底层驱动程序管理、共用 功能的执行、程序间的消息传递、程序发行包管理,它也提供一些工具程序和 库用于获取、建立、编写和运行多机整合的程序。 本书附光盘一张,内容包括书中的部分例子源代码和 Diamondback及 Electric版本安装后在本地硬盘上的全部程序,以便于读者对照自己的安装版本 进行调试。 本书可作为机器人研究者以及机器人爱好者应用ROs构建机器人软件系 统的参考手册。 图书在版编目(cIP)数据 开源机器人操作系统:ROS/张建伟等编著.一北京:科学出版社,2012 ISBN978-7-03-035434-1 L.1开...II.1张...III.1机器人-操作系统IV.1TP242 中国版本图书馆CIP数据核字(2012)第201958号 责任编辑:刘宝莉/责任杈对:宋玲玲 责任印制:张倩/封面设计:陈敬 学出版社出版 北京东黄城根北街16号 邮政编码:100717 http://www.sciencep.com 源海印刷有贵锤岔司印刷 科学出版社发行各地新华书店经销 2012年9月第 版开本:B5(720×1000 2012年9月第一次印刷印张:1934彩插:4 字数:417000 定价:88.00元(含光盘) (如有印装质量问题,我社负责调换) 前言 近年来,机器人研发领域对代码复用和模块化的需求越来越强烈,而已有 的开源机器人系统又不能很好地适应该需求。2010年 Willow Garage公司发布 了开源机器人操作系统ROS( robot operating system),由于其具有点对点设计、 不依赖编程语言、开源等优点,很快在机器人研究领域展开了学习和使用ROS 的热潮。 笔者所在的中国科学院深圳先进技术研究院认知技术研究中心致力于服务机 器人的研发,在其面世伊始就开始使用ROS,日前已经近两年。本书是根据研 究组人员在学习和使用ROS过程中遇到的问题和经验编写而成,相信对广大同 行和机器人爱好者会有所裨益。 ROS是开源机器人操作系统,遵循BSD协议,对用户和商业应用免费。 本书是国内第一本全面介绍ROS的中文版图书。全书内容共分九章,覆盖 了ROS基本编程的大部分内容。利用现有的因特网上最新资料为蓝本,深入浅 出地介绍了ROS的总体架构和涉及的主要领域,全面地对ROS安装及使用过程 中常见问题给出了解答。 书中第一、二章由张建伟执笔;第三、七、八章由张立伟执笔;第三、五章 由胡颖执笔;第六章由张俊、胡颖执笔;第九章由张俊执笔。最后由张建伟统 稿。其中,刘会芬和陈楠提供了部分实验演示代码。 全书结构清晰、合理,语言浅显易懂。对厂大从事机器人、人工智能、计算 机视觉等相关领域的科研人员和研究生及高年级本科生等,不失为一本重要的自 学、教学参考书。 本书相关研究获得中国科学院知识创新工程重要方向项目“下一代自主机器 人的关键技术—基于经验的记忆学习”(项日编号: KGCXZ-YW128)以及 国家自然科学基金项目(项日编号:61105130、61105132、61175124、61210013) 的资助。 由于作者水平有限,书中难免存在不足之处,恳请广大读者和同行批评 指正。 术语列表 英文术语 中文术语 ROS 机器人操作系统 Package 功能包 Stack 功能包集 message 消思 Service 服务 Topic 题 Node 节点 Master 节点管理器 Parameter Server 参数服务器 Bag 消息记录包 Publisher/Subscriber 主题发布者/订阅者 Launch 启动 Talker/Listener 消息发布者/接收者 Filesystem Level 文件系统级 Computation Graph Level 计算图级 Community Level 社区级 Package Resource Name 功能包源名称 Graph Resource Name 计算图源名称 Client Library 客户端库 Distribution 发行版 Repositories 软件版本仓库 Namespace 命名空间 Base name 基本名称 Global name 全局名称 Private Name 私有名称 Relative Name 相对名称 NodeHandle 节点句柄 Timer 计时器 Transform 变换 目录 术语列表 第一章ROS简介 1.1ROS简介 12ROS安装............∴ 13ROS支持的机器人 1.4ROs网上资源... 第二章ROs总体框架及基本命令 21ROS总体框架 114667779 21.1文件系统级... 21.2计算图级.................................... 21.3社区级... 11 214更高层概念... 21.5名称... 12 22ROS基本命令 ...15 2.21ROS文件系统命令 :::a::::::::..::a::::::::..:日:::::::::::: 2.22ROs核心命令 ∴26 23工具 35 2.3.13D可视化工具:rviz............... ......35 232传感器数据记录与可视化工具: rosbag和 rxbag..................45 233画图工具: rxplot...............47 234系统可视化工具: ograph.................................:49 2.3.5 rxconsole........., ...............49 23.6tf命令 51 24例子...... 52 241创建ROS消息和服务 ..·..:·...·, ..........52 VI* 开源机器人操作系统一BOS 242记录和回放数据.................................54 243手工创建ROS功能包 244大项目上运行 roslaunch 24.5在多台机器上运行ROS系统 66 24.6定义客户消息 第三章RoS客户端库....................................70 3.1概述 ...............70 3.2 roscpp 客户端库 71 3.21简单的主题发布者和主题订阅者............ 72 322简单的服务器端和客户端... 323 roscpp中参数的使用 ...81 324从节点句柄存取私有名称 83 325用类方法订阅和回调服务...........................84 3.26计时器..............................85 327带动态可重配置及参数服务器的主题发布者/订阅者节点(C++)......87 328带动态可重配置及参数服务器的主题发布者/订阅者节点( Python)...95 329组合C++/ Python主题发布者/订阅者节点 ∴...101 33 raspy客户端库 ...101 331简单的主题发布者/订阅者... 101 332简单的服务端和客户端 .........105 333 raspy中参数的使用 108 334 raspy中 numpy的使用... ∴109 33.5 raspy运行日志 113 336 ROS Python Makefile文件 i_tt·:整·,·,申·面潘 115 337设置 PYTHONPATH..............................116 338发布消息· 116 34 rosis客户端库 ∴......117 35实验阶段的客户端库... 117 3.5.1 rosava ...117 3.5.2 roslua. ...117 目录 VIl 第四章 OpenCV... 119 4.1 Inage_common功能包集 119 411 image-transport功能包...... 119 412 camera_calibration-parsers功能包 :.·“··:::·:::::··::::, 124 41.3 camera__manager功能包.........126 41.4 polled-camera功能包 127 42 image-pipeline功能包集...... ∴.......127 4.3 vision_opencv功能包集· ∴∴128 43.1 opencv2...... ......128 432 cv_bridge...... ....,·128 43.3 image-geometry...∵...∷. 139 44投影tf坐标系到图像(C++) 140 45演示例子 ∴145 45.1使用颜色追踪物体· ...,,145 452识别物体 ∴,......148 第五章SLAM和导航 ∴..................150 51使用t配置机器人∴.....................150 52通过ROS发布里程计信息...... 154 53通过ROS发布传感器数据流 .,......158 54SLAM......, ∴...163 541SLAM简介 ,.....................163 542 slam-gmapping功能包 ,.............163 543使用记录的数据建立地图..............................167 544模拟器中建立地图∴............ 168 545模拟器中使用客户定制地图..............................170 55配置和使用导航功能包集 ,...172 551导航功能包集基本操作 曲量吾,·丰····,··,···· 172 552在机器人上设置和配置导航功能包集............173 5.53rviz与导航功能包集配合使用...............176 554发送日标到导航功能包集........................ ...178 VIll. 开源机器人操作系统—ROS 第六章抓取操作...... 182 6.1机器人手臂的运动规划 182 6.1.1安装和配置 ...182 61.2编译手臂导航功能包集......................................................182 6.1.3启动模拟器和仿真环境...∵..................183 6.14启动相关节点.......................................183 6.15控制于臂运动...... 185 6.2运动规划的环境表示 203 6.21基于臼滤波数据构建碰撞地图.....................203 6.2.2检测关节轨迹碰撞 ∴.........208 6.23给定机器人状态下的碰撞检测 ∴...............212 624添加已知点到运动规划环境.................. 219 6.25添加物体到机器人本体· 224 63用于PR2机器人手臂的运动学 .230 63.1从PR2运动学开始 230 632从运动学节点获取运动学求解器信息........................231 633PR2手臂运动学正解 233 634PR2手臂运动学逆解... 237 635PR2手臂无碰撞运动学逆解 ∴................240 64用于PR2机器人手臂的安全轨迹控制 ............245 6.5使用轨迹滤波节点进行轨迹滤波 ∴.....................247 651生成无碰撞三次样条轨迹..........................................·247 652使用轨迹滤波服务器对关节轨迹进行滤波........................248 6.53学习如何创建自己的轨迹滤波...... 253 66机器人状态和轨迹可视化... ∴,,,,,,,::256 第七章 Kinect............ ,...260 7.1 Kinect简介 260 7.2安装驱动... 261 7.2. Ubuntu系统上安装 Kinect.......................................261 7.22某于源的安装 ∴261
用户评论