基于图形化编程解决小车巡线编程问题
2021-03-24高艳
高艳
在机器人比赛中,比较常见的有循迹赛,为保证学生学习的连贯性,同时又能科学地学习机器人的原理,笔者选择在图形化编程软件中研究巡线小车如何沿着指定路径进行运动,用图形化的语言解决小车巡线编程问题。考虑到对于机器人的学习,所教学生大部分基础为零,笔者将这一内容设计为以智能传感为主题的图形化编程单元,单元具体内容设计如下表。
从实物到虚拟,在图形化编程中模拟传感器的作用
1.通过讲授,初步认识传感器
考虑到学生的基础,首先让学生认识生活中的传感器,如感应垃圾桶、智能抽水马桶等,通过对传感器的学习,学生认识到传感器是用来侦测获取数据的。
2.通过绘制色块,创设虚拟传感器位置
传感器安装的位置关系到程序的完成情况,但在图形化编程中不用考虑传感器如何安装到小车上,可以通过图像绘制的方式直接将传感器绘制到小车上。前期,学生会绘制出各种形状和颜色的传感器,这可能会导致最后的程序运行结果发生错误,但在图形化编程中造型切换非常便捷,如果发现传感器数量或者位置不对,可在造型中随时切换已绘制好的巡线小车或进行重新绘制,因此教师应尽可能鼓励学生发挥想象力,大胆设计。
3.通过可视化编程语言,实现传感器的作用
在图形化编程软件中绘制的传感器只是一个图案,并不具备传感器应有的功能,需要可视化程序语言来实现最后的结果。教师可提供赛车游戏程序供学生体验。
借力流程图,架构自然语言与程序语言的桥梁
在机器人循迹赛中,地图往往比较复杂,如果直接给学生复杂的轨迹图,容易使其产生畏惧心理,所以,可以把轨迹分为直线、曲线、直角转弯、十字交叉口、断线等几种情况绘制在不同的舞台背景中,降低机器人学习的门槛,并让学生体会利用流程图,完成自然语言到程序语言的转换,步骤如下:①让学生用自然语言将需要完成的任务描述出来。②绘制流程图,架构自然语言与程序语言的桥梁,要求学生将直线巡线任务用流程图绘制出来。③分析小车巡线的流程图,找出流程图中各部分在图形化编程软件中的语言模块,并组合起来。④尝试运行程序,并进行调整。
循序渐进,探索不同数量传感器及不同巡线方法
1.迁移生活经验,把复杂情况简单化
对于初学者来说,多传感器巡线难以理解,因此可从单个传感器开始学习小车巡线编程。学生大都在生活中观察过其他人开车,开车时如果方向偏了,就把方向盘向相反方向转动。单传感器巡线法也类似,但行进路线却是弧线,因为小车需要不断地判断是否偏离路线,这种判断方法也被称作弧线法。
例如,在上页图1中,将巡线小车放在黑线的左侧,一般情况下小车会判断行进方向是正确的,通过判断传感器色块与轨迹色块是否相遇的侦测命令,模拟传感器的感应和判断,因此当色块右侧边缘触碰到黑线时,会被认作方向出现了偏差,需要修正方向。学生的疑惑往往在应该向哪个方向转,而利用生活情境,学生能快速准确地判断转向。在左弧线法中,小车向右行驶,当色块触碰到白色区域时又向左行驶。反之,也可将小车放在右侧巡线。但这种方法即使走直线,小车也不够平滑。遇到角度较大的弯道,小车做出修正方向的判断,就会导致转弯角度过大而跑偏。
2.嵌套分支结构,把复杂问题简单化
要想让小车能识别各种路线,就需要增加传感器。增加传感器意味着算法更加复杂,这种左右传感器夹住一根线巡线的方法也可稱为夹线法,它更加接近于生活中的驾车经验,左偏右转,右偏左转,比弧线法更加平滑,但操作中学生通过试错,会发现如果左右两侧色块绘制得太过接近或者使用同色,可能会导致最后的失败(如图2)。
从流程图(如图3)中可以看出两个传感器的判断可以看作是一个修正方向,寻找黑线的分支结构,把一个简单的分支结构嵌入到另一个分支结构中,一步步分解开来按一定的顺序逐一调试,有助于理清思路。
3.通过表格记录,把复杂规律简单化
多传感器巡线小车程序中会嵌套多层分支结构,如三传感器巡线小车的三个传感器遇到黑线的情况可以分解成三种“如果……那么……否则……”的情况,每个否则中都嵌套了一个“如果……那么……否则……”语句,这样的情况很难用自然语言描述清楚,而如果借助表格结合图示,则能一目了然,利于理解。
在小车上分别绘制左、中、右三种色块,始终保持中间色块在黑线。可以把三传感器看作是骑线法的升级版,如果中间传感器检测到黑线,意味着小车没有跑偏,就不需要再进行左、右传感器的侦测,即使遇到断线,也可以平滑地走过。需要注意的是,随着传感器的增多,侦测时间会增长,小车行走速度也会变慢。
从单个传感器到多个传感器,利用图形化编程解决小车巡线编程问题直观、快捷,既节约了组装真实机器人的时间和费用,也方便对算法进行检查,同时,让学生体验到了机器人活动的乐趣。