ROS机器人开发实践
全新正版 极速发货
¥
53.8
5.4折
¥
99
全新
库存29件
作者胡春旭 编著
出版社机械工业出版社
ISBN9787111598237
出版时间2018-05
装帧平装
开本16开
定价99元
货号1201709322
上书时间2024-05-30
商品详情
- 品相描述:全新
- 商品描述
-
作者简介
胡春旭,网名古月,机器人博客“古月居”博主(www.guyuehome.com),华中科技大学自动化学院硕士。目前主要从事机器人控制系统的研究开发。
作为靠前很早一批ROS开发者,具备多年开发、应用经验,参与研发过服务机器人、机械臂等机器人产品。曾获开源硬件与嵌入式大赛机器人组全国优选,飞思卡尔杯智能汽车竞赛全国一等奖,中国人工智能机器人学术会议靠前论文等奖项。
目录
推荐序一
推荐序二
推荐序三
前言
第1章初识ROS1
1.1ROS是什么1
1.1.1ROS的起源1
1.1.2ROS的设计目标2
1.1.3ROS的特点3
1.2如何安装ROS4
1.2.1操作系统与ROS版本的选择4
1.2.2配置系统软件源6
1.2.3添加ROS软件源6
1.2.4添加密钥7
1.2.5安装ROS7
1.2.6初始化rosdep8
1.2.7设置环境变量8
1.2.8完成安装9
1.3本书源码下载9
1.4本章小结10
第2章ROS架构11
2.1ROS架构设计11
2.2计算图12
2.2.1节点12
2.2.2消息13
2.2.3话题13
2.2.4服务13
2.2.5节点管理器14
2.3文件系统14
2.3.1功能包14
2.3.2元功能包16
2.4开源社区17
2.5ROS的通信机制17
2.5.1话题通信机制18
2.5.2服务通信机制19
2.5.3参数管理机制20
2.6话题与服务的区别20
2.7本章小结21
第3章ROS基础22
3.1个ROS例程——小乌龟仿真23
3.1.1turtlesim功能包23
3.1.2控制乌龟运动24
3.2创建工作空间和功能包25
3.2.1什么是工作空间25
3.2.2创建工作空间26
3.2.3创建功能包27
3.3工作空间的覆盖28
3.3.1ROS中工作空间的覆盖28
3.3.2工作空间覆盖示例28
3.4搭建Eclipse开发环境30
3.4.1安装Eclipse30
3.4.2创建Eclipse工程文件30
3.4.3将工程导入Eclipse31
3.4.4设置头文件路径31
3.4.5运行/调试程序32
3.5RoboWare简介35
3.5.1RoboWare的特点35
3.5.2RoboWare的安装与使用36
3.6话题中的Publisher与Subscriber37
3.6.1乌龟例程中的Publisher与Subscriber37
3.6.2如何创建Publisher37
3.6.3如何创建Subscriber40
3.6.4编译功能包41
3.6.5运行Publisher与Subscriber42
3.6.6自定义话题消息44
3.7服务中的Server和Client46
3.7.1乌龟例程中的服务46
3.7.2如何自定义服务数据47
3.7.3如何创建Server48
3.7.4如何创建Client49
3.7.5编译功能包51
3.7.6运行Server和Client51
3.8ROS中的命名空间52
3.8.1有效的命名52
3.8.2命名解析53
3.8.3命名重映射54
3.9分布式多机通信54
3.9.1设置IP地址55
3.9.2设置ROS_MASTER_URI56
3.9.3多机通信测试56
3.10本章小结57
第4章ROS中的常用组件58
4.1launch启动文件58
4.1.1基本元素58
4.1.2参数设置60
4.1.3重映射机制61
4.1.4嵌套复用61
4.2TF坐标变换62
4.2.1TF功能包62
4.2.2TF工具63
4.2.3乌龟例程中的TF65
4.2.4创建TF广播器67
4.2.5创建TF监听器68
4.2.6实现乌龟跟随运动70
4.3Qt工具箱70
4.3.1日志输出工具(rqt_console)71
4.3.2计算图可视化工具(rqt_graph)71
4.3.3数据绘图工具(rqt_plot)72
4.3.4参数动态配置工具(rqt_reconfigure)73
4.4rviz三维可视化平台73
4.4.1安装并运行rviz74
4.4.2数据可视化75
4.4.3插件扩展机制76
4.5Gazebo仿真环境78
4.5.1Gazebo的特点78
4.5.2安装并运行Gazebo78
4.5.3构建仿真环境81
4.6rosbag数据记录与回放82
4.6.1记录数据82
4.6.2回放数据83
4.7本章小结84
第5章机器人平台搭建85
5.1机器人的定义85
5.2机器人的组成86
5.2.1执行机构87
5.2.2驱动系统87
5.2.3传感系统87
5.2.4控制系统87
5.3机器人系统搭建88
5.3.1MRobot88
5.3.2执行机构的实现88
5.3.3驱动系统的实现89
5.3.4内部传感系统的实现90
5.4基于RaspberryPi的控制系统实现90
5.4.1硬件平台RaspberryPi91
5.4.2安装Ubuntu16.0491
5.4.3安装ROS93
5.4.4控制系统与MRobot通信94
5.4.5PC端控制MRobot97
5.5为机器人装配摄像头99
5.5.1usb_cam功能包99
5.5.2PC端驱动摄像头100
5.5.3RaspberryPi驱动摄像头102
5.6为机器人装配Kinect104
5.6.1freenect_camera功能包104
5.6.2PC端驱动Kinect106
5.6.3RaspberryPi驱动Kinect109
5.6.4Kinect电源改造109
5.7为机器人装配激光雷达110
5.7.1rplidar功能包110
5.7.2PC端驱动rplidar111
5.7.3RaspberryPi驱动rplidar113
5.8本章小结113
第6章机器人建模与仿真114
6.1统一机器人描述格式——URDF114
6.1.1<link>标签114
6.1.2<joint>标签115
6.1.3<robot>标签116
6.1.4<gazebo>标签116
6.2创建机器人URDF模型116
6.2.1创建机器人描述功能包116
6.2.2创建URDF模型117
6.2.3URDF模型解析120
6.2.4在rviz中显示模型122
6.3改进URDF模型124
6.3.1添加物理和碰撞属性124
6.3.2使用xacro优化URDF125
……
内容摘要
本书在介绍ROS总体框架和理论要点的基础上,讲解ROS的通信机制、常用组件和进阶功能;同时以实践为主,讲解机器视觉、机器听觉、SLAM与导航、机械臂控制、机器学习等多种ROS应用的主要原理和实现方法;并分析基于ROS的机器人系统设计方法和典型实例;后论述ROS2的框架特点和使用方法,剖析ROS的发展方向。
精彩内容
Preface 前 言2011年年底,笔者第一次接触ROS。当时实验室的一个师兄在学术会议上听说了ROS并意识到它的前景广阔,考虑到笔者当时的研究方向,于是建议笔者进行研究。那时国内外ROS的学习环境比较艰苦,几乎只有Wiki的基础教程(也没有现在这么完善)。所以一开始,笔者的内心是拒绝的,但还是硬着头皮开始钻研。虽然从拒绝到接受、从未知到熟悉,笔者经历了靠前的磨难,但同时也收获了靠前的喜悦。 在这个过程中,笔者也常常思考:ROS前景无限,但是国内还鲜有人知,即使有人知道,也会被困难吓倒。既然笔者经历过,何不总结一下,让其他人少走弯路。于是,笔者整理了自己学习过程中的一些资料和心得,在CSDN上以博客的形式发表,最终形成《ROS探索总结》系列博文,再后来转移到个人网站——古月居,至今仍保持更新。 2017年11月,ROS十周岁了!在走过的个十年里,ROS从蹒跚学步的孩童成长为机器人领域的巨人,再华丽蜕变出ROS 2。如今,大多数知名机器人平台和机器人公司都支持ROS,越来越多的机器人开发者也选择ROS作为开发框架。ROS已经逐渐成为机器人领域的事实标准,并将逐步从研发走向市场,助力机器人与人工智能的快速发展。 ROS的重要精神是分享,这也是开源软件的精神,所以才能看到如此活跃的ROS社区和众多软件功能包的源码,并且可以在此基础上快速完成二次开发。为了促进ROS在国内的发展,现在已经有很多人及组织在积极推广ROS,比如ROS星火计划、ROS暑期学校,以及网上各种各样的技术分享等,相信未来这个队伍会更加庞大。 本书以《ROS探索总结》系列博文为基础,重新整理了ROS相关基础要点,让读者能够迅速熟悉ROS的整体框架和设计原理;在此基础上,本书以实践为重心,讲解大量机器视觉、机器语音、机械臂控制、SLAM和导航、机器学习等多方面ROS应用的实现原理和方法,并且翻译了众多ROS中的图表、内容,帮助读者在实现ROS基础功能的同时深入理解基于ROS的机器人开发,将书中的内容用于实践。 本书共有14章,可以分为五个部分。 第一部分是ROS基础(~4章),帮助了解ROS框架,并且熟悉ROS中的关键概念以及实现方法。这部分的内容适合初学者,也适合作为有一定经验或者资深开发者的参考手册。 第二部分介绍如何搭建真实或仿真的机器人平台(第5~6章),帮助了解机器人系统的概念和组成,学习如何使用ROS实现机器人仿真,为后续的机器人实践做好准备。这部分的内容适合希望自己动手设计、开发一个完整机器人平台的读者。 第三部分介绍ROS中常用功能包的使用方法(第7~10章),涉及机器视觉、机器语音、机械臂控制、SLAM和导航等多个机器人研究领域。这部分的内容适合学习ROS基础后希望实践的开发者,以及从事相关领域的机器人开发者。 第四部分是ROS的进阶内容(第11~13章),介绍了ROS的进阶功能、ROS与机器学习的结合、搭载ROS的机器人平台。这部分的内容适合已经对ROS基础和应用有一定了解的读者。 第五部分介绍了新一代ROS——ROS 2(第14章),涉及ROS 2的架构、原理和使用方法。这部分的内容适合对ROS有一定了解,希望了解ROS 2、想要跟上ROS进化步伐的开发者。 因此,本书不仅适合希望了解、学习、应用ROS的机器人初学者,也适合有一定经验的机器人开发人员,同时也可以作为资深机器人开发者的参考手册。 书中的部分源代码来自社区中的ROS功能包,但是笔者在学习过程中对这些代码进行了大量修改,并且为大部分源代码加入了中文注释,以方便国内ROS初学者理解。这些代码涉及的编程语言不局限于C++或Python中的某一种,编程语言应该服务于具体场景,所以建议读者对这两种语言都有所了解,在不同的应用中发挥每种语言的优势。关于是否需要一款实物机器人作为学习平台,本书并没有特别要求,书中绝大部分功能和源码都可以在单独的计算机或仿真平台中运行,同时也会介绍实物机器人平台的搭建方法并且在实物机器人上完成相应的功能。所以只需要拥有一台运行Ubuntu系统的计算机,具备Linux工具的基本知识,了解C++和Python的编程方法,即可使用本书。 此外,本书创作过程中参考了众多已经出版的ROS原著、译著,笔者也将这些内容作为参考资料列出,并向这些著作的作者和译者致敬,希望读者在学习ROS的过程中,可以从这些著作中获取更多知识: 《Mastering ROS for Robotics Programming》,Lentin Joseph《ROS By Example》(Volume 1/Volume 2),Patrick Goebel《Programming Robots with ROS:A Practical Introduction to the Robot Operating System》, Morgan Quigley, Brian Gerkey & William D. Smart《Learning ROS for Robotics Programming》,Aaron Martinez,Enrique Fernández《A Gentle Introduction to ROS》,Jason M. O’Kane《ROS Robotics Projects》,Lentin Joseph《Effective Robotics Programming with ROS》,Anil Mahtani,Luis Sanchez在ROS探索实践与本书的创作过程中,离不开众多“贵人”的帮助。首先要感谢陪伴笔者辗转多次并一直无条件支持笔者的妻子,是她给
— 没有更多了 —
以下为对购买帮助不大的评价