【解析新特性】300W单路输出工业电源>>
电子产品世界 » 论坛首页 » DIY与开源设计 » 电子DIY » 什么是乐高机器人最好的编程语言环境?

共1条 1/1 1 跳转至

什么是乐高机器人最好的编程语言环境?

工程师
2011-03-15 14:34:06    评分
什么是乐高机器人最好的编程语言环境?
写于: 星期三 04 八月 @ 12:40:41
 
乐高(LEGO)机器人本文为《What is the Best Environment-Language for Teaching Robotics Using Lego MindStorms?》(英文版pdf下载)的中文翻译,由Hanker提供。除了介绍RCX相关的编程外,还提及了如何使用机器人进行教育。

什么是最好的编程语言环境?
―― 使用 LEGO Mindstorms 讲授机器人技术


作者:Anthony Hirst1, Jeffrey Johnson2, Marian Petre3, Blaine A. Price3, Mike Richards3
Departments of Telematics1, Design and Innovation2, and Computing3
The Open University, Walton Hall, Milton Keynes, MK7 6AA, UK
robofesta@open.ac.uk

摘要
我们打算给出一个使用 “LEGO Mindstorms 机器人开发系统”针对不同的学习者讲授机器人课的一些教育手段。我们简要的回顾了当前可用的编程环境,并且评价了它们对我们所选择的对象的适用性。易用和功能强大之间通常是互斥的,不可能提出一个单一的编程环境适合于所有的学习者,作为一种替代方案,一个从 Microworlds 开始、经历图形化编程环境、直到文本语言的一个递进的环境似乎是我们开展这方面教育所能提供的最佳方法。在本文中,我们综合了我们的想法并展示给大家,希望得到各机器人社团的建设性的意见。

1、 引言
机器人技术在讲授科学和技术方面是积极而有益的,这个观点已被许多研究人员所证明(Beer 等人,1999)。我们确信:机器人是刺激学习的一种强有力的方法,机器人的构建和编程要使用很广泛的科学和工程原理,以及现代技术经济中的关键技能(Wasserman, 2002),这些技能需要团队合作、周密的计划以及完整的工作记录。


我们已经讲授有关机器人技术的课程很多年了,而且我们已经开始规划一门新的机器人课程:与国际 RoboFesta 和 RoboCup运动合作,我们计划一个在中小学和大学中开设机器人技术课的大方案,基于以往使用 Lego 教育器材的经验,我们更倾向于选用 Lego Mindstorms机器人开发系统作为可能的硬件平台,讲授针对第一、第二、第三级的机器人技术课、工程课以及计算机课。不可避免的问题是:
使用 Lego Mindstorms 教机器人技术课,是么是最好的编程环境和语言?

假设我们想要用 Mindstorms 所教的内容的深度和广度是:从简单编程到工程原理和仿真,而且我们想要服务的对象范围从小孩到成熟的大学生,语言既要复杂又要是有权威的。因为高质量教育器材的大规模产品是昂贵的,这中间既有经济上的原因,也有教育上的原因。


在本文中,我们没有刻意将编程环境和语言分开,而且我们给了术语 ―― 语言、编程环境一个宽松的解释。例如,我们把用于创建代码的“拖―放”环境视为“语言”,同样的情况,对于常见的文本语言只能视为编辑环境。
这篇文章是我们迄今为止研究和分析的总结,我们不期望在这个时候给出这个问题的最终答案,我们希望读者也提出自己的论点。

2、 我们教什么? 教谁?为什么目的?
对于成人和孩子,不论男女,机器人都普遍存在广泛的吸引力,这在机器人主演的电视节目的成功上,不断成长的机器人竞赛中可以明显的感受到。我们有强烈的教育愿望,并且希望抓住所有这些人的兴趣和狂热,使之服务于更广泛的教育目的。编程环境―语言的选择必须适应我们的教学对象、我们想要教他们的内容以及我们深层次的教育目标。


2.1 我们准备教谁?

  • 小孩,小于10岁
  • 学校的孩子,10 ―― 18 岁
  • 大学生, 18 岁以上
  • 成人 ―― 终生学习
  • 教师,为了辅导学生学习

如此宽泛的群体使得语言环境的选择复杂化,尽管我们假设某些学生将作为机器人技术的初学者开始我们的课程,但是我们所作的假设中关于已有的技能、学习的速度以及基本概念的水平在不同的群体中仍会存在差异,才识字的孩子的需要与较高文化层次的大学生是不同的,而大学生又不同于重新接受教育的成年学生的需要。这说明:不存在一个完美的编程环境,我们的目标必须是现实的:使尽可能多的学生最好的使用我们提供的资源。


