智能机器人学习教程.doc

上传人:小飞机 文档编号:4045755 上传时间:2023-04-02 格式:DOC 页数:36 大小:1.75MB
返回 下载 相关 举报
智能机器人学习教程.doc_第1页
第1页 / 共36页
智能机器人学习教程.doc_第2页
第2页 / 共36页
智能机器人学习教程.doc_第3页
第3页 / 共36页
智能机器人学习教程.doc_第4页
第4页 / 共36页
智能机器人学习教程.doc_第5页
第5页 / 共36页
点击查看更多>>
资源描述

《智能机器人学习教程.doc》由会员分享,可在线阅读,更多相关《智能机器人学习教程.doc(36页珍藏版)》请在三一办公上搜索。

1、智能机器人学习教程 第1章 预备知识1.1 虚拟机器人的结构与功能1.1.1 身体结构在VJC1.5中,有五种型号的机器人:AS-M、AS-MII、AS-UII、AS-InfoX和AS-InfoM。图11是虚拟机器人的外形。虚拟机器人的身体结构跟真实的能力风暴智能机器人是相似的。本书中的范例采用的机器人型号均为AS-M。设置机器人型号的方法参见附录B。 AS-MII (AS-M /AS-UII)AS-InfoXAS-InfoM图11 虚拟机器人外形1.1.2 感觉器官能力风暴智能机器人的感觉功能,是由机器人的传感器实现的。能力风暴机器人身上安装的传感器有以下几种:1. 红外传感器红外传感器由红

2、外发射器和红外接收器两部分组成。一旦程序中发出“红外测障”的指令,红外发射器就开始发射红外线。红外线遇到障碍物会反射回来,被红外接收器接收,从而机器人就能判断出障碍物所在的方位。虚拟机器人能够检测左、右、前三个方向的障碍物,跟真实的能力风暴智能机器人基本相同。发射红外线的虚拟机器人如图12所示。 图12 机器人发射红外线示意图2. 光敏传感器光敏传感器能够检测光线的强度,检测到的值为0255之间的整数。光线越亮,检测到的数值越小;光线越暗,检测到的数值越大。此项功能跟真实的能力风暴智能机器人是一样的3. 碰撞传感器虚拟机器人的碰撞传感器能够检测左、右、前、后四个方向的碰撞,型号为AS-Info

3、X的机器人只能检测前、左、右三个方向的碰撞。如前所述,虚拟机器人共分五种,它们的的区别主要就体现在碰撞检测功能上。所以读者在打开程序时,无论是例程,还是自己编写保存的程序,如果涉及到“碰撞检测”,必须先设置相应的机器人型号(参见附录B),然后再打开程序、仿真运行。例如:打开例程 “自由行走(M).flw”时,由于名称后面带有M,故须先将机器人型号设置为AS-M,然后再打开程序文件、仿真运行。打开例程 “自由行走(Info).flw”时,最好先将机器人型号设置为AS-InfoM,然后再打开程序文件、仿真运行。在碰撞检测功能方面,虚拟机器人跟真实的能力风暴智能机器人有较大差别(参见附录C、D)。4

4、. 声音传感器声音传感器能够检测声强大小,检测到的值为0255之间的整数。数值越小,声音越低;数值越大,声音越响。此项功能跟真实的能力风暴智能机器人是一样的。5. 地面灰度传感器地面灰度传感器能够检测地面的灰度,检测到的值为0255之间的整数。地面颜色越深,灰度值越大;地面颜色越浅,灰度值越小。此项功能跟真实的能力风暴智能机器人基本相同。1.1.3 编程语言能力风暴智能机器人的编程语言是VJC1.5,由机器人C语言(简称JC)和流程图编程语言两部分组成。读者使用仿真版的时候,可以用流程图编程。在用流程图编程的同时,VJC1.5自动生成JC代码,便于读者观察、解释或修改程序,参见图13。在图13

