发明内容
本发明是为了解决孩子在学习编程时趣味性差,还必须使用屏幕,而使用屏幕的时间和要控制孩子使用屏幕的时间之间存在冲突的不足。提供一种让孩子在学习编程时无需使用屏幕,采用积木连接方式将要执行的程序写入主控模块中,由主控模块根据写入的程序去控制被控制对象完成相应的指令动作,从而实现无需屏幕就能让孩子学习编程。并利用蓝牙mesh技术在机器人之间建立蓝牙mesh网络,让机器人之间相互传递指令和信号,让机器人之间相互学习指令和动作,然后通过机器人之间的协作完成集体任务,从而让孩子在学习编程过程中了解仿真蜂群思想,可靠性高,趣味性好的基于蓝牙mesh的机器人学习和协作系统。
以上技术问题是通过下列技术方案解决的:
基于蓝牙mesh的机器人学习和协作系统,包括可编程的操作端和若干个机器人;在每个机器人上都设有机端控制模块和与机端控制模块相连接的学习模块、协同模块和机端蓝牙mesh模块;所述操作端至少能和一个机器人上的机端蓝牙mesh模块无线连接;任意两个机器人之间都能通过各自的机端蓝牙mesh模块进行相互信息传递无线连接;若干个机器人组成一个机器人群,从而将操作端和机器人群共同组成一个能相互通信并能相互传递信息的mesh网络。
机端蓝牙mesh模块:用于机器人之间的通信,以及机器人与操作端之间的通信,组成蓝牙mesh网络。
机端控制模块,用于设置协同任务,收集反馈信息,实时展示任务执行情况,并用于创操作端向机器人发布命令和任务。还用于控制机端蓝牙mesh模块建立网络和收发信息,解析收到的来自操作端和其他机器人的信息,启动和控制学习模块和协同模块,并返回反馈信息。
学习模块:当别的机器人在完成动作的同时还学习动作指令集,跟随完成同样的动作,或通过学习,结合自身的能力,有所修正,简单的机器学习模块,模拟简单的生物智能,负责解析来自主控模块的指令,将学习到的指令进行存贮和修正,控制机器人展示学习到的成果。
协同模块:负责解析主控模块的指令,将收到的指令转化为机器人要执行的协同完成的任务,控制机器人执行动作,并实时与其他机器人通信,协同完成任务;完成同样动作的机器人,意味着要协同完成集体任务,如采蜜;所有机器人跟随第一个机器人一起移动,或报警-集体发出某种声音和光警告敌人,或作战-同时使用武器进攻等。集体任务事先通过主控模块,由电脑设置,然后通过协同模块分布式执行。
机端蓝牙mesh模块:通过蓝牙通信,将操作端和机器人群组成蓝牙mesh网络,相互通信,传递信息。
当多个机器人存在时,机器人之间通过机端蓝牙mesh模块组建mesh网络,并在机器人之间传递指令和信号。有最新信息的机器人,通过发送给其他机器人动作指令,并开始执行动作,如机器人跳八字舞。收到动作指令的机器人,学习和解析指令,开始执行相同的动作,如跳同样的舞蹈表示信息已接收。当多个机器人重复相同的动作之后,协同任务开启,这些机器人将协同完成这个信息所对应的任务。如舞蹈信息表示的是我找到了一个好地方,则其余的机器人会跟随这个机器人去某一个地方。如舞蹈信息表示的是有敌人入侵,则其余的机器人会发出同样的警示的叫声,并使用武器开始组织进攻。
让孩子在学习编程时无需使用屏幕,采用积木连接方式将要执行的程序写入主控模块中,由主控模块根据写入的程序去控制被控制对象完成相应的指令动作,从而实现无需屏幕就能让孩子学习编程。并利用蓝牙mesh技术在机器人之间建立蓝牙mesh网络,让机器人之间相互传递指令和信号,让机器人之间相互学习指令和动作,然后通过机器人之间的协作完成集体任务,从而让孩子在学习编程过程中了解仿真蜂群思想,可靠性高,趣味性好。
作为优选,操作端包括若干个积木,在每个积木上都分别设有能将任意两个积木进行两两相互可分开式固定对接连接在一起的固定连接机构和能将任意两个积木进行两两相互可分开式数据线对接连接在一起的数据传输接口;在若干个积木中包括一个主控积木、若干个指令积木和若干个参数积木;在主控积木上分别设有主控模块和木端蓝牙mesh模块,木端蓝牙mesh模块和设置在主控积木上的数据传输接口分别与主控模块连接;在每个指令积木上分别设有指令模块,设置在同一个指令积木上的数据传输接口和指令模块连接;在每个参数积木上分别设有参数模块,设置在同一个参数积木上的数据传输接口和参数模块连接;主控积木上的木端蓝牙mesh模块至少能和一个机器人上的机端蓝牙mesh模块无线连接;从而将主控积木和机器人群共同组成一个能相互通信并能相互传递信息的mesh网络。
让孩子直接用很多个简单的积木来发挥无限想象力的编程学习。将机器人本身尽量简化,只需要支持一些简单的动作,机器智能也相对简单,而是通过蜂群思维,通过网络,完成令人惊叹的选择和任务。正如蜂群,每只机器人的行为都是简单的,可预测的,但是蜂群的行为不是蜂后或是哪只机器人决定的,而是通过群体相互之间的影响而产生,正如一只看不见的手,在控制着蜂群的行为。这是一个非常有趣的世界,其不可预测性,会强烈地吸引孩子探索蜂群思维的奥秘,让他们沉浸在编程的世界里,了解什么是万物互联,了解什么是分布式计算,了解什么是机器学习。这些目前连大人们都难以理解的世界,恰恰就是孩子们将来要面对的真实世界的模样。
通过积木这种有形模块让孩子边玩边学习编程。制作一个个有形的积木模块代替复杂的计算机代码,有了它就能让小孩都可以学习编程了。通过积木进行有形编程,正是利用孩子们在玩乐当中学习的天性与计算机思维结合在一起,从而让编程变得简单容易。
本发明将scratch里的部分指令搬到了现实中,成为现实中可搭接的积木,孩子能完全脱离屏幕,直接通过指令积木,完成编程,控制被控制对象机器人等。
同时,本发明相比于Google的ProjectBloks这样的有形编程,本发明解决了能在同一个产品里,将有形编程直接过渡到软件编程,实现编程教育的目的,让孩子最终能够学会通过编程语言进行编程。
本发明可实时将积木搭建出的指令同步到iPad或电脑中,实时查看转化成的高级编程语言,如JavaScript或Python,并可执行或单步执行程序,进行debug编程工具。
作为优选,操作端还包括电脑,所述电脑至少能和一个机器人上的机端蓝牙mesh模块无线连接;所述电脑还能和所述主控积木上的木端蓝牙mesh模块无线连接;从而将电脑、主控积木和机器人群共同组成一个能相互通信并能相互传递信息的mesh网络。
作为优选,所述电脑或者包括台式电脑、或者包括微型电脑、或者包括iPad。
作为优选,若干个指令积木则有若干个指令模块,并且这若干个指令模块为基础指令集;基础指令集包括执行函数指令、循环控制指令、逻辑判断指令和基本动作指令;若干个参数积木则有若干个参数模块,并且这若干个参数模块是为基础指令集提供指令参数的辅助指令集;所述辅助指令集包括用于执行函数指令的函数名、可调节数字模块、可调节角度模块和可调节是否模块。
基础指令集和辅助指令集的配合能让机器人运行孩子需要的各种动作,大大提高了机器人运行动作的使用范围,便于孩子探索机器人的各种运行动作,增加编程兴趣和玩积木的乐趣。
作为优选,固定连接机构包括能相互磁性吸住的若干个磁铁;在积木的每个壁面内都分别嵌入有至少一个磁铁;两个积木之间通过设置在这两个积木对应壁面内的磁铁磁性吸住后固定对接连接在一起;数据传输接口包括若干个插座和与插座匹配的插头,在每个积木的至少一个壁面上设置有插座,在每个积木的至少一个壁面上设置有插头,并且在同一个积木上的插头和插座不在该积木的同一个壁面上;设置在主控积木上的插头和插座分别与设置在该主控积木上的主控模块连接;设置在同一个指令积木上的插头和插座分别与设置在该个指令积木上的指令模块连接;设置在同一个参数积木上的插头和插座分别与设置在该个参数积木上的参数模块连接。
这种结构易于将两个积木对接连接在一起,并且两个积木对接连接后,这两个积木之间的数据信号传输稳定性好,信号不易中断。
作为优选,在积木内设有木腔,在木腔内设有与该积木上的插头个数相等的支点和与支点个数相等的拉绳,在每个支点上分别设有杠杆;在支点左方的木腔内设有一号定滑轮,在支点右方的木腔内设有二号定滑轮;在插头处的积木内设有与木腔相连通的头滑孔,插头滑动连接在头滑孔内,并在头滑孔内设有能将插头往头滑孔的木腔端挤压的头挤压弹簧;在磁铁处的积木内设有与木腔相连通的磁滑孔,磁铁滑动设置在磁滑孔内,并在磁滑孔内设有能将磁铁往磁滑孔的木腔端挤压的磁挤压弹簧;杠杆的阻力臂端部滑动连接在插头的里端面上;拉绳的一端固定连接在杠杆的动力臂端部,拉绳的另一端依次经过二号定滑轮和一号定滑轮后固定连接在磁铁的里端面上;杠杆的动力臂长度大于杠杆的阻力臂长度。
这种结构可靠性高,在两个积木通过磁铁固定连接在一起后,磁铁的力还能同时让其中一个积木的插头上的金属插条插入连接在另一个积木的插座的插孔内。并在这两个积木分开后,插头上的金属插条缩入到积木内,易于使用,在使用过程中插头上的金属插条不易伤到手,使用简单,安全方便,可靠性好。
作为优选,在插孔内的上孔壁上向上设有与插头的金属插头个数相等的竖直孔,在每个竖直孔上方的积木内都分别设有与对应竖直孔相连通的水平孔;在每个水平孔内都分别设有能左右移动的右磁铁,在每个右磁铁的下表面上都设有从左往右朝下倾斜的挤压斜面,在每个右磁体右方的水平孔内都分别设有水平拉力弹簧,每根水平拉力弹簧的两端分别固定连接在对应右磁铁的右端面上和对应水平孔的右孔壁上;
在每个竖直孔内分别设有能上下滑动的绝缘竖直滑块,在每个绝缘竖直滑块上方的对应竖直孔内分别设有能上下滑动的竖直柱,在每个绝缘竖直滑块与对应竖直柱之间的对应竖直孔内分别活动设有竖直弹簧,每条竖直弹簧的上端固定连接在对应竖直柱的下表面上,每条竖直弹簧的下端分别固定连接在对应绝缘竖直滑块的上表面上;
在插孔的里端面上端分别设有与插头的金属插条个数相等且与金属插条一对一匹配对应的弹性导电金属片,
每个弹性导电金属片的外端分别位于对应绝缘竖直滑块的正下方;弹性导电金属片导电连接在数据传输接口的数据传输线上;
在弹性导电金属片的外端设有开口朝上的圆弧段,并且弹性导电金属片的圆弧段外端位于绝缘竖直滑块的正下方;
在每个绝缘竖直滑块的下端面上设有下滚珠;在每个竖直柱的上端面上设有上滚珠;每个下滚珠分别压紧在对应弹性导电金属片的上表面外端,每个上滚珠分别压紧在对应右磁铁的挤压斜面上;
在头滑孔内的上孔壁上向上设有与水平孔个数相等且一对一匹配对应的装磁孔,在每个装磁孔内都分别设有能与对应右磁铁的磁力相吸的左磁铁。
当插头的金属插条插入连接在插座的插孔内后,右磁铁受到左磁铁的磁力吸引,右磁铁在水平孔内向左移动,挤压斜面挤压上滚珠向下移动,使得竖直柱向下移动,竖直柱向下移动的结果就会让绝缘竖直滑块向下移动,从而使得下滚珠向下移动,使得下滚珠压紧在弹性导电金属片的上表面外端,从而让弹性导电金属片的下表面压紧导电连接在插头的金属插条上,使得金属插条与数据传输接口的数据传输线之间导通,从而使得两个积木之间的数据传输更加稳定可靠。当插头的金属插条从插座的插孔内退出后,右磁铁在水平拉力弹簧的拉力作用下向右移动,下滚珠的弹性导电金属片向上的弹力作用下向上移动。从而使得上滚珠向上移动来降低下滚珠压在弹性导电金属片上的压力,可靠性好。
作为优选在右磁铁的上表面上和右磁铁的下表面上都分别设有若干个滚动槽,在每个滚动槽内分别设有滚动轴。
滚动轴使得右磁铁易于在水平孔内滚动,可靠性好。
作为优选,还包括闯关板、闯关图、可移动软磁片和可移动磁性障碍;在每个机器人上还设有分别与机端控制模块相连接的行动模块、声音模块、发光模块、摄像头模块、巡线模块和传感器模块。
将屏幕上的闯关场景拉到现实中,利用闯关板让孩子完成闯关。还可以通过黑色磁片和巡线模块,自己设计闯关。
通过机器人闯关方式学习编程,让孩子在学习编程时无需使用屏幕,采用积木连接方式将要执行的程序写入主控模块中,由主控模块根据写入的程序去控制被控制对象完成相应的指令动作,从而实现无需屏幕就能让孩子学习编程,可靠性高,趣味性好。
本发明能够达到如下效果:
本发明让孩子在学习编程时无需使用屏幕,采用积木连接方式将要执行的程序写入主控模块中,由主控模块根据写入的程序去控制被控制对象完成相应的指令动作,从而实现无需屏幕就能让孩子学习编程。并利用蓝牙mesh技术在机器人之间建立蓝牙mesh网络,让机器人之间相互传递指令和信号,让机器人之间相互学习指令和动作,然后通过机器人之间的协作完成集体任务,从而让孩子在学习编程过程中了解仿真蜂群思想,可靠性高,趣味性好。
具体实施方式
下面结合附图与实施例对本发明作进一步的说明。
实施例,基于蓝牙mesh的机器人学习和协作系统,参见图1、图2、图14所示,包括可编程的操作端91和若干个机器人48;在每个机器人上都设有机端控制模块51和与机端控制模块相连接的学习模块、协同模块和机端蓝牙mesh模块37;所述操作端至少能和一个机器人上的机端蓝牙mesh模块无线连接;任意两个机器人之间都能通过各自的机端蓝牙mesh模块进行相互信息传递无线连接;若干个机器人组成一个机器人群95,从而将操作端和机器人群共同组成一个能相互通信并能相互传递信息的mesh网络。
操作端包括若干个积木92,在每个积木上都分别设有能将任意两个积木进行两两相互可分开式固定对接连接在一起的固定连接机构和能将任意两个积木进行两两相互可分开式数据线对接连接在一起的数据传输接口;在若干个积木中包括一个主控积木26、若干个指令积木1和若干个参数积木21;在主控积木上分别设有主控模块44和木端蓝牙mesh模块43,木端蓝牙mesh模块和设置在主控积木上的数据传输接口27分别与主控模块连接;在每个指令积木上分别设有指令模块45,设置在同一个指令积木上的数据传输接口30和指令模块连接;在每个参数积木上分别设有参数模块46,设置在同一个参数积木上的数据传输接口22和参数模块连接;主控积木上的木端蓝牙mesh模块至少能和一个机器人上的机端蓝牙mesh模块无线连接;从而将主控积木和机器人群共同组成一个能相互通信并能相互传递信息的mesh网络。
参见图3所示,主控积木26上的固定连接机构29还没固定对接连接在指令积木1上的固定连接机构31上,并且此时指令积木1上的数据传输接口30也没对接连接在主控积木26上的数据传输接口27上,指令积木1上的固定连接机构34也没固定对接连接在参数积木21上的固定连接机构35上,指令积木1上的数据传输接口25也没对接连接在参数积木21上的数据传输接口22上。
在指令积木上还设有数据传输接口24。在参数积木上还设有数据传输接口23。
在主控积木上还分别设有固定连接机构28、数据传输接口32和数据传输接口33。
参见图4所示,主控积木26上的固定连接机构29已经固定对接连接在指令积木1上的固定连接机构31上,并且此时指令积木1上的数据传输接口30也已经对接连接在主控积木26上的数据传输接口27上,指令积木1上的固定连接机构34也已经固定对接连接在参数积木21上的固定连接机构35上,指令积木1上的数据传输接口25也已经对接连接在参数积木21上的数据传输接口22上。
在图5中,指令积木1上的磁铁14还没被参数积木21上的磁铁18磁性吸住。指令积木1上的插头15的金属插条16还没插入连接在参数积木21上的插座20的插孔19内。
在图6中,指令积木1上的磁铁14已经被参数积木21上的磁铁18磁性吸住。指令积木1上的插头15的金属插条16已经插入连接在参数积木21上的插座20的插孔19内。
参见图5、图6、图12、图13所示,固定连接机构包括能相互磁性吸住的若干个磁铁;在积木的每个壁面内都分别嵌入有至少一个磁铁;两个积木之间通过设置在这两个积木对应壁面内的磁铁磁性吸住后固定对接连接在一起;数据传输接口包括若干个插座和与插座匹配的插头,在每个积木的至少一个壁面上设置有插座,在每个积木的至少一个壁面上设置有插头,并且在同一个积木上的插头和插座不在该积木的同一个壁面上;设置在主控积木上的插头和插座分别与设置在该主控积木上的主控模块连接;设置在同一个指令积木上的插头和插座分别与设置在该个指令积木上的指令模块连接;设置在同一个参数积木上的插头和插座分别与设置在该个参数积木上的参数模块连接。
在积木内设有木腔10,在木腔内设有与该积木上的插头个数相等的支点6和与支点个数相等的拉绳5,在每个支点上分别设有杠杆3;在支点左方的木腔内设有一号定滑轮2,在支点右方的木腔内设有二号定滑轮9;在插头处的积木内设有与木腔相连通的头滑孔13,插头滑动连接在头滑孔内,并在头滑孔内设有能将插头往头滑孔的木腔端挤压的头挤压弹簧11;在磁铁处的积木内设有与木腔相连通的磁滑孔17,磁铁滑动设置在磁滑孔内,并在磁滑孔内设有能将磁铁往磁滑孔的木腔端挤压的磁挤压弹簧12;杠杆的阻力臂4端部滑动连接在插头的里端面上;拉绳的一端固定连接在杠杆的动力臂7端部,拉绳的另一端依次经过二号定滑轮和一号定滑轮后固定连接在磁铁的里端面上;杠杆的动力臂长度大于杠杆的阻力臂长度。
杠杆的阻力臂4端部设有滚轮8,滚轮滑动连接在插头的里端面上。
在插孔内的上孔壁上向上设有与插头的金属插头个数相等的竖直孔65,在每个竖直孔上方的积木内都分别设有与对应竖直孔相连通的水平孔87;在每个水平孔内都分别设有能左右移动的右磁铁80,在每个右磁铁的下表面上都设有从左往右朝下倾斜的挤压斜面84,在每个右磁体右方的水平孔内都分别设有水平拉力弹簧88,每根水平拉力弹簧的两端分别固定连接在对应右磁铁的右端面上和对应水平孔的右孔壁上;
在每个竖直孔内分别设有能上下滑动的绝缘竖直滑块69,在每个绝缘竖直滑块上方的对应竖直孔内分别设有能上下滑动的竖直柱90,在每个绝缘竖直滑块与对应竖直柱之间的对应竖直孔内分别活动设有竖直弹簧68,每条竖直弹簧的上端固定连接在对应竖直柱的下表面上,每条竖直弹簧的下端分别固定连接在对应绝缘竖直滑块的上表面上;
在插孔的里端面上端分别设有与插头的金属插条个数相等且与金属插条一对一匹配对应的弹性导电金属片71,每个弹性导电金属片的外端分别位于对应绝缘竖直滑块的正下方;弹性导电金属片导电连接在数据传输接口的数据传输线上;
在弹性导电金属片的外端设有开口朝上的圆弧段70,并且弹性导电金属片的圆弧段外端位于绝缘竖直滑块的正下方;
在每个绝缘竖直滑块的下端面上设有下滚珠64;在每个竖直柱的上端面上设有上滚珠85;每个下滚珠分别压紧在对应弹性导电金属片的上表面外端,每个上滚珠分别压紧在对应右磁铁的挤压斜面上;
在头滑孔内的上孔壁上向上设有与水平孔个数相等且一对一匹配对应的装磁孔78,在每个装磁孔内都分别设有能与对应右磁铁的磁力相吸的左磁铁79。
在右磁铁的上表面上和右磁铁的下表面上都分别设有若干个滚动槽,在每个滚动槽内分别设有滚动轴82。
右磁铁包括左段磁铁81、中段磁铁83和右段磁铁86,左段磁铁的右端与中段磁铁的左端一体连接,右段磁铁的左端与中段磁铁的右端一体连接,挤压斜面设置在中段磁铁的下表面上。在右磁铁右方的水平孔内设有限位块89。
当插头的金属插条插入连接在插座的插孔内后,右磁铁受到左磁铁的磁力吸引,右磁铁在水平孔内向左移动,挤压斜面挤压上滚珠向下移动,使得竖直柱向下移动,竖直柱向下移动的结果就会让绝缘竖直滑块向下移动,从而使得下滚珠向下移动,使得下滚珠压紧在弹性导电金属片的上表面外端,从而让弹性导电金属片的下表面压紧导电连接在插头的金属插条上,使得金属插条与数据传输接口的数据传输线之间导通,从而使得两个积木之间的数据传输更加稳定可靠。当插头的金属插条从插座的插孔内退出后,右磁铁在水平拉力弹簧的拉力作用下向右移动,下滚珠的弹性导电金属片向上的弹力作用下向上移动。从而使得上滚珠向上移动来降低下滚珠压在弹性导电金属片上的压力,可靠性好。
参见图14、图15、图17所示,系统还包括闯关板205、闯关图206、可移动软磁片207、可移动磁性障碍208和可编程的积木92,在每个机器人上还设有分别与机端控制模块相连接的行动模块63、声音模块59、发光模块60、摄像头模块200、巡线模块201、传感器模块61和扩展模块62。
在机器人上设有扩展模块、机端控制模块、以及分别与机端控制模块相连接的机端蓝牙mesh模块、行动模块、声音模块、发光模块、摄像头模块和巡线模块201;机端控制模块、机端蓝牙mesh模块、行动模块、声音模块、发光模块、摄像头模块和巡线模块都封装在机器人内;在机器人上设有两个分别与机端控制模块连接的标准接口;扩展模块包括传感器模块61和语音识别模块204,传感器模块通过一个标准接口与机端控制模块连接,语音识别模块通过另一个标准接口与机端控制模块连接。将机端控制模块51、机端蓝牙mesh模块37、行动模块63、声音模块59、发光模块60、摄像头模块200和巡线模块201都封装在机器人内部203。
假如用蜜蜂209代表机器人48,用花朵211代表寻找物210,则机器人每闯过一关,机器人就需要按照预定的路线走;而机器人只有按照设定的路线走才能找到预先设定的花朵。当机器人走错路线时,机器人就不能找到设定的滑动,通过判断机器人是否能够找到设定的花朵就能确定机器人是否走错路线,进而也就判断出了机器人是否也走错了路线没,可靠性高。
操作端还包括电脑93,所述电脑至少能和一个机器人上的机端蓝牙mesh模块无线连接;所述电脑还能和所述主控积木上的木端蓝牙mesh模块无线连接;从而将电脑、主控积木和机器人群共同组成一个能相互通信并能相互传递信息的mesh网络。
所述电脑或者包括台式电脑94、或者包括微型电脑39、或者包括iPad40。
若干个指令积木则有若干个指令模块45,并且这若干个指令模块为基础指令集;基础指令集包括执行函数指令、循环控制指令、逻辑判断指令和基本动作指令;若干个参数积木则有若干个参数模块,并且这若干个参数模块是为基础指令集提供指令参数的辅助指令集;所述辅助指令集包括用于执行函数指令的函数名、可调节数字模块、可调节角度模块和可调节是否模块。
图13是机器人端和主控积木端中部分模块的功能说明。图10为指令模块的一种电路原理图;图11为参数模块的一种电路原理图。
所述木端蓝牙mesh模块和所述机端蓝牙mesh模块分别包括wifi和或蓝牙。
若干个指令积木则有若干个指令模块,并且这若干个指令模块为基础指令集;基础指令集包括执行函数指令、循环控制指令、逻辑判断指令和基本动作指令;若干个参数积木则有若干个参数模块,并且这若干个参数模块是为基础指令集提供指令参数的辅助指令集;所述辅助指令集包括用于执行函数指令的函数名、可调节数字模块、可调节角度模块和可调节是否模块。
机器人48,所述基本动作指令包括能让机器人执行基本动作的机器人基本动作指令,所述机器人基本动作指令包括前进指令、后退指令、左转指令、右转指令、转圈指令、发声指令、闪光指令、前倾斜指令、后倾斜指令、左倾斜指令、右倾斜指令、抬起指令和放下指令。
行动模块能根据指令模块的指令让机器人进行各种基本动作。
机器人48通过设置在机器人48上的机端蓝牙mesh模块37与主控积木26上的木端蓝牙mesh模块43无线连接。机器人48上的机端控制模块51与设置在该机器人48上的机端蓝牙mesh模块51连接。机器人48上的声音模块59、发光模块60、传感器模块61、扩展模块62和行动模块63分别与机器人48上的机端控制模块51连接。
参见图20所示,蓝牙mesh组网的流程以及iPad设置协同任务的流程如下。
iPad以及各个机器人在主模块启动后,都会去启动蓝牙mesh模块,加入mesh网络中,
iPad上通过界面设置协同任务,即将自定义的或者系统自带的动作集,与系统设定好的协同任务如侦查、采蜜、报警、作战等进行关联。
机器人1在收到iPad发布的协同任务设置后,将动作集与协同任务关联关系进行存储,并将设置继续传递给下一个节点,即机器人2。图8为存储函数定义的流程图。
机器人2在收到iPad发布的协同任务设置后,将动作集与协同任务关联关系进行存储,如果还有下一个节点,则继续传递。
参见图19所示,机器人自学习过程与分布式管理完成协同任务的流程如下:
iPad发送动作集1的指令给机器人1之前已通过任务设定流程与协同任务1进行了关联;
机器人1执行动作集1,并开始广播动作集1的指令;
其余机器人如机器人2在收到动作集1的广播指令后,存储该动作集指令,并开始跟随机器人1完成同样的动作,以表示接收并同意;
iPad广播触发协同任务1的指令,所有执行动作集1的机器人开始协同完成任务1,如侦查、采蜜、报警、作战等;
执行过程中,机器人发送给iPad反馈信息,iPad展示协同任务完成情况。
闯关板的闯关策略如下:
8.1、闯关板将虚拟的闯关移到现实当中,每闯过一关,机器人要找到预先设定的花朵,就需要按照预定的路线走;
8.2、闯关图就是已经画好的路线图,用画好的路线图代表预设好的闯关;
8.3、孩子需要根据路线图,设计程序,搭建指令积木,并执行程序;
8.4、机器人上的巡线模块会检查机器人是否在预定的路线上行进,如果偏离路线,则发送消息给机端控制模块,声音模块提示程序设计错误;
8.5、当机器人到达目的地,巡线模块发送消息给机端控制模块,声音模块发出成功闯关的欢呼声;
8.6、自由设定关卡:
8.6.1、孩子能在空的背景图上自由设定关卡;用可移动软磁片吸附在闯关板上,设定路线;
8.6.2、起始点和目的地都要用不同颜色的可移动软磁片表示;
8.6.3、设定关卡后,孩子设定程序,搭建指令积木,并执行程序;
8.6.4、机器人上的巡线模块会检查机器人是否在路线上行进,如果偏离路线,则发送消息给机端控制模块,声音模块提示程序设计错误;
8.6.5、当机器人到达目的地后,巡线模块发送消息给机端控制模块,声音模块发出成功闯关的欢呼声;
8.7、可移动磁性障碍:
若传感器模块检测到障碍,则根据程序执行转弯或者后退;当自由设定关卡时,则利用可移动磁性障碍,在闯关板上自由设置障碍;并通过传感器模块的全局变量,设定程序。
则机器人48每闯过一关,机器人就需要按照预定的路线走;而机器人只有按照设定的路线走才能找到预先设定的花朵211。当机器人走错路线时,机器人就不能找到设定的滑动,通过判断机器人是否能够找到设定的花朵就能确定机器人是否走错路线,进而也就判断出了机器人是否也走错了路线没,可靠性高。
闯关板的闯关过程如下:参见图16、图17所示。
9.1、在闯关板上吸附上闯关图;
9.2、开启机器人,将机器人放在闯关图的起始点上;
9.3、搭建指令积木,并点击按钮,指令积木通过机端蓝牙mesh模块传送指令给机器人;
9.4、机器人收到指令,开始执行指令;
9.5、巡线模块始终监视机器人的行走路线是否在预设的路线上,如果偏离路线,则通知机端控制模块,发出报错的语音;
9.6、如果机器人按照预设的路线行走,机器人到达终点212后,巡线模块通知机端控制模块,声音模块发出成功的语音;
9.7、当自由设置关卡时,闯关图上没有预设的路线,由孩子将起点213、终点和行驶路线的磁片吸附在闯关板上,其余流程同前;
9.8、在自由设置障碍时,孩子将可移动磁性障碍吸附在闯关板上,其余流程同前。
主控模块:基于树莓派(Raspberry Pi)系统,如果是树莓派0,需要加上wifi模块和蓝牙模块。如果是树莓派3(树莓派3自带wifi和蓝牙)。开始模块通过磁吸方式,通过usb转uart芯片与树莓派通信。运行nodejs,通过蓝牙模块控制机器人。
若干指令模块:为基础指令集,包括执行函数指令(Func())、循环控制指令(for循环)、逻辑判断(条件)指令(if/else)、基本动作指令(前进、后退、左转、右转、转圈、发声、LED闪灯等)。
指令模块的主要功能:存储自身的指令关键字,供主控模块识别;读取参数模块,将参数加入自身的指令;收集下方的指令,加入自身的指令,上传;读取当前正在执行的指令ID,如果符合自身ID,则高亮LED灯。指令模块的电路原理示意图如图10所示。
若干参数模块:辅助基础指令,提供指令参数,包括函数名(用于执行函数指令)、可调节数字模块、可调节角度模块、可调节是否模块等。参数模块的电路原理示意图如图11所示。
参数模块的主要功能:可调节参数数值,包括数字、角度、TRUE/FALSE等;可调节关系,包括等于、大于、小于、大于等于、小于等于等;承载函数名,用于定义和执行自定义函数。
指令模块的核心芯片为Attiny85,用于接收输入指令,处理输入指令,并返回输出指令。
当”结束”积木上的开关被触发时,结束指令开始向上传递指令。收到下方的指令集后,当前指令积木会询问参数模块。如果后面吸附着参数模块,参数模块会返回当前设定的参数值,如果参数模块后面还吸附着其他的参数模块,参数模块会继续向后询问。当前指令积木收到参数模块返回后,将自己存储的指令和参数组成完整的指令,加入从下方收到的指令集,组成新的指令集,向上传递。开始模块收到了全部指令集后,加入开始模块自身的指令,通过磁吸弹针将完整的指令集传递给主控模块。
参数模块的核心芯片也是Attiny85,主要功能就是读取电位器的电压值,通过ADC转换成预设的枚举值(不同的参数模块,设置不同的枚举变量),有数值的选择,有角度的选择,有是否的选择,也有运算符号的选择(如=,<,>,<=,>=等)。
参数模块是可以扩展的,可以是一个,也支持多个参数模块串联。
参见图9所示,指令积木控制机器人的流程为:
主控积木的主控模块启动后,通过蓝牙模块,搜索机器人和iPad,主控模块作为蓝牙主机,机器人和iPad作为蓝牙外设,机器人和iPad随时启动,随时蓝牙连接成功。
孩子开始根据自己的意愿或课程要求,自行设计程序,添加指令模块和参数模块,参数模块上的数字、角度、是否等可以随意调整,参数模块还包含针对传感器状态的判断。
完成指令模块和参数模块的搭建后,打开开关,完成指令。主控模块将指令通过蓝牙同步给iPad。
同时,主控模块基于blockly平台解析指令,生成可执行程序并运行,执行过程中将控制机器人的命令通过蓝牙发送给机器人。
iPad的程序启动后,在蓝牙连接主控模块后,一直监听蓝牙输入。收到主控模块同步的指令后,基于blockly平台解析指令,将指令展示为blockly积木形式,转换成JavaScript和Python语言,并生成可执行程序,开始运行,在iPad上画出机器人的行走路线。
机器人程序启动后,在蓝牙连接主控模块后,一直监听蓝牙输入。机器人上的传感器通过蓝牙不断返回传感器状态,主控模块通过全局变量,记录传感器状态值。收到主控模块发出的命令后,机器人执行命令,完成舞蹈动作或者闯关。
主控积木的主控模块为树莓派(RaspberryPi)的linux操作系统,运行环境为Nodejs,加载googleblockly模块。利用googleblockly平台提供的接口,实现对于指令积木的xml解析,指令积木的功能配置和参数配置。
例如:
1、调用为blockly封装的nodejs模块。
varBlockly=require(’node-blockly’)。
2、通过Blockly的Blocks函数,对指令积木进行定义。
Blockly.Blocks[’bee_moveforward’]={
init:function(){
this.appendDummyInput()
.appendField(″向前走″)
.appendField(newBlockly.FieldNumber(10,1,10000),″moveSteps″)
.appendField(″步″);
this.setPreviousStatement(true,null);
this.setNextStatement(true,null);
this.setColour(255);
this.setTooltip(’letbeemoveforward’);
this.setHelpUrl(”);
}}。
3、通过JavaScript函数,定义指令积木对应的JavaScript函数。
Blockly.JavaScript[’bee_moveforward’]=function(block){
varnumber_movesteps=block.getFieldValue(’moveSteps’);
varcode=″Bee.moveForward″+″(″+number_movesteps+″);\n″;
returncode;
}。
4、定义对应函数需要完成的功能,比如通过蓝牙向机器人发出向前走的指令。
Bee.moveForward=function(number_steps){
console.log(″moveforward″+number_steps);
BLE.runBLECommand(″command″,″moveForward″,number_steps)
}。
5、通过Blockly.Xml.textToDom函数,将主控模块读到的积木指令对应xml转换为blockly可以识别的workspace,然后通过Blockly.JavaScript.workspaceToCode函数把workspace转换为可执行的JavaScript代码:
Bee.workspace=newBlockly.Workspace();
varcommandXml=XML.generateXml(commandString);
try{
varxml=Blockly.Xml.textToDom(commandXml);
}catch(e){console.log(e);
Return
}
Blockly.Xml.domToWorkspace(xml,Bee.workspace);
varcode=Blockly.JavaScript.workspaceToCode(Bee.workspace)。
自定义函数模块:
当机器人需要完成复杂的动作组合时,指令模块和参数模块就会越积越多,不仅浪费模块,也不能养成好的编程习惯。所以,本项目还支持自定义的函数模块,让孩子学会通过函数来优雅地实现复杂的功能。
自定义函数模块需要:
主控模块:用于读取函数定义,并写入函数定义文件;
定义模块:承载函数定义的关键字;
函数模块:承载函数名,如“新动作1”,“新动作2”,硬件同参数模块;
指令模块:用于搭建完成定义函数功能的各个指令;
参数模块:用于搭建完成定义函数功能的指令参数。
自定义函数模块的流程为:
指令积木主控模块启动;
将开始模块改为定义模块,后面添加函数模块,函数模块用于承载函数名;
添加该函数功能所需的指令模块和参数模块,比如让机器人跳8字舞所需的所有动作和参数;
主控模块收到指令后,判断是否为函数定义,如果是函数定义,则将该函数定义的指令存储到定义文件里。
函数定义以JSON串的格式存储到文件中。参见图8所示。
执行函数模块需要:
主控模块:用于蓝牙通信,读取指令,解析指令,执行程序;
执行模块:用于触发自定义函数的执行;
函数模块:承载函数名;
指令模块:用于搭建编程的各个指令;
参数模块:用于搭建编程的指令参数。
执行函数模块的流程为:参见图7所示。
主控积木的主控模块启动;
添加执行模块和函数模块;
添加其他需要的指令模块和参数模块;
确认完成指令搭建;
主控模块收到指令后,判断是否有执行模块,如果有,则读取函数定义文件,将函数定义的指令加入到要执行的指令集中;
主控模块解析指令,执行程序。
本发明将scratch里的部分指令搬到了现实中,成为现实中可搭接的积木,孩子能完全脱离屏幕,直接通过指令积木,完成编程,控制被控制对象机器人等。
同时,本发明相比于Google的ProjectBloks这样的有形编程,本发明解决了能在同一个产品里,将有形编程直接过渡到软件编程,实现编程教育的目的,让孩子最终能够学会通过编程语言进行编程。
本发明可实时将积木搭建出的指令同步到iPad或电脑中,实时查看转化成的高级编程语言,如JavaScript或Python,并可执行或单步执行程序,进行debug编程工具。
通过机器人闯关方式学习编程,让孩子在学习编程时无需使用屏幕,采用积木连接方式将要执行的程序写入主控模块中,由主控模块根据写入的程序去控制被控制对象完成相应的指令动作,从而实现无需屏幕就能让孩子学习编程,可靠性高,趣味性好。
上面结合附图描述了本发明的实施方式,但实现时不受上述实施例限制,本领域普通技术人员可以在所附权利要求的范围内做出各种变化或修改。