新書推薦:
《
地下(村上春树沙林毒气事件的长篇纪实)
》
售價:HK$
76.7
《
偿还:债务与财富的阴暗面
》
售價:HK$
80.2
《
清华大学藏战国竹简校释(壹):《命训》诸篇
》
售價:HK$
94.4
《
封建社会农民战争问题导论(光启文库)
》
售價:HK$
68.4
《
虚弱的反攻:开禧北伐
》
售價:HK$
92.0
《
中华内丹学典籍丛书:古书隐楼藏书汇校(上下)
》
售價:HK$
257.2
《
辞源.修订本(建国60周年纪念版)(全二册)
》
售價:HK$
1477.6
《
泰山:一种中国信仰专论(法国汉学经典译丛)
》
售價:HK$
81.4
|
內容簡介: |
本书共分为六部分。*部分介绍了如何编写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 笛卡儿运动规划 36
|
內容試閱:
|
ROS(Robot Operating System,机器人操作系统)正在成为现代机器人学的实际标准编程方法。ROS wiki(https:www.ros.orghistory)写道:
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.orgROSIntroduction):
ROS是一个针对机器人的开源、元级操作系统。它提供了用户在操作系统上所期望的服务,包括硬件抽象、低层设备控制、常用功能的实现、进程之间的消息传递以及包管理。它还提供了在多台计算机上获取、生成、编写以及运行代码的工具和库。
ROS的主要目标是支持机器人研究和开发中的代码复用。ROS是一个分布式的进程(也称节点)框架,它能使可执行的文件单独设计以及在运行时松散耦合。这些进程可以打包成易于共享和分发的包。ROS还支持一个代码库的联合系统,能够同时分发协作。从文件系统级到社区级的这个设计实现了开发和部署的独立决策,但所有这些都可以与ROS的基础底层工具一起使用。
Brian Gerkey在网上的评论(https:answers.ros.orgquestion12230what-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++编写的小程序,用于执行一些相对简单的任务或过程。节点可以相互独立地启动和停止,并通过传递消息进行通信。节点可以在某些主题上发布消息或向其他节点提供服务。
例如,发布器节点可能会报告从连接到机器人微控制器的传感器传来的数
|
|