5、中,左边是流程图,右边是JC代码。在流程图编辑界面中,点击工具栏上的“JC代码”快捷按钮,即可看到当前程序的JC代码。 图13 机器人走正方形的VJC程序1.2 VJC1.5仿真版能做什么1.2.1 为机器人编写程序在VJC1.5仿真版中,可以用流程图编写机器人程序,同时自动生成JC代码。但不能直接用JC代码为机器人编写程序。在仿真版中编写的程序对真实的能力风暴机器人也是适用的。1.2.2 创建环境可以自由创建环境,是VJC1.5仿真版的一个突出优点,这往往是使用真实的机器人时所做不到的。在VJC1.5仿真版中,读者可以利用光源、声源、障碍物和彩色图带创建各种环境,如房间、迷宫、排雷场地等。下

6、面的图14就是用仿真版创建的一个环境“篝火晚会场地”,场地左下方是虚拟机器人。图14 篝火晚会场地1.2.3 仿真运行仿真运行就是进入仿真环境,让虚拟机器人按照程序指令进行运动。编好程序、创建环境之后,就可以仿真运行了。因此,在仿真版中,读者能够直观地看到机器人运行的效果。第2章 初试身手2.1 走正方形项目内容:为机器人编程,使之能走一个正方形。走的时候显示轨迹。图21 走正方形相关模块:直行、转向。难度等级:项目解析:编写“走正方形”程序可参照图11编写,项目的难点在于要反复调整“转向模块”中转向时间和速度,以便机器人正好转90。“直行”、“转向”模块的参数设置方法可参考“帮助”电子文档“

7、执行器模块”。2.2 走六边形项目内容:为机器人编程,使之能走一个六边形。走的时候显示轨迹。要求使用“多次循环”模块。相关模块:转向、直行、多次循环。难度等级:项目解析:所有的程序都能用“顺序结构”、“选择结构”以及“循环结构”来表示。本项目中的“循环结构”是程序设计中重要的结构,故须认真掌握。“多次循环”模块在“控制模块库”中。将“多次循环”模块拖到流程图生成区后,在模块上右击鼠标,打开参数设置对话框,即可输入循环次数。另外要注意的是,使用多次循环模块的时候,须将待循环的内容放在循环体内部。2.3 走五角星项目内容:为机器人编程,使之能走出一个五角星的形状。走的时候显示轨迹。要求使用“条件循

8、环”模块。图22 五角星相关模块:直行、转向、条件循环、计算。难度等级:u 程序设计通过该项目的学习可熟悉VJC1.5仿真版中引用变量、变量百宝箱的概念以及“条件循环”和“计算”模块的使用。“条件循环”模块在“控制模块库”中。从图28可以看到,要画出一个五角星,需重复五次“前进、右转”的动作,右转的角度为1440。五角星的大小由前进的距离所决定。在本例中,要求使用“条件循环”模块,我们可以将其中的条件表达式设置为整型变量一 5在程序中,让整型变量一从0开始变化,每循环一次,就令整型变量一增加1。当整型变量一等于0、1、2、3、4时,条件表达式都能满足;当整型变量一等于5时,条件表达式不再满足。

9、于是循环将进行5次,然后就跳出循环,程序结束。参见图29。图23 五角星例程u 参数设置最初的“计算”模块:计算表达式为整型变量一 0“前进”模块:速度80,时间2.0秒。可自行调整。“右转”模块:相对速度100,时间0.4秒。可自行调整。“条件循环”模块:条件表达式为整型变量一 5循环体中的“计算”模块:计算表达式为整型变量一 整型变量一 1第二个“计算”模块参数设置的方法如下面a)d)所述:a) 在“计算”模块上右击鼠标,打开参数设置对话框(图210);图24 计算模块的参数设置对话框b) 在图210中,选择右上角的“引用变量”,这时会出现变量百宝箱(图211)。图25 变量百宝箱c) 在

