乐高机器人是乐高公司推出的一款新产品,它包括一套用于搭建物理结构的零件库和一个控制行为动作的大脑。通过在计算机上编写程序并上传至机器人的大脑,就可以打造一个实现某项功能的智能机器人。
《青少年科技创新丛书:Java与乐高机器人》介绍的是一门操控乐高机器人的语言——leJOS。它源自于软件界大名鼎鼎的Java语言,并对机器人控制部分进行了封装和优化。本书从Java编程的基础知识讲起,循序渐进地介绍了数据类型、变量、运算符、循环语句等内容。在此基础上,进一步介绍了机器人编程需要用到的各类知识,如LCD类、Motor类、传感器类等。对这些类中的方法、属性等进行了详细的讲解,并将Java编程的基础知识运用到相关示例中。在本书的后半部分,重点介绍了多线程、通信、智能手机开发等高级知识。掌握了上面这些内容,也就掌握了leJOS编程的核心。建议读者在阅读时,边阅读边实践,逐章逐节地掌握每个知识点,在实践中灵活运用,以加深理解。
《青少年科技创新丛书:Java与乐高机器人》适合机器人爱好者和编程爱好者阅读。已经投入到智能机器人比赛项目中的青少年及指导教师可以以本书作为参考,学习使用Java语言为机器人设计控制程序。
前言
当我刚刚接触乐高机器人的时候,马上就被它深深地吸引住了。原因很简单,它能动,听指挥,是一个优秀的创作平台。
按照网络上的图纸,我很快就制作出了几个机器人的模型。但是如何处理机器人的核心部分——控制程序,却一时没有头绪。如何让机器人像人类一样“思考”呢?为了达到这个目的,我先后尝试了多种编程语言,直到使用leJOS之后,终于发现,这正是我想要的。leJOS是基于标准的Java语言,它很强大,同时又十分小巧,可以提供给乐高爱好者无限的创作空间。对于像我这样从事软件开发工作多年的人来讲,只要经过简单的学习,马上就可以上手开发程序。而对于编程知识了解不多的读者,现在有了一个学习Java编程的好机会。只要几行代码,就可以指挥机器人动起来,这种“学以致用”的方式会极大地激发读者的学习热情。同时,leJOS又在乐高机器人和真正的工业机器人之间架起了一座桥梁,为读者的未来提供了更多的选择方向。下面,就开始踏上我们的学习之路吧!
本书的内容主要分为以下几个部分。
第1、2章,从乐高的基础知识讲起,先带领大家全面认识乐高机器人NXT 8547。
第3、4章,介绍乐高的编程环境。乐高公司提供了NXTG语言来为乐高机器人设计程序。这是一门图形化的编程语言,用户通过拖放图形达到编写程序的目的,而不用直接书写代码。这样的编程方式虽然直观,但是遇到过于复杂的逻辑,仅仅依靠图形总会感到难以表达清楚自己的思路。本书介绍的是现今软件行业极为流行的一门编程语言——Java。它是最近十几年开始兴起的一门面向对象的编程语言。Java有一个专用于乐高NXT开发的工具包,就是前面提到的leJOS。本书的主要内容就是向读者介绍Java和leJOS的编程方法。
第5章讲述的是编程的基础知识。如果本书的读者以前学习过一门编程语言,如C或VB,那么学习这一章的内容会十分轻松。没有基础的读者也不用担心,本书使用Java作为载体,简单、明快地讲解了类型、变量、循环语句这些概念,这些知识用作乐高机器人开发已经足够了。
第6、7章讲解乐高机器人程序设计。本书本着循序渐进的原则,依次讲解了屏幕输出、电动机控制、传感器编程等几部分内容,并对每个对象的操作方法一一阐述。结合书中例题,力求做到内容翔实、用例准确、深入浅出、易学易用。
第8章向读者介绍了编程中较为高级的技巧——线程与监听。运用多线程知识,前言 Java与乐高机器人〖2〗〖2〗 〖1〗
乐高机器人可以在捕获外界物理量变化的同时及时做出反馈。这部分内容可以使简单的程序更加精炼,同时也是开发复杂程序必不可少的知识。
第9章是对前面各章节知识的一个综合运用。通过5个小例子,带领大家一边思考一边动手,分析编程思路,梳理知识点,最终完成代码的编写。
第10、11章的内容涉及远程控制和智能手机。乐高机器人的连接方式有USB和蓝牙两种,远程控制分为PC控制机器人、机器人控制机器人和手机控制机器人。 现在安卓智能手机的使用已经十分普遍,本书利用安卓手机上的重力感应器编写了一个控制程序,遥控乐高小车做出前进、后退等动作。
第12章作为扩展阅读,主要向读者介绍leJOS提供的图形化工具的使用方法。此外,初学编程的读者,经常会遇到语法知识已经掌握了几分,但却不知从何入手编写程序这个难题。在12.5节告诉读者如何查看leJOS提供的示例代码,认真阅读之后会有所帮助。
因为本人所学有限,书中难免存在疏漏和不足,欢迎读者朋友批评指正,我将十分感谢并及时发布勘误信息。我的邮箱是: wxh1907@sina.com。在我的博客http://blog.sina.com.cn/u/1014509487可以下载到本书的全部代码。
崔世杰、张巍、李梦军、刘玉田、李甫成、赵亮等老师参加了本书部分章节的编写工作,并在技术与材料上提供了支持,在此向他们表示衷心的感谢同。最后,对正在阅读本书的读者表示由衷的感谢!希望本书能给您带来快乐和收获!
魏晓晖2013年11月10日
第1章 认识乐高机器人
1.1乐高简介
1.1.1乐高公司简介
1.1.2乐高机器人系列
1.2乐高零件
1.2.1基本尺寸
1.2.2种类
1.3乐高机器人搭建
1.3.1结构与功能
1.3.2结构与载重
1.4小结
第2章 LEGO Mindstorms NXT
2.1NXT主机
2.2输出系统 第1章 认识乐高机器人
1.1乐高简介
1.1.1乐高公司简介
1.1.2乐高机器人系列
1.2乐高零件
1.2.1基本尺寸
1.2.2种类
1.3乐高机器人搭建
1.3.1结构与功能
1.3.2结构与载重
1.4小结
第2章 LEGO Mindstorms NXT
2.1NXT主机
2.2输出系统
2.3传感器
2.4其他输入/输出装置
2.4.1按钮
2.4.2蓝牙和数据线
2.5小结
第3章 初识leJOS
3.1leJOS概述
3.2安装leJOS
3.2.1安装驱动程序
3.2.2安装Java JDK
3.2.3安装leJOS
3.2.4更新固件
3.3leJOS系统介绍
3.3.1菜单
3.3.2工具和文档
3.4小结
第4章 使用Eclipse开发leJOS
4.1Eclipse概述
4.2安装Eclipse
4.2.1下载
4.2.2运行
4.2.3安装NXT插件
4.3Eclipse开发环境介绍
4.3.1界面
4.3.2菜单
4.4第一个程序: HelloNXT
4.4.1新建、编译和运行
4.4.2读懂leJOS程序
4.5小结
第5章 编程的基础知识
5.1数据类型
5.1.1基本数据类型
5.1.2类型转换
5.2变量
5.2.1定义变量
5.2.2变量的作用域
5.3数组和字符串
5.3.1声明数组
5.3.2使用数组
5.3.3length属性
5.3.4二维数组
5.3.5字符串
5.4运算符
5.4.1算术运算符
5.4.2连接运算符
5.4.3赋值运算符
5.4.4关系运算符
5.4.5逻辑运算符
5.5条件语句
5.5.1if语句
5.5.2switch语句
5.6循环语句
5.6.1for语句
5.6.2while语句
5.6.3do while语句
5.7面向对象
5.7.1类
5.7.2方法
5.7.3属性
5.7.4对象
5.8小结
第6章 机器人编程
6.1屏幕显示
6.1.1print方法
6.1.2LCD类
6.1.3Graphics类
6.2声音输出
6.3电动机控制
6.4按钮
6.5数学计算
6.6小结
第7章 传感器编程
7.1触碰传感器
7.2颜色传感器
7.3距离传感器
7.4角度传感器
7.5小结
第8章 线程与监听
8.1线程
8.1.1线程概述
8.1.2生命周期和优先级
8.1.3编写多线程程序
8.2监听
8.2.1监听概述
8.2.2为按钮添加监听器
8.3小结
第9章 综合实验
9.1单光感巡线车
9.2自动避障车
9.3防跌落小车
9.4测距仪
9.5环境光检测仪
9.6小结
第10章 通信与远程控制
10.1通信方式简介
10.1.1USB
10.1.2蓝牙
10.2机器人与PC通信
10.2.1建立USB连接
10.2.2PC端发送消息
10.2.3NXT端接收消息
10.2.4PC远程控制机器人
10.2.5双向通信
10.3机器人与机器人通信
10.3.1建立蓝牙连接
10.3.2远程控制机器人
10.4小结
第11章 机器人与智能手机
11.1基础知识
11.2手机端程序
11.2.1搭建Android开发环境
11.2.2新建Android程序
11.2.3运行Android程序
11.3NXT端程序
11.4小结
第12章 扩展阅读
12.1更新固件
12.2图像转换
12.3数据处理
12.3.1数据记录
12.3.2数据查看
12.4文件管理
12.5查看示例程序
12.6设置环境变量
12.7小结
参考文献