1、电脑鼠使用说明1界面简介:2传感和运动控制模块说明:功能:初始化电脑鼠硬件,以及清零电脑鼠的记忆内存。参数:双击设置四个参数,分别为初始X坐标、初始Y坐标、初始方向、迷宫大小。相应地一般设置为0、0、MazeUP、8。功能:电脑鼠待机,静止不动。参数:时间(毫秒),默认值是100。功能:电脑鼠搜索前进、不断检测周围迷宫信息。参数:前进格数、速度、显示数据、遇到岔路是否停止,前进格数一般设置为迷宫边长的一半、速度值一般设置为100步/秒、显示数据就是现实墙壁的信息、一般情况下设置遇到岔路停止。功能:电脑鼠转弯。参数:转向、速度,转向分为四个方向,也可以设置为变量,速度一般设置为50。功能:获取电
2、脑鼠当下在迷宫中的位置信息及运行方向。参数:自动获取功能:获取单元地图的墙壁信息。选择地图获取方式:单元地图的存储值,单元的某一方向是否存在墙壁,单元是否已被搜索过。 需要输入的量为单元X和Y坐标,墙壁方向。参数:X、Y坐标、墙壁方向值,X、Y坐标都是根据相应的函数GetMouseCoorX()和GetMouseCoorY()自动获取的,墙壁方向值就是想要获取的墙壁方向。功能:获取输入的按键ID。参数:按键从1到4。功能:提供三种数据显示方式:显示电脑鼠和迷宫的信息(坐标,方向,单元地图);显示红外传感器和电压数据(调试用);在14位上显示自定义的信息(十六进制00FF)。参数:基本上是测试、
3、调试、研究、创新的时候才用。功能:选择相对方向和绝对方向之间的转换方式,需要输入要转换的方向和电脑鼠当前的运动方向。参数:输入要转换的方向,可以选择变量,然后通过函数GetMouseDir()自动获取当前运行方向,最后赋值到相应的变量里面。功能:通过对传感器数据进行标定来调整电脑鼠在迷宫中的运动控制。每一个标定组所对应的参数调整请参照说明书的详细介绍参数:四个选项对应相应的标定项目。3迷宫简介:迷宫是由18cm18cm的方格组成,其行列各有8个方格。最左下角的一格我们规定为原点(0,0),坐标依次从左从右、从下至上如图3-1所示增长。在程序中,我们规定:以电脑鼠放到起点时的方向为参照,此时电脑
4、鼠的正前方为Y轴正方向,正后方为Y轴负方向,右方为X轴正方向,左方为X轴负方向,这种状态称为MazeUP,如图3-1所示:(2, 0)(1, 0)(0, 0)(0, 1)(0, 2)(7, 0)图3-1 迷宫简化图4初级教程:电机控制,电脑鼠基本运动下列程序控制电脑鼠先待机1000ms(1s)再以速度50搜索前进4格,然后以50的转速向右转,最后以100的速度继续搜索前进3格。如图4-1所示:图4-1 初级程序流程图具体操作步骤:1) 新建项目,命名项目名称,确定,一个新项目建成了;2) 在出现的界面里会有一个main函数,图形化就是Begin,在其下面首先拖入模块“初始化”,双击该模块,并输
5、入初始化数值,如图4-2所示:图4-2 初始化3) 拖入“悬空等待”模块,让电脑鼠等待1000ms,双击该模块,将默认的100改成1000,如图4-3所示:图4-3 悬空等待4) 拖入“搜索前进”模块,双击并输入参数,上下连接,如图4-4所示:图4-4 搜索前进5) 拖入“直角转弯”模块,双击该模块并且输入参数,然后连接到上一模块,如图4-5所示:图4-5 直角转弯6) 拖入“搜索前进”模块,双击并输入参数,如图4-6所示:图4-6 继续搜索前进7) 连接所有模块,将光标移动到模块下边缘,按住鼠标左键,光标出现十字叉,往下拖到另一模块上边缘,同样等光标变成十字叉,松开鼠标左键,就连接成功。接下
6、来通过USB线将电脑鼠与电脑相连,并且按下下载键,然后在上位机界面中点击菜单栏中的“生成”,在下拉栏中点击“编译并下载”,就会弹出下载界面并检查端口自动下载,如图4-7所示:图4-7 下载界面下载完毕后,拔掉USB线,就可以把电脑鼠放到迷宫中运行了。5中级教程:下列程序控制如图5-1所示:电脑鼠先初始化,接着待机300ms(0.3s),然后进入while循环检测按键4,如果按键没有按下,则等待100ms,如果按键4被按下,则再以速度50向前运行4格,但是遇到岔路就会停止,向右转,继续前进3格,遇岔路停止。(流程图看不清楚可以放大)5-1 进阶教程程序1) 新建项目,设定项目名称,然后初始化、悬
7、空等待(参照初级教程),接下来定义随机变量,可以在两处定义,菜单栏中“配置”下拉列表选择“全局变量”,或者双击Begin模块,都会弹出如图5-2所示的窗口,在“变量类型”选择“unsigned char”,变量名称自定义,如a1、a2、a3等。图5-2 定义全局变量2) 拖入while循环模块,while循环是指如果条件为真则一直循环,直到条件不成立,我们定义为1就代表永远为真,循环是从while模块的右边边缘开始引线,如图5-3所示设定while。图5-3 设定while参数3) 拖入“获取按键”模块,将获取的按键(从1到4)赋值到变量a1中,如图5-4所示:图5-4 获取按键4) 拖入if
8、模块,if模块是判断作用的,如果是1,就执行右边,如果不是就执行下面等待100ms,如图5-5所示:图5-5 if参数设定5) 参照初级教程,拖入“搜索前进”和“直角转弯”并输入相应的参数,连接起来,并且下载到电脑鼠,接下来放入迷宫中,点击按键,电脑鼠就会运行。6高级教程:上0左3鼠右1下21)迷宫的方向值定义:2)相对方向和绝对方向的转换:在迷宫中运行,电脑鼠的墙壁检测返回的是其相对方向上所对应的墙壁信息,而这一值需要转换成迷宫绝对方向上的信息值,这样才能方便存储和读取迷宫信息。示例如下图所示:上0左3鼠右1下2绝对方向:右1前0鼠后2左3相对方向:相对方向向绝对方向的转换表格(Dir表示电
9、脑鼠当前运行的绝对方向)相对方向绝对方向前0Dir右1(Dir + 1)% 4 后2(Dir + 2)% 4 左3(Dir +3)% 4 3)坐标更新:既电脑鼠从一格进入另外一格之后坐标的更新:当前运动方向(绝对)坐标上(X, Y+1)右(X+1, Y)下(X, Y-1)左(X-1, Y)了解了上述基础知识后,对于进入高级编程有更大的意义,下面介绍较复杂的编程,给它取名为相对左转,具体操作如下:4)“相对左转”示例转弯策略:电脑鼠遇到岔路口时,检测墙壁信息,如果电脑鼠左侧墙壁信息显示有路,则转向它的左侧,简称相对左转;如果电脑鼠左侧墙壁信息显示无路,下一步检测电脑鼠前面墙壁的信息,结果显示有路
10、就直行;如果电脑鼠的左侧、前方均无路,接下来检测右侧是否有路,有路就执行右转程序;最后,如果电脑鼠的左、前、右均无路,则电脑鼠向后转。用流程图图6-1来表示为:YN搜索前进遇到岔路口,检测墙壁信息左侧是否有路?左转开 始前方是否有路?直行Y右侧是否有路?右转YN向后转N图6-1 搜索策略流程图操作步骤:1) 打开BDS2.0图形化编程软件平台,进入操作界面,新建项目“相对左转”如图6-2所示;图6-2 相对左转项目2) 在菜单栏中点击“配置”-“全局变量”,然后定义全局变量,一般我们选择“unsigned char”,大约定义10个左右的全局变量,如果是复杂的算法,那要定义更多的变量。定义变量
11、界面如图6-3所示;图6-3 全局变量定义界面3) 在新建的项目里面会出现图形化编程界面,从左边的函数组件中拖取相应的模块放在“Begin”这个main函数下,main函数里面也可以设置变量,接下来初始化,包括迷宫大小(10*10)、电脑鼠位置(起始位置是X=0,Y=0)、电脑鼠初始朝向(朝上MazeUP)等初始信息,如图6-4所示:图6-4 初始化参数设置4) 然后设置悬空等待,时间不宜太短,也不能太长,根据具体算法决定,本次“相对左转”设置为1000ms;5) 接下来进入while循环,为了简化程序直接将while的条件是设定为1,永远为真,不停的循环,接下来就是一个按键中断程序,叫做“获
12、取按键”,四个按键可以任意设定,从左到右依次为按键1、按键2、按键3、按键4,点击按键就可以启动电脑鼠搜索前进了;本次策略获取的是按键4,如图6-5所示;图6-5 获取按键46) 接下来就是当电脑鼠遇到岔路口停下来之后的转向策略了,根据第5步,获取按键之后,如果按键被按下,输出为1,则开始启动电脑鼠“搜索前进”,遇到岔路口就会停下来,停下来之后,电脑鼠要获取墙壁信息,判断它的前后左右是否有路,最先判断、然后判断、最后判断这就是灵活的,根据跟人喜好和想法去设计相应的先后顺序,我们称之为算法,也叫转向策略。这个示例所设计的叫做“相对左转”策略,就是说每遇到一个岔路,电脑鼠总是先判断它的左侧是否有路
13、,如果有就左转,继续搜索前进,如果没有就判断前方是否有路,没有的话接下来判断右侧是否有路,如果还是没有就只有后面一条路了。如何通过程序实现这一策略?首先通过“方向转换”这一模块,将目前电脑鼠的左侧转化为绝对坐标,如图6-6所示,然后通过“获取地图”这一模块判断绝对坐标左侧墙壁是否有路,如图6-7所示,图6-6 方向转换图6-7 获取地图7) 接下来将获取的数据放到变量temp3里面,通过if模块对temp3进行判断,产生的结果为有路,则往右执行,进入“直角转弯”模块,并设定参数,转向是MouseLEFT,如图6-8所示,此时在程序结尾要添加一个continu模块,目的是为了让程序回到循环的开始
14、。图6-8 直角转弯左转8) 如果没有路,则往if下面执行,接下来参照6)和7)步来添加模块,对应的只需改成检测电脑鼠前方、右侧、后面的墙壁以及更改全局变量了。方法同前几步类似。7传感器标定电脑鼠在迷宫环境中需要保持直线运行,它在前进的过程中会不断调整姿势,以免碰到迷宫墙壁。 电脑鼠在迷宫中理想的方位和姿势是处于迷宫格的中央,且前进方向平行于墙壁,如图7-1所示。图7-1 电脑鼠在迷宫中的理想位置1)两侧都有墙壁时的姿态纠正策略当两侧都有挡板时,且当电脑鼠处在如图7-2、图7-3所示位置时需要对电脑鼠姿态进行纠正。其中,图7-2(a)和图7-3(a)分别表示电脑鼠的位置偏离了迷宫中心(向左)和
15、其姿态偏离了平行于墙壁的方向(向左),可以发现,这时左边传感器信号强,右边的弱。电脑鼠应当向右转以回到理想的方位和姿态。同样,图7-2(b)和图7-3(b)分别表示电脑鼠的位置偏离了迷宫中心(向右)和其姿态偏离了平行于墙壁的方向(向右),这时右边传感器信号强,左边的弱。电脑鼠应当向左转以回到理想的方位和姿态。X42X21X41X22 a b图7-2 姿势修正位置一X42X21X41X22 a b图7-3 姿势修正位置二2)一侧都有墙壁时的姿态纠正策略当仅一侧存在挡板时,且当电脑鼠处在如图7-4(a)、图7-4(b)所示位置时需要对电脑鼠姿态进行纠正。它们分别表示电脑鼠的位置偏离了迷宫中心(向左
16、)和偏离了迷宫中心(向右)。图7-4(a)中,右边的传感器信号弱,但依然能检测到墙壁。电脑鼠应当向右转以回到理想的方位和姿态。同样,图7-4(b)中左边的传感器信号弱,但依然能检测到墙壁。电脑鼠应当向左转以回到理想的方位和姿态。X12X52 a b图7-4 姿势修正位置三我们的电脑鼠会通过上述姿态修正的策略算法很快的回到中心线上而且在中心线附近的震荡保持最小。3)姿态纠正策略中的传感器标定电脑鼠的为了判断姿势修正的位置需要对五个方向的传感器读数进行标定。X21,X22,X41和X42为当左右均存在墙壁时,姿态修正触发的临界值;X12和X52为当左右仅一方存在墙壁时,姿态修正触发的临界值。对这些
17、数值进行标定的优势在可以使电脑鼠快速适应不同的环境。在同一环境中只需要标定一次。表7-1 姿势修正的临界条件数据记录表传感器一侧墙壁(靠右)一侧墙壁(靠左)两侧墙壁(靠右)两侧墙壁(靠左)左X12左前X21X22中右前X41X42右X524)电脑鼠墙壁检测与传感器标定电脑鼠除了在运行过程中对其姿态和位置进行修正之外,还会检测左,前,右三方是否有无墙壁,并做出是否刹车停止的判断。这样电脑鼠能恰好停在含有岔路的迷宫单元的中央。电脑鼠处于如图7-5所示的位置时,其相应传感器检测到的读数是左,前,右三个方向墙壁检测的临界值。当电脑鼠比该位置更靠近墙壁时候,则判断墙壁存在。反之判断墙壁则不存在。X11X
18、51X31图7-5 墙壁检测的临界位置5)传感器标定模块介绍传感器的标定是通过上位机软件中以下的模块来实现的:图7-6 传感器标定模块图7-7 传感器标定模块的参数设定选择的参数为:导 航I:标定两侧都有墙壁时的修正位置传感器值,即X21,X22,X41和X42;导 航II:标定有一侧没有墙壁时的修正位置传感器值,即X12和X52;墙壁检测:标定检测墙壁的临界位置传感器值,即X11,X31和X51;全 部:标定所有的传感器值,顺序是:导航I,导航II,墙壁检测。6)传感器标定的实现实现的步骤如下:1. 在上位机中编写传感器标定的程序,然后下载到电脑鼠中。2. 将电脑鼠置于迷宫环境中,然后开机。3. 当数码管显示的数值开始闪烁的时候。将电脑鼠置于相应所标定的位置。4. 按下按键1表示该传感器或该位置的读数标定完成。5. 继续下一格传感器或位置的读数标定直到所有的标定完成。