描述
开 本: 16开纸 张: 胶版纸包 装: 平装是否套装: 否国际标准书号ISBN: 9787302400806
内容简介
《当安卓遇上乐高–用Android手机打造智能乐高机器人(附光盘)》通过3个Android手机与乐高EV3机器人成功结合的实践项目,介绍了Android手机与乐高Ev3机器人之间的通信方法、Android语音识别、利用Android手机摄像头进行图像采集和识别等多项Android手机编程及EV3编程知识。同时,书中也包含了一些基本的软件设计思想,并一步步引导读者学会如何从零开始构筑一个机器人。
由于本书涉及的知识内容较多,部分内容也有一定深度,为了让刚刚接触编程和乐高机器人的读者也能够阅读,书中对编程基础知识、Java、Android编程等做了入门级的介绍。
作为乐高机器人的提高篇书籍,本书较适合具有一定编程经验和乐高机器人知识的读者阅读。对于没有基础的读者,只要能够在阅读的同时补充有关的基础知识,也完全可以掌握书中内容。
由于本书涉及的知识内容较多,部分内容也有一定深度,为了让刚刚接触编程和乐高机器人的读者也能够阅读,书中对编程基础知识、Java、Android编程等做了入门级的介绍。
作为乐高机器人的提高篇书籍,本书较适合具有一定编程经验和乐高机器人知识的读者阅读。对于没有基础的读者,只要能够在阅读的同时补充有关的基础知识,也完全可以掌握书中内容。
目 录
部分 实践篇
准备工作
项目1 带距离预警的手机遥控车
项目2 听话的机器宠物
项目3 认识路标的自动小车
第二部分 知识篇
第1章 计算机编程基础知识
1.1 计算机编程概述
1.2 变量和数据类型
1.3 数字在计算机中的表述
1.3.1 标志位和位运算
1.3.2 逻辑运算和程序流控制
1.3.3 函数
1.3.4 特殊数据类型和内存分配
第2章 Java基础知识
2.1 Java简介
2.2 个Java程序
2.2.1 数据类型
2.2.2 运算和运算符
2.2.3 条件分支和循环
2.2.4 面向对象编程
2.2.5 Java中的常用类
2.2.6 Java中的异常处理
2.2.7 Java中的多线程
第3章 Android编程基础知识
3.1 Android开发环境的构建
3.2 创建一个Android应用
3.3 Activity的开发
第4章 leJOS基础知识
4.1 安装leJOS
4.2 安装和使用Eclipse插件
4.3 在EV3上运行程序
第5章 计算机网络基础知识
5.1 分层的网络
5.2 网络协议
5.3 Java中的网络编程
附录
附录A 随书光盘说明
附录B 装配图的打开方法
附录C 项目3中使用的路标图形
参考文献
前 言
这是一本关于乐高的书,也是一本关于智能手机的书,还是一本讲述编程的书,抑或是一本有关网络的书……
这些说法都没有错,你可以用任何一种方式来描述本书。书中通过3个实际证实可行的项目向读者展示了如何通过智能手机让乐高机器人更加强大。
很多人觉得乐高就是玩具,是小孩子玩的东西,我却从不这么认为。乐高让拥有创造力的人们利用有限的零件实现了无限的可能。尤其在乐高推出了机器人模块之后,更是将范围从简单的搭建扩大到了软硬件结合的综合设计。然而,乐高机器人的传感器虽然种类繁多,却大多功能有限。
近些年,Google公司推出的开放手机操作系统Android使智能手机迅速以不高的价格得以普及。时至今日,很多家庭都会拥有至少一部智能手机,我身边的同事甚至有人持有数部手机。Android系统的开放性,让我们能够很方便地为其编写自己的程序(虽然苹果公司的iPhone也是一款具有革命性的伟大产品,然而在编程的便利性上却稍有欠缺)。智能手机上的重力传感器、高清摄像头、方便的网络连接等功能刚好可以弥补乐高机器人传感器的不足。
很多人都会和我一样想到让智能手机与乐高机器人结合在一起,创造出更加强大、更加智能的机器人。但并不是每个人都精通两种设备的编程方式,有时会需要一个引路人。我写这本书,就是希望能够成为这样一个带领人们进入崭新世界的向导。
我从大学毕业就一直在软件公司工作,到目前为止已在一家颇有历史的世界五百强公司工作了十多年。由于个人喜好,我在工作中始终坚持从事技术工作,虽然距离绝世高手还有着遥远的距离,但至少在众多技术领域都留下过足迹,也积累了一些实战经验。在业余时间,我也很喜欢学习一些新的技术知识或钻研一些技术问题。为了满足自己的需求,自学了Android编程,也写过几个Android应用程序供自己使用。
工作之外,我始终是一个童心未泯的“大孩子”。无论是变形金刚还是乐高机器人,都是我的爱。因为喜欢变形金刚,我花了五年的时间,两次重写,完成了一部长篇小说;因为喜欢乐高,我曾为leJOS NXT写过一些工具和一个框架,其中一个工具现在已经被收录到leJOS的官方工具中。
或许是因为缘分,或许是命中注定,郑剑春老师的一双慧眼发现了我的作品,于是他邀请我来写这本书。而“出一本书”恰恰被我列为生命结束前要做的事情之一,虽然作为一个新手爸爸,我必须承担起照顾好刚刚出生儿子的责任,但我还是决定接下这个任务,为了带领大家走进一座新的殿堂,为了让更多的人了解乐高的魅力,也为了实现自己的一个梦想。序 当安卓遇上乐高——用Android手机打造智能乐高机器人〖2〗〖2〗 〖1〗 郑剑春老师说,我这本书将是一本高级乐高编程书,希望在里面放一些有点高度的项目,并且给我提供了EV3和相关的传感器。
由于我个人只拥有前一代机器人——NXT,以前的项目也都是在NXT下实现的,因此,我决定为了写这本书,针对EV3重新设计和实现全新的原创项目。初设想的项目很多,后来由于篇幅和精力所限,做了一些精选。于是,诞生了本书中的3个项目。每个项目都不是很容易、很轻松就能完成的。在做的过程中,我遇到了各种各样的问题、挫折和失败,有些在书中也提到了,但我始终相信自己一定可以完成这些项目,于是不断查找资料、调试、寻找问题原因和解决方案,终克服了所有困难,跟我初一直坚信的一样,成功地完成了所有的项目,并写成了这本书。
本书中涉及的知识,有些是很基本的编程知识,也有些是具有一定高度和难度的知识,还有些甚至是别人的研究论文。古人云: 人之为学有难易乎?学之,则难者亦易矣;不学,则易者亦难矣。只要肯动脑去学,肯动手去做,肯多方查找资料,本书中还没有包含无法被人学会的知识,也还远远没有触及目前科研前沿的那些知识。换句话说,本书中的知识都是很多人早已了然于胸的,也是普通人都可以学会的知识。
总之,希望各位读者在跟着本书完成自己的机器人时,如果遇到困难千万不要放弃。有句歌词写得好: 不经历风雨怎么见彩虹。当我们历尽千辛万苦,后看到机器人按照自己的意图动起来的时候,那一刻的喜悦是无法用言语来形容的。希望大家能够受到本书项目的启发,发挥自己的想象力和创造力,开发出更有趣、更强大的机器人。
为了方便读者学习,我尽可能地在本书涉及的程序中加入了注释。本书中提到的程序和随书光盘所带的程序都是经过多次测试证实可以顺利运行的。这些程序除了可以在随书光盘中找到,我还将它们分别放到了国内和国外两个版本管理库中,网址如下。
在这些版本管理库中,不仅可以看到终成型的代码,也可以看到以前的版本历史。
不过,我想,很多读者可能还是会比较心急,比起慢慢读书钻研代码,估计更想立即看到能动起来的机器人。我也是一个心急的人,很能体会这些读者的心情。为了照顾这部分读者,我特意将每个项目的程序打好包,放到随书光盘的programs目录下。里面有可以直接安装到Android手机上的apk文件和安装好leJOS后上传到机器人上就可以运行的jar文件,心急的读者将这些文件安装妥当,就可以看到机器人运行的效果了。当然,为了知道每个机器人能干什么,还是要至少读一下每个项目的说明部分和构想部分。
本书从结构上分为两大部分。部分的实践篇介绍了3个项目,并讲解了其中的技术难题调研和软硬件设计,对于用到的知识则点到为止,没有做详细的展开说明。第二部分的知识篇则针对项目中用到的知识做了稍微详细些的入门介绍。由于本书的重点不是教授知识,所以只对一些基础的知识和容易困惑的点做了较详细的说明,一些比较容易学、网上资料比较丰富的知识仅简单提及,还希望需要的读者能自主地寻找相关的资料和书籍进行补充学习。
另外,我要感谢我妻子的大力支持和我儿子的睡眠时间。本书的大多数写作时间都是在儿子睡着的时候进行的。虽然我儿子像个小神仙一样不怎么爱睡觉(据我妈说,我小时候也一样),但毕竟是初生的婴儿,睡得还是比我多很多的,否则想要完成这本书恐怕还要更多的时日才行。而我的妻子为了能让我有更多的时间来完成这本书,承担了大部分的育儿任务和家务,相信每一位妈妈都会知道她的辛苦。因此,请允许我稍微占用这一点篇幅,对她表示由衷的感谢。
当然,还要再次感谢郑剑春老师给我这次宝贵机会,也感谢所有身边支持我、帮助我完成这部作品的同事和朋友们。谢谢大家!
如果读者对本书中的程序或者叙述有疑问,可以给我发邮件。邮件主题中不要忘记加上书名,我会尽可能在有时间的时候解答疑问。如果我没有回复,请不要等待,自己多多思考、多多动手,或许很快就可以靠自己的力量解决问题了。
如果对我以前的NXT作品有兴趣,可以在网上搜索“程序猎人”或者“programus”和“乐高”。前面两个是我的网络昵称。
后,感谢你选购了这本书,希望它能为你的生活添加新的乐趣!
这些说法都没有错,你可以用任何一种方式来描述本书。书中通过3个实际证实可行的项目向读者展示了如何通过智能手机让乐高机器人更加强大。
很多人觉得乐高就是玩具,是小孩子玩的东西,我却从不这么认为。乐高让拥有创造力的人们利用有限的零件实现了无限的可能。尤其在乐高推出了机器人模块之后,更是将范围从简单的搭建扩大到了软硬件结合的综合设计。然而,乐高机器人的传感器虽然种类繁多,却大多功能有限。
近些年,Google公司推出的开放手机操作系统Android使智能手机迅速以不高的价格得以普及。时至今日,很多家庭都会拥有至少一部智能手机,我身边的同事甚至有人持有数部手机。Android系统的开放性,让我们能够很方便地为其编写自己的程序(虽然苹果公司的iPhone也是一款具有革命性的伟大产品,然而在编程的便利性上却稍有欠缺)。智能手机上的重力传感器、高清摄像头、方便的网络连接等功能刚好可以弥补乐高机器人传感器的不足。
很多人都会和我一样想到让智能手机与乐高机器人结合在一起,创造出更加强大、更加智能的机器人。但并不是每个人都精通两种设备的编程方式,有时会需要一个引路人。我写这本书,就是希望能够成为这样一个带领人们进入崭新世界的向导。
我从大学毕业就一直在软件公司工作,到目前为止已在一家颇有历史的世界五百强公司工作了十多年。由于个人喜好,我在工作中始终坚持从事技术工作,虽然距离绝世高手还有着遥远的距离,但至少在众多技术领域都留下过足迹,也积累了一些实战经验。在业余时间,我也很喜欢学习一些新的技术知识或钻研一些技术问题。为了满足自己的需求,自学了Android编程,也写过几个Android应用程序供自己使用。
工作之外,我始终是一个童心未泯的“大孩子”。无论是变形金刚还是乐高机器人,都是我的爱。因为喜欢变形金刚,我花了五年的时间,两次重写,完成了一部长篇小说;因为喜欢乐高,我曾为leJOS NXT写过一些工具和一个框架,其中一个工具现在已经被收录到leJOS的官方工具中。
或许是因为缘分,或许是命中注定,郑剑春老师的一双慧眼发现了我的作品,于是他邀请我来写这本书。而“出一本书”恰恰被我列为生命结束前要做的事情之一,虽然作为一个新手爸爸,我必须承担起照顾好刚刚出生儿子的责任,但我还是决定接下这个任务,为了带领大家走进一座新的殿堂,为了让更多的人了解乐高的魅力,也为了实现自己的一个梦想。序 当安卓遇上乐高——用Android手机打造智能乐高机器人〖2〗〖2〗 〖1〗 郑剑春老师说,我这本书将是一本高级乐高编程书,希望在里面放一些有点高度的项目,并且给我提供了EV3和相关的传感器。
由于我个人只拥有前一代机器人——NXT,以前的项目也都是在NXT下实现的,因此,我决定为了写这本书,针对EV3重新设计和实现全新的原创项目。初设想的项目很多,后来由于篇幅和精力所限,做了一些精选。于是,诞生了本书中的3个项目。每个项目都不是很容易、很轻松就能完成的。在做的过程中,我遇到了各种各样的问题、挫折和失败,有些在书中也提到了,但我始终相信自己一定可以完成这些项目,于是不断查找资料、调试、寻找问题原因和解决方案,终克服了所有困难,跟我初一直坚信的一样,成功地完成了所有的项目,并写成了这本书。
本书中涉及的知识,有些是很基本的编程知识,也有些是具有一定高度和难度的知识,还有些甚至是别人的研究论文。古人云: 人之为学有难易乎?学之,则难者亦易矣;不学,则易者亦难矣。只要肯动脑去学,肯动手去做,肯多方查找资料,本书中还没有包含无法被人学会的知识,也还远远没有触及目前科研前沿的那些知识。换句话说,本书中的知识都是很多人早已了然于胸的,也是普通人都可以学会的知识。
总之,希望各位读者在跟着本书完成自己的机器人时,如果遇到困难千万不要放弃。有句歌词写得好: 不经历风雨怎么见彩虹。当我们历尽千辛万苦,后看到机器人按照自己的意图动起来的时候,那一刻的喜悦是无法用言语来形容的。希望大家能够受到本书项目的启发,发挥自己的想象力和创造力,开发出更有趣、更强大的机器人。
为了方便读者学习,我尽可能地在本书涉及的程序中加入了注释。本书中提到的程序和随书光盘所带的程序都是经过多次测试证实可以顺利运行的。这些程序除了可以在随书光盘中找到,我还将它们分别放到了国内和国外两个版本管理库中,网址如下。
在这些版本管理库中,不仅可以看到终成型的代码,也可以看到以前的版本历史。
不过,我想,很多读者可能还是会比较心急,比起慢慢读书钻研代码,估计更想立即看到能动起来的机器人。我也是一个心急的人,很能体会这些读者的心情。为了照顾这部分读者,我特意将每个项目的程序打好包,放到随书光盘的programs目录下。里面有可以直接安装到Android手机上的apk文件和安装好leJOS后上传到机器人上就可以运行的jar文件,心急的读者将这些文件安装妥当,就可以看到机器人运行的效果了。当然,为了知道每个机器人能干什么,还是要至少读一下每个项目的说明部分和构想部分。
本书从结构上分为两大部分。部分的实践篇介绍了3个项目,并讲解了其中的技术难题调研和软硬件设计,对于用到的知识则点到为止,没有做详细的展开说明。第二部分的知识篇则针对项目中用到的知识做了稍微详细些的入门介绍。由于本书的重点不是教授知识,所以只对一些基础的知识和容易困惑的点做了较详细的说明,一些比较容易学、网上资料比较丰富的知识仅简单提及,还希望需要的读者能自主地寻找相关的资料和书籍进行补充学习。
另外,我要感谢我妻子的大力支持和我儿子的睡眠时间。本书的大多数写作时间都是在儿子睡着的时候进行的。虽然我儿子像个小神仙一样不怎么爱睡觉(据我妈说,我小时候也一样),但毕竟是初生的婴儿,睡得还是比我多很多的,否则想要完成这本书恐怕还要更多的时日才行。而我的妻子为了能让我有更多的时间来完成这本书,承担了大部分的育儿任务和家务,相信每一位妈妈都会知道她的辛苦。因此,请允许我稍微占用这一点篇幅,对她表示由衷的感谢。
当然,还要再次感谢郑剑春老师给我这次宝贵机会,也感谢所有身边支持我、帮助我完成这部作品的同事和朋友们。谢谢大家!
如果读者对本书中的程序或者叙述有疑问,可以给我发邮件。邮件主题中不要忘记加上书名,我会尽可能在有时间的时候解答疑问。如果我没有回复,请不要等待,自己多多思考、多多动手,或许很快就可以靠自己的力量解决问题了。
如果对我以前的NXT作品有兴趣,可以在网上搜索“程序猎人”或者“programus”和“乐高”。前面两个是我的网络昵称。
后,感谢你选购了这本书,希望它能为你的生活添加新的乐趣!
在线试读
项目3认识路标的自动小车
说明
在这个项目中,重新回归轮子驱动的小车。然而,我们要脱离将手机作为遥控器的模式,这次,让手机成为机器人的眼睛,负责看着前方,当发现路标的时候,按照路标的指示控制小车运行。
构想
现在大多数Android手机上都配备有高分辨率的摄像头用来拍照、摄像。而乐高机器人的套装标配中通常都不包含这类摄影摄像设备。要让机器人真正能够“看到”面前的东西,仅靠红外线传感器或超声波传感器这类测距设备是远远不够的。而手机上的摄像头刚好弥补这一缺陷。
这次,就利用手机上的摄像头来检测、识别摆在机器人路上的路标,然后将其信息转换成命令发送给机器人。这样,就可以让机器人看着路标自动完成自己要走的路。
调研〖*4/5〗路标的识别有了前几个项目的经验,手机控制机器人对我们来说已经不再是什么难解的课题了。从上面的构想可以看出,本项目中关键的问题就是如何实现对路标的识别。
由于这是一个相对复杂些的问题,需将问题分解来看。
1. 确定路标图形格式
首先,要确定路标图形的格式。考虑到算法的复杂度,在本项目中,不打算实现对类似图131里那些现实世界中的路标进行识别,而是识别我们自己设计的特定路标图形。这样做,一方面可以降低算法复杂度,另一方面也可以根据需要随时添加新的路标。为了达到这两个目的,路标必须设计成容易识别并有相当的自由度才行。
图131现实世界中的路标
首先来看看如何让路标容易识别。为了达到这个目的,必须了解计算机如何进行图像识别。如前所述,计算机科学其实是一门仿生学。因此,还是先来看看人类是如何进行图像识别的。项目3认识路标的自动小车 当安卓遇上乐高——用Android手机打造智能乐高机器人〖2〗〖2〗 〖1〗 图132至图134描述了在大道上辨认路标的过程。众所周知,人眼的工作原理类似于照相机,眼前的景象会在眼底投影成一张图片,那么人们要识别路标,首先要从这张投影图中找到并定位路标。图132就是我们眼前景象的投影图片,在图133中,我们定位到了路标。接下来,为了按照路标指示行事,必须看懂并理解路标上的内容。这时,人眼就会聚焦在路标上并开始对路标的细节进行采集和分析,大脑会参与其中去分析和理解路标内容的意义。当我们集中注意力去理解路标的时候,就如同图134那样,很可能会忽略周围的事物。在这个过程中,大脑实际还会对路标的图像进行变形和分解以识别上面的形状和文字。
说明
在这个项目中,重新回归轮子驱动的小车。然而,我们要脱离将手机作为遥控器的模式,这次,让手机成为机器人的眼睛,负责看着前方,当发现路标的时候,按照路标的指示控制小车运行。
构想
现在大多数Android手机上都配备有高分辨率的摄像头用来拍照、摄像。而乐高机器人的套装标配中通常都不包含这类摄影摄像设备。要让机器人真正能够“看到”面前的东西,仅靠红外线传感器或超声波传感器这类测距设备是远远不够的。而手机上的摄像头刚好弥补这一缺陷。
这次,就利用手机上的摄像头来检测、识别摆在机器人路上的路标,然后将其信息转换成命令发送给机器人。这样,就可以让机器人看着路标自动完成自己要走的路。
调研〖*4/5〗路标的识别有了前几个项目的经验,手机控制机器人对我们来说已经不再是什么难解的课题了。从上面的构想可以看出,本项目中关键的问题就是如何实现对路标的识别。
由于这是一个相对复杂些的问题,需将问题分解来看。
1. 确定路标图形格式
首先,要确定路标图形的格式。考虑到算法的复杂度,在本项目中,不打算实现对类似图131里那些现实世界中的路标进行识别,而是识别我们自己设计的特定路标图形。这样做,一方面可以降低算法复杂度,另一方面也可以根据需要随时添加新的路标。为了达到这两个目的,路标必须设计成容易识别并有相当的自由度才行。
图131现实世界中的路标
首先来看看如何让路标容易识别。为了达到这个目的,必须了解计算机如何进行图像识别。如前所述,计算机科学其实是一门仿生学。因此,还是先来看看人类是如何进行图像识别的。项目3认识路标的自动小车 当安卓遇上乐高——用Android手机打造智能乐高机器人〖2〗〖2〗 〖1〗 图132至图134描述了在大道上辨认路标的过程。众所周知,人眼的工作原理类似于照相机,眼前的景象会在眼底投影成一张图片,那么人们要识别路标,首先要从这张投影图中找到并定位路标。图132就是我们眼前景象的投影图片,在图133中,我们定位到了路标。接下来,为了按照路标指示行事,必须看懂并理解路标上的内容。这时,人眼就会聚焦在路标上并开始对路标的细节进行采集和分析,大脑会参与其中去分析和理解路标内容的意义。当我们集中注意力去理解路标的时候,就如同图134那样,很可能会忽略周围的事物。在这个过程中,大脑实际还会对路标的图像进行变形和分解以识别上面的形状和文字。
书摘插画
评论
还没有评论。