10、变量百宝箱中点击一下“整型变量一”,在整型变量一右边就会出现一把小钥匙,表明整型变量一被选中了。点击“确认”。d) 写出完整的计算表达式“整型变量一 整型变量一 1”,如图212所示。图26 计算表达式u 仿真运行程序编好后,就可以仿真运行了。点击工具栏中的“仿真”快捷按钮,进入仿真环境主界面,选择“显示轨迹”,然后点击“运行”键,得到一个虚拟机器人,将虚拟机器人放在运行区,就能看到机器人走出的轨迹。计算机执行程序的过程如下:首先将“整型变量一”赋值为0,然后进入条件循环。每循环一次,机器人前进一段距离,并右转一个角度,画出五角星的一条边,同时整型变量一增加1。故整型变量一从0依次变为1、2、

11、3、4。当整型变量一等于5的时候,条件表达式不再满足,条件循环中止,程序就结束了。图27 2.4 奥运五环项目内容:为机器人编程,使之走出一个奥运五环。走的时候显示轨迹。图28 奥运五环相关模块:启动电机、延时等待、停止电机、转向。难度等级:项目解析:设置本项目为了学习加固“启动电机”模块的使用方法,同时熟悉仿真环境中“显示轨迹”和“保留原轨迹”设置方法。小技巧:在仿真环境中通过点击鼠标右键可调整机器人的初始角度。2.5 汽车项目内容:用机器人做一个汽车。前进、后退、转弯、划弧线、停止、亮车灯等动作任意组合。车灯可用机器人的眼睛代替。相关模块:直行、转向、启动电机、延时等待、停止电机、眼睛。难

12、度等级:2.6 动态字符项目内容:机器人显示字符“ABCD”,并且字符从左向右运动。图29 仿真界面中的显示屏相关模块:显示、延时等待、永远循环。难度等级:项目解析:在本例中,可以这样来设计程序:用13个显示模块,分别将“ABCD”显示在不同部位,如图221/22所示。其中,前一个“显示”模块与后一个“显示”模块之间插一个“延时等待”模块,延时等待的时间取0.2秒钟。当程序运行的时候,就会产生动态的效果。ABCDABCDABCDABCDABCDABCDABCDABCDABCDABCDABCDABCDABCD图210 动态字符的设计方法第3章 稳步前进3.1 彩色地毯项目内容:机器人在彩色地毯上

13、行走,遇到不同的颜色能发出不同的声音。相关模块:地面检测、直行、转向、发音、永远循环、条件判断。难度等级:创建环境彩色地毯。参见帮助电子文档/环境编辑/图带和地毯。项目解析:“地面检测”模块用于对地面的灰度进行检测,检测到的值为0255之间的整型数,数值越大,地面颜色越深;数值越小,地面颜色越浅。在正式编程之前,先编写一个地面灰度检测小程序(参见图322),检测一下地毯不同部分的灰度。然后再构思本项目的解决方案。3.2 百米赛跑项目内容:开始时,机器人站在跑道的起点处等待起跑。一旦听到发令枪响,就立刻沿着跑道向终点冲过去。在跑的过程中机器人不能越出跑道。图31 百米赛跑场地相关模块:地面检测、

14、声音检测、条件循环、直行。难度等级:项目解析:在很多比赛中要求声控启动,当机器人听到声音后才能运动。这个项目主要演示在场地中添加声源,具体方法可参见“帮助”电子文档/环境编辑/声源。仿真运行时,先把机器人放在跑道的起点处,然后添加声源。3.3 计算走过的距离项目内容:计算机器人走过的距离。相关模块:直行、转向、转角检测、显示。难度等级:u 程序设计在本例中,我们让机器人先走一段直线,接着走一段弧线,然后再走一段直线。最后,调用两个转角检测模块,分别检测左轮和右轮的转角,并显示出来,例程如图316所示。图32 转角检测例程u 参数设置“转角检测”模块:打开“转角检测”模块的对话框,如图317所示

