一种基于增强现实的实物编程方法及系统与流程

文档序号:14940683发布日期:2018-07-13 20:39阅读:133来源:国知局

本发明属于人机交互领域,具体涉及到一种基于增强现实的实物编程方法及系统。



背景技术:

随着信息技术的发展和普及,计算设备已经与人们的生活越来越息息相关,越来越多的儿童从小便有接触并使用计算机等计算设备的机会。随着儿童使用计算设备的深入,他们希望自己也能使用计算机开发自己的程序创作作品,传统的软件很难满足需求。国内外研究者也提出通过编程教育来让培养计算思维这一人人必备的技能。目前的编程教育系统主要分为图像化编程和实物编程两类,而实物编程通过实物交互的方式使得儿童的学习过程更加简单容易,更加适合低龄儿童的学习。

学习编程不仅对儿童的数学和科学知识方面有帮助,而且对语言、创造力和社交能力等方面的能力培养都有着积极的作用。而实物交互技术旨在利用人们与真实的物理世界互动形成的技能直接操纵和控制数字信息。儿童可以通过实物交互直接通过操作与计算设备进行交互,并且可以简化编程的过程,使得程序的结构更加直观、具体。因此,实物编程为儿童学习计算机编程提供了一条可行的途径。另一方面,随着增强现实技术的日趋成熟,基于增强现实的系统也提供给儿童体验新的交互方式的机会。

名称“一种便携式实物编程系统”(申请号:2013104147570)的专利申请公开了一种便携式的实物编程系统,其输入和输出均采用实物的方式,完全独立于电脑。名称“一种基于事件处理的实物编程工具”(申请号:201610686180.2)的专利申请公开了一种对机器人进行编程并传达事件处理概念的实物编程系统。以上专利采用了输入和输出完全实物化的方式,简化了儿童的操作和编程过程,提高了儿童的兴趣度。但是,以上专利有以下不足:儿童编程过程中缺少足够的实时反馈。



技术实现要素:

针对上述问题,本发明提出一种基于增强现实的实物编程方法及系统。该编程系统包括若干实物编程块和一个移动端的增强现实程序。本发明通过将实物编程和增强现实环境相结合来提高了系统的趣味性和娱乐性。在编程阶段,通过增强现实技术来为用户提供视觉实时反馈从而来帮助用户更容易地进行编程。

本发明的系统框架如图1所示,包括交互层、内部处理层、数据资源层。其中,交互层是系统提供给用户的用户交互界面,会将用户放的实物编程块数据交给内部处理层进行处理并提供用户语音、图像和动画的输出。内部处理层会根据数据资源层的内容对数据进行识别封装解析并给出信息反馈,最后在交互层给出输出。

本发明的技术方案为:

一种基于增强现实的实物编程系统,其包括:

1)一套基于增强现实的实物编程环境。包括若干实物编程块和一个移动端增强现实编程处理单元。其中,实物编程块为3cm3的立方体积木块,表面为彩色贴图,这样既符合儿童抓取的习惯,又能吸引儿童的兴趣。移动端增强现实编程处理单元目前主要支持安卓系统,利用安卓设备的摄像头捕捉实物编程块序列的图像,将其转化为对应的程序指令,并在真实场景中叠加程序指令的运行效果,构造增强现实的编程环境。

2)增强现实编程操作及显示环境。在使用增强现实的实物编程系统的过程中,主要分为两个阶段:编程阶段和运行阶段。在编程阶段,包括编程区和迷宫提示区。其中,在编程区,移动端增强现实编程处理单元会调用设备的摄像头对真实环境进行图像捕捉,采集用户摆放的实物编程块序列并进行程序语法分析,如果程序有语法错误,将通过增强现实技术在真实环境中的实物编程块序列上叠加提示效果,提示效果包括指向错误编程块的图片提示或文字提示。在迷宫提示区,显示的是当前任务(比如某一关卡)对应的迷宫地图信息的缩略图,为用户编程提供参考和便利。

3)设计系统内的通信数据结构。本系统的移动端增强现实编程处理单元主要是在unity3d环境中进行开发,而对实物程序图像进行分析的计算机视觉识别程序则是在安卓环境下进行开发的,所以在不同接口之间需要定义好统一的通信数据结构。在本系统中,在摄像头捕捉到编程块图像后,将java版本的计算机视觉识别算法编译为unity3d的安卓插件再嵌入到c#版本的unity3d程序提供上层调用,在这个安卓插件和unity上层调用的过程中,为方便数据的传递,系统将数据统一以json的通讯数据格式进行传递。json数据格式包含一个二维json数组,按图像中从左至右从上到下的顺序存放所有编程块的id、centerx、centery,即对应实物编程块的id、横坐标和纵坐标,利用数组下表进行访问。

