机器人的天空:基于Arduino的机器人制作(光盘内容另行下载,地址见书封底)(txt+pdf+epub+mobi电子书下载)


发布时间:2020-06-02 09:36:14

点击下载

作者:毛勇

出版社:清华大学出版社

格式: AZW3, DOCX, EPUB, MOBI, PDF, TXT

机器人的天空:基于Arduino的机器人制作(光盘内容另行下载,地址见书封底)

机器人的天空:基于Arduino的机器人制作(光盘内容另行下载,地址见书封底)试读:

前言

同学们知道吗?人类已经在地球这个美丽的蓝色星球上进化、繁衍了上百万年。但在这漫长的百万年间,人类社会这台巨大的车体都只是吱吱呀呀地缓缓向前移动。直到两百多年前,瓦特发明了第一台现代蒸汽机,这台“大车”好像一只突然被惊醒了的怪兽,一旦开始加速,就再也没有什么东西能够阻挡它向前的脚步了。只是在一百年之后,古老的教堂那原本醒目的尖顶就已经湮没在近代工厂如林高耸的烟囱中,洲际铁路将遥远的东西方连接起来,满载着工业产品的轮船航行在浩渺的大洋上,跨洋电报令美洲和欧洲的人们能够瞬时沟通。自从冯·诺依曼设计出计算机,仿佛只在一夜间,人类社会就跨入了信息时代。互联网、搜索引擎、iPad、微博,同学们也许对生活中每天都在不断涌现的这些新鲜玩意儿司空见惯。但是你们能想到吗?只是在一二十年前,这些神奇的事物可能都还只停留在最激进的幻想家的脑海里。

这就是科学和技术爆炸般的力量,它改变了人类的生产方式、交换方式、社会组织,它改变了我们身边的一切。生活在这样一个每天都是崭新的时代里,人类是幸运的,因为每天起床都可能见证到奇迹的诞生,新事物不断被人们接受、成为我们生活的一部分。同时,我们又要承担相应的压力,因为在这样一个时代,同学们若不努力学习,尤其是努力学习科学和技术的应用、创新,只会被时代抛在后面。

那么,如何能够更好地学习科学和技术呢?如何才能将所学到的知识实际运用到生活中,去发明,去创造呢?我们说,机器人就是一个最好的平台。机器人学是一个集成了机械、电子、计算机、人工智能等多个领域先进技术的交叉学科,许多国家都把发展机器人当成一项战略性的研究任务。同时,机器人又是科技和创新教育的良好载体。学习机器人,可以令青少年理解和掌握科学、技术、工程学和数学的很多知识与原理,并且通过动手实践将它们运用到解决实际问题的过程中。但同样是由于机器人多学科交叉融合的特点,它的内容难免芜杂,容易使作为机器人初学者的同学不得其门而入。

机器人教育在我国已经开展了多年,但是在普及方面还存在明显的不足。很多教师和同学都希望能够拥有一套面向教育、价格适中的机器人教育解决方案,帮助他们在学校里以机器人社团或是校本课程的方式开展机器人活动。本书就是为了这样的目的而编写。我们选择了全球最为炙手可热的开源硬件平台Arduino作为机器人主控制器的基础,又根据教育的特点在其上进行了一些定制开发工作,将它的学习曲线进一步降低下来。

本书针对的读者是对机器人拥有热情但并不了解的初学者,他们具备了相当的理解和认知能力,但是却常常苦于如何获得机器人的知识并将它们应用于实际。因此,我们在编写此书时遵循的主要原则是知识与技能的学习要紧紧伴随着实际应用。全书以任务为导向,基于项目学习的方式,用几十个具体的实验活动和拓展活动将内容贯穿起来。在知识内容的组织上,我们并不太重视知识灌输的系统性,比如C语言的使用就是择其要点,在任务涉及时才将必要的知识进行讲授。本书涉及的实验和拓展不是一个个孤立的示例,而是有认知和逻辑上的前后顺序,由浅入深。同学们在学习了本书的内容后,会在不知不觉间迈入机器人世界的门槛,甚至初步具备了参加巡线和灭火机器人挑战赛的能力。