15、。图33 转角检测模块的参数设置对话框之一在图317对话框中选择“左轮、编码器检测”,就会弹出如下对话框:图34 转角检测模块的参数设置对话框之二在其中选择“转角变量一”,确定。用同样的方法,将第二个“转角检测”模块的参数设置为“右轮、编码器检测、转角变量二”。“显示”模块:选择“引用变量”,在两行中分别显示“转角变量一”和“转角变量二”。u 仿真运行仿真运行时,显示轨迹,可以看到机器人走过一条曲线,最后在右上角的显示屏上显示出左右轮的转角数。机器人的轮子转一圈,机器人的光电编码器接收到33个脉冲,转角计数为33。真实的能力风暴机器人轮子的直径d64mm。您可以根据检测到的左右轮平均转角数,用

16、如下公式计算出机器人走过的平均距离:您还可以在以上例程中添加一段程序,计算机器人走过的距离,并将计算结果显示出来。不过,用上述公式计算出的结果适用于真实的机器人,与仿真界面上的标尺不一定吻合。小知识:光电编码器光电编码器是靠发射与接收红外光来工作的,由码盘和光电编码模块组成。码盘安装在机器人的轮子上,随轮子一起转动。光电编码模块则装在轮子的支架上。码盘上共有66个辐条,黑白相间。光电编码模块同时具有发射与接收红外线的功能,参见图319。 无返回信号 有返回信号图35 光电编码器的工作原理图从图中可以看出:红外线照射在黑色辐条上时没有反射信号,因为红外光大部分已经被黑色辐条吸收;当红外线照射在白

17、色辐条上时有反射信号,因为红外光在白色辐条上反射强烈。于是,当机器人运动时,光电编码器就能接收到脉冲信号。轮子每转一圈,共产生33个脉冲。光电编码器有计数功能,能累加接收到的脉冲数。3.4 秒表项目内容:让机器人在显示屏上显示时间,可以当作秒表来使用(图320)。图36 显示时间相关模块:系统时间、显示、永远循环。难度等级:项目解析:在本书中很多项目可用于机器人比赛,比如走迷宫、灭火。进行机器人比赛,就需要计算所花的时间。VJC1.5仿真版提供了“系统时间”模块,能满足程序设计的需要。3.5 风扇定时项目内容:用机器人做成一个电风扇,来回摆动着吹。并且有电风扇的定时功能,吹一段时间就停下来。相

18、关模块:转向、启动电机、 停止电机、系统时间、条件循环。难度等级:u 程序设计要让风扇定时,则须调用“系统时间”模块。在程序中,控制风扇运行的时间可以用条件循环来实现。程序一开始,首先启动扩展电机,然后进入条件循环,条件表达式为:时间变量一 10.0000条件循环的内容为:左转、右转、检测系统时间,并将它在显示屏上显示出来。一旦检测到系统时间超过10秒钟,就跳出条件循环,停止扩展电机,程序结束。参见图321。u 参数设置“启动电机”模块:选择“扩展电机”,而将左右电机的功率均设置为零。“条件循环”模块:条件表达式为时间变量一 10.0000“系统时间”模块:变量选择“时间变量一”。“停止电机”

19、模块:停止扩展电机。u 仿真运行点击“仿真”快捷按钮,进入仿真环境主界面,点击“运行”键,将虚拟机器人放到运行区就可以了。运行时可以看到右上角显示屏上有时间显示。图37 风扇定时例程3.6 醉汉项目内容:机器人模仿醉汉的姿态,跌跌撞撞地走。如果碰到人或障碍物,就转过身,继续走。相关模块:直行、转向、碰撞检测。难度等级:创建环境设置一个房间,在房间里摆一些障碍物。小知识:碰撞传感器在此,我们简要介绍机器人的碰撞传感器,以型号为AS-MII的真实机器人为例。碰撞传感器是感知碰撞信息的传感器。在能力风暴智能机器人的左前、右前、左后、右后部位设置有四个碰撞开关,它们与碰撞环共同构成了碰撞传感器(图32

20、6)。 图38 碰撞开关及碰撞环碰撞环与机器人底盘柔性连接,在受力后与底盘产生相对位移,触发固连在底盘上的碰撞开关,使之闭合。从而机器人就能感知来自不同方向的碰撞。参见图327。图39 机器人的碰撞传感器示意图根据接收到的开关信号,机器人能够判别八个方向的碰撞(见图328)。前左前右后左后左前右前左图310 碰撞方位在VJC1.5仿真版中,虚拟机器人至多只能识别前、后、左、右四个方向的碰撞。3.7 自由行走项目内容:机器人在空间漫步,有时候会停下来,欣赏欣赏风景,唱唱歌,然后又继续走。遇到障碍物能自动避开,但不会撞上去。相关模块:转向、直行、红外测障、碰撞检测、条件判断、发音。难度等级:创建环