2.2 我们要教什么?为什么教?
我们的计划分两部分:

  • 教机器人技术本身;
  • 用机器人技术作为出发点,进一步激发学习愿望。


机器人技术本身是多学科的,它包含:机械工程、电子、控制、通讯、视觉处理、实时并行计算以及系统设计。所有这些在我们的教学中都要涉及到。


机器人技术还是一种很好的载体,可用于培养关键技能(如:团队合作、批判性思维、计划、科学观察、完整的纪录等),还可用于加强物理、数学、计算的基本能力,同时还可以引入仿真、人工智能、人工识别等现代概念。


此外,机器人引出了关于我们与现代技术及其潜能之间关系的深层问题,从而允许我们处理围绕技术的使用带来的伦理、社会问题。


2.3 使用机器人在理论和实践之间建立桥梁
传统的计算机教学方法往往是抽象的,学生们常常难于推导程序的运行状态并识别它们动作的相互关联。问题是:因为需要提供给编程者足够的功能,通用的语言是复杂的,而这对初学者而言是不幸的,通常意味着:你需要为做很少的事而知道很多。


许多语言要求用户键入大量的代码去产生一些相对无价值的结果。任何学生在能写程序之前必须学习语法(这使人有挫折感),或者必须输入一些对他们毫无意义的代码。一种替代的方法是使用图形化的编程环境。
使用合适的环境给机器人编程(这个环境提供强大的可视化符号并且支持语法纠正)的优点是:

  1. 形象化:学生所编程的内容是他们能够处理的,而且能够以他们在现实世界中所观察到的方式去运行;
  2. 循序渐进;
  3. 可以创新;
  4. 可有多种解决方案;
  5. 允许处理一些不太合乎逻辑的操作;
  6. 提供直接的反馈;
  7. 具有习性(因此鼓励个性化);
  8. 使用多种技能;
  9. 让完全初学者能创造出一个有趣的成果;(例如:“去收集一个网球”一定比“打印 Hello,world”更有趣)


迄今为止,我们的经验是给机器人编程可以帮助学习者建立理论与实践之间的桥梁,从而使他们从自己的亲身体验中得到原理。


2.4 机器人是引人入胜的
从以机器人为主角的电视节目的成功上可以明显看出机器人的吸引力,例如:英国的 RoboWar 和 TechnoGames,它们吸引了大量的几乎所有年龄段的观众。机器人诞生75年来已经成为大众文化的主题之一,近期的电影(如斯皮尔伯格的 A.I.) 已经激起了关于机器人潜能的广泛讨论,而 Sony 公司 AIBO 的登场也吸引了主要媒体的关注。机器人竞赛受到参与者和观众同样的欢迎。机器人对所有性别的成人和孩子都具有吸引力。

2.5 学生将如何学习我们所教的内容?

  • 远程辅导;
  • 课堂教学;
  • 互助组;
  • 独立探索。


多学科、多样化的学习者、多重的学习方法 ―― 所有这些都意味着我们编程环境的选择是相当复杂的,而且不太可能存在一个单一的解决方案。换个角度考虑,我们可以寻找:使用 Lego Mindstorms 教机器人课最好的递进语言编程环境是什么?

