您的浏览器不支持JavaScript,请开启后继续
ROS机器人开发技术基础(蒋畅江)

ROS机器人开发技术基础(蒋畅江)

  • 作者
  • 蒋畅江、罗云翔、张宇航 等 编著

本书是内容全面、偏重基础的ROS 机器人开发入门书籍,是作者总结多年科研教学成果并在吸收国内外最新理论、方法和技术的基础上完成的。本书详细介绍了ROS 机器人基础和ROS 常用开发工具,详细讲解了ROS系统架构、ROS 客户端库和机器人建模与仿真;以工程开发为重心,详细讲解机器视觉、机器语音、SLAM 和导航等多方面ROS 应用的实现原理和方法。本书结合大量实例,帮助读者...


  • ¥68.00

ISBN: 978-7-122-40520-3

版次: 1

出版时间: 2022-04-01

图书信息

ISBN:978-7-122-40520-3

语种:汉文

开本:16

出版时间:2022-04-01

装帧:平

页数:264

内容简介

本书是内容全面、偏重基础的ROS 机器人开发入门书籍,是作者总结多年科研教学成果并在吸收国内外最新理论、方法和技术的基础上完成的。本书详细介绍了ROS 机器人基础和ROS 常用开发工具,详细讲解了ROS系统架构、ROS 客户端库和机器人建模与仿真;以工程开发为重心,详细讲解机器视觉、机器语音、SLAM 和导航等多方面ROS 应用的实现原理和方法。本书结合大量实例,帮助读者在实现ROS 基础功能的同时深入理解基于ROS 的机器人开发技术,将书中的内容用于实践。本书注重运用CDIO 工程教育理念,立足培养实际动手能力、综合应用能力、创新思维能力。
本书配有免费教学软件包,帮助读者更好理解和实践书中内容;配有免费电子课件,欢迎选用本书作教材的师生下载使用。
本书可作为普通高等院校机器人工程、自动化、人工智能、电子信息工程、软件工程等相关专业的教材,也可供广大科技工作者和工程技术人员参考使用。

图书前言