此外,我们希望本书不仅能作为机器人爱好者的学习读物,而且可以根据教学课时要求稍作变化后,作为教师进行机器人教学活动时的教材。

本书由毛勇主编,参加编写的人员有韩恭恩、李欢、李慧、梁潆、刘翠蓉、刘明非、王璐、谢鹏、谢作如和郑祥。

希望本书能够让更多的青少年从这里开始爱上机器人,能够为机器人走入课堂、走向普及贡献一点绵薄之力。编者第一课走近机器人21世纪是科技高速发展的时代,这个时代对未来影响最大的4项技术是智能机器人技术、巨型计算机技术、生物技术和纳米技术。同学们不要以为这些科技前沿的新鲜玩意儿离我们还很远。实际上,科学技术每时每刻都在悄然改变着我们的生活,机器人这个以前看来似乎遥不可及的事物已经慢慢融入了我们的日常生活中。现在,在现代化工厂中工作的工人师傅们每天打交道最多的就是各种各样的工业机器人,它们帮助工人师傅们完成各种繁重、枯燥的工作。很多同学的家里,也许已经有了扫地机器人,这种机器人可以把原来很难清洁到的卫生死角扫得干干净净。而对于担负着保卫人民群众安全的警察同志,各种反恐防暴机器人也早就不陌生了,使用机器人可以更加安全地排除可疑的爆炸物,更有效地打击恐怖分子。对于广大的青少年朋友来说,机器人是帮助我们学习科学技术,为未来打好基础的最优秀的舞台。通过学习机器人,不仅能够学以致用,将我们在课堂上学到的数学、物理等知识应用到实际当中,还能学习掌握电子、机械、计算机等先进的科学技术。在开展机器人项目的过程中,我们的动手能力、项目管理能力、表达能力、领导能力等综合素质也将会得到提升。那么,同学们还在等待什么呢?赶快让我们一起进入机器人的世界吧!在学习了本节课程后,同学们应该理解什么是机器人?什么是智能机器人?能够指出机器人的几大主要组成部分及其功能。一、机器人概述

提起机器人,同学们肯定不会感到陌生。好莱坞的电影里那些精彩的机器人形象早就深入人心了,如图1-1中可爱的瓦利机器人,《终结者》里面来自未来世界的杀手机器人,各种各样的变形金刚。但你们知道机器人——“Robot”这个名字的由来吗?什么样的机器人才能被称为智能机器人呢?下面细细道来。图1-1 电影中的各种机器人形象

机器人(Robot)这个词最早出现在20世纪初捷克科幻作家一部叫作《罗索姆的万能机器人》的小说中,在原文里本来是写作“Robota”的,后来慢慢演变成了大家都接受的“Robot”一词。不过,大家可别被机器人这个名字所误导,认为机器人就一定长得和我们人类有几分相似。实际上,机器人的外表千奇百怪,很多和我们人类的外表没有半点相似之处。那么机器人是如何定义的呢?科学家说:“机器人是一种自动化的机器,能够依靠自身的动力和控制能力实现某种任务,这种机器具备一些与人或生物相似的智能能力,如感知能力、规划能力、动作能力和协同能力等。”按照这个定义,我们日常生活中每天都接触到的很多机械设备,如自动售货机、全自动洗衣机、自动取款机,甚至是红外感应的自动冲水马桶,都能算是机器人。机器人离我们的生活并不遥远。

而智能机器人比起一般的机器人来又前进了一步。如果一个机器人能够利用传感器感知外部世界,然后依靠自身的智能对外界环境的变化作出反应,那么这种机器人就可以被叫作智能机器人了。那么大家想一想,按照这个思路,刚刚提到的红外感应自动冲水马桶是不是也可以算是一种智能机器人呢?

图1-2中就是一些生活中最常见的智能机器人。图1-2 生活中的智能机器人二、机器人的四大组成部分

说了这么多,同学们肯定已经很想知道机器人是如何工作的了。实际上,根据机器人所需要完成的任务不同,它们的设计也是千差万别,仅从外貌很难看出规律。不过,如果仔细地对它们做总结就会发现,大多数的机器人无外乎包括下面的几个部分,而且这几大部分都和人类或动物的身体器官能够一一对应。

