····························································
前言Foreword仿人机器人是综合运用机械、传感器、驱动器、计算机等技术设计的一种能模仿人的形态和行为的机械电子设备,是在电子、机械及信息技术的基础上发展而来的。仿人机器人仿人的四肢和头部,能够自主完成人类所赋予的任务与命令。
NAO机器人是一款高端仿人机器人,拥有讨人喜欢的外形,具有一定水平的人工智能,能够与人亲切互动。NAO是在世界范围学术领域内应用最广泛的仿人机器人,是机器人世界杯RoboCup组委会指定的比赛机器人。Aldebaran Robotics公司将NAO的技术开放给所有的高等教育项目,并于2010年成立基金会,支持在机器人及其应用领域的教学项目。NAO可以通过现成的指令块进行可视化编程,允许用户探索各种领域、运用各种复杂程度的程序达到用户想要体验的各种不同效果。
NAO可在Linux、Windows或Mac OS等操作系统下编程,拥有开放的编程构架,可以使用C++或Python语言控制NAO。不论使用者的专业水平如何,都能够通过图像编程平台为NAO机器人编程。本书介绍编写程序操作NAO的主要方法,全书分为8章,内容如下。
第1章NAO机器人概述。介绍NAO机器人系统、关节运动模型、机器人操作系统NAOqi框架、NAO的基本操作、网络连接设置和远程登录NAO。
第2章Python编程基础。介绍Python的基本语法、函数、对象与类、文件和异常。
第3章NAO编程基础。介绍NAOqi进程、模块、阻塞和非阻塞调用、内存等基本概念、工作机制及应用,使用Choregraphe进行NAO编程的基础知识,包括使用指令盒编程、指令盒的输入输出及参数设置。
第4章运动控制。包括对NAO的头部关节、臂部关节、髋关节、腿部关节的介绍,还介绍刚度控制、关节控制和运动控制的基本方法,使用时间轴进行运动编辑的基本概念和方法。◆NAO机器人程序设计第5章音频处理。介绍音频处理的基本概念、操作音频的ALAudioRecorder、ALAudioDevice等基础类模块,声音检测与定位,语音识别,语音合成与对话等内容。
第6章视觉处理。介绍视频设备编程中使用的设备参数,图像捕获、视频录制及视觉设备等基础类的使用方法,视频检测中的红球检测、地标检测、条形码检测和人脸检测等检测类的使用,视觉识别方法等内容。
第7章传感器。介绍使用电池、声呐、LED和接触传感器的编程方法,设备通信模块的工作机制与应用。
第8章使用C++编写程序。介绍使用qiBuild编译远程模块,使用C++编程扩展NAO API。
附录内容包括开发环境安装与配置、NAO机器人系统恢复与更新、NAOqi系统虚拟机、Python关键字和内置函数、传感器与执行器键表、NAO安装的Python库。
具有Python基础的读者可以跳过第2章,只对机器人舞蹈感兴趣的读者可以直接查看相应章节。只需要在计算机上安装Python编辑器(本书使用PyCharm)、NAO的Python库和Choregraphe就可以运行书中的所有Python代码。只有第3章示例代码给出了运行环境说明,调试其他章节示例程序时需要注意运行环境。希望每位读者都可以完成本书的学习并运行示例代码。
本书各章内容相对独立,但是在内容安排上按照先易后难原则编写。前面章节解释的语句后面再次出现时不做解释,读者在学习时尽量按照章节顺序阅读和调试程序。书后附录所列内容,如参数、软件安装步骤、刷机方法等,供需要时查阅。
本书面向初学者,内容并未包含Choregraphe提供的全部指令盒,对Python语言的介绍比较简单,仅选择了编写Choregraphe程序时必须掌握的Python基础知识,书中使用的示例程序也不涉及复杂算法。读者在掌握NAO系统的基础概念、开发设计思路后,可以参考NAO随机英文文档,查阅NAOqi提供的更多API。本书前7章示例用Python语言编写,读者如果使用C++语言,可以先学习第8章,再查阅、调试NAO随机英文文档中C++语言的示例代码。由于篇幅有限,部分内容未能在书中阐述,读者可在清华大学出版社网站(http://www.tup.tsinghua.edu.cn)下载相关电子文档及代码。
本书主要参考资料包括NAO随机文档,以及李睿强、孙漫漫、孟宪龙等的硕士论文,杨云程、孙明辰、纪卓志、董旭、蒲致威等同学对本书内容的形成启发很多,在此一并表示感谢。
本书可以作为NAO使用者的操作参考书和编程参考书,也可以作为高等学校计算机及相关专业的“NAO机器人程序设计”课程教材。
由于作者水平有限,书中难免存在欠妥之处,敬请读者批评指正。
编者
2018年9月