随着科学技术的发展以及人们对机器人的逐渐认知,机器人的应用规模和范围日益扩大,不仅制造环境下的工业机器人应用逐渐普及,非制造环境下的服务与仿人机器人应用也蓬勃发展。机器人应用环境的日益广泛和任务复杂度的日益增强,提高了机器人开发的时效性和困难度,对机器人硬件和软件技术都提出了更高的要求。而相比硬件的开发,软件开发明显力不从心。为迎接这个挑战,全球各地的开发者与研究机构纷纷投入机器人通用软件框架的研发工作中。在近些年里,产生了多种优秀的机器人软件框架,为软件开发工作提供了极大的便利,其中最为优秀的软件框架之一就是机器人操作系统(Robot Operating System,ROS)。ROS 是一个适用于机器人的通用软件框架。它提供了操作系统应有的服务,包括硬件抽象、底层设备控制、常用函数的实现、进程间消息传递以及包管理;它也提供用于获取、编译、编写和跨计算机运行代码所需的工具和库函数。
编者来自重庆邮电大学自动化学院和江苏中科重德智能科技有限公司,本书偏重于ROS 机器人软件开发技术,是编者在学校多年从事教学、科研,在企业多年从事研发、培训的基础上,经多次试用,反复修改提高而成。本书将有关教学和研发成果加以总结提高,并吸收国内外最新理论、方法和技术,注重运用CDIO工程教育理念,立足培养实际动手能力、综合应用能力和创新思维能力。本书注重知识内容的系统性、先进性与实践性,强调实践内容的应用性、工程性。为此,书中大量选用了编者所在团队的最新研发成果、学生参加科技竞赛作品、学生实验实践项目作为实例。
本书共分10 章:第1 章介绍ROS 的诞生、发展、特点和安装方法,并提供教学实践所需的源代码包,介绍二进制包与源代码包的区别;第2 章介绍ROS 的系统架构,包括典型的catkin 编译系统的工作原理及其工作空间结构、工作空间中包含的常见文件类型以及这些文件的编写规则等,并介绍ROS 的通信架构,包括ROS 的节点、节点管理器、launch 启动文件和四种通信方式(话题、服务、参数服务器、动作库);第3 章介绍ROS 的常用组件和开发工具,包括Gazebo 仿真工具、Rviz 可视化平台、rqt 可视化工具、rosbag 功能包、RoboWare Studio集成开发环境、Git 分布式版本控制系统;第4 章介绍ROS 客户端库的概念,目前最常用的roscpp 和rospy 客户端库中函数的定义、用法,以及几种通信方式的具体格式和实现方法;第5 章介绍TF 基本原理、TF 的通信方式和TF 编程基础,TF 在C++和Python 接口中的实现原理以及相关用法,TF 相关工具命令;第6章说明如何使用urdf 文件创建一个机器人模型,然后使用xacro 文件优化该模型,添加传感器模型,通过ArbotiX 或者ros_control 控制器让机器人动起来,并且放置到Rviz 或Gazebo 环境中实现可视化或仿真;第7 章讨论ROS 中的图像数据以及点云的查看方式,摄像头的标定方法,OpenCV 库和人脸识别的方法,使用摄像头进行二维码识别、物体姿态估计和AR 标记检测、物体检测;第8 章探讨机器语音是如何实现的,如何通过语音控制机器人、语音播放和与机器人实现对话交流,并且了解和认识PocketSphinx 功能包、科大讯飞SDK 和图灵语义;第9 章介绍SLAM 建图和自主导航的方法,分析常用的Gmapping 算法、Hector 算法、Cartographer 算法和AMCL 定位算法;第10 章介绍多种支持ROS的机器人系统实例,包括最流行的机器人平台TurtleBot、科研教学机器人平台XBot-U 和教育酷玩四足机器人Unitree A1。
本书第1~4 章由罗云翔、王琴编写;第5~6 章由蒋畅江编写;第7~9 章由张宇航、罗云翔、常先明编写;第10 章由蒋畅江、王琴编写。方洋、谭力、赵常昊、罗晓明、邹术杰、林桐、黄子轩等参与了相关章节的资料收集和案例编写测试,全书由蒋畅江统稿。
本书配有免费的教学软件包和电子课件供选用本书的师生使用,如有需要可登录化工教育平台www. cipedu. com. cn 注册后下载使用。
鉴于ROS 机器人开发技术的飞速发展,尽管编写过程中尽心尽力,但由于编者水平有限,书中难免有疏漏或不妥之处,恳请读者批评指正。

编著者
2021 年12 月

目录

第1 章 ROS 机器人基础
1.1 机器人时代与ROS 的诞生 001
1.2 初识ROS 002
1.3 ROS 的安装及测试 003
1.3.1 选择操作系统与ROS 版本 003
1.3.2 ROS 的安装步骤 004
1.3.3 测试ROS 007
1.4 安装教学包 008
1.5 二进制包与源代码包 010
1.6 本章小结 010
习题一 011

第2 章 ROS 系统架构
2.1 ROS 文件系统 012
2.1.1 catkin 工作空间 012
2.1.2 catkin 编译系统 013
2.1.3 package 功能包 015
2.1.4 CMakeLists.txt 文件 017
2.1.5 package.xml 文件 019
2.1.6 其他常见文件类型 022
2.1.7 Metapackage 元功能包 023
2.2 ROS 通信架构 024
2.2.1 Node 与Node Master 024
2.2.2 launch 启动文件 026
2.2.3 话题 028
2.2.4 服务 032
2.2.5 参数服务器 035
2.2.6 动作库 037
2.3 本章小结 039
习题二 039