1. 机器人的大脑——主控制器

和人类的大脑一样,机器人的大脑——主控制器是机器人最核心的部件。我们为机器人编写的各种控制程序和人工智能程序都在主控制器中运行。机器人的传感器得到的众多的外界环境信息传达到主控制器,人工智能程序对这些信息进行汇总处理,给各种驱动器、执行器发出控制命令。机器人就是以这种方式执行各种各样实际的任务。

主控制器具体是什么东西呢?实际上,它就是一种计算机。这里的计算机是一个相当宽泛的概念,它们可不仅指我们家里每天用的个人计算机。除了个人计算机外,还有其他形形色色的各种计算机,小到只有同学们指甲盖大小的单片机(MCU),大到要装满几个大房间的超级计算机。而这些计算机中最广泛用作机器人控制器的还要数单片机了。同学们想一想,如果要制造一台全自动洗衣机——前面说过了全自动洗衣机也是一种机器人,那么用一台个人计算机作为控制器,是不是就有些“杀鸡用牛刀”了呢?这种时候,单片机就可以大展拳脚了。单片机是典型的“麻雀虽小,五脏俱全”。一片小小的单片机中包括了中央处理器、存储器、定时器、数字输入/输出接口、模拟输入/输出接口等。本书中所使用的机器人的主控制器就是以一个单片机为核心。小小的一片单片机1秒钟能做上千万次的运算。

2. 机器人的眼睛、耳朵和触角——传感器

如果机器人只能按照编好的程序指令有一是一、有二是二地行动,会不会就显得太“笨”了呢?科学家们早就想办法让机器人具备了更高的智能,让它们能够根据环境的变化做出反应。比如现在已经有服务机器人可以根据主人家里的温度变化调节空调、暖气,让人类主人一直处于舒适的环境中。再比如,在国外的一些博物馆中有导游机器人(见图1-3)为人们服务,它们能不知疲倦地带领游客参观并且详细讲解,但是在博物馆中,人来人往,导游机器人怎么能够防止自己撞上其他游客呢?这就要靠“传感器”实现了。传感器就像是人类的眼睛、鼻子、耳朵,或是动物的触角,潜水艇的声呐。它们可以将环境中的声、光、电、磁、温度、湿度等物理量转化为机器人的大脑——控制器可以处理的电信号。控制器通过读取这些电信号很快知道周围发生了什么,然后智能程序根据周围环境的变化作出实时响应。图1-3 博物馆导游机器人

3. 机器人的足——驱动器

前面所举的机器人的例子,如智能抽水马桶、全自动洗衣机,都是没有移动能力的机器人。但是想想看,会跑的机器人也许能更好地帮助人类,我们可不想家里的智能管家机器人只能待在一个房间中,因此,人们制造了一大类可以自由运动的机器人,它们被称为移动机器人。而帮助它们移动的机械和电子设备就叫作驱动器。同样,机器人的驱动器也是五花八门。大多数机器人就像我们日常生活中常见的各种车辆一样,是用轮子或者履带运动的。也有机器人应用仿生学原理,像人或动物一样用两足、四足或六足运动。还有的机器人可以螺旋桨产生的推力翱翔在天空,可以像蛟龙一样自由地潜入水下。有了驱动器的帮助,是不是机器人变得上山下海,无所不能了呢?图1-4是采用履带式驱动的军用机器人。图1-4 用履带驱动的军用机器人

4. 机器人的手——执行器

机器人的结构中用来实际完成特定任务的装置叫作执行器。比如,自动售货机中,把货物取出交给顾客的装置就是执行器。还有一些机器人的执行器更加复杂,看起来像是人类的手臂。现代工厂中的焊接机器人、喷漆机器人、码垛机器人都有一只灵活、强壮的手。也许在工厂中做某些技术活时,机器人还是不如有经验的人类师傅。但是在做那些高强度、重复性的劳动时,机器人就会全面胜出了,它们可以不知疲倦地工作,又快又好地完成任务。现在最先进的机器人已经可以进行复杂的外科手术了,图1-5中就是最先进的外科手术机器人。图1-5 外科手术机器人三、机器人对人类的帮助

