论文部分内容阅读
电脑积木式机器人是一种集机械设计、微电子控制、软件技术及人工智能于一体的科学结晶,青少年学生往往对其充满好奇与探究的欲望。学生通过装配机器人、编写调试程序、场地测试运行等环节,在实践中探究与思考,从而学习到程序、电子、机械等软硬件知识,是一项十分有意义的科技实践项目。本文主要阐述在机器人组装、编程、控制等环节的一些技巧,供参加机器人比赛的师生参考。
一、在规则范围内,合理组装机器人硬件
机器人的运行需要专门的场地和一定规则。目前,中小学使用的机器人大多采用积木式的机器人模块。模块的数量、装配位置决定机器人的形状大小、重量、重心及运行速度、灵敏度等特性。一般情况下,机器人装配体积较大,重心较低,能提高运行稳定性,但速度与灵敏度会降低;反之缩小体积,减小重量,能提高速度、灵敏度,但稳定性就会打折扣。具体情况需要根据比赛规则和场地确定。
图1是一个简单的竞速比赛场地。规则是机器人在不越出跑道黑色边线的情况下,根据经过区域计分,区域分数相同则由时间快慢确定名次。
从竞速角度考虑,在相同的电机、电池的条件下,一般应缩小机器人(车)的体积,减少重量,以提高车速,但前提是任务的成功率要高。图1场地可通过检测环形轨道的黑色边线,及时地调整机器人的运行方向。若机器人的整体宽度较小,如车宽为二分之一轨道宽度,当车的一侧检测到黑线,会使车身与黑边线的切线角度过大,如图2。特别在半圆轨道,如果车速快,夹角又大,电机的反应时间、力量往往不够,来不及做出转弯动作,导致机器人容易出轨,影响成功率。这时,可以根据实际需要,加大机器人灰度传感器位置的宽度,增大车轮间距,同时降低重心。如宽度达到轨道宽度的0.8,一侧撞线时与黑线的夹角就比较小,机器人就容易调整方向,正确前行。
传感器的安装位置要合理,装配牢固。比如图3迷宫中运行的机器人,不能因为与挡板的一两次触碰就使红外传感器A改变方向,导致L1与L2的较大误差。在实际装配时,可以将重要的传感器件装配在车身内或者在传感器与板的接触方向加装固件,以防止直接撞击传感器,如图4。
二、编制合理、高效的程序
1.不要指望机器人能走出直线,合理应用左手或右手法则简化程序设计
所谓左手法则,简单地说,就是左边有障碍,向右离开;左边无障碍,向左靠近。右手法则反之。这种设计思路不仅可以减少程序的判断,还能减少传感器数量。机器人更容易调试与修改。图3的在左手法则下,只需采用2个红外传感器,无需增加右侧的判断就能实现迷宫行驶。又如图1的轨道竞速,如果是顺时针行驶,采用右手法则,不仅程序简捷高效,还解决了弯道难点。如果马达调试准确,可以让机器人基本不撞线通过弯道,效果显著。
2.程序中确定事件的优先顺序
条件判断中,特殊情况应先处理。如机器人走迷宫,应用左手法则运行的基本策略有三种:①前方与左边均无障碍,大幅向左转;②左边有障碍,小幅向右转;③前方有障碍,较大幅度右转。在程序中的处理顺序刚好相反,即③②①的判断顺序。①是一般情况,而③则逻辑优先②,因为在前方与左方同时有障碍情况,根据实际要求应向右大转弯。
3.在程序中少用或不用固定时间延迟
固定延迟时间内,机器人的各种传感器的参数不能被实时判断,其运行状态不能根据外界情况改变。比如在右转弯的指令后延时0.5秒,意味着接下来的0.5秒时间将一直右转弯,即便右侧已经撞墙或出轨,都无法更正姿态。因此,固定时间延迟虽然方便,但往往很难调试准确。
正确的做法是遇到时间判断,应使用机器人自带的系统时钟,通过实时读取和比较时钟的办法来达到延迟时间的目的。由于读取的是瞬时时间,程序可以继续执行其他指令,有效控制机器人的状态。系统时钟读取法可以满足各种条件下的时间延迟需要,唯一的缺点就是在编程时比固定时间延迟麻烦。
4.在程序中采用模块化和函数化编程,以便修改和增加指令
比如可以将马达控制程序单独编制函数,主程序中根据需要随时调用。马达参数变化时,只需在函数中修改一次即可,既方便又不会遗漏。对于程序中的场地、环境参数,即便该数据在程序中只用到一处,也应摒弃在程序内部直接修改数据的做法。正确的做法是把需要通过现场检测获取的数据用变量或常量代替,并将相应变量、常量置于程序的最前端进行赋值。数据变化时只需修改赋值,不仅提高了效率,还不会出错。
三、充分利用机器人的内置显示屏、喇叭辅助机器人的调试
众所周知,机器人的显示屏中显示的是关键数据,随时观察,有助于调试分析。但显示屏往往太小,观察比较费力。利用显示屏的背景光或内置喇叭声音辅助调试,会产生事半功倍的效果。
由于程序在执行时速度非常快,而机器人的机械器件相对反应较慢,有时候通过观察机器人的运行并不能准确判断故障原因。如机器人在走轨道时出轨,肉眼看不出灰度传感器碰线时的马达动作。这时,就可能有多种原因:(1)灰度传感器坏掉;(2)马达动力不够;(3)场地黑线灰度检测不正确;(4)程序控制出错等原因。要判断上述各种情形要花很多时间测试,效率低下。事实上,在程序中的灰度数据判断语句后面加一句显示屏的背光或喇叭发声功能,上述问题就能迎刃而解。当灰度传感器检测到黑线数值,让背光发亮;没有检测到黑线数值时,则关闭背景光。这样便能明显观察到灰度传感器的工作状态及灰度数据的正误,让调试变得轻松许多。
以上是笔者在进行电脑机器人比赛教学时的一些心得体会,通过几个简单的场地例子加以说明,希望能给大家带来一些启发。
(作者单位:浙江宁波市北仑区大碶中学)
一、在规则范围内,合理组装机器人硬件
机器人的运行需要专门的场地和一定规则。目前,中小学使用的机器人大多采用积木式的机器人模块。模块的数量、装配位置决定机器人的形状大小、重量、重心及运行速度、灵敏度等特性。一般情况下,机器人装配体积较大,重心较低,能提高运行稳定性,但速度与灵敏度会降低;反之缩小体积,减小重量,能提高速度、灵敏度,但稳定性就会打折扣。具体情况需要根据比赛规则和场地确定。
图1是一个简单的竞速比赛场地。规则是机器人在不越出跑道黑色边线的情况下,根据经过区域计分,区域分数相同则由时间快慢确定名次。
从竞速角度考虑,在相同的电机、电池的条件下,一般应缩小机器人(车)的体积,减少重量,以提高车速,但前提是任务的成功率要高。图1场地可通过检测环形轨道的黑色边线,及时地调整机器人的运行方向。若机器人的整体宽度较小,如车宽为二分之一轨道宽度,当车的一侧检测到黑线,会使车身与黑边线的切线角度过大,如图2。特别在半圆轨道,如果车速快,夹角又大,电机的反应时间、力量往往不够,来不及做出转弯动作,导致机器人容易出轨,影响成功率。这时,可以根据实际需要,加大机器人灰度传感器位置的宽度,增大车轮间距,同时降低重心。如宽度达到轨道宽度的0.8,一侧撞线时与黑线的夹角就比较小,机器人就容易调整方向,正确前行。
传感器的安装位置要合理,装配牢固。比如图3迷宫中运行的机器人,不能因为与挡板的一两次触碰就使红外传感器A改变方向,导致L1与L2的较大误差。在实际装配时,可以将重要的传感器件装配在车身内或者在传感器与板的接触方向加装固件,以防止直接撞击传感器,如图4。
二、编制合理、高效的程序
1.不要指望机器人能走出直线,合理应用左手或右手法则简化程序设计
所谓左手法则,简单地说,就是左边有障碍,向右离开;左边无障碍,向左靠近。右手法则反之。这种设计思路不仅可以减少程序的判断,还能减少传感器数量。机器人更容易调试与修改。图3的在左手法则下,只需采用2个红外传感器,无需增加右侧的判断就能实现迷宫行驶。又如图1的轨道竞速,如果是顺时针行驶,采用右手法则,不仅程序简捷高效,还解决了弯道难点。如果马达调试准确,可以让机器人基本不撞线通过弯道,效果显著。
2.程序中确定事件的优先顺序
条件判断中,特殊情况应先处理。如机器人走迷宫,应用左手法则运行的基本策略有三种:①前方与左边均无障碍,大幅向左转;②左边有障碍,小幅向右转;③前方有障碍,较大幅度右转。在程序中的处理顺序刚好相反,即③②①的判断顺序。①是一般情况,而③则逻辑优先②,因为在前方与左方同时有障碍情况,根据实际要求应向右大转弯。
3.在程序中少用或不用固定时间延迟
固定延迟时间内,机器人的各种传感器的参数不能被实时判断,其运行状态不能根据外界情况改变。比如在右转弯的指令后延时0.5秒,意味着接下来的0.5秒时间将一直右转弯,即便右侧已经撞墙或出轨,都无法更正姿态。因此,固定时间延迟虽然方便,但往往很难调试准确。
正确的做法是遇到时间判断,应使用机器人自带的系统时钟,通过实时读取和比较时钟的办法来达到延迟时间的目的。由于读取的是瞬时时间,程序可以继续执行其他指令,有效控制机器人的状态。系统时钟读取法可以满足各种条件下的时间延迟需要,唯一的缺点就是在编程时比固定时间延迟麻烦。
4.在程序中采用模块化和函数化编程,以便修改和增加指令
比如可以将马达控制程序单独编制函数,主程序中根据需要随时调用。马达参数变化时,只需在函数中修改一次即可,既方便又不会遗漏。对于程序中的场地、环境参数,即便该数据在程序中只用到一处,也应摒弃在程序内部直接修改数据的做法。正确的做法是把需要通过现场检测获取的数据用变量或常量代替,并将相应变量、常量置于程序的最前端进行赋值。数据变化时只需修改赋值,不仅提高了效率,还不会出错。
三、充分利用机器人的内置显示屏、喇叭辅助机器人的调试
众所周知,机器人的显示屏中显示的是关键数据,随时观察,有助于调试分析。但显示屏往往太小,观察比较费力。利用显示屏的背景光或内置喇叭声音辅助调试,会产生事半功倍的效果。
由于程序在执行时速度非常快,而机器人的机械器件相对反应较慢,有时候通过观察机器人的运行并不能准确判断故障原因。如机器人在走轨道时出轨,肉眼看不出灰度传感器碰线时的马达动作。这时,就可能有多种原因:(1)灰度传感器坏掉;(2)马达动力不够;(3)场地黑线灰度检测不正确;(4)程序控制出错等原因。要判断上述各种情形要花很多时间测试,效率低下。事实上,在程序中的灰度数据判断语句后面加一句显示屏的背光或喇叭发声功能,上述问题就能迎刃而解。当灰度传感器检测到黑线数值,让背光发亮;没有检测到黑线数值时,则关闭背景光。这样便能明显观察到灰度传感器的工作状态及灰度数据的正误,让调试变得轻松许多。
以上是笔者在进行电脑机器人比赛教学时的一些心得体会,通过几个简单的场地例子加以说明,希望能给大家带来一些启发。
(作者单位:浙江宁波市北仑区大碶中学)