一种实物编程方法和系统的制作方法

文档序号:2583422阅读:390来源:国知局
专利名称:一种实物编程方法和系统的制作方法
技术领域
本发明属于人机交互领域,具体涉及到一种通过实物进行编程的方法和系统。
背景技术
随着现代科学技术的发展,各种各样的计算设备 已经逐步渗透到了生活中的每个 角落。从日常办公的计算机,到个人的手持设备,甚至身边的家用电器,无不都存在着各种 各样的计算设备。而人们如何与这些计算设备进行更好的交互,方便操控这些设备,也一直 是人机交互领域研究的热点问题之一。而对于儿童来说,越来越多的儿童有机会使用计算 机,他们利用计算机玩游戏、浏览网页、收发信息、进而学习知识、了解社会、认识世界,计算 机正在改变着儿童的生活与学习方式。随着儿童使用计算机的深入,儿童不再满足于仅仅 使用计算机,他们渴望开发自己的程序,特别是制作游戏和仿真。以往的儿童教育,认为儿 童的理解能力不够,只将注意力放在书本知识的教授上,缺少对于儿童身边的各种科技产 品的介绍,这只会让儿童更加困惑身边发生的一切。因此如何以适合儿童的方式给他们提 供高技术产品,已成为研究者的主要目标。而让儿童更好的接受和理解身边发生的一切,最 好的方式就是让他们直接去动手实践操控。毫无疑问,对于计算设备进行编程是满足这些 需求的更有效的方法之一。传统的编程通常是通过键盘输入文本语言来完成。这种编程方式对儿童而言,理 解和使用起来很不方便,主要原因是传统编程语言中的语法和复杂指令,儿童难以理解和 记忆,同时还需要儿童进行大量输入工作。儿童很难记住和理解程序语言的语法、逻辑关系 和程序架构等非常专业的知识。此外,对文字掌握得还不纯熟的儿童来说,程序的文本编辑 方式缺乏直观性,儿童无法采用传统的编程方式来创作自己的程序。图形化编程向儿童提 供了一种编程的可行途径。它将各种编程的概念转化为显示在屏幕上的各种图形,儿童只 需要对于各种图形进行拖动,就可以完成编程的整个过程。而实物编程被认为是图形化编 程的一个分支。与图形化编程不同之处在于,实物编程对于程序的操作超越了计算机屏幕 的限制。实物编程通过触觉、物理感知等技术与实物交互,再将实物逻辑转化为程序逻辑来 进行编程。与直接让儿童操控电脑相比,让儿童通过操纵实物来与电脑进行交互,更容易让 儿童投入在整个过程当中。通过实物编程系统,儿童可以对程序语言的逻辑有更加直观的 理解。程序不再是一行行枯燥的代码,而是一组形象甚至一组实物的组合,儿童通过对实物 的拼接组合,就可以完成普通程序语言通过键盘输入代码完成的工作。实物编程的特点决 定了它更适合儿童进行编程操作。当前已经有一些实物编程的工作,主要可以分为两种类 型。一种基于内置电子模块的实物编程比如Digital Construction Set,roBlocks,另一 种是无电子模块的实物编程比如Tern。基于电子模块的实物编程是将电子设备嵌入实物 编程块,通过编程块中的内置电子模块来向系统传递编程块相关语义信息。而无电子元件 的实体编程的语言模块的语义是通过摄像头或数码相机等视觉捕捉设备获取的。内置电子 设备的实物编程系统虽然编程能力强,但普遍成本较高,另外一些编程系统只提供了语法 的检测,没有给用户语义检测,程序的调试比较复杂,程序错误后的修改比较麻烦。还有的工作虽然提供了语义检测,但是编程的内容很简单。为此,本发明提出了一种实物编程的方 法和系统,儿童可以通过该系统进行编程的学习和操作。此外,本发明可用于新手编程的场 景,让新手通过实物交互尽快理解和掌握编程的基本概念。

