第7课程序设计——机器人的大脑和初步编程
一、提出问题
机器人可以代替人类完成很多任务,它可以进行水下作业,可以在医院辅助医生给患者治病,非常厉害!我们知道人可以通过大脑思考,那么机器人是如何进行思考的呢?它是如何像人一样完成各种工作呢?
二、联想
如图7-1所示,机器人可以像人一样的进行思考,那机器人的大脑究竟是什么呢?
图7-1 机器人和人
技能牌
乐高机器人的大脑:EV3控制器,如图7-2所示。
图7-2 EV3控制器
EV3控制器基于Linux操作系统,300MHz ARM9 处理器,16M闪存,64M 随机存储器。
EV3控制器是乐高机器人的大脑,换句话说乐高机器人的数据计算、电机控制、传感器采集都要通过控制器来完成。下面,先介绍一下EV3控制器。
如图7-3所示,控制器正面由显示屏和按键组成,按钮分别为:①返回按钮、②确定按钮、③上、④下=、⑤左、⑥右6个按钮组成。
图7-3 EV3控制器按键
如图7-4所示,控制器侧面有USB插口和SD卡插口,USB口可以连接USB无线网卡,但网卡需要匹配控制器的硬件要求。SD卡可以扩展控制器的内存,最大可以扩展到32GB。
图7-4 EV3 侧面
如图7-5所示,控制器前面是A、B、C、D四个输出口,输出口可以连接电机或灯。此外,还有控制器的PC程序传输口,通过这个接口可以通过数据线把程序传输给控制器。
图7-5 EV3 前面
如图7-6所示,控制器后面是1、2、3、4四个输入口,输入口用来连接传感器。传感器采集的数据可以传输给控制器去处理。
图7-6 EV3后面
三、要求:
指定距离的机器人小车,小车向前行走50CM,然后停车,并鸣笛。
1. 小车向前行走的距离越准确越好
2. 小车停下后要鸣笛示意
机器人小车要向前行走一段距离,然后停下,这就需要通过乐高机器人的大脑——EV3控制器来对乐高电机进行控制。下面我们要使用EV3控制器来做一辆机器人小车。
四、构建
小车搭建:
我们来搭建一辆机器人小车,它使用两个电机作为主动轮来控制小车行走,并用一个金属球作为从动的轮子,如图7-7所示。这里解释一下主动轮和从动轮。通过电机传动后,可以主动转动的轮子称为主动轮;被动跟随转动的是从动轮,起到辅助支撑的作用。两个电机通过数据线分别连接到控制器输出口的B和C。
图7-7 机器人小车底部
如图7-8所示,机器人搭建完成,前几节课我们都是利用电源控制机器人的动作,都需要依靠人为的操控。这节课我们运用EV3控制器来控制电机的转动。为了达到这个目的,我们需要给机器人编写程序,只有把程序传输给控制器,控制器才可以控制机器人,完成我们规定的任务。
图7-8 机器人小车侧面
技能牌:EV3编程软件
EV3编程软件是一个图形化的编程语言,它的编程不需要去记忆程序命令和繁琐的结构,只需要把各种图形化程序模块连接到一起就可以了。这样既形象生动,又简单易学。
打开软件后新建一个文件,如图7-9所示。编写程序时需要把下方的程序模块拖到白色区域并与前面图片用线进行连接。编好后的程序就像很多图片用线缝起来一样。
图7-9 程序新建文件界面
五、算法与程序:
算法:为了让小车可以准确的行驶到50CM处,我们可以让小车以相同的速度前进,并从起点到50CM处进行计时,把时间记录下来。再把这个时间写到程序中,让小车按照这个时间来前进,这样小车就可以前进到终点处停下来。根据这个想法,我们通过以下6个步骤来实现。
程序:
1.编写程序,让小车一直向前行驶
通过“移动转向”模块,来控制小车向前。在模块右上方选择“B+C”,左下方选择“开启”模式,这时模块下方分别有2个选项,分别是方向和功率,如图7-10所示。
图7-10 移动转向模块
方向:-100到100,数值代表机器人的方向,数值不同机器人转的方向就会不同,0代表直行。
功率:-100到100,正负代表前进或后退,正方向为电机顺时针转动,负方向为电机逆时针转动。数值代表功率的大小。
技能牌:循环结构
为了让小车一直向前,在程序里面加入循环结构。循环结构可以使程序语句被循环执行。在需要重复使用代码的时候,循环结构会经常被用到,如图7-11所示。
图7-11 循环结构
2.计时,把时间记录下来
记录小车行驶50CM距离的时间,把时间输入到程序中,并在“移动转向”模块的左下角选中“开启指定时间”。把记录的时间放到时间选项中,如2.8秒,有了时间,我们就可以去掉循环语句,让小车按照时间去行走,程序如图7-12所示。
图7-12 小车前进2.8秒
3.发出声响
在小车到达终点后,发出声音。选择声音模块,可以在右上角选择乐高提供的各种声音文件,程序如图7-13所示。
7-13 到达终点并发出声音
4.保存
如图7-14所示,保存项目名称为“juli.ev3”,EV3程序所编写的程序文件名是“*.ev3”。
7-14 保存文件
5.下载
a.长按控制器的“确定”按钮,使控制器开机。
b.将下载传输线连接到EV3控制器和电脑USB口。
c.单击“下载”按钮。下载按钮在程序的右下角,如图7-15所示,在最右端EV3字母下方,三个按钮分别是:“下载”,“下载并运行”和“运行已选模块”。
图7-15 程序下载
6. 运行
如图7-16所示,在EV3控制器当中,选择文件夹中的“juli”文件夹,然后点击确定按钮选择“program”,就可以运行程序来控制机器人了。
图7-16 EV3显示文件夹
六、优化与改进
现在,我们用另一种方法来解决问题。我们已经知道路程是50CM,那么只要我们知道乐高的轮胎的直径,我们就可以通过轮胎转动的圈数来控制小车行走的距离。
改进步骤:
1.乐高轮胎的直径
我们使用的乐高轮胎的直径是43.2mm,这个数值在乐高轮胎上有标明,查看一下就可以知道,如图7-17所示。
图7-17 乐高轮胎
2.通过直径计算周长
根据公式:L=πd,π是圆周率3.14,d是乐高轮胎的直径,L是轮胎的周长,经过计算L=3.14×43.2=135.6mm。(保留一位小数)
3.根据周长L和距离S,计算出轮胎需要转动的圈数
圈数=S/L=500/135.6=3.7圈(保留一位小数)
4.编写程序
由于乐高电机里面配有转速传感器,可以测量电机转动的角度和转速。因此我们可以在“移动转向”模块左下角选择“开启指定圈数”并输入圈数为3.7(1圈=360度)。程序如图7-18所示。下载并运行程序,看一看机器人是否可以走50CM的距离呢?
图7-18 小车前进3.7圈
七、实践与讨论
机器人是如何能够思考问题或做出动作的? ________________
利用时间和角度两种测量方法控制机器人行走,哪一个更加准确呢?为什么?__________________
八、拓展
机器人走四方形
我们刚才已经走了一条50CM的直线,下面请你让机器人出发后走一个正方形,最后让机器人回到起点。
技能牌:机器人转弯
机器人转弯还是利用“移动转向”模块,为了更加精确,选择“开启指定度数”,方向改为51向右转动,功率50,角度390度,如图7-19所示。
图7-19 机器人转弯390度
注意:转弯的角度要根据机器人所走的场地和机器人的结构来确定。通常使机器人转到90度的位置,要不断的修改方向值去测试机器人的转动位置。
最终的程序,如图7-20所示。
图7-20 程序循环4次
注意循环结构,选择好计数循环的次数。由于要走四边形因此循环次数取值为4。
通过这个例子我们可以看到机器人的动作是由程序来控制的,机器人本身是不会像人一样进行思考的,但是通过给机器人输入程序后,就可以让机器人像人一样进行思考和动作了。
九、作业
如图7-21所示,如果让机器人小车前进,碰到障碍物后停止(障碍物固定在地面上,小车不会推动),并发出声响,你应该用时间还是角度去控制机器人电机的转动呢?说说为什么?
图7-21 机器人碰到障碍物停下
--end--
声明:本文章由网友投稿作为教育分享用途,如有侵权原作者可通过邮件及时和我们联系删除:freemanzk@qq.com