第3 章 ROS 常用组件和开发工具
3.1 Gazebo 仿真工具 041
3.1.1 认识Gazebo 041
3.1.2 操作演示 042
3.2 Rviz 可视化平台 044
3.2.1 认识Rviz 044
3.2.2 操作演示 044
3.3 rqt 可视化工具 046
3.3.1 认识rqt 046
3.3.2 操作演示 046
3.4 rosbag 功能包 048
3.4.1 认识rosbag 048
3.4.2 操作演示 049
3.5 RoboWare Studio 集成开发环境 051
3.5.1 安装RoboWare Studio 051
3.5.2 操作演示 052
3.6 代码管理Git 058
3.6.1 认识Git 058
3.6.2 操作演示 058
3.7 本章小结 060
习题三 060

第4 章 ROS 客户端库
4.1 Client Library 简介 061
4.2 roscpp 062
4.2.1 节点 063
4.2.2 topic 065
4.2.3 service 068
4.2.4 param 070
4.2.5 时钟 073
4.2.6 日志和异常 075
4.3 rospy 075
4.3.1 rospy 与roscpp 的比较 075
4.3.2 rospy 结构 076
4.3.3 rospy API 076
4.3.4 topic 078
4.3.5 service 080
4.3.6 param 与Time 082
4.4 本章小结 084
习题四 084

第5 章 坐标变换TF 及编程
5.1 认识TF 086
5.1.1 简介 086
5.1.2 ROS 中的TF 086
5.1.3 ROS 中TF 坐标的基本规则 088
5.2 TF 原理和TF 消息 090
5.2.1 TF 基本原理 090
5.2.2 TF 数据类型 092
5.2.3 TF 特点 093
5.2.4 TF 消息 093
5.3 TF 编程基础 095
5.3.1 TF 功能包及官方实例 095
5.3.2 TF 编程基础 096
5.4 TF in C++ 097
5.4.1 简介 097
5.4.2 数据类型 097
5.4.3 数据转换 097
5.4.4 TF 类 100
5.5 TF in Python 101
5.5.1 简介 101
5.5.2 数据类型 101
5.5.3 TF 库 101
5.5.4 TF 类 102
5.6 TF 相关工具命令 103
5.7 本章小结 104
习题五 104

第6 章 机器人建模与仿真
6.1 机器人URDF 模型 105
6.2 创建与显示URDF 模型 108
6.2.1 机器人描述功能包 108
6.2.2 创建URDF 模型 108
6.2.3 解析URDF 模型 109
6.2.4 在Rviz 中显示模型 111
6.2.5 让机器人动起来 112
6.3 添加碰撞和物理属性 114
6.4 xacro 文件简化URDF 模型 115
6.5 添加传感器模型 118
6.5.1 添加摄像头 118
6.5.2 添加Kinect 120
6.5.3 添加激光雷达 121
6.6 ArbotiX+Rviz 机器人运动仿真 121
6.6.1 安装ArbotiX 122
6.6.2 配置ArbotiX 控制器 122
6.6.3 运行仿真环境 123
6.7 ros_control 125
6.7.1 ros_control 框架 125
6.7.2 ros_control 安装 127
6.7.3 控制器 127
6.7.4 硬件接口 127
6.7.5 传动装置 128
6.7.6 关节约束 129
6.7.7 控制器管理器 130
6.8 机器人Gazebo 仿真 131
6.8.1 在Gazebo 中显示机器人模型 131
6.8.2 Gazebo 插件 132
6.8.3 Gazebo 传动装置 134
6.8.4 摄像头仿真 136
6.8.5 Kinect 仿真 139
6.8.6 激光雷达仿真 140
6.9 本章小结 143
习题六 143