总结起来,机器人主要可以在以下的几个方面发挥它们的优势。

1. 机器人可以代替人类完成重复性、高强度的体力劳动

前面已经提到过,在现代化工厂中,大部分枯燥的体力劳动都可以用不知疲倦的工业机器人代替工人师傅们完成,工人师傅们在计算机屏幕后就可以完成原来又脏又累的工作了。不仅如此,机器人进行重复性工作时的精确度也是人类无法比拟的,因此产品的质量会更有保障。同学们能想到吗?我们每天乘坐的汽车已经几乎完全是由机器人焊接、组装的了。图1-6中工业机器人正在进行汽车装配工作。图1-6 工业机器人

2. 机器人可以代替人类在危险条件下工作

同学们能想到的最危险的地方是哪里呢?灾害现场?现代战场?没错,机器人已经可以在这些地方发挥重要作用了。不久的将来,大家会发现,一旦发生自然灾害,救灾机器人会冲在第一线,挽救灾区人民的生命和财产。同学们也许听过这句话,现代的战争是综合国力的比拼。综合国力最重要的一项是科技实力。现在发达国家已在军队装备机器人,这种机器人可以负重几百公斤在各种地形地貌环境中前进。图1-7中是美国最新的“大狗”军用运输机器人。图1-7 “大狗”军用运输机器人

3. 机器人可以到达人类难以到达的环境,帮助科学进步

人类从来没有停止探索我们所在的星球和浩渺的太空。但是对于人类脆弱的身体来说,这些地方的环境实在是太恶劣了。好在有了各种钢筋铁骨的机器人帮助我们进行科学探索。从月球、火星到海底、火山,凡是科学家们需要探索的地方都少不了机器人。美国发射的几代火星探索机器人已经在火星上进行科考工作了,图1-8中是代号为“好奇号”火星探索机器人。图1-8 “好奇号”火星探索机器人

4. 机器人可以与人类和谐相处

现代社会生活节奏变得越来越快,在物质丰富的同时也产生了各种社会问题。越来越多的“空巢老人”和行动不便的病人需要照顾,面对这些问题,科学技术又能如何帮助我们呢?科学家们设计出各种服务机器人满足我们的要求。“请递给我一杯水”、“把房间温度调高一些”、“帮我接通社区医院的电话”,以后主人们只要这样说出自己的命令,服务机器人就会及时满足他们的要求。除了帮做家务,当主人感到孤独时,机器人宠物还可以陪伴主人,给主人精神慰藉。根据最新的报道,法国科学家研制的Nao机器人(见图1-9)已经用于治愈自闭症儿童,并且产生了惊人的效果。很多存在交流障碍的儿童,通过和Nao机器人相处情况好转。图1-9 Nao仿人机器人实验活动寻找生活中的机器人

生活中能见到各种各样机器人,让我们睁大眼睛,寻找生活中的各种机器人,并且用这节课教给大家的思路,分析它们的几大组成部分。把结果填写在表1-1中。表1-1 寻找生活中的机器人第二课我的第一台机器人通过第一课的学习,浏览了世界上形形色色的机器人,它们虽然看起来大不相同,但一般都可以分为四大组成部分。这节课让我们“解剖”一下本课程中所要使用的机器人,看看它的四大组成部分都包括哪些东西。别小看我们的小机器人,虽然它是以帮助同学们学习为目的的教育机器人,没有第一节课中介绍的那些复杂的大机器人那么“炫”的外观,但其中的功能一点也不少。让我们逐步认识、熟悉它的部件,并且灵活地应用它们完成有趣的任务。本节课后,同学们应该已经将小机器人的基本底盘组装成功,并且学会将智能程序下载到机器人的控制器中了。虽然功能简单,但这毫无疑问可以算是我们所拥有的第一台机器人。就让我们从这里开始奇妙的机器人之旅吧!一、解剖我们的小机器人

同学们已经知道,每个机器人大致可以分为四大组成部分:机器人的大脑——主控制器、机器人的眼睛和耳朵——传感器、机器人的手臂——执行器和机器人的腿脚——驱动器。下面看看将要使用的机器人的具体模样。