21、境自由创意。3.8 趋光的飞蛾项目内容:机器人模仿飞蛾,一旦发现光,就会向着光走过去。相关模块:亮度检测、启动电机、延时等待、停止电机、永远循环、条件判断。难度等级:图311 机器人趋光的方式u 程序分析问:机器人如何才能朝着光源走过去?答:可以采用比较机器人左右眼的亮度值的方法。如果左眼的亮度值小于右眼的亮度值,说明机器人的左眼接收到的光线较强,离光源较近;而机器人的右眼接收到的光线较弱,离光源较远。这时就让机器人逆时针划一段弧线,目的是让机器人的右眼离光源更近些。类似地,如果右眼的亮度值小于左眼的亮度值,则说明机器人的左眼离光源较远,这时就让机器人顺时针划一段弧线。通过逆时针划弧线和顺时针

22、划弧线的交替,机器人就可以逐步接近光源了。参见图329。问:机器人怎样才不会撞上蜡烛?答:如果机器人左眼或右眼的亮度值小于某一个值,比如20,就停止电机。这样,机器人走到蜡烛跟前就会停下来,而不会撞上蜡烛。参见图330的例程。u 参数设置第一个“亮度检测”模块:方式选择“左”,变量选择“亮度变量一”。第二个“亮度检测”模块:方式选择“右”,变量选择“亮度变量二”。第一个“条件判断”模块:条件表达式为条件一:亮度变量一20。条件二:有效,亮度变量二20,条件逻辑关系“或”。第二个“条件判断”模块:条件表达式为亮度变量一 亮度变量二。其下的“启动电机”模块:左电机功率20,右电机功率80。第三个“

23、条件判断”模块:条件表达式为亮度变量二 亮度变量一。其下的“启动电机”模块:左电机功率80,右电机功率20。 “延时等待”模块:时间设为0.1秒。u 仿真运行仿真运行时,在运行场地中央添加光源,光源半径设为180,渐变值设为30。然后将虚拟机器人放在光圈的边缘,机器人就会向光源中心走过去。走到蜡烛跟前,机器人会自动停下来。图312 趋光的飞蛾例程 3.9 鼹鼠项目内容:机器人模仿鼹鼠,在地洞中来回走动,如发现光就转身钻进地洞里躲起来。参见图331。图313 鼹鼠场地相关模块:亮度检测、红外测障、碰撞检测、启动电机、延时等待、停止电机、永远循环、条件判断。难度等级:3.10 越障跑项目内容:在跑

24、道上有一些障碍物,机器人的任务是听到发令枪后,以最快的速度从起点跑到终点,途中要避开障碍物。图314 越障跑示意图相关模块:转向、直行、红外测障、条件判断、地面检测、永远循环。难度等级:项目解析:这个项目与“短跑比赛”类似,但增加了难度,障碍物检测可用“红外测障”模块,也可用“碰撞检测”模块。跑道可以自行设计。3.11 太阳能电池项目内容:用机器人模拟太阳能电池。当有光照着机器人的时候,机器人的眼睛就亮起来,就象太阳能电池点亮灯泡一样。相关模块:亮度检测、眼睛、永远循环、条件判断。难度等级:仿真运行:在机器人运行场地中间,添加光源,光源半径180,渐变值30。然后将机器人放在光圈中即可。第4章