3. 系统背景
3.1 RCX 积木块
对 Mindstorms 处理器积木块编程需要一台计算机,在计算机上组建、编辑、编译代码。编译好的代码被下载到积木块中,在积木块中有一个称为积木块固件的小型操作系统,由它支撑下载的程序运行。(图1)
Mindstorms 搭载了三个集成软件:

  1. 固件:能下载到在积木块核心的微控制器中,固件实现了一个虚拟机,在这个虚拟机上运行从主机上下载的字节码(参考资料http://graphics.stanford.edu/~kekoa/rcx/)。
  2. ActiveX 控件( the Spirit OCX):能用作为插件在主机上写程序,程序可以下载到积木块中运行,还可以发送直接命令给一个已运行了固件的积木块。
  3. 图形化的编程语言环境(RCX码):用 Lego 块图标构建使用小型函数单元组成的程序。


为了教育市场,Lego 推出了一个更灵活的编程环境(RoboLab),在这个环境中,更广泛的功能单元可以用线连在一起,而不是塞在一起。这个编程环境在用户的计算机上运行,允许用户组建、编辑、编译代码,然后将代码下载到积木块中在固件上运行。加载在积木块上的固件对可执行的命令和变量的数量有所限制,但是可以替换下载的固件以提供不同的功能。因此,选择一个特殊的编程环境可能需要下载新的固件。


3.2 硬件和操作系统的选择
开放大学规定学生使用被称为 Wintel 的计算机,不论好坏,这个政策主要是基于这样的事实:我们的学生中90%拥有这个硬件―软件平台,而且用通用的桌面帮助服务于世界范围内成千上万的学生,支持单一的平台会更容易。


假设这个硬件是默认的,操作系统实际上已既成事实。显而易见的竞争者是各种 Windows 和 Unix (Linux 或 Macintosh System X)。开放大学“尽可能的开放和包容”的承诺与单一平台方式是矛盾的,因此,一种作为平台的,或不限定操作系统的语言解决方案将会受到特别的考虑,例如 Java 语言。


4.选择一个编程环境
在选择合适的编程环境/语言性能方面,我们教计算机课的经验(Griffiths 等人, 1999,Woodman 等人,1998)以及软件工程和人工智能方面的流行趋势给了我们一些主要的指导,应当支持面向对象的方法,并将它与现在已有的课程整合,现在它已在软件工程基础中得到重视。对于初学者而言,面向对象编程使得产生和描述一个复杂的行为更容易(Griffiths 等, 1999)。


我们强调提供给初学者合适的软件的重要性,任何对于初学者的编程环境必须是坚固的 ―― 应当连续可靠的运行,不能崩溃。错误(根本不该出现)必须是含义明确的。


人―机交互、最终用户编程、可视化编程等技术给予我们一些在语言选择概念上的提示,详述如下。

4.1 从本质上将对象操作从编程中分离
Microworlds 是由麻省理工学院 Logo组开发的一个教育工具,它允许学生在一种约束的方式中探索和操纵一个领域(Pappert 1980)。使用者可以通过图形用户界面(如:按按钮,输入对话框)在 Microworlds 中操作数据或现象,观察随后在屏幕上反映的变化。


实际上,使用者正在“编程”这个微世界 ―― 尽管只达到组合操作和处理程序参数的程度 ―― 但是在这个界面下已隐含了语言的语法和结构。因此,执行是隐藏的,使用者可以不去理会执行语言而专注于领域的概念。而且,使用者能够学到基本的编程概念,这种概念综合了多种语言而不需要学习语法。( 参考 Soloway’s (1986) ―― 设计一个编程环境,允许高中生通过组合一些概念单元或“图”而不是编程语言来编程)


能从这样的环境中学到的概念包含:

  1. 解决问题的算法;
  2. 将解决方案分解为相关联的小元素;
  3. 通过使用顺序、重复、选择能完成大多数任务;
  4. 对象概念;


Microworlds 已被用于开放大学的计算机入门课程:一种服务于后续的面向对象技术概念的面向对象方法。在一开始的例子中,学生们可以送一些信息给屏幕上的青蛙,告诉它向左、向右、向上、向下跳,设置它的颜色等等;随后的课程中,学生们创造一些具有某些遗传特征的青蛙子类,同时赋予这些子类特有的一些新特征。

4.2 仿真:将控制逻辑从物理控制中分离
在自治的移动机器人领域,脱离物理系统设计和测试控制策略,仿真是常用的方法。

 


图3 理想化:同样的程序可以驱动


图3 示意了这个概念,在此,同样的程序既可驱动仿真器又可驱动机器人。尽管仿真通常与真实系统有差别,仿真器可以试验设想,而且,当真实环境中的真实机器的异常现象不出现时,仿真器十分适合于找出 Bug。这也与 Mindstorms 相关,在 Mindstorms 中,分立的传感器和马达的性能可能变化,但当程序逻辑和程序执行正确时,物理变化量的影响是能修正的。尽管有各种各样的RCX仿真器可以使用,但我们觉得现在这些仿真器对学生使用来说还不够稳定。

4.3 直接操纵
微世界的一个重要特性是直接操纵屏幕对象,而不需要被迫接受语言或语法,Hutchins、Hollan 和 Norman (1986) 提出,直接操纵可以使:初学者能快速学会基本功能,专家能极快地实现复杂的目的,使用者能直接看到他们的动作能否实现进一步的目标。因此,直接操纵看来是最想要的特性,它提供了这样的特征:可以快速的、递进的、可逆的操作有趣的对象,并直接看到明显的影响。(Shneiderman, 1982)

4.4 分层次、递进的展开
微世界方法的概念是“直接操纵编程环境”(如:另一个实用的软件包:Smith, 1987 , LabView ),它既提供了操纵领域层面上的表现(如:一个微世界或一个控制面板),又提供了潜在的代码含义。分层次方法的一个主要优点是:使用者可以通过与微世界(即:一个可控的环境)交互作用建立自己的概念模型,因此,直到建立好一个这个领域的完整模型,他们都不需要进一步了解语法。


“分层次”的特性近似提供了逐步地功能展开,因此,使用者可以有一个直接面向需求的最简单的环境,而不要知道更多的已存在的功能(Carroll 和 Carrithers, 1984; Carroll, 1987)。为了初学者和年轻的使用者,已经有一些最有效的编程环境被组合在一起,如:Repenning 的 AgentSheets ( Repenning ,2000),一种允许使用者从简单、易于理解的图形环境开始,当需求更复杂、更精确时,过渡到文本环境的系统。


事实上,AgentSheets 曾用于建立一个基于编程环境 ― LEGOsheets 的规则,作为用于 Lego RCX (麻省理工的可编程积木块)的先驱者,就作者所知,LEGOsheets 的一个版本也没有发布( Grindling 等,1995)。
通过 RCX SDK2 的有限扩展支持分层法,SDK2 引入了 Mindscript 语言。根据 SDK2 的版本注释,在这个语言背后的意图是:允许使用者看到使用图形化 RCX 语言编写的程序的 Script 语言形式。

使用我们“青蛙世界”的学生们在完全探索这个微世界后,仅仅引入了执行语言(这种情况下的 Smalltalk),到那时,他们应当具有坚实的概念基础,而且能看到在更传统的编程界面上他们是如何应用这些概念的。

4.5 阅读者角度
图形化环境看上去易于理解和有趣,并且,直接操纵不知不觉地减少了文本产生的需求,而文本可能是才识字孩子的障碍。但是,图形化环境已经有了一些与阅读相关的问题,如:

  • 在一屏上显示的元素数量限制;
  • 图形元素的描述限制
  • 培养有效的阅读和检查策略的需要
  • 难于检索到代码,难于搜索和标识想要的图形单元;
  • 可量测性;
  • 有效的图形编辑器的重要性;

 

  • 5. 选择的标准
    我们得出了一个语言选择标准的列表,我们最初关注的是大学入门级课程,可是,我们也希望能利用这些资源服务于中学和辅导参加诸如 RoboFesta 和RoboCup 竞赛的学生。因此,细节的选择是根据大学的,但更高级的选择(如:面向对象、分层次,多模式环境)打算归纳各种学习对象的需求。
    选择语言的相关标准包括:
  • 易于理解和使用(而且适合于初学者)
  • 快速开发;
  • 可量测性(从简单程序到复杂系统);
  • 通用编程;
  • 便于对物理设备的控制;
  • 坚固性;
  • 维护支持;
  • 价格;
  • 与现在的课程及课程目标的相容性;
  • 易于升级而且费用不高;
  • 寿命长;

 

5.1 RCX 编程环境的比较
从一面世开始,Lego Mindstorms 就证明十分受技术改进发烧友团体的欢迎。面对标准 RCX编程环境(见表1)的有限功能,一些人创建了他们自己的编程环境。许多是由 Active X 控件和 Lego 提供的固件组成,但有些方法引入了以软件库形式创建的新的固件,这些软件库可以链接到“传统的”编程语言中。

表1 汇总了最流行的社团提供的编程环境,

表2 给出了他们的网址。

6. 结论
我们相信:机器人是教授各种学生的合适载体,不管他们的年龄和背景如何。Lego Mindstorms 套件是一个合适的低成本解决方案,即使我们所做的“比较用于Mindstorms 编程语言环境”工作不十分完美,迄今为止的研究仍允许我们给出一个暂时的结论。


首先,Mindstorms 机器人提供给微世界一个机会 ―― 可以在计算的抽象和现实世界的行为之间架起桥梁。设计良好的微世界和仿真是有效的教学方法,它提供了一个低风险的、可控的环境,在这个环境中可以为进一步的学习培养牢固的基础。在技能的使用和教学中,使用这类系统可培养信心。


先进的微世界是用集成开发环境进行高级计算机编程的极好的启蒙手段,在这里,使用者可以看到组建并执行的真实程序代码。


第二,尽管已经有了相当多的 Mindstorms 积木块编程环境,没有一个完全适合我们作为入门课程的需要。除 RoboLab 外,没有一个图形化环境功能强大到满足学生延续到高级工作。而简单的文本环境(文本编辑器加命令行编译器)对初学者 ―― 特别是低龄初学者来说 ―― 不够坚固或者说支持不够。


最后,我们做出结论:我们需要采用递进的方法,从定制的、图形化的、基于系统的微世界开始,而后过渡到更复杂的编程环境。


图4 入门课程的递进环境

基于系统的微世界将以独立于语言的、面向对象的方式引入概念和简单的编程,使用逐步展开(如:一个链接到微世界的伪代码窗口)方式帮助学生建立领域动作与代码之间的关系,还可作为通向更传统的编程环境的桥梁。

参考文献(略)

[1] Beer, R.D., Chiel, H.J, and Drushel, R.F.(1999) Using Autonomous Robotics to Teach Science and Engineering. Communications ACM, 42 (6), 85-99.

[2] Carroll, J.M. (1987). Minimalist Design for Active Users (Enhancing System Usability),Readings in HCI: A Multi-Disciplinary Approach, 621-626.

[3] Carroll, J.M., and Carrithers, C. (1984) Training Wheels in a User Interface, Communications of the ACM, 27 (8).

[4] Griffiths R., Holland S., Woodman M., Macgregor M., Robinson H. (1999) Separable UI Architectures in Teaching Object Technology. Proceedings of the 30th International Conference on Technology of Object-Oriented Languages and Systems, Tools USA '99, Santa Barbara.

[5] Gindling, J., Ioannidou, A., Loh, J., Lokkebo, O., and Repenning, A. ‘LEGOsheets: A Rule-Based Programming, Simulation and Manipulation Environment for the LEGO Programmable Brick’. Proc. of Visual Languages Conference, (Darmstadt), 172-179. IEEE Computer Society Press. 1995.

[6] Hutchins, E., Hollan, J., and Norman, D. (1986) Direct Manipulation Interfaces, User Centred System Design, D. Norman & S. Draper (Eds) Lawrence Erlbaum Assoc., 87-119

[7] Johnson, J. H., ‘The “can-you trust it problem?” of simulation science’, Complexity,2001.

[8] Johnson, H. J., ‘Children, Robotics, and Education’, Proc. AROB-7, 16-18 Jan 2002.

[9] Johnson, J.H., Hirst, A. J., The RoboFesta - Blue Peter Robot Design Competition, Research Report 2, RoboFesta Edutainment and Robotics Education Research Centre, Faculty of Technology, The Open University,
Milton Keynes, MK7 6AA, UK.

[10] Papert, S. (1980) Mindstorms, Children, Computers and Powerful Ideas. New York: Basic Books.

[11] Petre, M. (1995) Why Looking Isn’t Always Seeing: Readership Skills and Graphical Programming, Communications of
the ACM, 36 (6), 33-44.

[12] Repenning, A.,(2000) AgentSheets?: An Interactive Simulation Environment with End-User Programmable Agents, Interaction 2000, Tokyo, Japan.

[13] Schneiderman, B. (1982) Designing the User Interface. (2nd Ed) Addison Wesley.

[14] Smith, R. (1987) Experiences with the Alternate Reality Kit: An Example of the Tension between Literalism and Magic. Proceedings CHI + GI 87, 61-67.

[15] Sklar, E., Johnson, J., Lund, H., ‘Children learning from team robotics’, Research Report 1, RoboFesta Edutainment and Robotics Education Research Centre, Faculty of Technology, The Open University, Milton Keynes, MK7 6AA, UK.

[16] Soloway, E. (1986). Learning to Program = Learning to Construct Mechanisms and Explanations. Communications of the ACM, 29 (9), 850-858.

[17] Wasserman, E. (2002) Why Industry Giants Are Playing with Legos, Fortune, 144(10), 101-106.

[18] Woodman M., Griffiths R., Robinson H., Holland S. (1998) An Object-Oriented Approach to Computing, Proceedings of the ACM Conference on Object-oriented Programming, Systems and Languages, OOPSLA '98, Vancouver.

[19] www.robofesta.net

[20] www.robofesta-uk.org

[21] www.robocup.org

 

===========特别鸣谢===========

本文为《What is the Best Environment-Language for Teaching Robotics Using Lego
MindStorms?》(英文版pdf下载)的中文翻译,由Hanker提供。

Hanker还为大家贡献了2篇文章:

  1. 关于初级机器人入门项目的设想
  2. 关于Robot DIY 活动的思考

参加讨论:phpbb2/viewtopic.php?t=3989

 




关键词: 什么     乐高     机器人     好的     编程语言     环境     提供         

共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]