1. Arduino主控制器

机器人的四大组成部分里最重要也是每个机器人必不可少的部件是主控制器。其实它就是一台小小的计算机,在它上面运行编写的智能程序,而机器人就是靠智能程序的指挥完成任务的。

我们的机器人采用的主控制器叫作Arduino。它是全世界最有名的开源硬件平台,每天有无数的机器人、电子创新或互动艺术的爱好者们使用Arduino进行他们的发明创新工作。学会使用它之后,我们就是他们中的一员,可以和全世界的爱好者们共同进行创新活动了。图2-1所示为本书中所使用的Arduino主控制器。图2-1 Arduino主控制器

2. 各种各样的传感器

只有聪明的大脑还不够,感受不到外界环境变化的机器人是不能被称作智能机器人的。如果机器人没有传感器的帮助,就像“两眼一抹黑”的瞎子一样,可以做的事情有限。

传感器是可以把现实世界中的各种物理量转化为可以被计算机读取的电信号的装置。人们发明了各种各样的传感器,加速度计可以测量物体的加速度运动、热敏传感器可以感受温度的变化、磁敏传感器可以感受周围磁场的强度,等等。

本书介绍几种常用的传感器,如图2-2所示。微触开关传感器可以检测微小的碰撞,光感传感器可以检测光线亮度的变化,地面灰度检测传感器可以用来检测地面黑白程度。在后续的课程中将会学习它们的原理,并且把它们应用到我们的小机器人中。图2-2 微触开关传感器、光感传感器和地面灰度检测传感器

3. 用执行器完成任务

很多机器人都有和人类一样灵活的手臂,可以用它抓取或移动物体。没有手臂的机器人功能就要大打折扣了。在本书中,我们用一种被称为“舵机”的特殊电机制作机器人的手臂。

在本书中说到机器人的执行器时,采用的是一个宽泛的概念。因为有一些机器人虽然不一定拥有手臂,但它们可以用其他的机电装置完成某种特殊的执行器功能。所以这里将机器人的发声或发光功能也归为执行器范畴。同学们很快就会接触到LED小灯、蜂鸣发声装置等各种执行器模块,如图2-3所示。图2-3 舵机、LED小灯模块和蜂鸣器模块

4. 让机器人上天下海的驱动器

前面已经讲过可以移动的机器人是机器人中的一个大类,而作为移动机器人的腿脚的驱动器就是让它们完成各种运动的动力源泉。直流减速电机是最常见的机器人驱动器。在课程中一直伴随我们的小机器人就是用2只直流减速电机作为驱动器的双轮差速驱动机器人,直流减速电机如图2-4所示。至于如何随图2-4 直流减速电机驱动器心所欲地控制电机的运动,双轮差速驱动方式又有什么特点,这些问题很快就会在后续的课程中讲解。实验活动第一台机器人的诞生实验器材Arduino主控制器板和扩展板;LED小灯板;直流减速电机和轮子;机器人车体的其他机械件;螺丝刀和尖嘴钳。实验步骤

请同学们拿起工具,按照附录G所列步骤,将小机器人组装起来吧!组装成功的小机器人如同图2-5中这样。图2-5 组装成功的机器人二、机器人的智能

组装好机器人,下一步就要给它加载智能程序了。同学们可能会好奇,智能程序是如何编写和“灌输”到机器人的主控制器中的呢?其实并不复杂,机器人的主控制器就是一台迷你计算机,用一根USB连接线将其和我们的个人计算机连到一起(见图2-6),单击一下按钮,同学们在个人计算机中编写的程序就会“下载”到主控制器。之后,智能程序会接管机器人,指挥它乖乖地为我们完成任务。图2-6 主控制器和计算机的连接

同学们知道可以运行的软件程序在计算机中是什么样子的吗?如果打开一个可以执行的文件,就会发现它们大同小异,里面全是由0和1组成的二进制编码,似乎完全读不懂,也找不到它的规律。这种代码叫作“机器代码”,顾名思义,它们是供计算机处理而不是给人读的。

