这是一本关于乐高的书,也是一本关于智能手机的书,还是一本讲述编程的书,抑或是一本有关网络的书……
这些说法都没有错,你可以用任何一种方式来描述本书。书中通过3个实际证实可行的项目向读者展示了如何通过智能手机让乐高机器人更加强大。
很多人觉得乐高就是玩具,是小孩子玩的东西,我却从不这么认为。乐高让拥有创造力的人们利用有限的零件实现了无限的可能。尤其在乐高推出了机器人模块之后,更是将范围从简单的搭建扩大到了软硬件结合的综合设计。然而,乐高机器人的传感器虽然种类繁多,却大多功能有限。
近些年,Google公司推出的开放手机操作系统Android使智能手机迅速以不高的价格得以普及。时至今日,很多家庭都会拥有至少一部智能手机,我身边的同事甚至有人持有数部手机。Android系统的开放性,让我们能够很方便地为其编写自己的程序(虽然苹果公司的iPhone也是一款具有革命性的伟大产品,然而在编程的便利性上却稍有欠缺)。智能手机上的重力传感器、高清摄像头、方便的网络连接等功能刚好可以弥补乐高机器人传感器的不足。
很多人都会和我一样想到让智能手机与乐高机器人结合在一起,创造出更加强大、更加智能的机器人。但并不是每个人都精通两种设备的编程方式,有时会需要一个引路人。我写这本书,就是希望能够成为这样一个带领人们进入崭新世界的向导。
我从大学毕业就一直在软件公司工作,到目前为止已在一家颇有历史的世界五百强公司工作了十多年。由于个人喜好,我在工作中始终坚持从事技术工作,虽然距离绝世高手还有着遥远的距离,但至少在众多技术领域都留下过足迹,也积累了一些实战经验。在业余时间,我也很喜欢学习一些新的技术知识或钻研一些技术问题。为了满足自己的需求,自学了Android编程,也写过几个Android应用程序供自己使用。
工作之外,我始终是一个童心未泯的“大孩子”。无论是变形金刚还是乐高机器人,都是我的最爱。因为喜欢变形金刚,我花了五年的时间,两次重写,完成了一部长篇小说;因为喜欢乐高,我曾为leJOS NXT写过一些工具和一个框架,其中一个工具现在已经被收录到leJOS的官方工具中。
或许是因为缘分,或许是命中注定,郑剑春老师的一双慧眼发现了我的作品,于是他邀请我来写这本书。而“出一本书”恰恰被我列为生命结束前要做的事情之一,虽然作为一个新手爸爸,我必须承担起照顾好刚刚出生儿子的责任,但我还是决定接下这个任务,为了带领大家走进一座新的殿堂,为了让更多的人了解乐高的魅力,也为了实现自己的一个梦想。
郑剑春老师说,我这本书将是一本高级乐高编程书,希望在里面放一些有点高度的项目,并且给我提供了EV3和相关的传感器。
由于我个人只拥有前一代机器人——NXT,以前的项目也都是在NXT下实现的,因此,我决定为了写这本书,针对EV3重新设计和实现全新的原创项目。最初设想的项目很多,后来由于篇幅和精力所限,做了一些精选。于是,诞生了本书中的3个项目。每个项目都不是很容易、很轻松就能完成的。在做的过程中,我遇到了各种各样的问题、挫折和失败,有些在书中也提到了,但我始终相信自己一定可以完成这些项目,于是不断查找资料、调试、寻找问题原因和解决方案,最终克服了所有困难,跟我最初一直坚信的一样,成功地完成了所有的项目,并写成了这本书。
本书中涉及的知识,有些是很基本的编程知识,也有些是具有一定高度和难度的知识,还有些甚至是别人的研究论文。古人云:人之为学有难易乎?学之,则难者亦易矣;不学,则易者亦难矣。只要肯动脑去学,肯动手去做,肯多方查找资料,本书中还没有包含无法被人学会的知识,也还远远没有触及目前科研前沿的那些知识。换句话说,本书中的知识都是很多人早已了然于胸的,也是普通人都可以学会的知识。
总之,希望各位读者在跟着本书完成自己的机器人时,如果遇到困难千万不要放弃。有句歌词写得好: 不经历风雨怎么见彩虹。当我们历尽千辛万苦,最后看到机器人按照自己的意图动起来的时候,那一刻的喜悦是无法用言语来形容的。希望大家能够受到本书项目的启发,发挥自己的想象力和创造力,开发出更有趣、更强大的机器人。
为了方便读者学习,我尽可能地在本书涉及的程序中加入了注释。本书中提到的程序和随书光盘所带的程序都是经过多次测试证实可以顺利运行的。这些程序除了可以在随书光盘中找到,我还将它们分别放到了国内和国外两个版本管理库中,网址如下。
国内:OSChina,https://git.oschina.net/programus/android-lego
国外:GitHub,https://github.com/programus/android-lego
在这些版本管理库中,不仅可以看到最终成型的代码,也可以看到以前的版本历史。
不过,我想,很多读者可能还是会比较心急,比起慢慢读书钻研代码,估计更想立即看到能动起来的机器人。我也是一个心急的人,很能体会这些读者的心情。为了照顾这部分读者,我特意将每个项目的程序打好包,放到随书光盘的programs目录下。里面有可以直接安装到Android手机上的apk文件和安装好leJOS后上传到机器人上就可以运行的jar文件,心急的读者将这些文件安装妥当,就可以看到机器人运行的效果了。当然,为了知道每个机器人能干什么,还是要至少读一下每个项目的说明部分和构想部分。
本书从结构上分为两大部分。第一部分的实践篇介绍了3个项目,并讲解了其中的技术难题调研和软硬件设计,对于用到的知识则点到为止,没有做详细的展开说明。第二部分的知识篇则针对项目中用到的知识做了稍微详细些的入门介绍。由于本书的重点不是教授知识,所以只对一些最基础的知识和容易困惑的点做了较详细的说明,一些比较容易学、网上资料比较丰富的知识仅简单提及,还希望需要的读者能自主地寻找相关的资料和书籍进行补充学习。
另外,我要感谢我妻子的大力支持和我儿子的睡眠时间。本书的大多数写作时间都是在儿子睡着的时候进行的。虽然我儿子像个小神仙一样不怎么爱睡觉(据我妈说,我小时候也一样),但毕竟是初生的婴儿,睡得还是比我多很多的,否则想要完成这本书恐怕还要更多的时日才行。而我的妻子为了能让我有更多的时间来完成这本书,承担了大部分的育儿任务和家务,相信每一位妈妈都会知道她的辛苦。因此,请允许我稍微占用这一点篇幅,对她表示由衷的感谢。
当然,还要再次感谢郑剑春老师给我这次宝贵机会,也感谢所有身边支持我、帮助我完成这部作品的同事和朋友们。谢谢大家!
如果读者对本书中的程序或者叙述有疑问,可以给我发邮件。我的邮箱是programus@gmail.com。邮件主题中不要忘记加上书名,我会尽可能在有时间的时候解答疑问。如果我没有回复,请不要等待,自己多多思考、多多动手,或许很快就可以靠自己的力量解决问题了。
如果对我以前的NXT作品有兴趣,可以在网上搜索“程序猎人”或者“programus”和“乐高”。前面两个是我的网络昵称。
最后,感谢你选购了这本书,希望它能为你的生活添加新的乐趣!
编 者
2015年1月