内容简介
机器人在人们的日常生活中几乎随处可见,因此机器人学也日渐成为非常重要的技术领域。尽管机器人学是一个复杂的学科,但有一些优秀的工具可以帮助你设计项目,创建出简单易用的界面接口。
《机器人系统设计与制作:Python语言实现》详细介绍如何从零开始搭建自主移动机器人,并使用Python进行编程。由机器人的概念开始,然后过渡到机器人仿真和三维建模,在成功进行机器人仿真之后,将介绍搭建导航机器人原型所需要的硬件组件。此外,还讨论了各种各样的机器人软件框架,以及如何使用Pvthon语言来编程实现机器人及其框架的设计。而且还介绍了如何创建一个基于GUI的机器人控制应用程序,可以使用按钮和幻灯片对机器人进行控制。作者简介
郎坦·约瑟夫,电子工程师、机器人发烧友、机器视觉专家、嵌入式程序员,还是印度0botiCS实验室创始人兼CEO。他在大学时曾负责一个项目并制作了一个可以与人交流的社交机器人,由此开始对机器人、图像处理和Python产生兴趣。
毕业以后,他在一家机器人和图像处理的初创公司效力了三年,在这个过程中学习了流行的机器人软件平台(例如机器人操作系统(ROS)、V-REP和Actin(一个机器人仿真工具))和图像处理库(例如OpenCV、OpenNl和PCL)。他精通机器人三维设计、Arauino和StellarisLaunchpad的嵌入式编程。
之后,他创立了QboticsLabs公司,专注于研究如何创造伟大的产品,主要涉及可穿戴技术、机器人、机器视觉、绿色科技以及在线教育等领域。在印度举办的PyCon2013会议上,他做了有关使用Python开发学习机器人的主题演讲。目录
前言
第1章机器人学概述
1.1什么是机器人
1.1.1术语机器人的来历
1.1.2现代机器人定义
1.2机器人从哪儿来
1.3机器人上都有什么
1.3.1肢体
1.3.2传感器
1.3.3执行器
1.3.4控制器
1.4如何制作机器人
1.4.1反应式控制
1.4.2分级(协商)控制
1.4.3混合控制
1.5本章小结
第2章服务机器人的机械设计
2.1服务机器人的设计需求
2.2机器人的传动装置
2.2.1选择电机和轮子
2.2.2设计小结
2.2.3机器人底盘设计
2.3安装LibreCAD、Blender和Mes
2.3.1安装Lib
2.3.2安装Bl
2.3.3安装Me
2.4用LibreCAD生成机器人的二维CAD图
2.4.1底座设计
2.4.2底座连接杆设计
2.4.3轮子、电机和电机夹具设计
2.4.4脚轮设计
2.4.5中间层设计
2.4.6顶层设计
2.5用Blender制作机器人的三维模型
2.5.1Blender中的Python脚本语言
2.5.2Blender中的PythonAPI介绍
2.5.3机器人建模中的Python脚本
2.6习题
2.7本章小结
第3章用ROS和Gazebo进行机器人仿真
3.1什么是机器人仿真
3.1.1机器人数学建模
3.1.2ROS和Gazebo简介
3.1.3在Ubuntu14.04.2下安装ROSI
3.1.4在酒店环境下进行ChefBot和TurtleBot仿真
3.2习题
3.3本章小结
第4章设计ChefBot的硬件部分
4.1ChefBot硬件的规格标准
4.2机器人的硬件架构框图
4.2.1电机和编码器
4.2.2电机驱动器
4.2.3嵌入式控制板
4.2.4超声传感器
4.2.5惯性测量单元
4.2.6K
4.2.7中央处理单元
4.2.8扬声器/麦克风
4.2.9电源/电池
4.3ChefBot硬件的工作原理
4.4习题
4.5本章小结
第5章机器人执行机构与车轮编码器
5.1直流减速电机接入TivaC开发板
5.1.1差速传动轮式机器人
5.1.2安装Energia集成开发环境
5.1.3电机接口代码
5.2正交编码器接入TivaC开发板
5.2.1编码器数据的处理
5.2.2正交编码器接口代码
5.3Dynamixel执行机构
5.4习题
5.5本章小结
第6章机器人传感器
6.1超声测距传感器
6.2红外接近传感器
6.3惯性测量单元
6.3.1惯性导航
6.3.2MPU6050接入TivaC开发板
6.3.3在Energia中编写接口代码
6.4利用Energia将支持DMP的MPU6050接入开发板
6.5习题
6.6本章小结
第7章视觉传感器在Python和ROS中的编程方法
7.1机器人视觉传感器清单和图像处理库
7.2OpenCV、OpenNI和PCL简介
7.2.1什么是Op
7.2.2什么是Op
7.2.3什么?
7.3使用ROS、OpenCV和OpenNI进行Kinect的Python编程
7.3.1启动OpenNI驱动的方法
7.3.2OpenCV的ROS接口
7.4使用Kinect、ROS、OpenNI和PCL处理点云
7.5将点云转换为激光雷达数据
7.6使用ROS和Kinect实现SLAM算法
7.7习题
7.8本章小结
第8章使用Python和ROS实现语音识别及合成
8.1语音识别技术
8.1.1语音识别系统框图
8.1.2语音识别库
8.1.3Windows语音识别开发平台
8.1.4语音合成
8.1.5语音合成库
8.2在Ubuntu14.04.2中使用Python实现语音识别及合成
8.2.1在Ubuntu14.04.2中安装PocketSphinx及其Python绑定
8.2.2在Ubuntu14.04.2中使用PocketSphinx的Python绑定
8.2.3输出结果
8.3在Ubuntu14.04.2中使用PocketSphinx、GStreamer及Python实现实时语音识别
8.4在Ubuntu14.04.2中使用Julius及Python实现语音识别
8.4.1Julius语音识别器和Python模块的安装
8.4.2Python-Julius客户端代码
8.4.3在PocketSphinx、Julius中提高语音识别的准确度
8.4.4在Ubuntu14.04.2中安装eSpeak和Fest
8.5在Windows中使用Python实现语音识别及合成
8.6在ROSIndigo中使用Python实现语音识别
8.7在ROSIndigo中使用Python实现语音合成
8.8习题
8.9本章小结
第9章使用Python在ChefBot中应用人工智能
9.1ChefBot中的交互系统框图
9.2AIML介绍
9.3PyAIML介绍
9.3.1在Ubuntu14.04.2上安装Py
9.3.2从源码中安装Py
9.4使用AIML和Python进行开发
9.5使用A.L.I.C.EAIML文件进行开发
9.5.1将AIML文件载入内存
9.5.2载入AIML文件并将其存为brain文件
9.5.3使用Bootsrtap方法载入AIML文件和brain文件
9.6将PyAIML集成到ROS中
9.6.1aiml_serve
9.6.2aiml_clien
9.6.3aiml_tts_clien
9.6.4aiml_speech_recog_clien
9.6.5start_chat.la
9.6.6start_tts_chat.la
9.6.7start_speech_chat.la
9.7习题
9.8本章小结
第10章对ChefBot硬件进行集成并使用Python与ROS对接
10.1构建ChefBot硬件
10.2ChefBotPC配置及ChefBotROS开发包设置
10.3将ChefBot传感器接入TivaC开发板
10.4为ChefBot编写一个ROSPython驱动
10.5理解ChefBotROS启动文件
10.6使用ChefBotPython节点和启动文件
10.6.1在ROS中使用SLAM构建房间地图
10.6.2使用ROS实现定位和导航
10.7习题
10.8本章小结
第11章使用Qt和Python设计机器人的图形用户界面
11.1在Ubuntu14.04.2LTS中安装
11.2在Qt中使用Python绑定进行开发
11.2.1
11.2.2Py
11.3使用PyQt和PySide进行开发
11.3.1Qt设计器的介绍
11.3.2Qt的信号与槽机制
11.3.3将UI文件转化为Python代码
11.3.4为PyQt代码添加槽定义
11.3.5运行HelloWorldGUI应用
11.4使用ChefBot的控制GUI进行开发
11.5习题
11.6本章小结
第12章ChefBot的标定和测试
12.1使用ROS标定XboxKi
12.1.1标定Kinect的RGB相机
12.1.2标定KinectIR相机
12.2轮式里程计的标定
12.2.1里程计误差分析
12.2.2误差校正
12.3标定MPU
12.4使用GUI测试机器人
12.5习题
12.6本章小结