在计算机基础教育中应用LEGO Mindstorms NXT
2009-05-11刘越莫方政
刘 越 莫方政
文章编号:1672-5913(2009)08-0126-03
摘要:计算机应用能力的培养以程序设计为主线,使学生掌握基于计算机的问题求解策略和基本的程序设计方法,深入理解计算机系统。本文分析了机器人平台在计算机基础课程中的适用性,叙述了如何在计算机基础课程中利用LEGO机器人和Robot C编程语言辅助程序设计入门教学。
关键词:Lego Mindstorms;程序设计;机器人
中图分类号:G642
文献标识码:B
1介绍
国防科技大学的所有学生在入学后都要求学习完成“大学计算机基础”、“程序设计基础”等公共基础课程。计算机公共基础课程的目标是介绍计算机和信息技术的概念,讲授利用计算机进行问题求解的方法。在武器装备中,高科技含量越来越高,作为未来的军队指挥员,学生必须理解所使用的计算机设备的长处和弱点,只有深入理解计算机系统的工作原理,才能在战场上最大性能地发挥它们的作用。计算机基础教育强调应培养学生适应未来技术发展的能力,利用应用问题培养学生独立思考与合作解决问题的能力,使学生成为终身的计算学习者。大部分学生在学完公共基础课程这两门课后可能不再学习计算机类的课程,这两门课要为学生继续学习(主要是自学)打下扎实的基础,以便在指挥员岗位上尽快适应部队数字化建设和数字化战场环境的需要。
最近的研究表明,使用机器人作为教学工具可以帮助理解计算机类课程的基本抽象概念。特别地,Kumar和Meeden指出在本科课程中使用HandyBoard 和LEGO积木作为实验教学基础是可行的。从1990年起,一些本科的计算机科学和计算机工程项目开始启动,用来建立机器人实验室辅助教学,或基于HandyBoard/LEGO或基于Mobile Robot平台。
1996年LEGO公司发布了Mindstorms机器人开发和编程工具包。由于与HandyBoard设计相关,Mindstorms平台最初并不适用于高等教育。那时的SIGCSE(美国计算机协会计算科学教育专业组)和ITiCSE文献中同样缺乏对Mindstorm是否支持计算机教育的研究。造成这种情况的原因是LEGO机器人缺乏与高等教育相当的程序设计环境,缺乏对大学水平的程序设计语言C或Java的支持。然而,在过去十几年来,Mindstorms使用者群体日益壮大和活跃,他们完成了相当多的工作,如为C和Java开发程序设计环境,使上面提到的缺点得到了有效的改善,越来越多的高校选用低价的LEGO机器人作为教学平台:
(1) 西点军校在“信息技术和程序设计”基础课程CS105中利用LEGO Mindstorm 机器人作为学员主动学习环境中的重要组成;
(2) 加州州立大学在课程CECS174中使用物理模型来加深学生对问题求解概念和程序设计结构的理解,使用LEGO机器人作为教学实验平台;
(3) 麻省理工学院电子技术和计算机科学系特别开设了6.270自主机器人设计课程,学生在该课程中通过搭建物理模型并编程控制它,最终以比赛的形式完成实验;
(4) 卡耐基梅隆大学作为第三方开发了Robot C程序设计环境,Robot C已成为LEGO机器人最流行的程序设计语言之一。
到2006年LEGO公司发布Mindstorms NXT机器人套装时,机器人在计算机教育中的作用已得到普遍认同。本文主要介绍作者在“大学计算机基础”课程中使用LEGO机器人的教学经验。
2 “大学计算机基础”课程组织
“大学计算机基础”包括计算机基本知识和基本操作两个部分,要求学生熟练掌握计算机的使用,培养计算机应用能力。
本年度我们选择两个教学班实施双语教学,教材选用《New Perspectives on Computer Concepts》第十版,课程安排如下:
实践教学环节是这门课程成败的关键,学生编程能力培养必须在实践中进行,同时在实践中检验,而这种能力的获得正是课程教学的主要目的。本学期实施的大多数实验由外版教材提供,外版教材自带的光盘同时提供了软件,可以对学生的实验和作业情况进行跟踪,使教师能够清楚了解每个学生对学习内容的掌握情况,提供工具对所有实验和作业情况进行统计分析。
3基于LEGO 机器人的程序设计教与学
依据国防科技大学2006年修订的“大学计算机基础”课程标准,程序设计部分的教学要求如下:
(1) 计算机程序基本概念:了解计算机程序的概念和功能,理解程序控制概念;
(2) 计算机程序表示:理解计算机程序设计语言、程序编译的基本概念;
(3) 程序设计的一般过程:了解计算机程序设计的一般过程;
(4) 软件开发的一般方法:理解软件的基本概念,了解软件生存周期的概念及软件的开发方法。
虽然程序设计在“大学计算机基础”中所占学时并不多,我们依然决定依托人工智能实验室建设购置的60套Lego Mindstorms NXT和RobotC程序设计语言来设计整个程序设计入门的教学过程,让学生通过搭建实实在在的物理模型并编程控制它的运动,来加深学生对计算机工作原理的理解。
3.1LEGO Mindstorms NXT
通过机器人的运动来理解程序和程序设计是感性记忆与理性理解的结合,能够使学生更快的掌握程序设计的精髓,达到教学目的。LEGO Mindstorms NXT 9797机器人套装售价不超过250美元,已被欧美一流高校普遍使用于计算机基础教育、人工智能教育中。
LEGO NXT机器人硬件是由NXT 32位控制器、马达、传感器等组成。套装中包括两个碰触传感器、一个超声波传感器、一个光电传感器和一个声音传感器,马达中内置了角度传感器,如图1所示。
图1 LEGO Mindstorms NXT、传感器及学生搭建的部分模型
LEGO机器人由于平台的开放性拥有庞大用户群,软件开发环境丰富,几乎支持所有主流的程序设计语言。常用的语言编译环境包括Robolab、微软的Microsoft Robotics Studio、leJOS NXJ (Java)、NXC、Robot C,比较之后我们选择了由卡耐基梅隆大学开发的Robot C,理由如下:
(1)Robot C是一种基于C语言的机器人开发环境,而国防科技大学的程序设计基础课程是基于C的,保证了教学的连贯性,这一点对于大一的新生来讲相当重要;
(2)Robot C拥有编写和调试程序的所有功能,有成熟
的机器人程序设计调试工具;
(3) 同其他几种流行的机器人语言相比,Robot C是效率最高的一种语言,并且具备功能齐全、界面简洁实用等优点。
3.2课堂教学
在“大学计算机基础”课程教学中使用LEGO机器人始于2006年,由于数量有限,只用于课堂演示。
依据课程标准,课堂讲授的主要内容如下:
(1) 程序和程序设计的基本概念:什么是程序,程序设计和程序设计语言,以最简单的机器人程序讲述程序设计的一般过程;
图2 2006年课堂演示部分幻灯片(编程语言是NQC)
(2) 程序设计的基本思想:程序设计语言的分类、编译与解释;
(3) 结构化程序设计:顺序结构、分支结构、循环结构;如在讲解循环结构时,设计机器人案例,要求机器人完成沿正方形巡逻任务,逐步演示从问题分析到算法描述直到程序编写和调试过程,直观形象地讲解循环概念;
(4) 软件开发的一般方法:什么是软件?什么是软件生存周期?
3.3实验项目示例
程序设计实验分组进行,两人一组设备,合作完成一组实验项目,实验项目示例如下:
实验项目:循环结构,分为三个任务,其中第三个任务要用到分支结构。
任务一:下载示例程序(正方形巡逻)并运行,熟悉编程环境,熟悉编程与调试过程;完成步骤如下:
(1) 准备:通过USB连接线连接机器人与计算机。注意机器小车要在开机状态下;
(2) 编译:打开示例程序,该示例程序以类C语言编写,需经过编译翻译成机器人能理解的代码形式;
(3) 下载:T将示例程序下载到NXT机器人;
(4) 运行:Take the robot over to 将机器人放置到场地中,并按下运行按钮,观察;
(5) 阅读程序:回到计算机上阅读程序,尝试理解;
(6) 小车前进,触碰(或光电检测到障碍)停车。
任务二:修改示例程序,使机器人按六角形轨迹前进。
任务三:机器人一直沿六角形轨迹巡逻,直到检测到障碍或碰到障碍。
4结论
计算机科学教育界普遍认为程序设计的入门教育非常困难。在计算机基础课程中使用机器人平台,学生可以通过机器人的运动来理解程序和算法,机器人平台为学生提供了编写程序的实实在在的反馈。更进一步,编程和调试时的物理约束使得学生清楚认识到设计和规划的重要性。
我们的方法是将程序设计实验处理成机器人任务,在实验室中,学生构建机器人,并编程完成任务。通过构建物理实体并编程控制它,学生有机会直接接触计算机科学中的许多中心问题,包括软件硬件间交互、存储程序控制工作原理、程序的编制与调试等。从学生完成的程序设计实验来看,他们在理解顺序、选择和循环结构上要好于上一届学生。更重要的是,机器人平台对学生来说是个极大的激励,学生的学习过程快乐,并且很有成就感,同时教学质量得到进一步提高。
参考文献:
[1] Jerry Schumacher, Don Welch, David Raymond. Teaching Introductory Programming, Problem Solving and Information Technology with Robots at West Point[C],31st ASEE/IEEE Frontiers in Education Conference, October 10 - 13, 2001 Reno,NV.
[2] Kumar. D., and Meeden, L. A robot laboratory for teaching artificial intelligence[C]. In Proceedings of the 29 th SIGCSE Technical Symposium on Computer Science Education (1998).
[3] Martin, F. The MIT HandyBoard Project, 2000[EB/OL]. lcs.www.media.mit.edu/ groups/el/Projects/ handyboard, Sept. 6, 2001.
[4] Beer, R. D., Chiel, H. J., and Drushel, R. F. "Using autonomous robotics to teach science and engineering" [J]. Communications of the ACM, Vol. 42 (6) June 1999, pp. 85- 92.
[5] Frank Klassner. A Case Study of LEGO Mindstorms Suitability for Artificial Intelligence and Robotics Courses at the College Level[C]. SIGCSE'02, February 27- March 3, 2002, Covington, Kentucky, USA.
[6] C. E. Van Lent. Using Robot Platforms to Enhance Concept Learning in Introductory CS Courses, in AAAI Spring Symposium on Robotics in Education 2004: Stanford, CA.
[7] http://web.mit.edu/6.270/www/contestants/.
[8] http://www.robotc.net/.
[9] June Jamrich Parsons and Dan Oja. New Perspectives on Computer Concepts[M]. 北京:机械工业出版社,2008.