人类程序员编写程序时,通常采用可读性更好的“高级语言”。比如,鼎鼎大名的C语言就是一种高级语言。在本书中,就是用C语言编写Arduino程序的。聪明的同学可能会问,如何将高级语言编写的程序变成机器能“看懂”的机器代码呢?科学家们早就设计了专门的计算机程序来做这件事情,它们叫作编译器和链接器。使用它们把C语言程序变成机器代码的过程就叫编译和链接。

同学们再想一想,要是在工作的时候,每次想要运行一下自己的程序都要去找编译器和链接器,然后一个一个地运行它们,是不是很麻烦呢?别担心,各种高级语言都有自己好用的集成开发环境(IDE)软件帮助去做这些琐碎的事情,有的集成开发环境可以在我们忘记某个功能如何使用时跳出“帮助”文档,有的还可以“提醒”命令的写法。Arduino为我们提供了一个简明的集成开发环境。这个软件的界面如图2-7所示。图2-7 编程软件界面

在这个编程环境中,可以在白色的区域内书写自己的程序。平时打交道最多的功能都被制作成快捷按钮形式,大多数时候,只要用鼠标单击按钮就可以完成大部分工作了。下面先来总结一下这些按钮的功能。

1. 校验按钮(见图2-8)图2-8 校验按钮

用于校验程序的语法正确性,如果编写的程序语法有错,下面的黑色区域就会给出错误类型的提示。

2. 下载按钮(见图2-9)图2-9 下载按钮

用于将程序编译成机器代码后下载到Arduino主控制器。当然,如果程序有语法错误,下载会失败,并且一样会在黑色区域内出现错误类型提示。

3. 新建按钮(见图2-10)图2-10 新建按钮

新建一个新程序,软件会自动用Arduino的程序模板新建一个程序,在它的基础上编写自己的智能程序。

4. 打开按钮(见图2-11)图2-11 打开按钮

打开已有的程序,这样就可以在以前保存过的程序的基础上继续工作了。

5. 保存按钮(见图2-12)图2-12 保存按钮

将我们修改过的程序保存起来。

6. 串口监视器(见图2-13)图2-13 串口监视器

如果我们成功把主控板连接到了个人计算机上,就可以打开串口监视器了。它是机器人调试的一个非常好用的工具。我们会在后面的课中讲到它的用法。实验活动我的第一个智能程序实验器材已经组装好的机器人和小灯模块;USB连接线;个人计算机。实验步骤

1. 安装软件

刚才已经讲过,为Arduino编程是需要一种叫作集成开发环境的软件的。而且为了让个人计算机能够识别Arduino主控制器,还需要一些驱动程序的支持。因此,我们工作的第一步是按照附录A中的说明,一步步地将计算机上的软件安装好。

2. 连接主控制器

现在主控制器可以和个人计算机用USB线连接起来了。个别的时候如果我们更换了一个USB接口,连接的时候计算机会跳出要求驱动程序的窗口。在Windows操作系统下,只需要选择让计算机到C:\\Program Files\\Arduino\\drivers目录中搜索就可以了。

3. 编写程序

打开Arduino的集成开发环境软件,逐行输入图2-14所示的下面程序。这段程序叫作“Blink”,就是闪烁的意思。它是Arduino中最出名的一段示例程序,无数爱好者通过它开始爱上Arduino。我们马上就来实验它,让LED小灯闪烁发光。图2-14 LED小灯闪灯程序

4. 编译下载

现在就可以将编写好的程序编译后下载到主控制器。在单击“下载”按钮进行编译和下载操作前,要确认在“工具”→“板卡”菜单命令的列表中选择了正确的Arduino主控板的类型,我们所使用的是Arduino的Leonardo控制器。然后,再在“工具”→“串口”菜单命令中选择适当的串口编号。现在,单击“下载”按钮,就可将程序传送到主控板。

5. 观察现象

如果不出意外,现在单击主控制器的“运行”按钮,就可以看到LED小灯模块开始一闪一闪地工作了。拓展活动从改变一个数字开始