4)定义实物编程的语法规则。这些规则可以分为5类:1)开始结束规则。用户开始编程的时候如果是主程序则需要将开始编程块放置在程序的第一位置,如果儿童结束一段编程之后,需要将结束编程块放置在程序的最后位置来表示一段程序的结束。2)循环控制规则。在使用循环控制逻辑的时候,用户需要将循环开始放置在循环控制逻辑的第一位置,然后是循环数字编程块,表示循环动作的次数。在循环数字块之后可以放置若干方向块,最后在循环控制逻辑结束的地方放置循环结束编程块代表循环逻辑的结束。综上,循环逻辑的摆放语法为“循环开始+循环次数+若干动作块+循环结束”的结构。3)分支控制规则。在使用分支控制规则的时候,首先需要放置分支块,然后在分支块的右侧放置条件块代表该分支的走向依赖于该条件是否满足。对于两条分支,根据分支块的二维连接特性,如果逻辑是条件满足时进行的,则放置在分支编程块的上方,以向上的方式进行一段序列,反之如果是条件不满足是则放置在分支编程块的下方。4)编程换行规则。系统目前运行的环境是安卓平板,通过安卓摄像头来捕捉用户所摆放的实物编程块序列。所以,由于移动设备的摄像头拍摄区域的限制,当编程块序列摆放的长度过长的话,会出现超出摄像头区域的情况。因此,本文定义了编程换行规则,即当用户所摆放的某一行实物编程序列已超出了摄像头的视野范围时,用户可以在下方新起一行,从摄像头视野范围的最左边开始继续摆放。依次类推。5)函数编程块操作规则。在使用函数编程块编辑子程序时,需将子程序序列放在主程序的上方并将函数编程块放在子程序首位,即位于整个编程序列的第一行左起第一个,当主程序调用该子程序时,将另一个具有相同标识的函数编程块放在主程序中。子程序中不可出现开始和结束编程块以及分支块。

5)设计实物编程块的图标。在实物编程块的设计方面,系统通过彩色贴纸包含积木块的6个面,并通过不同的图标来表达不同的语义。在编程块的前后连接面上面,通过正负极的符号来形象地表达连接的方式。

6)系统素材资源。数据资源中存储了系统运行所需要的所有数据和资源,包括对实物编程块识别码进行识别的计算机视觉识别库,提供语音反馈的语音库,存储了迷宫信息的迷宫地图以及一些图像、动画的媒体素材。

7)定义迷宫数据结构。根据迷宫的信息,通过代码编号的形式来存储迷宫信息,具体为迷宫中的每格的信息包括5位数字代码,分别表示上下左右格的信息以及自身格的信息。

其中,实物编程块作为系统编程的载体主要分为以下几类:开始编程块、结束编程块、方向编程块、循环控制编程块、分支控制编程块、函数编程块。

其中,系统通过开始结束编程块的设计可以将主程序和子程序区分开来,先对摄像头拍摄的图像进行识别程序第一行是否存在以函数编程块为首的程序,若有系统将函数块后面连接的程序保存为该函数块的定义或重载。然后识别是否存在以开始编程块为首的程序,若有则判断当前程序为主程序,在主程序中遇到函数编程块时则判断当前函数是否已定义,如果已定义则加载定义好的子程序,否则就提醒用户需要对该函数块进行定义。

其中,方向编程块主要是用来控制虚拟角色运动方向,具体包括:前进、转弯两种。其中,前进块可以通过旋转来选择前进1-4步四种语义;转弯块可以通过旋转来选择左转和右转两种语义(相对的两个面语义相同)。循环控制块用来组成循环控制逻辑,包括循环开始、循环次数、循环动作和循环结束四种编程块。分支控制编程块用来组成分支逻辑,包括分支块和条件编程块。函数编程块用来传达函数和子程序的编程概念,通过旋转可以通过不同的标识定义不同的子程序,使用该类型编程块时,需将函数编程块放在子程序首位,即位于整个编程序列的第一行左起第一个,当主程序调用该子程序时,将另一个具有相同标识的函数编程块放在主程序中。

与现有技术相比,本发明具有如下的优点和技术效果:

1.本发明将实物编程与增强现实环境相结合

本发明的编程环境是增强现实环境,可以很好的提高用户的兴趣度。

2.利用增强现实技术提丰富的实时反馈

本发明对安卓设备的摄像头进行调用,在每隔0.5s采集一次图片,将计算机视觉识别库的编译为unity3d的安卓插件再嵌入到unity程序供上层调用,识别每个编程块上的id及横纵坐标,判断其是否符合实物编程的语法规则,对编程阶段用户编写的程序进行实时的输出反馈,以增强现实的效果将图片和文字提示叠加在真实场景中,给出丰富的纠错、自动补全等实时反馈,可以更好帮助儿童学习编程。

3.编程环境不依赖于计算机。

附图说明

图1本系统的系统架构图;

图2系统的系统流程图。

具体实施方式

为了使本技术领域的技术人员更好地了解,下面结合附图和实施方式对本发明作进一步的详细说明:

本发明的系统流程如图2所示,主要分为状态控制阶段、编程阶段和运行阶段三个部分。其中,状态控制阶段主要是对系统的运行状态进行控制和切换,比如编程阶段和运行阶段之间的相互切换。也包括系统初始化、用户输入监听和用户行为分析等步骤。

1.系统初始化。由于系统的增强现实场景中使用了大量的三维元素,所以在程序开始之前,系统会对游戏场景使用的元素进行预加载,这样在用户进入编程阶段时不会出现太多的卡顿现在。

2.用户输入监听。在程序循环的入口会监听来自用户的输入并进行判断系统是处于编程状态还是运行状态。

编程阶段是系统的重要阶段,在该阶段中用户通过摆放实物编程块编写相应的规则程序。下面将详细说明编程阶段的系统处理流程:

1.图像捕捉。在进入编程阶段之后,系统会调用移动端设备的摄像头对当前摄像头的头像进行捕捉,目前系统设置的是0.5秒捕捉一次。由于这个过程由于需要调用到外设,所以系统采用的多线程的方式,这样不会造成主线程的卡顿,能够提高用户体验。

2.图像识别。由于用户编写的实物程序是通过unity3d平台调用设备获取的,而计算机视觉库则是在安卓平台调用的,所以两端需要约定统一的图像格式,系统设置的是rgb565。这样unity通过将所拍摄的编程块序列的图像转成rgb565格式传递给安卓端,安卓端程序也以rgb565的格式将图像转成代表图形信息的二进制数组。在获取到图像的二进制数组之后,系统的安卓端程序会调用计算机视觉理解库来对其进行分析,最终返回的结果是每个编程块的id。同时,每个编程块的固定位置上都有一个特殊形状的识别点,通过图像识别后可以返回当前编程块所摆放位置的横坐标和纵坐标。然后将这三个数据返回给unity端程序。在数据传递方面,由于unity程序在调用安卓程序生成的插件时只能接受简单数据类型的返回,所以在对图像进行识别之后,安卓程序将结果分装为json的格式。unity程序在接收json格式的字符串返回之后,进行解析理解为相应的id、横坐标、纵坐标组成的数组。

3.语法分析和理解。本系统支持的语法规则如技术方案中第四点所述。在获取到用户编写的实物程序的识别结果之后,会当前的实物程序进行语法分析。在系统内部会存储一张实物编程块的id和语义的对应表,在获取到id的数组之后会根据表中内容理解为相应的语义。然后根据数组中的索引来确定实物编程块id的排列顺序,再根据系统的语法规则来判断当前程序序列是否符合规则。如果不符合规则,则会通过定位当前不符合编程块的横纵坐标位置,在该位置显示提示的效果叠加在真实场景上来提醒用户错误的内容和错误的块位置。另一方面,如果当前的程序序列的结尾没有出现“结束编程”块,则代表当前程序序列还没有用编写完成。这时,系统会根据最后一个或几个编程块的语义来分析用户还需要摆放哪一种块,并在该位置给用户提示。

4.预运行。在用户完成程序的编写之后,系统会对当前程序进行预运行,并在迷宫地图的缩略图上面给出预运行的结果。这个过程首先会加载迷宫地图的信息并进行理解,然后结合地图的信息运行用户编程的程序。这样,用户可以看到自己编写的程序的预运行结果,如果出错,可以及时修改自己的程序。

当用户点击按钮切换至运行状态时,系统会进入运行阶段。改阶段主要是在真实环境下叠加三维地图和角色的信息并控制角色按照用户编写的程序进行迷宫出逃任务。具体的执行步骤如下:

1.加载游戏场景。首先,系统会根据用户选择的关卡来加载相应的游戏场景需要的资源,包括地图相关资源和角色相关资源。

2.读取程序指令。系统会从存储变量中读取用户编写的规则程序。并执行。

3.执行。在执行过程中,角色会根据用户编写的程序进行运动,最终从起点到达终点。角色运动状态分为两种:运动和等待,默认状态是等待。然后,系统会不停地从程序指令中获取指令,如果当前指令没有执行完,则角色运动状态切换为运动,并开始进行移动和播放相应的动画。由于角色的运动是一步一步加载程序序列中的指令,所以系统采用unity中协程的方式来运行,每次运动之前设置当前保存当前指令下角色需要到达的地点,在角色运动期间,每一帧都去判断角色是否到达目标地点,如果到达了则将角色运动状态置为等待,然后获取下一个指令,以此类推。

综上所述,本发明给出了一种基于增强现实的实物编程方法及系统。用户可以通过实物编程块来编写程序。在编程阶段,系统会充分利用增强现实技术的优势,为用户提供充分的实时反馈,包括错误提醒和编程提示,极大地便利了用户的变成过程,降低了编程门槛。在运行阶段,系统在增强现实环境进行虚拟角色的迷宫出逃任务,使得系统更具吸引力,激发用户的创造力和想象力。系统支持了多种编程概念,可以激发用户对计算机编程的兴趣,了解基本的编程概念,培养用户的计算思维能力。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1