智能机器人学习教程第1章预备知识1.1虚拟机器人的结构与功能1.1.1身体结构在VJC1.5中,有五种型号的机器人:AS-M、AS-MII、AS-UII、AS-InfoX和AS-InfoM。
图1-1是虚拟机器人的外形。
虚拟机器人的身体结构跟真实的能力风暴智能机器人是相似的。
本书中的范例采用的机器人型号均为AS-MⅡ。
设置机器人型号的方法参见附录B。
图1-1虚拟机器人外形1.1.2感觉器官能力风暴智能机器人的感觉功能,是由机器人的传感器实现的。
能力风暴机器人身上安装的传感器有以下几种:1.红外传感器红外传感器由红外发射器和红外接收器两部分组成。
一旦程序中发出“红外测障”的指令,红外发射器就开始发射红外线。
红外线遇到障碍物会反射回来,被红外接收器接收,从而机器人就能判断出障碍物所在的方位。
虚拟机器人能够检测左、右、前三个方向的障碍物,跟真实的能力风暴智能机器人基本相同。
发射红外线的虚拟机器人如图1-2所示。
图1-2机器人发射红外线示意图2.光敏传感器光敏传感器能够检测光线的强度,检测到的值为0~255之间的整数。
光线越亮,检测到的数值越小;光线越暗,检测到的数值越大。
此项功能跟真实的能力风暴智能机器人是一样的3.碰撞传感器虚拟机器人的碰撞传感器能够检测左、右、前、后四个方向的碰撞,型号为AS-InfoX 的机器人只能检测前、左、右三个方向的碰撞。
如前所述,虚拟机器人共分五种,它们的的区别主要就体现在碰撞检测功能上。
所以读者在打开程序时,无论是例程,还是自己编写保存的程序,如果涉及到“碰撞检测”,必须先设置相应的机器人型号(参见附录B),然后再打开程序、仿真运行。
例如:打开例程“自由行走(M).flw”时,由于名称后面带有M,故须先将机器人型号设置为AS-M,然后再打开程序文件、仿真运行。
打开例程“自由行走(Info).flw”时,最好先将机器人型号设置为AS-InfoM,然后再打开程序文件、仿真运行。
在碰撞检测功能方面,虚拟机器人跟真实的能力风暴智能机器人有较大差别(参见附录C、D)。
4.声音传感器声音传感器能够检测声强大小,检测到的值为0~255之间的整数。
数值越小,声音越低;数值越大,声音越响。
此项功能跟真实的能力风暴智能机器人是一样的。
5.地面灰度传感器地面灰度传感器能够检测地面的灰度,检测到的值为0~255之间的整数。
地面颜色越深,灰度值越大;地面颜色越浅,灰度值越小。
此项功能跟真实的能力风暴智能机器人基本相同。
1.1.3编程语言能力风暴智能机器人的编程语言是VJC1.5,由机器人C语言(简称JC)和流程图编程语言两部分组成。
读者使用仿真版的时候,可以用流程图编程。
在用流程图编程的同时,VJC1.5自动生成JC代码,便于读者观察、解释或修改程序,参见图1-3。
在图1-3中,左边是流程图,右边是JC代码。
在流程图编辑界面中,点击工具栏上的“JC代码”快捷按钮,即可看到当前程序的JC代码。
图1-3 机器人走正方形的VJC 程序1.2VJC1.5仿真版能做什么1.2.1为机器人编写程序在VJC1.5仿真版中,可以用流程图编写机器人程序,同时自动生成JC代码。
但不能直接用JC代码为机器人编写程序。
在仿真版中编写的程序对真实的能力风暴机器人也是适用的。
1.2.2创建环境可以自由创建环境,是VJC1.5仿真版的一个突出优点,这往往是使用真实的机器人时所做不到的。
在VJC1.5仿真版中,读者可以利用光源、声源、障碍物和彩色图带创建各种环境,如房间、迷宫、排雷场地等。
下面的图1-4就是用仿真版创建的一个环境――“篝火晚会场地”,场地左下方是虚拟机器人。
图1-4篝火晚会场地1.2.3仿真运行仿真运行就是进入仿真环境,让虚拟机器人按照程序指令进行运动。
编好程序、创建环境之后,就可以仿真运行了。
因此,在仿真版中,读者能够直观地看到机器人运行的效果。
第2章初试身手2.1走正方形项目内容:为机器人编程,使之能走一个正方形。
走的时候显示轨迹。
图2-1走正方形相关模块:直行、转向。
难度等级:●○○○○项目解析:编写“走正方形”程序可参照图1-1编写,项目的难点在于要反复调整“转向模块”中转向时间和速度,以便机器人正好转90°。
“直行”、“转向”模块的参数设置方法可参考“帮助”电子文档――“执行器模块”。
2.2走六边形项目内容:为机器人编程,使之能走一个六边形。
走的时候显示轨迹。
要求使用“多次循环”模块。
相关模块:转向、直行、多次循环。
难度等级:●●○○○项目解析:所有的程序都能用“顺序结构”、“选择结构”以及“循环结构”来表示。
本项目中的“循环结构”是程序设计中重要的结构,故须认真掌握。
“多次循环”模块在“控制模块库”中。
将“多次循环”模块拖到流程图生成区后,在模块上右击鼠标,打开参数设置对话框,即可输入循环次数。
另外要注意的是,使用多次循环模块的时候,须将待循环的内容放在循环体内部。
2.3走五角星项目内容:为机器人编程,使之能走出一个五角星的形状。
走的时候显示轨迹。
要求使用“条件循环”模块。
图2-2五角星相关模块:直行、转向、条件循环、计算。
难度等级:●●●○○程序设计通过该项目的学习可熟悉VJC1.5仿真版中引用变量、变量百宝箱的概念以及“条件循环”和“计算”模块的使用。
“条件循环”模块在“控制模块库”中。
从图2-8可以看到,要画出一个五角星,需重复五次“前进、右转”的动作,右转的角度为1440。
五角星的大小由前进的距离所决定。
在本例中,要求使用“条件循环”模块,我们可以将其中的条件表达式设置为在程序中,让整型变量一从0开始变化,每循环一次,就令整型变量一增加1。
当整型变量一等于0、1、2、3、4时,条件表达式都能满足;当整型变量一等于5时,条件表达式不再满足。
于是循环将进行5次,然后就跳出循环,程序结束。
参见图2-9。
图2-3五角星例程参数设置最初的“计算”模块:计算表达式为“前进”模块:速度80,时间2.0秒。
可自行调整。
“右转”模块:相对速度100,时间0.4秒。
可自行调整。
“条件循环”模块:条件表达式为循环体中的“计算”模块:计算表达式为第二个“计算”模块参数设置的方法如下面a)-d)所述:a)在“计算”模块上右击鼠标,打开参数设置对话框(图2-10);图2-4计算模块的参数设置对话框b)在图2-10中,选择右上角的“引用变量”,这时会出现变量百宝箱(图2-11)。
图2-5变量百宝箱c)在变量百宝箱中点击一下“整型变量一”,在整型变量一右边就会出现一把小钥匙,表明整型变量一被选中了。
点击“确认”。
d)写出完整的计算表达式“整型变量一=整型变量一+1”,如图2-12所示。
图2-6计算表达式仿真运行程序编好后,就可以仿真运行了。
点击工具栏中的“仿真”快捷按钮,进入仿真环境主界面,选择“显示轨迹”,然后点击“运行”键,得到一个虚拟机器人,将虚拟机器人放在运行区,就能看到机器人走出的轨迹。
计算机执行程序的过程如下:首先将“整型变量一”赋值为0,然后进入条件循环。
每循环一次,机器人前进一段距离,并右转一个角度,画出五角星的一条边,同时整型变量一增加1。
故整型变量一从0依次变为1、2、3、4。
当整型变量一等于5的时候,条件表达式不再满足,条件循环中止,程序就结束了。
图2-72.4奥运五环项目内容:为机器人编程,使之走出一个奥运五环。
走的时候显示轨迹。
图2-8奥运五环相关模块:启动电机、延时等待、停止电机、转向。
难度等级:●●○○○项目解析:设置本项目为了学习加固“启动电机”模块的使用方法,同时熟悉仿真环境中“显示轨迹”和“保留原轨迹”设置方法。
小技巧:在仿真环境中通过点击鼠标右键可调整机器人的初始角度。
2.5汽车项目内容:用机器人做一个汽车。
前进、后退、转弯、划弧线、停止、亮车灯等动作任意组合。
车灯可用机器人的眼睛代替。
相关模块:直行、转向、启动电机、延时等待、停止电机、眼睛。
难度等级:●●○○○2.6动态字符项目内容:机器人显示字符“ABCD”,并且字符从左向右运动。
图2-9仿真界面中的显示屏相关模块:显示、延时等待、永远循环。
难度等级:●○○○○项目解析:在本例中,可以这样来设计程序:用13个显示模块,分别将“ABCD”显示在不同部位,如图2-21/22所示。
其中,前一个“显示”模块与后一个“显示”模块之间插一个“延时等待”模块,延时等待的时间取0.2秒钟。
当程序运行的时候,就会产生动态的效果。
图2-10动态字符的设计方法第3章稳步前进3.1彩色地毯项目内容:机器人在彩色地毯上行走,遇到不同的颜色能发出不同的声音。
相关模块:地面检测、直行、转向、发音、永远循环、条件判断。
难度等级:●●○○○创建环境――彩色地毯。
参见帮助电子文档/环境编辑/图带和地毯。
项目解析:“地面检测”模块用于对地面的灰度进行检测,检测到的值为0~255之间的整型数,数值越大,地面颜色越深;数值越小,地面颜色越浅。
在正式编程之前,先编写一个地面灰度检测小程序(参见图3-22),检测一下地毯不同部分的灰度。
然后再构思本项目的解决方案。
3.2百米赛跑项目内容:开始时,机器人站在跑道的起点处等待起跑。
一旦听到发令枪响,就立刻沿着跑道向终点冲过去。
在跑的过程中机器人不能越出跑道。
图3-1百米赛跑场地相关模块:地面检测、声音检测、条件循环、直行。
难度等级:●●○○○项目解析:在很多比赛中要求声控启动,当机器人听到声音后才能运动。
这个项目主要演示在场地中添加声源,具体方法可参见“帮助”电子文档/环境编辑/声源。
仿真运行时,先把机器人放在跑道的起点处,然后添加声源。
3.3计算走过的距离项目内容:计算机器人走过的距离。
相关模块:直行、转向、转角检测、显示。
难度等级:●●●○○◆程序设计在本例中,我们让机器人先走一段直线,接着走一段弧线,然后再走一段直线。
最后,调用两个转角检测模块,分别检测左轮和右轮的转角,并显示出来,例程如图3-16所示。
图3-2 转角检测例程◆参数设置“转角检测”模块:打开“转角检测”模块的对话框,如图3-17所示。
图3-3 转角检测模块的参数设置对话框之一在图3-17对话框中选择“左轮、编码器检测”,就会弹出如下对话框:图3-4 转角检测模块的参数设置对话框之二在其中选择“转角变量一”,确定。
用同样的方法,将第二个“转角检测”模块的参数设置为“右轮、编码器检测、转角变量二”。
“显示”模块:选择“引用变量”,在两行中分别显示“转角变量一”和“转角变量二”。
仿真运行仿真运行时,显示轨迹,可以看到机器人走过一条曲线,最后在右上角的显示屏上显示出左右轮的转角数。
机器人的轮子转一圈,机器人的光电编码器接收到33个脉冲,转角计数为33。
真实的能力风暴机器人轮子的直径d=64mm。