发明内容
本发明通过让儿童及新手使用实物编程块来完成编程行为,解决了儿童及新手学 习编程的难题。本发明的目的在于提供一种实物编程方法和系统,使得儿童和新手可以摆 脱编程语言繁冗的语法,专注于程序设计本身。本发明的技术方案为一种实物编程方法,其步骤为1)选取或建立一套实物编程显示环境,并将该实物编程显示环境的语法语义判定 规则存储到实物编程处理模块中;2)用户根据所选实物编程的任务及任务执行规则摆放实物编程块;其中,每一所 述实物编程块的表面设有一个计算机视觉识别码和一个语义图形;3)图像采集单元拍摄用户摆放的实物编程块序列,并将其上传至实物编程处理模 块;4)实物编程处理模块提取所接收图像中每一所述实物编程块的计算机视觉识别 码及实物编程模块的位置信息;5)实物编程处理模块根据实物编程块的计算机视觉识别码及实物编程模块的位 置信息将实物编程块序列转换为对应的功能语义序列;6)实物编程处理模块判断当前功能语义序列中是否满足该实物显示环境的语法 语义规则;如果满足,反馈程序正确的信息;如果不满足,则反馈用户相应的错误提示;7)用户根据提示信息更换相应的实物编程块;8)当根据所选实物编程的任务及任务执行规则应摆放的所有实物编程块对应的 功能语义序列满足该实物编程显示环境的语法语义判定规则时,完成该实物编程的任务。进一步的,所述实物编程处理模块将识别出的每一计算机视觉识别码分别转换为 其在实物编程语言中所代表的功能程序指令,然后根据识别的实物编程块位置信息对转换 后的功能程序指令进行排序,得到所述功能语义序列。进一步的,所述实物编程处理模块依次执行功能语义序列中的指令,判断当前指 令是否满足实物编程显示环境的语法语义规则;如果满足,反馈程序正确的提示信息;如 果不满足,则反馈用户相应的错误提示。进一步的,所述实物编程显示环境经一显示器输出;所述图像采集单元为摄像头。进一步的,所述程序正确的提示信息或错误提示信息采用所述显示器输出、或采 用声音输出、或采用传感器输出。进一步的,所述实物编程块包括开始结束编程块、方向编程块、循环编程块和传 感器编程块。一种实物编程系统,其特征在于包括若干实物编程块、图像采集单元、实物编程处 理单元、实物编程显示环境的输出设备;所述实物编程块位于所述图像采集单元的拍摄范围内,所述实物编程处理单元分别与所述实物编程显示环境的输出设备、与所述图像采集 单元连接;其中,所述实物编程处理单元存储所述实物编程显示环境的语法语义判定规则, 每一所述实物编程块的表面设有一计算机视觉识别码和一语义图形;所述实物编程处理单 元用于判断所述图像采集单元当前采集的实物编程块序列所对应的功能语义序列是否满 足所述实物编程显示环境的语法语义判定规则,并根据判断结果反馈提示信息。进一步的,所述实物编程处理单元包括计算机视觉处理模块、语法语义分析模 块;其中所述计算机视觉处理模块,用于提取所接收图像中每一所述实物编程块的计算 机视觉识别码及实物编程模块的位置信息;所述语法语义分析模块,用于判断所述图像采 集单元当前采集的实物编程块序列所对应的功能语义序列是否满足所述实物编程显示环 境的语法语义判定规则。进一步的,所述系统还包括一中间控制平台,所述实物编程处理单元经所述中间 控制平台与一个传感器连接;所述传感器用于执行所述中间控制平台转换后的所述实物编 程处理单元的指令,以及将传感器信号经所述中间件控制平台发送给所述实物编程处理单兀。进一步的,所述系统还包括语音输出装置、鼠标或笔,所述实物编程处理单元分别 与所述语音输出装置、鼠标或笔连接。本发明的编程方法主要内容包括1)选取或建立一套实物编程显示环境,并给出相应实物编程的任务和任务执行规 则。2)用户根据1)中的相应任务,通过摆放实物编程块序列完成任务;其中,每个实 物编程块的表面都贴有一个计算机视觉识别码和易于儿童理解的语义图形。3)当用户将实物编程块摆放在摄像头的拍摄范围内后,摄像头会定时的拍摄用户 摆放的实物编程块序列,上传至计算机上的实物编程处理模块。4)实物编程处理模块接收到摄像头拍摄的图像后,会利用计算机视觉相关技术对 于图像进行分析,找出每个实物编程块的相关信息。5)步骤4)中得到了每个实物编程块的相关信息后,实物编程处理模块会对于用 户通过实物编程块所编写的程序进行语法和语义的分析,并给出实时的反馈,如有错误,提 示用户出错原因,用户对程序进行修改后,重复步骤1到5直到程序完成。如果程序全部编 译正确,则用户可以运行程序。6)如果在步骤5)中,用户通过实物编程块编写的程序正确,则用户可以选择运行 程序。当用户编写程序开始执行后,根据用户编写程序的不同,系统会给出不同的多媒体反 馈效果。步骤1)进一步包括(1)在提供的实物编程显示环境下,定义相应的编程任务,供用户使用。(2)根据给出的编程任务来制定相应的任务规则。以迷宫为例,在这里需要确定迷 宫的地图即迷宫的起始点和可行走路线,还需要确定迷宫中相应的传感器单元格的种类和 位置等。(3)实物编程软件处理模块会依据当前编程任务内容,当前的任务规则,和当前用 户所摆放的实物编程块序列来确定系统的当前状态,然后,由实物编程显示环境实时显示整个系统的当前状态。系统状态包括,当前任务进度,对于用户编程结果的反馈以及对用户 错误的提示等。步骤2)进一步包括(1)用户选择相应任务关卡,并且阅读相应任务的目标和规则,用户需要在这一步 理解整个任务的目标,然后根据目标思考解决步骤。(2)根据(1)中的任务目标,用户选择相应的实物编程块,并且将实物编程块以一 定顺序放在系统的摄像头范围内,供系统识别。步骤4)进一步包括(1)使用相应的计算机视觉技术,对图像进行处理,找出每张图像中所包含的计算 机视觉识别码的相关信息。包括所识别出的每个计算机视觉识别码在图像中的位置信息和 每个识别码本身所代表的识别编号等。(2)对于识别出的位置信息,分析相互之间的逻辑拓扑关系,也就是找到每个识别 码相互之间的顺序信息。步骤5)进一步包括(1)建立计算机视觉识别码与相应实物编程块语义之间的映射关系表。本实物编 程块分为四大类,如图1所示分别是开始结束编程块、方向编程块、循环编程块和传感器 编程块。每种实物编程块都有与其对应的唯一计算机视觉识别码一一对应。二者之间的映 射关系表如图2所示。(2)将步骤2中识别出的每个计算机视觉识别码通过(1)中建立的映射表并结合 位置信息将识别出的计算机视觉识别码转换为在实物编程语言中所代表的相应功能语义 序列。(3)依据当前系统内容的不同,系统会给出相应的语法语义判定规则,以迷宫为 例,迷宫游戏的语法语义判定规则是依据迷宫地图的可行路径的相关情况制定。系统会依 据(2)中所转换好的实物编程语言的功能语义序列,判断是否满足当前迷宫的语法语义判 定规则。(4)如果(3)不满足该实物编程显示环境的语法语义判定规则,则实时通过文字、 图像、或语音等多媒体方式实时反馈给用户,并给予用户相应的错误提示帮助用户找到错 误进行修改。(5)如果(4)中满足该实物编程显示环境的语法语义判定规则,则给用户编程正 确的反馈。如果已经正确完成了程序的编写,则提示用户可以进入程序执行阶段。步骤6),进一步包括(1)逐一分别取出步骤3中所编译通过的用户程序指令进行分析执行。(2)对于执行的结果,给出多媒体的反馈效果。包括屏幕上动画生成、声音的输出 和传感器输出等等。(3)在⑴中的指令,根据内容不同,可能需要与外界设备进行交互(比如,鼠标或 笔、键盘、传感器等等),这时需要用户及时的触发相应事件,使程序能够继续执行。本发明的系统如图3所示,包括1)若干实物编程块,是儿童用来编程的最主要工具,在每个块表面均贴有 TopCode计算机视觉识别码和编程语义图形,这样一方面便于计算机的识别和处理,另外也方便了儿童理解和记忆不同的实物编程块的语义。2)摄像头,系统用来捕捉用户摆放的实物编程块序列的图像并发送给视觉处理模 块。3)实物编程处理单元,是整个实物编程系统的操作控制核心,包含计算机视觉处 理、语法语义分析传感器交互、迷宫游戏控制和结果显示等。4)Arduino单片机平台,传感器与计算机进行交互的中间控制平台。5)传感器,用来控制系统的状态和在程序执行某些阶段与系统进行交互。6)计算机,包括主机、显示器、鼠标或笔和键盘等。其中,每个实物编程块的表面上贴有TopCode计算机视觉识别码,每个码分别与 程序中特定的语义命令相对应。实物编程块分为四大类,如图1所示第一类是开始结束编 程块。有开始和结束两种编程块,表示程序的开始和结束;第二类是方向编程块,共上下左 右四个方向的四种编程块,表示迷宫中虚拟人物行走的四个方向;第三类是循环编程块,包 括循环开始、循环结束编程块用来标示一个循环的起始和结束。还有从ι到9的九个数字 编程块,用来代表循环的次数;第四类是传感器编程块,光线传感器块、按钮传感器块、温度 传感器块、振动传感器块和360度旋钮传感器块,分别与系统中的传感器类型对应。摄像头通过USB 口与计算机相连,每隔一段时间,由计算机控制摄像头对用户摆 放的实物编程块进行拍照,并将拍好的照片传给计算机上的实物编程处理模块。实物编程处理单元,包含了计算机视觉处理、语法语义分析、迷宫游戏控制、传感 器交互和结果显示等。(1)计算机视觉处理。这一部分通过TopCode计算机视觉识别库,对于摄像头拍摄 的图像进行识别处理分析。给出图像当中代表各个实物编程块的TopCode视觉识别码,并 将每个识别码在图片中的坐标和识别码本身的ID储存在系统中。然后根据识别出的每个 识别码在图片中的位置信息判断彼此之间的逻辑关系。(2)语法语义分析。所描述的对于用户所写程序的语法和语义的分析是通过对 (1)中保存的每个识别码的对应指令以及所找到的编程块之间的逻辑关系并参照相应的实 物编程语言语法规则分析得出当前程序的编译结果。并将结果实时的通过语音和图像形式 进行反馈。(3)迷宫游戏控制。整个游戏是让用户通过控制实物编程块来编写程序在相应的 迷宫地图中为迷宫中的虚拟人物选择一条从入口到出口的可行路线。迷宫游戏控制就是在 程序编译和执行的过程中,通过迷宫规则对于整个游戏的过程进行控制,并与相关模块比 如传感器,摄像头进行交互。(4)传感器交互。系统软件中这一部分,是通过监听串口数据来对于传感器状态进 行分析。通过给串口写入相应数据来对传感器进行控制。(5)结果显示。整个迷宫游戏的显示,和部分的编程反馈都是需要显示在计算机屏 幕上,这一部分就是用来对于相应的屏幕输出进行绘制和修改。Arduino单片机平台一方面通过串口与计算机相连,另一方面与传感器直接相连。 在Arduino单片机上运行的程序,一方面从串口接收计算机指令,解析后对相应的传感器 发出控制信号进行直接控制。另一方面,接收从传感器发送来的信号,解析后,将相应传感 器状态通过串口发送给运行在计算机上的实物编程处理单元进行处理。
本实物编程系统中共6类传感器按钮传感器,当用户按下按钮时处于触发状态。 既可以用来在游戏中切换编程调试状态和程序运行状态也可以用来作为程序执行状态中 的输入传感器;蜂鸣器传感器,可以发出蜂鸣声。在系统中每次进行拍照的时候,便会触发 蜂鸣传感器发声,提示用户系统即将拍照;温度传感器,用来感知外界的温度变化;光线传 感器,用来探测光线的变化;振动传感器,可以感知外界的震动;360度旋钮传感器是一个 带有旋转钮的传感器,它可以感知用户通过旋转旋钮带来的精确到1024级的角度旋转变 化。其中,声音传感器、温度传感器、光线传感器和振动传感器均用在程序执行状态下,作为 输入交互传感器的。在程序执行状态下,迷宫中人物会按照预先选定的路线进行行走,当走 到对应的传感器单元格时会停止,直到用户触发相应的传感器。计算机的主机用来存储程序,并且对于整个系统的执行提供计算设备、存储设备 提供与Arduino平台,与摄像头进行连接的接口。显示器用来对于整个实物编程系统的运 行过程进行可视化的输出。鼠标或笔是用来在系统的开始阶段进行相应的选择,比如迷宫 关卡选择等。实现本系统的具体模块结构如图4所示,包含输入模块、识别理解模块、迷宫处理 模块和结果显示模块。这四个模块之间的关系是输入模块作为整个系统的信息输入端, 主要包含,摄像头、积木、传感器、鼠标或笔等输入设备。用户可以通过这几种输入设备与系 统进行交互。摄像头是用来捕捉用户摆放的实物编程积木块序列。用户通过触发特定的 一些传感器在系统的某些阶段与系统进行交互,而鼠标或笔是让用户控制完成程序的一些 基本功能。识别理解模块包含了图像处理、传感器数据处理、界面操作理解三个部分,分别 与输入模块中的三个输入设备相对应。图像处理是用来对于摄像头拍摄到的图片通过计 算机视觉技术进行处理,找出每个实物编程块在图片中的位置。传感器数据处理是用来处 理Arduino平台通过串口发送给计算机的传感器相关数据,系统要在这一部分对于串口数 据读取保存,并进行分析,以获得传感器状态。界面操作理解,是用来对于用户通过笔或鼠 标来完成的一些操作进行判断并执行。逻辑处理模块包括语法语义分析、实时反馈、逻辑 控制、传感器交互等四部分。在识别理解模块中,已经识别出了各个实物编程块的含义和位 置,而语法语义分析就是要依据这些信息来判断用户编程的语法是否有错误,并提出操作 的语义。判断完成后,再通过命令执行并提供实时反馈,将结果提供给用户。而逻辑控制是 用来依据用户所编写的程序,执行相应的指令。在程序的运行过程中,有些特殊的阶段需要 激活特定的传感器,这就需要传感器交互部分来完成。最后,结果显示模块,是作为整个系 统的输出来与用户进行交互反馈的。这个模块主要由三部分组成图像输出、语音反馈、传 感器。显示器上呈现了整个程序的总体界面和图像反馈,给用户以最直观的反馈结果。而 语音反馈是用来在程序调试阶段,通过语音提示的方式,指出并帮助解决用户所编写的程 序问题。传感器也是系统输出的一部分,主要是指,LED传感器、蜂鸣器等,系统在特定的阶 段也会触发这些特定传感器,给用户以多通道的交互体验。本系统在现有的基于文本的计算机编程语言上,通过计算机视觉和传感器等技 术,实现了支持单人或者多人协作编程的实物编程系统。这是传统的基于文本方式编程语 言的一个突破,极大的简化了儿童以及新手学习编程的过程,使儿童及新手可以将精力集 中在解决问题和处理程序逻辑本身,尽量避免了编程语言语法学习的困扰。而且,在系统中 加入了与传感器的交互,很大程度上增加了系统对于儿童的吸引力,提高了儿童学习编程的兴趣。由于本系统容易实现且成本低廉,所以具有很好的推广潜力。在儿童教育、家庭娱 乐、儿童编程学习等环境下,用户都可以通过完成系统中的任务来学习编程相关知识。与现有技术相比,本发明具有如下的优点和技术效果1.给出了一种适合儿童的实物编程方法。本发明给出的实物编程方法语法简单,极大的避免了传统编程语言中复杂的语法 对于儿童学习编程造成的困扰,儿童可以将精力集中在解决问题本身的逻辑上。2.实现了一种通过实物进行编程的系统。本系统在普通的计算机上,通过摄像头和计算机视觉技术实现了通过实物编程块 进行编程的系统,是对传统的基于文本编程语言的补充和扩展。3.支持实时的多媒体反馈,使程序调试更加便捷。系统支持在每次对于用户编写程序的编译分析后,通过图像和语音等多媒体方式 给以用户反馈,使调试过程更加容易。4.支持多人协作编程。实物编程本身是在开放的空间完成编程过程,这个特点也使得多用户协调编程成 为可能。多个用户可以在开放的空间内对于同一个任务展开协作。5.加入了传感器交互。传感器被加入到了整个程序的执行过程当中,用户在特定的条件下,必须触发对 应的传感器方能继续游戏,增加了程序的趣味性。6.成本低廉,易于推广。相比于其他的一些实物交互系统,本系统的实现不需要特别昂贵的交互设备。