25、 挑战自我4.1 填字游戏项目内容:在机器人运行场地上,有若干个颜色各别的圆形图带,分别代表不同的英文字母。请您设计一个程序,开始时让机器人显示一个英文单词,但缺少一个字母。如果将机器人放在代表正确字母的图带上,机器人就会显示出完整的单词,并高兴地唱歌、眼睛放光。如果将机器人放在代表其他字母的图带上,机器人则会发出另一种声音,提示“错误”。相关模块:地面检测、条件判断、显示、发音。难度等级:创建环境在机器人运行场地上设置若干个圆形图带,按照灰度值从小到大的顺序排列,分别代表英文字母abcdefg如图41所示。u 程序分析a) 首先编一个地面灰度检测的程序,用以检测圆形图带的灰度。b) 其次进入

26、仿真环境主界面,创建填字游戏场地。c) 然后编写填字游戏的程序。在例程(图42)中,显示的单词是doctor,缺少字母c。填字游戏场地中三排圆形图带的灰度值分别为0、43、63、85、106,127、128、149、170、191,202、213、234、255,依次代表abcdefghijklmn等14个字母。故程序运行时,将机器人放在第一排第三个图带上,就可以得到正确的结果,显示出完整的单词,并唱歌。而放在其他的图带上则会提示错误。图41 填字游戏场地图42 填字游戏例程4.2 台球项目内容:在一个空房间里,机器人不停地撞过来撞过去,就象台球一样。房间里可以有一些障碍物。机器人反弹的角度应

27、尽可能合理。相关模块:碰撞检测、直行、转向、永远循环、条件判断。难度等级:图43 台球场地示意图u 程序分析要让机器人象台球一样运动,则当前方发生碰撞时,机器人应向后方运动;当后方发生碰撞时,机器人应向前方运动;当左方发生碰撞时,机器人应右转90度,然后继续向前运动;当右方发生碰撞时,机器人应左转90度,然后继续向前运动;当前后左右都没有发生碰撞时,机器人就保持向前运动的状态。参见图44和图45。图44 “台球”主程序 图45 “台球”子程序u 参数设置a) 主程序“条件判断”模块:按照从上至下的顺序,四个条件判断模块的参数设置如下表所示。条件表达式碰撞变量一前碰撞变量一后碰撞变量一左碰撞变量

28、一右“左转”模块:速度80,时间0.3秒。“右转”模块:速度80,时间0.3秒。b) “向前”子程序“前进”模块:速度100,时间0.05秒。“碰撞检测”模块:选择变量“碰撞变量一”。“条件循环”模块:条件表达式为碰撞变量一无c) “向后”子程序“后退”模块:速度-100,时间0.05秒。“碰撞检测”模块:选择变量“碰撞变量一”。“条件循环”模块:条件表达式为碰撞变量一无u 仿真运行仿真运行时,创建一个单房间场地,里面放一些障碍物,如图43所示。然后将机器人放到房间里,机器人就会象台球一样运动起来。4.3 弹球游戏项目内容:在一个房间里有若干柱子(圆形障碍物),房间门口用白色图带表示。机器人在

29、房间里运动,象皮球一样弹来弹去,检测到柱子下面的圆形彩色图带可得分(红色10分,黄色8分,蓝色6分,绿色4分,紫色2分)。看机器人在弹出房间以前能得几分,并且将分数显示出来。相关模块:碰撞检测、直行、转向、计算、显示、条件循环、地面检测。难度等级:创建环境设计一个空房间,里面有几个圆形障碍物,放在圆形彩色图带上。如图49所示。图46 弹球游戏场地4.4 随机走项目内容:机器人随机行走,有时前进,有时后退,有时左转,有时右转。行走的距离和转弯的角度要有变化,强调随机性。相关模块:直行、转向、计算、永远循环、条件判断、碰撞检测、红外测障。难度等级:u 程序分析要实现随机行走,须考虑以下几个方面:a