第7 章 机器视觉开发技术
7.1 ROS 图像数据 145
7.1.1 二维图像数据 145
7.1.2 三维点云和深度图像 147
7.1.3 查看点云图像 149
7.1.4 ROS-PCL 开发接口 151
7.2 摄像头标定 152
7.2.1 camera_calibration 功能包 153
7.2.2 启动标定程序 153
7.2.3 标定摄像头 153
7.2.4 Kinect 相机的标定 155
7.2.5 加载标定参数的配置文件 155
7.2.6 校正图像 156
7.3 OpenCV 库和人脸识别 157
7.3.1 安装OpenCV 库 157
7.3.2 使用OpenCV 库 157
7.3.3 使用OpenCV 实现人脸识别 162
7.4 二维码识别 167
7.4.1 ar_track_alvar 功能包 167
7.4.2 创建二维码 168
7.4.3 摄像头识别二维码 169
7.4.4 物体姿态估计与AR 标记检测 171
7.5 物体检测 174
7.5.1 find_object_2d 功能包 174
7.5.2 物体检测实例 175
7.5.3 话题和参数 178
7.6 本章小结 178
习题七 179

第8 章 机器语音开发技术
8.1 语音识别 180
8.1.1 PocketSphinx 功能包 180
8.1.2 PocketSphinx 功能包测试 182
8.1.3 添加语音库 183
8.1.4 创建PocketSphinx 的launch 文件 185
8.2 语音播放 185
8.2.1 播放指定文件 185
8.2.2 将输入的文字转化为语音 186
8.3 通过语音控制机器人 186
8.3.1 语音控制小海龟 186
8.3.2 XBot 对话和语音控制 187
8.3.3 自定义对话内容 188
8.3.4 监控talker 功能包的运行状态 189
8.4 在ROS 上使用科大讯飞 190
8.4.1 下载科大讯飞SDK 190
8.4.2 SDK 包测试 191
8.4.3 ROS 结合科大讯飞进行语音听写 193
8.5 智能语音对话 195
8.5.1 tts 语音合成实现对话 195
8.5.2 通过图灵进行语义理解 202
8.5.3 与机器人对话 206
8.6 本章小结 208
习题八 208

第9 章 机器人SLAM 与自主导航开发技术
9.1 理论基础 210
9.1.1 传感器 210
9.1.2 地图 213
9.2 Gmapping 算法 215
9.2.1 Gmapping 功能包 215
9.2.2 Gmapping 计算图 218
9.2.3 话题和服务 219
9.2.4 参数 220
9.2.5 里程计误差及修正 221
9.3 Hector 算法 221
9.3.1 Hector 功能包 221
9.3.2 Hector 计算图 223
9.3.3 话题和服务 224
9.3.4 参数 224
9.4 Cartographer 算法 225
9.4.1 Cartographer 功能包 225
9.4.2 Cartographer 总体框架 226
9.4.3 Cartographer 测试 226
9.4.4 Cartographer 节点的配置与运行 228
9.5 自主导航 231
9.5.1 导航功能包 231
9.5.2 工作框架 232
9.5.3 move_base 233
9.5.4 move_base 的service 234
9.5.5 导航案例 234
9.6 costmap 和map_server 237
9.6.1 代价地图 238
9.6.2 地图插件的选择 238
9.6.3 map_server 239
9.7 AMCL 定位算法 240
9.7.1 AMCL 计算图 240
9.7.2 话题和服务 241
9.7.3 参数 242
9.7.4 AMCL 测试 243
9.8 本章小结 245
习题九 245

第10 章 ROS 机器人开发实例
10.1 TurtleBot 246
10.1.1 TurtleBot 的配置与使用 247
10.1.2 Gazebo 中的TurtleBot3 249
10.1.3 使用TurtleBot 实现导航功能 249
10.2 XBot-U 251
10.2.1 XBot-U 特点 251
10.2.2 初步上手XBot-U 机器人 252
10.2.3 智能交互 254
10.2.4 自主导航 254
10.2.5 XBot 仿真与教学 255
10.3 Unitree A1 257
10.3.1 Unitree A1 的功能与结构 257
10.3.2 Unitree A1 关节电机的配置 258
10.3.3 让Unitree A1 机器人站起来 260
10.4 本章小结 263

参考文献

发送电子邮件联系我们