描述
开 本: 16开纸 张: 胶版纸包 装: 平装-胶订是否套装: 否国际标准书号ISBN: 9787111691341丛书名: 智能系统与技术丛书
编辑推荐
机器人操作系统(ROS)是科研和工业领域非常受欢迎的机器人软件框架。该系统性能强大,可以在机器人中实现多种功能,而不需要从零开始实施。 本书首先介绍机器人操作系统的基础知识,以便你了解差分驱动机器人的基本原理。然后,介绍机器人建模知识以及如何使用机器人操作系统进行设计和模拟。接着将设计机器人硬件和接口驱动器。之后,讲述如何使用机器人操作系统对深度传感器和激光雷达进行配置和编程。后,将使用Qt框架为机器人创建图形用户界面。 学习完本书内容后,你将清楚地了解如何将所有元素集成和组装到机器人中,以及如何捆绑软件包。 本书将介绍以下内容: ? 如何从头开始设计差分驱动机器人。 ? 如何使用机器人操作系统和URDF对差分机器人建模。 ? 如何使用机器人操作系统和Gazebo模拟差分机器人。 ? 如何设计机器人硬件电子器件。 ? 如何将机器人驱动器与嵌入式板连接起来。 ? 如何将机器人操作系统中的不同3D深度摄像头连接起来。 ? 如何实现ChefBot机器人的自主导航。 ? 如何创建用于机器人控制的图形用户界面。
内容简介
本书解释了如何从零开始构建一个自主移动机器人,并使用Python对其进行编程。本书从机器人的基础概念开始,然后介绍机器人的3D建模和仿真。在对机器人成功进行仿真之后,讨论了建立机器人原型所需的硬件组成。在本教程结束时,你将清楚地了解如何将所有东西集成到机器人中,以及如何将打包软件。
目 录
前言
第1章ROS入门1
11技术要求1
12ROS概述1
121ROS框架3
122在Ubuntu上安装ROS6
123什么是catkin9
124创建ROS软件包10
125什么是Gazebo14
13本章小结17
14习题17
第2章差分驱动机器人的基础知识18
21数学建模18
22正向运动学20
23逆向运动学23
24本章小结24
25习题24
26扩展阅读25
第3章差分驱动机器人的建模26
31技术要求27
32服务机器人的设计要求27
33机器人的传动装置27
331选择电机和轮子27
332设计小结29
333机器人底盘设计29
34安装LibreCAD、Blender和MeshLab30
341安装LibreCAD31
342安装Blender31
343安装MeshLab32
35用LibreCAD生成机器人的二维CAD图32
351底座设计33
352底座连接杆设计35
353轮子、电机和电机夹具设计36
354脚轮设计37
355中间层设计37
356顶层设计39
36用Blender制作机器人的三维模型40
361在Blender中编写Python脚本40
362Blender Python API41
363机器人模型的Python脚本42
37创建机器人的URDF模型47
38本章小结53
39习题53
310扩展阅读53
第4章利用ROS模拟差分驱动机器人54
41技术要求54
42开始使用Gazebo仿真器55
43结合TurtleBot 2进行仿真工作59
44创建ChefBot仿真62
441深度图像到激光扫描的转换65
442Gazebo仿真的URDF标签和插件65
45可视化机器人传感器数据70
451即时定位与地图构建72
452使用SLAM创建地图73
453自适应蒙特卡罗定位75
454在Gazebo环境中实现AMCL76
455ChefBot在酒店中使用Gazebo进行自主导航78
46本章小结79
47习题79
48扩展阅读80
第5章设计ChefBot的硬件和电路81
51技术要求81
52ChefBot硬件规格82
53机器人框图82
531电机和编码器83
532电机驱动器84
533嵌入式控制器板86
534超声传感器87
535惯性测量单元89
536Kinect/Orbbec Astra90
537中央处理单元91
538扬声器和麦克风92
539电源和电池92
54ChefBot硬件的工作原理93
55本章小结95
56习题95
57扩展阅读95
第6章将执行器和传感器连接到机器人控制器96
61技术要求97
62直流减速电机接入TivaC开发板97
621差分驱动轮式机器人99
622安装Energia IDE99
623电机接口代码104
63正交编码器接入TivaC开发板107
631编码器数据的处理108
632正交编码器接口代码111
64使用Dynamixel执行器114
65使用超声测距传感器117
66使用红外接近传感器123
67使用惯性测量单元125
671惯性导航125
672将MPU 6050与TivaC开发板连接126
673在Energia中编写接口代码129
68本章小结131
69习题132
610扩展阅读132
第7章视觉传感器接入ROS133
71技术要求133
72机器人视觉传感器和图像处理库134
721Pixy2/CMUcam5134
722罗技C920网络摄像头135
723Kinect 360135
724英特尔RealSense D400系列136
725Orbbec Astra深度传感器137
73OpenCV、OpenNI和PCL概述138
731OpenCV138
732OpenNI143
733PCL144
74使用ROS、OpenCV和OpenNI进行Kinect的Python编程144
741启动OpenNI驱动程序的方法145
742OpenCV的ROS接口145
75连接Orbbec Astra与ROS150
76使用Kinect、ROS、OpenNI和PCL处理点云150
77将点云数据转换为激光扫描数据151
78使用ROS和Kinect实现SLAM算法153
79本章小结154
710习题154
711扩展阅读155
第8章ChefBot硬件构建和软件集成156
81技术要求156
82构建ChefBot硬件157
83配置ChefBot PC并设置ChefBot ROS软件包160
84连接ChefBot传感器和TivaC161
85编写ChefBot的ROS Python驱动程序164
86了解ChefBot ROS启动文件169
87使用ChefBot Python节点和启动文件170
871使用SLAM在ROS上绘制房间地图175
872使用ROS定位和导航177
88本章小结179
89习题179
810扩展阅读179
第9章使用Qt和Python开发机器人GUI180
91技术要求180
92在Ubuntu 1604 LTS中安装Qt181
93在Qt中使用Python绑定进行开发181
931PyQt181
932PySide182
94使用PyQt和PySide进行开发182
941Qt设计器183
942Qt信号与槽机制184
943将UI文件转化为Python代码185
944向PyQt代码中添加槽定义186
945Hello World GUI应用程序
第1章ROS入门1
11技术要求1
12ROS概述1
121ROS框架3
122在Ubuntu上安装ROS6
123什么是catkin9
124创建ROS软件包10
125什么是Gazebo14
13本章小结17
14习题17
第2章差分驱动机器人的基础知识18
21数学建模18
22正向运动学20
23逆向运动学23
24本章小结24
25习题24
26扩展阅读25
第3章差分驱动机器人的建模26
31技术要求27
32服务机器人的设计要求27
33机器人的传动装置27
331选择电机和轮子27
332设计小结29
333机器人底盘设计29
34安装LibreCAD、Blender和MeshLab30
341安装LibreCAD31
342安装Blender31
343安装MeshLab32
35用LibreCAD生成机器人的二维CAD图32
351底座设计33
352底座连接杆设计35
353轮子、电机和电机夹具设计36
354脚轮设计37
355中间层设计37
356顶层设计39
36用Blender制作机器人的三维模型40
361在Blender中编写Python脚本40
362Blender Python API41
363机器人模型的Python脚本42
37创建机器人的URDF模型47
38本章小结53
39习题53
310扩展阅读53
第4章利用ROS模拟差分驱动机器人54
41技术要求54
42开始使用Gazebo仿真器55
43结合TurtleBot 2进行仿真工作59
44创建ChefBot仿真62
441深度图像到激光扫描的转换65
442Gazebo仿真的URDF标签和插件65
45可视化机器人传感器数据70
451即时定位与地图构建72
452使用SLAM创建地图73
453自适应蒙特卡罗定位75
454在Gazebo环境中实现AMCL76
455ChefBot在酒店中使用Gazebo进行自主导航78
46本章小结79
47习题79
48扩展阅读80
第5章设计ChefBot的硬件和电路81
51技术要求81
52ChefBot硬件规格82
53机器人框图82
531电机和编码器83
532电机驱动器84
533嵌入式控制器板86
534超声传感器87
535惯性测量单元89
536Kinect/Orbbec Astra90
537中央处理单元91
538扬声器和麦克风92
539电源和电池92
54ChefBot硬件的工作原理93
55本章小结95
56习题95
57扩展阅读95
第6章将执行器和传感器连接到机器人控制器96
61技术要求97
62直流减速电机接入TivaC开发板97
621差分驱动轮式机器人99
622安装Energia IDE99
623电机接口代码104
63正交编码器接入TivaC开发板107
631编码器数据的处理108
632正交编码器接口代码111
64使用Dynamixel执行器114
65使用超声测距传感器117
66使用红外接近传感器123
67使用惯性测量单元125
671惯性导航125
672将MPU 6050与TivaC开发板连接126
673在Energia中编写接口代码129
68本章小结131
69习题132
610扩展阅读132
第7章视觉传感器接入ROS133
71技术要求133
72机器人视觉传感器和图像处理库134
721Pixy2/CMUcam5134
722罗技C920网络摄像头135
723Kinect 360135
724英特尔RealSense D400系列136
725Orbbec Astra深度传感器137
73OpenCV、OpenNI和PCL概述138
731OpenCV138
732OpenNI143
733PCL144
74使用ROS、OpenCV和OpenNI进行Kinect的Python编程144
741启动OpenNI驱动程序的方法145
742OpenCV的ROS接口145
75连接Orbbec Astra与ROS150
76使用Kinect、ROS、OpenNI和PCL处理点云150
77将点云数据转换为激光扫描数据151
78使用ROS和Kinect实现SLAM算法153
79本章小结154
710习题154
711扩展阅读155
第8章ChefBot硬件构建和软件集成156
81技术要求156
82构建ChefBot硬件157
83配置ChefBot PC并设置ChefBot ROS软件包160
84连接ChefBot传感器和TivaC161
85编写ChefBot的ROS Python驱动程序164
86了解ChefBot ROS启动文件169
87使用ChefBot Python节点和启动文件170
871使用SLAM在ROS上绘制房间地图175
872使用ROS定位和导航177
88本章小结179
89习题179
810扩展阅读179
第9章使用Qt和Python开发机器人GUI180
91技术要求180
92在Ubuntu 1604 LTS中安装Qt181
93在Qt中使用Python绑定进行开发181
931PyQt181
932PySide182
94使用PyQt和PySide进行开发182
941Qt设计器183
942Qt信号与槽机制184
943将UI文件转化为Python代码185
944向PyQt代码中添加槽定义186
945Hello World GUI应用程序
前 言
本书共有9章,介绍了如何从头开始构建自主移动机器人并使用 Python 对其进行编程。本书中提到的机器人是一种服务型机器人,可在家中、酒店和餐厅提供上菜服务。本书逐步讨论了构建该机器人的整个过程。首先介绍了机器人学的基本概念,然后阐述了机器人的3D建模和仿真,随后讨论了构建机器人原型所需的硬件组件。
该机器人的软件部分主要使用Python编程语言和软件框架——比如机器人操作系统(Robot Operating System,ROS)和OpenCV视觉库实现。Python的使用贯穿从机器人设计到创建用户界面的整个过程。Gazebo仿真器用于模拟诸如OpenCV、OpenNI和PCL等机器人和机器视觉库,其作用是处理2D和3D图像数据。每一章都提供了足够的理论知识来帮助理解应用部分。本书由该领域的专家审阅,凝聚了他们的辛勤汗水以及对机器人技术的热爱。
目标读者
对于想要探索服务机器人领域的企业家,想要让机器人实现更多功能的专业人士,想要探索更多机器人技术的研究人员,以及想要学习机器人技术的爱好者或学生,本书将大有助益。全书采用循序渐进的讲解方式,便于读者掌握。
内容简介
第1章解释了机器人操作系统的基本概念,该系统是机器人编程的主要平台。
第2章介绍了差分驱动机器人的基本概念。这些概念属于差分驱动的运动学和逆向运动学范畴,有助于你了解如何在软件中实现差分驱动控制。
第3章讨论了机器人设计约束的计算和移动机器人的2D/3D建模方法。2D/3D建模以一组机器人需求为基础实施。在完成设计和机器人建模后,读者将得到设计的参数,这些参数可用于机器人仿真设置。
第4章介绍了名为Gazebo的机器人仿真器,并指导读者使用它来模拟自己的机器人。
第5章讨论了如何选择构建ChefBot所需的各种硬件组件。
第6章讨论了机器人中使用的各种驱动器和传感器与TivaC开发板控制器的连接问题。
第7章讨论了不同视觉传感器(如Kinect和Orbecc Astra)的连接问题,视觉传感器可用于ChefBot机器人的自主导航。
第8章讨论了如何在机器人操作系统中完整构建机器人硬件和软件,以实现自主导航。
第9章介绍了如何开发图形用户界面来指挥机器人在类似酒店的环境中移动到餐桌旁边。
如何充分利用本书
本书讲的是构建机器人的方法,在学习本书之前,你应该配备一些硬件。你可以彻底从零开始构建机器人,也可以购买一个带有编码器反馈的差分驱动配置机器人。你应该购买一块控制器板,例如用于嵌入式处理的美国德州仪器开发板,而且应该至少有一台用于整个机器人处理的笔记本电脑或上网本。本书中使用英特尔NUC进行机器人处理,它的结构非常紧凑,而且性能优异。学习3D视觉功能时,你应该有一个3D传感器,比如激光扫描仪、Kinect或Orbecc Astra。
在软件部分,你应该熟练掌握GNU/Linux命令的使用方法,并且对Python也有很好的了解。你需要安装Ubuntu 1604 LTS才能使用这些示例。了解机器人操作系统、OpenCV、OpenNI和PCL将会有所帮助。要应用这些示例,必须安装机器人操作系统Kinect/Melodic。
下载示例代码及彩色图像
本书的示例代码及所有截图和样图,可以从http://wwwpacktpubcom通过个人账号下载,也可以访问华章图书官网http://wwwhzbookcom,通过注册并登录个人账号下载。
本书的代码包也托管在GitHub上,网址为https://githubcom/PacktPublishing/LearningRoboticsusingPythonSecondEdition。
排版约定
文中的代码体:表示代码、数据库表名称、文件夹名称、文件名、文件扩展名、路径名、虚拟URL、用户输入和Twitter句柄。
代码块示例如下:
该机器人的软件部分主要使用Python编程语言和软件框架——比如机器人操作系统(Robot Operating System,ROS)和OpenCV视觉库实现。Python的使用贯穿从机器人设计到创建用户界面的整个过程。Gazebo仿真器用于模拟诸如OpenCV、OpenNI和PCL等机器人和机器视觉库,其作用是处理2D和3D图像数据。每一章都提供了足够的理论知识来帮助理解应用部分。本书由该领域的专家审阅,凝聚了他们的辛勤汗水以及对机器人技术的热爱。
目标读者
对于想要探索服务机器人领域的企业家,想要让机器人实现更多功能的专业人士,想要探索更多机器人技术的研究人员,以及想要学习机器人技术的爱好者或学生,本书将大有助益。全书采用循序渐进的讲解方式,便于读者掌握。
内容简介
第1章解释了机器人操作系统的基本概念,该系统是机器人编程的主要平台。
第2章介绍了差分驱动机器人的基本概念。这些概念属于差分驱动的运动学和逆向运动学范畴,有助于你了解如何在软件中实现差分驱动控制。
第3章讨论了机器人设计约束的计算和移动机器人的2D/3D建模方法。2D/3D建模以一组机器人需求为基础实施。在完成设计和机器人建模后,读者将得到设计的参数,这些参数可用于机器人仿真设置。
第4章介绍了名为Gazebo的机器人仿真器,并指导读者使用它来模拟自己的机器人。
第5章讨论了如何选择构建ChefBot所需的各种硬件组件。
第6章讨论了机器人中使用的各种驱动器和传感器与TivaC开发板控制器的连接问题。
第7章讨论了不同视觉传感器(如Kinect和Orbecc Astra)的连接问题,视觉传感器可用于ChefBot机器人的自主导航。
第8章讨论了如何在机器人操作系统中完整构建机器人硬件和软件,以实现自主导航。
第9章介绍了如何开发图形用户界面来指挥机器人在类似酒店的环境中移动到餐桌旁边。
如何充分利用本书
本书讲的是构建机器人的方法,在学习本书之前,你应该配备一些硬件。你可以彻底从零开始构建机器人,也可以购买一个带有编码器反馈的差分驱动配置机器人。你应该购买一块控制器板,例如用于嵌入式处理的美国德州仪器开发板,而且应该至少有一台用于整个机器人处理的笔记本电脑或上网本。本书中使用英特尔NUC进行机器人处理,它的结构非常紧凑,而且性能优异。学习3D视觉功能时,你应该有一个3D传感器,比如激光扫描仪、Kinect或Orbecc Astra。
在软件部分,你应该熟练掌握GNU/Linux命令的使用方法,并且对Python也有很好的了解。你需要安装Ubuntu 1604 LTS才能使用这些示例。了解机器人操作系统、OpenCV、OpenNI和PCL将会有所帮助。要应用这些示例,必须安装机器人操作系统Kinect/Melodic。
下载示例代码及彩色图像
本书的示例代码及所有截图和样图,可以从http://wwwpacktpubcom通过个人账号下载,也可以访问华章图书官网http://wwwhzbookcom,通过注册并登录个人账号下载。
本书的代码包也托管在GitHub上,网址为https://githubcom/PacktPublishing/LearningRoboticsusingPythonSecondEdition。
排版约定
文中的代码体:表示代码、数据库表名称、文件夹名称、文件名、文件扩展名、路径名、虚拟URL、用户输入和Twitter句柄。
代码块示例如下:
命令行输入或输出示例如下:
表示警告或重要说明。
表示提示和技巧。
评论
还没有评论。