30、) 避免碰撞。机器人在行走的过程中,如果发生了碰撞,则后退一点,并掉转方向。b) 红外避障。机器人边行走边进行红外探测,如果发现左、右、前任一方向有障碍物,就转向。c) 前进。设置前进的参数时,将时间取为0.05秒或0.1秒,可以使红外探测和碰撞检测的周期较短,从而令机器人具有较高的灵敏度。d) 优先级。优先级的设置为:避免碰撞的优先级最高;其次红外避障;前进的优先级最低,如果没有发生碰撞,也没有发现障碍物,才前进。e) 随机性。随机性体现在行走的距离和方向上,距离应有时长有时短,方向应忽左忽右、忽前忽后。以方向的随机性为例,我们可以通过“计算”模块,计算机器人转向的次数。如果右转了3次,就左

31、转一次;如果左转了4次,就右转一次;如果前进了5次,就后退一次,等等。f) 机器人的运行环境。可以加载环境迷宫、单房间场地或标准灭火场地等(参见帮助电子文档/环境文件管理)。也可以自己创建一个环境。4.5 沿墙走项目内容:机器人沿着墙壁行走(采用左手规则或者右手规则)。相关模块:启动电机、延时等待、停止电机、红外测障、碰撞检测、直行、转向、永远循环。难度等级:u 程序分析沿墙走,顾名思义,即机器人靠近墙壁行走。采用左手规则时,墙壁在机器人的左边;而采用右手规则时,墙壁在机器人的右边。下面以左手规则为例加以说明。图47 沿墙走示意图如图410所示,要实现沿墙走,机器人可以采取划弧线的方法,边前进

32、边检测墙壁。机器人如果发现前方有障碍物,说明正对着墙壁了,就右转约90度;如果发现左方有障碍物,说明机器人左侧对着墙壁了,就右转约60度;否则就划弧线前进。有时候机器人会撞上墙壁,为此机器人还需具有处理碰撞的功能。在程序中,我们让机器人一旦检测到碰撞,就后退一点,并右转约60度。沿墙走的例程如图411所示。图48 沿墙走例程u 参数设置“红外测障”模块:检测完成后,进行条件判断,条件表达式为红外变量一 左 “条件判断”模块:条件表达式为红外变量一 前 “启动电机”模块:左电机功率20,右电机功率30。“延时等待”模块:时间0.05秒。“碰撞检测”模块:条件表达式为碰撞变量!无其余模块的参数自行

33、设置,并需反复调整,直至满意为止。u 仿真运行仿真运行时,加载单房间场地、标准灭火场地、走迷宫场地均可。读者也可以自己创建一个场地,让机器人在其中运行。4.6 点歌台项目内容:用机器人做一个点歌台,当前、后、左、右四个方向发生碰撞时,能分别唱不同的歌曲。歌曲以子程序的形式调用。相关模块:直行、转向、碰撞检测、永远循环、条件判断、子程序。难度等级:创建环境在机器人运行场地中设置一些障碍物。4.7 回音壁项目内容: 机器人根据检测到的声音强度,发出相近的声音。比如检测到声音强度为180,就发音(音频为174.6)。相关模块:声音检测、条件判断、发音、永远循环。 难度等级:仿真运行:在机器人运行场地

34、中添加声源。 4.8 查找最大值项目内容:给出一组数,让机器人从中找出最大值,并显示出来。相关模块:计算、条件判断、条件循环、显示。难度等级:项目解析:“查找最大值”项目需要设计算法。下面给出了一个简单的例程,你也可以设计自己的算法。还可以自己设计类似的项目,然后自己编程实现。本例中给出了六个整型数 5、8、-12、3、64、81,由六个计算模块分别赋给整型变量一、整型变量二、整型变量三、亮度变量一、亮度变量二、亮度变量三(见图412中的前六个蓝色矩形“计算”模块)。查找最大值的过程实际上是条件判断的过程(见图412中的红色菱形“条件判断”模块),我们选用整型变量一与其它变量逐一进行比较,如果