刚才已经成功地用一段智能程序让LED小灯一闪一闪地工作了。通过观察可以发现,小灯的闪烁周期是恒定的,究竟是程序中的什么语句控制了小灯的亮灭周期呢?我们可以给大家一点提示,程序中有两处出现了delay(1000);语句,就是它改变了小灯的亮灭周期。现在,就来试试改变这两处语句中1000这个数值,看看会发生什么情况?用下面的数值进行实验,并且把你观察到的现象填入表2-1中。表2-1 实验记录第一处delay第二处delay现象5005008002002008001010155515

经过这次实验后,同学们发现了什么呢?请大家发挥自己的想象力,猜一猜程序中两处delay(数值)语句的作用分别是什么?把自己的思考写出来。第三课会跳8字舞的机器人在上节课中已经组装成功了第一台小机器人,并且为它编写了一段最简单的智能程序。从本节课开始,将用这台机器人完成各式各样的任务。同学们知道吗?在生物界中,可以观察到一个关于蜜蜂的奇特现象:它们常常会在空中飞出一个“8”字,就像是在跳“8字舞”一样。这种现象蕴含一个有趣的科学道理:蜜蜂这样做时,实际上是在用一种特殊的方式告知自己同伴蜜源的方位。它们的飞行轨迹与地面垂线的夹角,表示蜂房、太阳和蜜源三者之间的相对角度信息。当其他蜜蜂看到这样的信息时,就可以根据太阳的方向找到蜜源了。当然,如果是阴天下雨,或者看不到太阳时,蜜蜂就会失去这种辨别方向的神奇能力。本节课中,我们就要让机器人像蜜蜂一样跳起8字舞。大家已经知道,机器人是依靠电机运动的,要想让它学会跳舞,自然需要学会控制机器人的电机,让电机按我们的想法自如地运动。那么,就让我们一起玩转机器人的驱动电机吧!一、机器人的驱动

1. 机器人五花八门的运动方式

在学习控制电机的运动前,先来看看机器人都有哪些驱动方式吧!在这儿,我们说到机器人的驱动方式并不是指机器人的动力究竟是由电机提供的还是由内燃机提供的,而是指如何让机器人行动起来的。比如,有的机器人只有两个轮子驱动,有的机器人则有3个轮子驱动,有的机器人使用多足步行的方式行进,甚至还有的机器人能像蛇一样爬行,像壁虎一样攀上墙壁。同学们想过没有,为什么我们在设计机器人时要有这么多不同种类的驱动方式呢?实际上,这些不同的驱动方式各有各的长处,图3-1是几种常见机器人驱动方式的示例。图3-1 不同驱动方式对地形的适应能力不同

比如,三轮车式的机器人,就和我们日常生活中常见的三轮车很相像,它一般有一个电机负责转动两个后轮,提供动力,另一个电机负责转动前轮,控制行进的方向。这样的机器人操控起来很简单,方向和速度能分别得到控制。但是它的缺点也很明显,在不平坦的地方,这种机器人就很容易翻车。另外,这种机器人是不能原地转弯的,而是有一个最小转弯半径。骑过三轮车的同学们都知道,即使把三轮车的车把转到最大角度,三轮车也不能原地转动,它只能跑一个不小的圆形,对吗?而这个圆的半径,就是机器人的最小转弯半径啦!

再比如,履带式机器人可以很好地适应不平坦的地面环境,坦克车就是最好的例子。但是它也有速度相对比较慢、速度和方向不能分别控制、摩擦力大及能量损失大的缺点。可见,在平坦的环境中,我们就没必要用履带式机器人了。

还比如,五花八门的步行机器人,它们的主要区别在于腿的数目,从双足、四足到六足、八足,不一而足。这类机器人对地形的适应能力非常强,世界上最先进的四足步行机器人已经可以翻山越岭、跨越障碍,代替人类执行很多复杂的任务了。

总而言之,机器人要根据实际执行任务的环境不同选择最合适的驱动方式。

2. 双轮差速驱动