图1本系统使用的实物编程块;图2本系统TopCode识别码所对应的语义映射;图3本系统连接结构图;图4本系统的基本处理流程图;图5本系统的实现流程图。
具体实施例方式为了使本技术领域的技术人员更好的理解,下面结合附图和实施方式对本交互方 法作进一步的详细说明本发明的实现流程如图5所示。主要分为操作意图理解、编程调试和程序执行三 个阶段。首先构建操作意图理解阶段。图5此阶段主要分为用户输入监听和用户输入分析 两个模块。用户输入监听模块用来监听来自用户可操作的笔或鼠标以及传感器的输入数 据,而后,将相应的输入数据传送给用户输入分析模块来进行处理分析。下面详细说明在操 作意图理解阶段的各个模块的详细功能(1)用户输入监听用户输入监听是整个系统中获取用户输入与用户进行交互的重要部分,主要是用来对于用户的鼠标或笔的操作、按钮传感器的数据进行监听,并将结果传给(2)进行分析, 决定程序的下一步动作。1.对于鼠标及笔的输入监听。这一部分伴随着系统的启动而开始,系统主要记录 笔或者鼠标在界面上即时位置的变化,以及是否被点击或者双击等操作的发生。一旦检测 到相应的事件,便将数据记录发送给(2)进行用户行为的分析,执行相应的操作。2.对于按钮传感器的监听。在完成了迷宫关卡选择后,便进入编程调试主界面, 会启动对于按钮传感器数据的串口监听线程。按钮传感器直接与Arduino单片机平台相连 接,而Arduino平台则通过串口与运行系统的计算机相连接。每当按钮传感器被按下触发 时,运行在Arduino平台上的程序会监听到输入,并向连接到计算机的串口写入相应的数 据,此时,系统运行的串口监听线程,会检测到与Arduino平台相连接的串口的数据,并将 监听到的数据保存交由(2)进行分析处理。(2)用户行为分析在(1)中获取了鼠标或笔和按钮传感器的输入数据后,用户行为分析模块将会对 于输入数据进行相应的处理和理解,分析相应用户的行为和意图,然后执行。1.对于笔或鼠标的输入的理解分析。这一部分的分析主要分为2个阶段。第一阶 段,程序启动时,用户需要通过笔或鼠标这样的输入设备来点击用户界面上的响应按钮来 判断,是开始进行编程还是退出系统。第二阶段,当第一阶段用户选择开始进入编程后,会 进入迷宫的选择界面,用户行为分析此时需要判断用户通过笔或鼠标选择了哪一个迷宫关 卡,而后转入响应关卡的迷宫地图界面,开始进行编程游戏。2.对于按钮传感器的输入数据分析。当在(1)中,系统监听到了按钮传感器的状 态时,用户行为分析模块需要对监听到的状态数据进行分析,判断按钮传感器是否被按下 触发。如果按钮传感器被触发,则直接进入程序执行阶段,如果按钮传感器未被触发,则进 入编程调试阶段。在完成了操作理解阶段后,程序将进入编译调试阶段或者进入程序执行阶段。进 入程序执行阶段时,若没有通过编译的程序,系统将不会执行任何代码,迷宫中的虚拟人物 会停止在开始单元格上。下面对编译调试阶段进行说明。编译调试阶段是整个系统最重要的阶段。在这个阶段中,用户需要通过实时调试 和编译来完成程序的编写。通过编写程序来为迷宫中的虚拟人物选择一条从迷宫开始单元 格到迷宫结束单元格的可行路径。在这个阶段,主要是两方面的处理,一方面是通过计算机 视觉技术来对用户通过实物编程块编写的程序进行识别,编译并给出反馈。另一方面通过 蜂鸣传感器的输出来提示每个摄像头拍照的时刻。下面将详细介绍这一部分的各个功能模 块和步骤(1)程序编译反馈1.启动定时器。用户完成迷宫关卡选择进入编程调试的主界面时,系统会启动一 个定时器,直到编程调试阶段结束。定时器控制摄像头,每隔一秒进行一次拍照,并对拍照 的结果进行分析、编译和反馈。如图5所示。2.图像捕捉。本实物编程系统采用计算机视觉技术来连接物理空间和虚拟的数字 空间,需要通过摄像头来定时捕捉用户所摆放的实物编程块序列的图像,以便在后期通过 计算机视觉技术进行分析理解。本系统中的图像捕捉模块采用的是VidCapture视频捕捉库,摄像头的精度为1280*960,通过调用VidCapture中的库函数,可以将摄像头拍摄下的 图像的数据保存在一个unsigned char数组当中,供识别理解使用。除此之外,因为系统的 编译和调试过程是实时的,为了让用户在编程过程中了解程序的进程,每次当系统完成一 次图像捕捉的时候,就会令蜂鸣器传感器发出声响,以提示用户避免用手挡住系统拍照的 角度,影响效果。具体细节将会在(2)中说明。3.计算机视觉识别理解。在图像捕捉完成后,所捕捉的图像数据都保存在了一 个unsigned char数组当中。在计算机视觉识别理解部分,就是要对于保存的图像数据进 行处理,分析出图像中编程块的信息和位置。在本系统中,采用的是美国Tufts大学开发 的TopCode计算机识别库。在每个实物编程块的表面都贴有TopCode识别码。系统通过 图像捕捉模块将用户摆放的实物编程块拍摄下来,图像中包含了每个实物编程块表面的 TopCode识别码。在计算机视觉理解阶段,系统通过调用TopCode识别库中的响应识别函 数,对于图像捕捉阶段保存的图像数据unsigned char数组进行处理识别,获取了图像中每 个TopCode识别码的具体信息和他们在图像中的位置。4.语法分析和语义理解。系统通过计算机视觉识别理解后,获取了当前拍摄图像 中的所有TopCode识别码的信息和位置。在语法分析和语义理解阶段,就是要将这些信息 进行分析,与具体的程序语言中的指令相对应。这一过程,主要分为两步。a.第一步,分析所有TopCode码相互之间的逻辑和拓扑关系。由于摄像头的拍摄 视野有限,当用户摆放的实物编程块的长度超出摄像头拍摄视野的宽度时,用户需要在原 来摆放的实物编程块序列的下方重新开始新的一行进行摆放,这样可以允许用户尽量多的 摆放实物编程块。判定图像中各个实物编程块即TopCode识别码的规则是,从左到右,从上 到下。依据此规则,在第3步的基础上,先根据所有识别出的TopCode码的y坐标进行一次 排序,然后在此基础上,再根据χ坐标进行排序。经过这样两次排序后,所有的TopCode在 数组中拓扑顺序都已经确定。b.第二步,在a确定了所有的TopCode码的拓扑逻辑关系基础上,要将这些 TopCode码与对应的程序功能语义映射,而后再将这些语义转换为具体的程序指令。在系统中一共使用了 22种不同的TopCode识别码,他们与程序中的语义的对应关 系,如图2所示。所对应的功能语义为程序开始、程序结束、向上下左右四个方向行走、光 线传感器、按钮传感器、温度传感器、振动传感器、360度旋钮传感器、循环开始、循环结束以 及从1到9等九个数字,用来表示循环操作的重复次数。系统根据图2的对应关系,将识别 好的TopCode码按照原有的拓扑顺序转换为相应的功能语义代码,并保存在相应的数据容 器中。5.迷宫状态理解。在第4步完成了从TopCode识别码到程序功能语义代码的转 换。在迷宫状态理解阶段,需要根据相应的功能代码序列,结合迷宫规则和当前迷宫地图数 据来进行迷宫状态的判断,然后给出相应的反馈。迷宫状态包括,当前用户所选择的迷宫地 图相关信息,当前走到的迷宫位置和用户所摆放的实物编程块序列等。具体的过程是,依次从第4步保存的功能语义代码容器中取出相应的命令,每取 到一个命令后,根据该命令的种类结合迷宫的规则和当前地图的状态来进行判断是否符合 当前迷宫状态。如果不符合,则直接进行反馈,不执行剩下的语义命令。如果正确,则继续 从功能语义代码的容器中取出命令,重复执行此步,直到取出所有命令或某个命令不符合迷宫状态返回。具体的,在每一步判断某个命令是否符合当前迷宫状态不同的时候,也会根据命 令的不同,而判断的过程也不一样。a.方向命令。当取出的命令为方向命令时,也就是选择向某个方向进行移动的时 候,系统会读取当前迷宫的位置,而后再通过迷宫地图数据来判断,迷宫当前位置的该方向 上,是否有可行走的单元格,如果有的话,系统会在迷宫中该单元格上绘制相应方向图标, 并且继续从容器中取出下一个命令进行判断。如果该方向的迷宫单元格为传感器的话,不 能正常继续,需要进行相应的错误反馈,并提示用户该方向为传感器单元格,需要使用传感 器编程块。b.传感器指令。传感器指令主要分为5种光线传感器、按钮传感器、温度传感器、 振动传感器和360度旋钮传感器。每类传感器指令都与迷宫中相应的一类传感器单元格对 应。在取出传感器指令后,实物编程处理模块会按照前后左右的顺序,在当前所处单元格的 迷宫四周寻找是否有符合的传感器单元格,如果有的话,则传感器指令编译通过,继续取下 一指令,并在该传感器单元格上绘制相应的方向图标。如果四周没有符合的传感器,则直接 进行反馈,并提示用户,该迷宫单元格的四周并无相应传感器单元格。c.循环相关指令。在读取循环开始指令后,系统不会直接进行判断处理就反馈。 而是连续的继续取指令,直到遇到循环结束单元格或者所取指令与预期不符时结束。通常, 在一个循环中所有的指令的次序应该是,循环开始指令、循环次数指令、循环操作指令和循 环结束指令。循环开始指令标示着一个循环的开始。循环次数指令用来标明循环应该重复 执行的次数。循环结束指令用来标示一个循环的结束。在循环操作指令中,可以包含一个 或多个其他指令单元,包括四个方向指令和五个传感器指令。如果系统在这一步,顺利的取 出所有的循环指令,下一步会依据a和b的相关指令判定规则,结合迷宫状态和迷宫规则来 判断,相应的循环操作能否正确执行,如果不能正确执行,则按照a和b中的规则给出相应 的错误反馈。d.开始结束指令。在遇到开始指令时,系统会判断是否当前状态为迷宫的开始单 元格,如果是则继续,并且返回正确反馈。如果不是则返回相应的错误提示。类似的,在遇 到结束指令时,会判断是否当前迷宫状态为迷宫的结束单元格,如果是则顺利完成这一关 的编程任务。如果不是,则反馈相应的提示。6.多媒体输出。在第5步中,会根据迷宫状态理解的结果,给出相应的反馈信息。 而在语音和图像输出阶段,需要依据第5步中反馈信息,给出图像、语音或文字的输出反 馈,图像输出用来直观表示当前迷宫状态正确或者错误,而语音输出和文字输出用来提示 用户相应的错误原因。a.图像输出。主要是通过卡通脸表情的变化来给用户以直观的提示。微笑的卡通 脸表示第5步中迷宫状态理解正确。沮丧卡通脸表示迷宫状态理解有错误。b.语音输出。系统在给出图像输出的同时,还会给出相应的语音输出。语音输出 的内容是各种不同的提前录制好的人声朗读的提示语句。根据第5步中的反馈的内容和错 误的类型不同,播放不同的提示语句。c.文字输出。文字输出是系统可以给予用户的另一种反馈方式。它是将编译分析 的提示结果直接通过文字形式显示在屏幕上,方便用户进行程序的修改调试。
d.动画输出。在程序执行阶段,会自动生成迷宫中虚拟人物从迷宫入口走到迷宫 出口的动画。这部分是系统实时调试的一个重要组成部分。用户可以根据图像和语音的提示来 综合判断所编写程序的出错位置。很大程度上方便了程序调试的整个过程。(2)传感器实时输出这部分如图5所示,主要分为串口数据通信,单片机程序语义分析,发出传感器指 令,传感器输出等几个部分。主要是用来在(1)中进行图像捕捉的同时,触发蜂鸣传感器发 声,来对用户进行提示。1.串口数据通信。在⑴中每次进行图像捕捉的时候,会同时对串口进行相应的 数据写入,用来控制蜂鸣器传感器发声。2.单片机程序语义分析。在Arduino单片机上,运行着相应的程序对于串口的输 入进行监听和分析。当侦听到系统从计算机向单片机输出数据后,将会对数据进行分析,如 果是对于蜂鸣器的操作,则需要发出相应的蜂鸣器的传感器操作指令。3.发出传感器指令。由于蜂鸣器是连接在Arduino单片机平台的模拟输出端的, 因而可以通过给传感器以不同的命令,来控制蜂鸣器发声的音长和音高。4.传感器输出。传感器接收到相应的指令后,发出相应的声音。如图5所示,在编译调试阶段的最后部分,会判断是否继续进行编译调试。如果继 续编程,就返回到上面的图像捕捉,继续重复上述行为。如果选择不继续进行编程,则返回 操作理解阶段,判断用户的意图。通常有两种情况,一种是,用户在编程过程中,点击退出按 钮,退出程序的执行;另一种是,用户通过迷宫块编程成功选择了一条从开始单元格到结束 单元格的路线,并且触发了操作理解阶段中的按钮传感器,从编程调试阶段进入到了程序 运行阶段。在系统进入程序运行阶段时,系统主要进行两方面的处理。一方面,执行用户在编 程调试阶段所完成的程序,即用户选择的一条从入口到出口的迷宫路径。另一方面,监听 传感器的状态。当迷宫中的虚拟人物按照预先设定路线走到相应的传感器单元格的时候, 只有当触发了相应的传感器时才能继续,否则迷宫中的虚拟人物会停止在该传感器单元格 上。(1)程序执行如图5所示,在程序执行阶段主要分为读取程序指令,分析指令语义和指令执行 几个阶段。a.读取指令阶段。在这一阶段,系统会依次读取在编译调试阶段编译通过后保存 的用户编写指令。b.分析指令语义和指令执行。在这一阶段,将会对于在a中读取的指令进行分析 并执行。在此阶段中,并没有对于指令正确与否的判断和反馈,因为所执行的指令应该均是 经过编程调试阶段的可执行指令。在这一阶段,需要判断两个信息,1.当前是否已经走到了 结束单元格,如果是,则结束程序执行,如果不是,则继续取指令执行。2.当前虚拟人物执行 指令后是否走到传感器单元格上,如果不是传感器单元格,则更新界面和相应状态,继续执 行。如果当前走到了传感器单元格上,需要暂停取指令和执行,直到O)中监听到相应的传 感器被触发。
(2)传感器状态监听系统在进入程序执行状态的同时会启动传感器监听的任务。主要分为传感器数据 采集、传感器数据理解等几部分。a.传感器数据采集。所有的传感器都连接在Arduino单片机平台上,在单片机上 运行的程序,实时侦听各个传感器的状态,并将所有传感器在该时刻的状态,通过串口,实 时的发送传输给计算机上的实物编程系统。系统对于串口的数据进行采集,提供给下一步 进行分析。b.传感器数据理解。在a中采集到了串口传送过来的串口数据,这些数据是一组 字符串。以’ S’开头,表示开始。此后,每两个字符表示一个传感器的状态。在这两个字符 中,第一个字符表示传感器的类型,第二个字符表示传感器的状态是否被触发。如果被触 发,则第二个字符应该为’ 1’,否则为‘O’。如果(1)中程序在等待触发响应的传感器。则在执行完传感器数据理解后,需要 判断是否正确的触发了所等待的传感器。如果等待的传感器没有被正确触发,则继续对于 传感器的状态进行监听,迷宫状态停留在相应的传感器单元格块上。如果正确触发了等待 的传感器,则系统对于游戏的状态和界面进行更新,迷宫中的虚拟人物离开对应的传感器 单元格,执行下一个命令,直到走出迷宫。综上所述,本发明给出了一种通过实物编程块来进行编程的方法并实现了实物编 程系统,有效的简化了编程语言的语法,使得儿童可以集中精力在解决问题本身的逻辑上, 并加入了传感器等技术,极大的提高了儿童对于编程的兴趣。
权利要求
1.一种实物编程方法,其步骤为1)选取或建立一套实物编程显示环境,并将该实物编程显示环境的语法语义判定规则 存储到实物编程处理模块中;2)用户根据所选实物编程的任务及任务执行规则摆放实物编程块;其中,每一所述实 物编程块的表面设有一个计算机视觉识别码和一个语义图形;3)图像采集单元拍摄用户摆放的实物编程块序列,并将其上传至实物编程处理模块;4)实物编程处理模块提取所接收图像中每一所述实物编程块的计算机视觉识别码及 实物编程模块的位置信息;5)实物编程处理模块根据实物编程块的计算机视觉识别码及实物编程模块的位置信 息将实物编程块序列转换为对应的功能语义序列;6)实物编程处理模块判断当前功能语义序列中是否满足该实物显示环境的语法语义 规则;如果满足,则反馈程序正确的信息;如果不满足,则反馈用户相应的错误提示;7)用户根据提示信息更换相应的实物编程块;8)当根据所选实物编程的任务及任务执行规则应摆放的所有实物编程块对应的功能 语义序列满足该实物编程显示环境的语法语义判定规则时,完成该实物编程的任务。
2.如权利要求1所述的方法,其特征在于所述实物编程处理模块将识别出的每一计算 机视觉识别码分别转换为其在实物编程语言中所代表的功能程序指令,然后根据识别的实 物编程块位置信息对转换后的功能程序指令进行排序,得到所述功能语义序列。
3.如权利要求2所述的方法,其特征在于所述实物编程处理模块依次执行功能语义序 列中的指令,判断当前指令是否满足实物编程显示环境的语法语义规则;如果满足,反馈程 序正确的提示信息;如果不满足,则反馈用户相应的错误提示。
4.如权利要求1所述的方法,其特征在于所述实物编程显示环境经一显示器输出;所 述图像采集单元为摄像头。
5.如权利要求4所述的方法,其特征在于所述程序正确的提示信息或错误提示信息采 用所述显示器输出、或采用声音输出、或采用传感器输出。
6.如权利要求1所述的方法,其特征在于所述实物编程块包括开始结束编程块、方向 编程块、循环编程块和传感器编程块。
7.一种实物编程系统,其特征在于包括若干实物编程块、图像采集单元、实物编程处理 单元、实物编程显示环境的输出设备;所述实物编程块位于所述图像采集单元的拍摄范围 内,所述实物编程处理单元分别与所述实物编程显示环境的输出设备、与所述图像采集单 元连接;其中,所述实物编程处理单元存储所述实物编程显示环境的语法语义判定规则,每 一所述实物编程块的表面设有一计算机视觉识别码和一语义图形;所述实物编程处理单元 用于判断所述图像采集单元当前采集的实物编程块序列所对应的功能语义序列是否满足 所述实物编程显示环境的语法语义判定规则,并根据判断结果反馈提示信息。
8.如权利要求7所述的系统,其特征在于所述实物编程处理单元包括计算机视觉处 理模块、语法语义分析模块;其中所述计算机视觉处理模块,用于提取所接收图像中每一 所述实物编程块的计算机视觉识别码及实物编程模块的位置信息;所述语法语义分析模 块,用于判断所述图像采集单元当前采集的实物编程块序列所对应的功能语义序列是否满 足所述实物编程显示环境的语法语义判定规则。
9.如权利要求7所述的系统,其特征在于还包括一中间控制平台,所述实物编程处理 单元经所述中间控制平台与一个传感器连接;所述传感器用于执行所述中间控制平台转换 后的所述实物编程处理单元的指令,以及将传感器信号经所述中间件控制平台发送给所述 实物编程处理单元。
10.如权利要求7或8或9所述的系统,其特征在于还包括语音输出装置、鼠标,所述实 物编程处理单元分别与所述语音输出装置、鼠标连接。
全文摘要
本发明公开了一种实物编程方法和系统,属于人机交互领域。本方法为1)建立一套实物编程显示环境;2)图像采集单元拍摄用户所摆的实物编程块序列并将其上传至实物编程处理模块;3)实物编程处理模块根据实物编程块的计算机视觉识别码及实物编程模块的位置信息将实物编程块序列转换为对应的功能语义序列;4)判断当前功能语义序列中是否满足该实物显示环境的语法语义规则;如果不满足,则反馈相应的错误提示;5)用户根据提示信息更换相应的实物编程块;6)重复2)~5),直到所摆实物编程块序列对应的功能语义序列满足实物编程显示环境的语法语义判定规则,完成编程任务。本发明解决了儿童及新手学习编程的难题,系统成本低、易于推广。
文档编号G09B19/00GK102136208SQ201110079139
公开日2011年7月27日 申请日期2011年3月30日 优先权日2011年3月30日
发明者张铖, 戴国忠, 王丹力, 王宏安 申请人:中国科学院软件研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1