35、整型变量一小于与之相比较的变量,就将后者赋给整型变量一(见图412中条件判断下的“计算”模块),否则整型变量一保持不变。最后得到的整型变量一就是最大值,将它显示出来就可以了(见图412中最后的“显示”模块)。对照图412流程图右边的JC代码可以更清楚地理解上述过程。图49 查找最大值例程4.9 排序项目内容:给出一组数(例如3个整数),让机器人将其从小到大排列,并依次显示出来。相关模块:计算、条件判断、条件循环、显示。难度等级:项目解析:“排序”是计算机数据结构中重要的内容,通过VJC1.5仿真版能完成较简单的数据排序,通过“排序”项目,能锻炼自己程序设计能力。4.10 最大公约数项目内容:求

36、两个正整数的最大公约数,并显示出来。相关模块:计算、条件判断、条件循环、显示。难度等级:u 程序分析求两个正整数的最大公约数,可用辗转相除法(参见后面的小知识)。编程计算时,须注意到C语言中整型数的特点,两个整型数相除得到的商仍为整型数,小数部分被忽略。参考程序如如图413所示。u 参数设置条件循环之前的四个“计算”模块:计算表达式如下表所示整型变量一255(被除数)整型变量二60(除数)整型变量三整型变量一整型变量二(得到商)整型变量三整型变量一 整型变量二整型变量三(得到余数) “条件循环”模块:条件表达式为整型变量三!0循环体中的四个“计算”模块:计算表达式为整型变量一整型变量二(除数升

37、级为被除数)整型变量二整型变量三(余数升级为除数)整型变量三整型变量一整型变量二(得到商)整型变量三整型变量一 整型变量二整型变量三(得到余数) “显示”模块:显示信息为“整型变量二”。图410 求最大公约数例程小知识:最大公约数和辗转相除法两个正整数的最大公约数,是指能整除这两个整数的最大的整数。例如:18和45的最大公约数是9。求最大公约数的标准方法是辗转相除法。设有两个整数和,且,它们的最大公约数为d,用辗转相除法求最大公约数d的算法如下表所示:表达式步骤被除数除数商余数1230第1步,以作被除数,作为除数,得到的商为,余数为。第2步,将升级为被除数,将升级为除数,得到商为,余数为。其余

38、的步骤依此类推。从第1步开始,在每一步的表达式中,由于被除数和除数都能被d整除,故余数(被除数除数商)也能被d整除。在上述过程中,由于除数小于被除数,余数又小于除数,故余数越变越小。又由于余数不能小于d,否则会导致矛盾,于是最后必定可以得到余数为零,如下式所示:此即为表中第n步的式子,该式中的除数就是所要求的最大公约数d,即【证明】 由于第n步中整除,从表格倒推上去可知,也能整除、故是和的一个公因子,而d是和的最大公因子,于是又如前所述,d能整除表格中所有的被除数和除数,d当然也能整除,于是从而证毕。【例】 求253和77的最大公约数。步骤如下表所示,求得的最大公约数d11。表达式序号被除数除数商余数125377322277223113221120图411 、第5章 我能赢5.1 走迷宫项目内容:第一步,.运用VJC1.5仿真版中的障碍物、图带、光源和声源,设计一座迷宫,参见图51。第二步,为机器人编制程序,让机器人从迷宫的入口进去,从出口处走出来。在图51中,左下是机器人的入口,右下是机器人的出口。图51 机器人走迷宫场地难度等级:本项目可以设立以下奖项:1. 最佳迷宫奖该奖项授给迷宫设计最有创意的同学。2. 最快速度奖该奖项授给以最少时间走出迷宫的同学。3. 最佳算法奖该奖项授给程序设计思想最优秀的同学。5.2 长跑比赛项目内容:长跑比赛场

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号