我们的小机器人采用的是最为常见的一种机器人驱动方式——双轮差速驱动。大家在安装机器人的时候应该早就发现了,我们的小机器人有两个电机和两个轮子(这里不考虑主要起支撑作用的小脚轮)。对于采用这种驱动方式的机器人来说,当它运动时,无非有这么几种情况:左轮和右轮以同样的速率向前转动,机器人向正前方前进;左轮和右轮以同样的速率向后转动,机器人向正后方后退;左轮和右轮的转动速度不同时,机器人就转弯了,而转弯半径的大小取决于左右两个轮子的转动速度之差。还有一种特殊的情况,如果左轮和右轮的转动速率相同,但是方向正好相反时,机器人就可以实现原地转动。图3-2说明了这几种不同的运动情况。图3-2 双轮差速机器人的运动

为什么双轮差速驱动能成为机器人中最为流行的驱动方式呢?这是因为这种驱动方式有很多明显的优点。首先,采用这种方式的机器人是靠两个独立的轮子实现运动的,这样的结构简单,机器人的运动很容易控制。其次,这种机器人还可以很灵活地实现转弯半径为0的原地转动。当然,它的缺点和优点一样明显:和三轮车式的机器人类似,在不平坦的地面上运动时,这种机器人的稳定性就是个大问题了。

那么,接下来就让我们看看该怎样做才能够控制双轮差速驱动的机器人进行随心所欲的运动吧!二、像蜜蜂一样跳舞

1. 跳8字舞必备的两个条件

怎样才能让机器人像蜜蜂一样跳出完美的“8字舞”呢?仔细分析一下不难发现,要想做到这一点,至少需要让它具备两种能力:首先,机器人需要学会分别向顺时针和逆时针方向以一定的速率转动;其次,它还要能在顺时针方向转动一段特定的时间后,“切换”到逆时针方向运动,反之亦然。

我们已经掌握了机器人双轮差速运动的诀窍。那么,只要学会对两个电机转动速度进行适当的控制,第一个条件就不难满足了。如果主控制器自己有计算时间能力,第二个条件也就自然实现了。

2. 先来走个圆圈

在面对一个比较复杂的任务时,往往可以先将问题简化,一步一步地完成。对于8字舞这个任务来说,可以先试着让机器人沿顺时针方向走一个完整的圆圈。注意:我们这节课还没有教同学们如何自如地控制机器人运动的方向。如果同学们在做实验的过程中发现机器人的运动和我们想要的结果不一样,比如,机器人向相反的方向转弯,或者干脆向前或向后直行。那么,图3-3 机器人走圆圈大家可以试着交换一下电机的两根连接线,如图3-3所示。交换某个电机的连接线就等于让电机的转动方向反过来,可以解决这个问题。至于到底应该对左电机还是右电机进行这种操作,就请同学们根据实际现象自己分析吧!

图3-4是机器人走圆圈的示例程序。下面给同学们解释它的含义。图3-4 走圆圈程序示例

首先,C语言中,两个“//”开头的内容叫作注释。在“//”后面可以写任何自己想要记录的内容,它是用来帮助我们记忆或者阅读程序的。在本书后面的课程中,示例程序里面经常会出现各种注释,它们是用来解释程序的非常重要的信息,请同学们仔细阅读。程序中的注释一般像下面这样。

//这是一句注释,它不是语句,也不需要语法。它不用分号来结尾

其次,在C语言的程序里,左右大括号中的部分,每一句都是一个程序语句,它们都以分号“;”结尾。我们在这节课中先不去深究这些语句到底是什么意思,而是看一看几个重点的语句,它们直接实现了我们任务。

同学们先来看看下面这个语句,它所做的工作就是让机器人的左电机以200的速率值转动。注意,这里的“200”并没有单位,因为电机的实际运行速度与电池电压、机器人重量、地面摩擦力等诸多因素都有关联。analogWrite(11, 200);

接下来这个语句会让右电机以120的速率转动:analogWrite(13, 120);

当这两个语句放到一起执行时会发生什么呢?显然,双轮差速机器人向前运动时,如果左轮快,右轮慢,它就会顺时针地转动了。

注意:analogWrite语句的第二个参数决定了电机的转动速率,它的取值范围是0~255,不过一般这个数字小于50的时候,电机的力

试读结束[说明:试读内容隐藏了图片]

下载完整电子书


相关推荐

最新文章


© 2020 txtepub下载