9512.net
甜梦文库
当前位置:首页 >> 学科竞赛 >>

中学生智能科技探索



中学生智能科技探索

2014 年 03 月 02 日

卷首语
随着科学技术的发展,机器人已经在社会的各个方面得到了普及和应 用,它们在车间焊接、工厂装配、防灾救援、家居生活、出行导航、空间 探索、战地任务等岗位上各显神通,不知疲倦地默默工作着,极大地促进 了社会生产力的发展与产业结构的调整。这些功能多样的机器人引发了我 们

无数的好奇和想象。 机器人是现代技术特别是信息技术发展的综合体现,是中小学技术课 程和综合实践课程的良好载体。开展机器人教育,有助于克服信息技术教 育的一些弊端。既可避免片面强调软件工具应用技能的学习而造成程序设 计思维等基础素养教学的缺失。也可弥补重“软”轻“硬” 、重模仿轻创新、 重实践轻理论等教育和学习观念造成的不足。在机器人普及与发展迅猛的 当代,开展机器人学习,有助于使我们不至于落伍于这一时代。 智能机器人课程是程序设计教学的启蒙课,它大大降低了程序设计的 门槛。在学习为机器人编写程序的过程中,我们会获得成功的喜悦、会建 立成功的信心,从而产生程序设计的学习兴趣。机器人作为程序设计教学 的载体,使程序设计的学习与信息技术的前沿领域紧密的结合在一起。 透过本课程,我们将逐渐走近机器人,了解机器人。不仅要学习使用 现有的机器人,我们还要运用自己的知识智慧去设计创造自己的机器人。 让我们在机器人的世界里学习更新的知识,寻找更多的乐趣,展示我们的 才能,表达我们的创意。 本课程旨在拓宽我们的知识面,了解和掌握以智能机器人为载体的通 用技术与信息技术的基本知识和技能,了解技术的发展及其应用对人类生 活和科学的深刻影响。在实现挑战性的智能机器人项目和比赛过程中,提 高我们分析问题和解决问题的能力,培养自己的动手能力、创造能力、协 作能力、综合能力和进取精神。正确认识和理解技术与文化、伦理和社会 等问题,树立正确的技术观。

相关理论及观点
联合国 2002 年《教育中的信息与通讯技术中小学课程框架和教师发展 纲要》 :信息技术素养是人类继读、写、算后的第四素养,为人类的第二文 化。 盖茨:我看着多种技术发展的趋势开始汇为一股推动机器人技术前进 的洪流,我完全能够想象,机器人将成为我们日常生活的一部分。机器人 将彻底改变人类的生活方式。 苗逢春(联合国教科文组织亚太教育局信息技术部主任、全国中小学 计算机教育研究中心(北京)主任、全国“中小学机器人实验”项目发起 人与项目负责人 ) : 1. 机器人教学即将进入中小学信息技术课程体系。 2. 机器人教学集中承载着中小学信息技术教育的诸多核心价值。 3. 中小学机器人教学是最具持续发展潜力的中小学信息技术领域之 一。 4. 信息技术教育还处于应用层面,与其他学科的整合成熟后,信息技 术课程应重点关注的领域应回归到属于信息技术技术特有的技术层面:算 法与程序设计、数据管理、网络。机器人教育的开展对中小学信息技术教 育的发展具有历史价值。 郭善渡(全国中小学计算机教育研究中心研究员,中国教育学会中小 学信息技术教育专业委员会理事兼机器人学组负责人) :智能技术是信息技 术领域的一个学术前沿,是进行信息技术教育的最佳载体,也是全面培养 学生信息素质提高其创新精神和综合实践能力的良好平台。这无疑会会为 信息技术学科带来新的活力,对信息技术教育重软件应用轻编程开发的局 面会有所改善。 彭绍东(湖南师大教育技术学系教授 硕士生导师) :人工智能技术是 信息技术发展的一次重大飞跃。信息技术教育未来发展的趋势必然是向机 器人教育重心转移。并代替人类学习或工作。





第一章 认识机器人 .................................................................................................................................... 1 一、Hello,机器人................................................................................................................................ 1 二、你是机器人吗?............................................................................................................................. 3 小结: .................................................................................................................................................... 5 练习和活动: ........................................................................................................................................ 5 阅览室 .................................................................................................................................................... 5 机器人名称的由来:..................................................................................................................... 5 世界上第一台现代机器人............................................................................................................. 6 机器人三原则:............................................................................................................................. 6 机器人的分类:............................................................................................................................. 7 古人对机器人的探索..................................................................................................................... 7 机器人教育 .................................................................................................................................... 8 第二章 构建机器人躯体............................................................................................................................... 9 一、思维器官 ........................................................................................................................................ 9 二、感觉器官 ...................................................................................................................................... 10 1. 触碰模块.................................................................................................................................. 10 2. 音量检测模块...........................................................................................................................11 3. 灰度测量模块...........................................................................................................................11 4. 红外测距模块.......................................................................................................................... 12 5. 超声测距模块.......................................................................................................................... 12 6. 温度测量模块.......................................................................................................................... 12 7. 环境光检测模块...................................................................................................................... 13 8. 红外复眼模块.......................................................................................................................... 13 9. 指南针模块.............................................................................................................................. 14 三、动作器官 ...................................................................................................................................... 17 1. 电机模块.................................................................................................................................. 17 2. 发光模块.................................................................................................................................. 17 3. 发音模块.................................................................................................................................. 18 4. 显示模块.................................................................................................................................. 18 5. 微型伺服电机.......................................................................................................................... 18 6. 伺服电机控制套件.................................................................................................................. 19 四、构造零件 ...................................................................................................................................... 21 五、构建机器人的躯体:................................................................................................................... 21 1. 设计机器人功能和外形。 ...................................................................................................... 22 2. 拼装机器人。.......................................................................................................................... 22 3. 布线与接线。.......................................................................................................................... 23 4. 完善机器人的外形设计。 ...................................................................................................... 23 5. 几个已安装好的机器人欣赏: .............................................................................................. 24 小结: .................................................................................................................................................. 25 练习和活动: ...................................................................................................................................... 25 阅览室 .................................................................................................................................................. 25 我国第一台类人型机器人诞生记............................................................................................... 25 进入血管的机器人....................................................................................................................... 27 机器人的自由度:....................................................................................................................... 28 传感器: ...................................................................................................................................... 29 教育机器人:............................................................................................................................... 30 单片机: ...................................................................................................................................... 32 如何学习单片机:....................................................................................................................... 33 第三章 编造机器人的灵魂......................................................................................................................... 35

一、我的第一个程序 ........................................................................................................................... 36 二、让机器人走走停停 ....................................................................................................................... 40 三、再让机器人走走停停 ................................................................................................................... 41 四、让机器人受到袭击就逃跑 ........................................................................................................... 42 五、让机器人碰到障碍就停下来 ....................................................................................................... 44 六、让机器人的智慧呼之即来 ........................................................................................................... 45 七、让机器人绕过障碍 ....................................................................................................................... 49 八、使用子程序简化程序结构 ........................................................................................................... 51 小结: ................................................................................................................................................... 60 练习和活动: ....................................................................................................................................... 61 阅览室 ................................................................................................................................................... 61 控制论之父——维纳 ................................................................................................................... 61 “更深的蓝”战胜了什么? ....................................................................................................... 62 变量: ........................................................................................................................................... 63 数制: ........................................................................................................................................... 65 数制的转换 ................................................................................................................................... 66 二进制数的编码 ........................................................................................................................... 68 莱布尼茨与二进制 ....................................................................................................................... 72 计算机程序 ................................................................................................................................... 72 第四章 机器人快车程序实例 ..................................................................................................................... 74 一、利用灰度模块自动巡黑迹前进 ................................................................................................... 74 二、让机器人按复杂的轨迹前进 ....................................................................................................... 76 三、灭火搜救机器人程序(节选) ................................................................................................... 81 小结: ................................................................................................................................................... 87 练习和活动: ....................................................................................................................................... 87 阅览室 ................................................................................................................................................... 87 无人月球车: ............................................................................................................................... 87 蓝牙飞行机器人亮相 ................................................................................................................... 89 第五章 虚拟机器人 ..................................................................................................................................... 90 一、机器人的下载和安装 ................................................................................................................... 91 二、机器的组装 ................................................................................................................................... 91 三、编写机器人控制程序 ................................................................................................................... 93 四、仿真演示机器人 ........................................................................................................................... 95 小结 ....................................................................................................................................................... 96 练习和活动 ........................................................................................................................................... 96 阅览室 ................................................................................................................................................... 97 虚拟现实 ....................................................................................................................................... 97 神奇头盔 ....................................................................................................................................... 97

◇机器人兴趣活动课程◇

第一章
一、Hello,机器人

认识机器人

《变形金刚》伴随着无数青少年伙伴一起成长,你还记得他们的样子 吗?你现在还爱看《星球大战》吗?美国大片《终结者》你看了几部,里 面描述的未来战士是不是很厉害啊?还有一位虽然长得很丑、很小,但是 很勇敢的 Wall.e,你没有忘掉它吧,它可是位有趣的新“人”啊。

变形金刚

walle 和 Eve

第一章 认识机器人?1

☆中学生智能科技探索☆

未来战士 和 阿诺德

这些故事都是艺术家们的艺术创作,故事里的主人公其实都是人类发 明制造出来的机器,但无论从外形还是功能来说,它们跟我们人类的长相 实在是太像了!对了,它们有着一个统一的名字——机器人(Robot) 。 是不是说机器人都长得跟人一样呢?当然不是。变形金刚们有时就像 一部汽车,有时又像一部战斗机。对了,机器人并不是指那些样子长得像 人的机器,例如下面的机器人看起来更像一部微型坦克,它可是美军大名 鼎鼎的“现役军人”——剑(SWORDS)!这种机器人现在还没有像变形金刚 那么聪明,所以有时也难免会向自己人开火的哦。

第一章 认识机器人?2

◇机器人兴趣活动课程◇

美军机器战士

中国“玉兔”号月球车

二、你是机器人吗?
那么什么样的机器,才叫做机器人呢? 虽然机器人问世已有几十年了,但究竟什么是机器人,科学家们仍然 仁者见仁,智者见智,至今没有统一的定义,原因之一是机器人及其相关 技术一直在持续不断地发展。 我们一般认为,机器人是一种具有高度灵活性的自动化机器。它既可 以接受人类指挥,又可以运行预先编排的程序,也可以根据以人工智能技 术制定的原则纲领行动,具备一些与生物相似的智能能力,如感知、规划、 动作和协同等能力。机器人技术的核心是感知、决策、行动和交互技术的 结合。 机器人通常具有三个基本特征,一部机器算不算是机器人呢,我们可 根据以下三个特征来作判断: 1. 身体,是一种物理状态,具有一定的形态,机器人的外形究竟是什 么样子,这取决于人们想让它做什么样的工作,其功能设定决定了机器人 的大小、形状、材质和特征等等。 2. 大脑,就是控制机器人的程序或指令组,当机器人接收到传感器的 信息后,能够遵循人们编写的程序指令,自动决策执行并完成一系列的动 作。控制程序主要取决于下面几种因素:使用传感器的类型和数量,传感 器的安装位置,可能的外部激励以及需要达到的活动效果。 3. 动作,就是机器人的活动,有时即使它根本不动,这也是它的一种
第一章 认识机器人?3

☆中学生智能科技探索☆

动作表现,任何机器人在程序的指令下要执行某项工作,必定是靠动作来 完成的。 好了,哪怕是你家摆在墙角里一动不动的电冰箱,恐怕你也得向它打 个招呼: “hello,Robot” 。 人们制造机器人的目的是协助或取代人类进行工作,尤其是危险性的 工作,例如矿难频发的采矿业、高“凶”作业的建筑业,战火纷飞的战争 等——呵呵,对机器人来说,人类研制它好像从来就没安过什么好心?? 你知道 Robot 这个英文词汇是怎么来的吗? 那么,目前人类机器人事业的进展怎么样呢?别发变形金刚的梦啦, 看看我们现实中的机器人吧,现实中的机器人除了上文提到的美军机器战 士之外,较有名的有如下这些:IBM 的博弈机器人“深蓝” 、Asimo(日) 、 Ever-2 Muse(韩) 、童童(中) 、玉兔??随着科技的发展,未来的机器人 一定会更加精彩??

世界上最先进的类人型 机器人 ASIMO

表情机器人 童童

世界上第一个机器人 艺人 Ever-2 Muse

全自动的家庭 清洁卫士

第一章 认识机器人?4

◇机器人兴趣活动课程◇

小结: 1. 控制系统、传感系统、执行机构是构成机器人的基本组成部分,它 们相当于我们人类的大脑、感觉器官以及手脚等产生动作的身体部件。 2. 机器人的智能是指机器人具备的一些与人或生物相似的智能,如感 知能力、规划能力、动作能力和协同能力。机器人的智能来自于人。 练习和活动: 1. 选择一种机器人,说明它的身体形状、结构和功能及其与工作环境 之间的关系。 2. 自行设想一种机器人,说明它的身体形状、结构,它的功能和工作 环境。 3. 通过科技馆、展览会、相关网站、报刊、杂志、科学或科幻影视信 息等,搜集有关机器人的资料,完善自己的机器人知识体系,与同学们共 同分享这些知识或信息。 阅览室 机器人名称的由来: 在英文中机器人称为 Robot。1920 年捷克斯洛伐克作家卡雷尔 ?卡佩 克写 了一个科幻剧本《罗萨姆的万能机器人》 。在剧本中,有一群用金属 制成的面貌 和动作都非常像人的机器,他们为一家公司进行生产劳动。卡 佩克给他们取名“Robot” 。 “Robot”与捷克语中代表奴隶意思的“Robota” 只差一个字母。他把机器人当作服务于人类,被人压榨的奴隶。剧中描写 的这种机器人的寿命为 20 年,生产出来后,就由人教他们如何劳动。机器 人没有感觉和感情,不会思维,机械地从事繁重的劳动。由于机器人不知 疲倦、非常能干,一个机器人的工作量相当于几个人的工作量。他们的存 在使工人的地位受到威胁,工人们为了捍卫自己的地位示威游行,于是公 司组织机器人军队镇压。后来,机器人具有了直觉和感情,并发觉了人类 的自私、贪婪,向人类发动了攻击,毁灭了人类。该剧警示出机器人的发 展对人类社会的悲剧性影响,引起了人们的广泛关注。 “机器人”的名字也 由此而生。
第一章 认识机器人?5

☆中学生智能科技探索☆

世界上第一台现代机器人 机器人的历史并不算长,1959 年美国英格伯格和德沃尔(Devol)制造出 世界上第一台工业机器人,机器人的历史才真正开始。 英格伯格在大学攻读伺服理论,这是一种研究运动机构如何才能更好 地跟踪控制信号的理论。 德沃尔曾于 1946 年发明了一种系统, 可以 “重演” 所记录的机器的运动。1954 年,德沃尔又获得可编程机械手专利,这种机械 手臂按程序进行工作,可以根据不同的工作需要编制不同的程序,因此具 有通用性和灵活性,英格伯格和德沃尔都在研究机器人,认为汽车工业最 适于用机器人干活,因为是用重型机器进行工作,生产过程较为固定。 1959 年,英格伯格和德沃尔联手制造出第一台工业机器人。由英格伯 格负责设计机器人的“手” 、 “脚” 、 “身体” ,即机器人的机械部分和完成操 作部分;由德沃尔设计机器人的“头脑” 、 “神经系统” 、 “肌肉系统” ,即机 器人的控制装置和驱动装置。它成为世界上第一台真正的实用工业机器人。 这种机器人外形有点像坦克炮塔,基座上有一个大机械臂,大臂可绕 轴在基座上转动,大臂上又伸出一个小机械臂,它相对大臂可以伸出或缩 回。小臂顶有一个腕子,可绕小臂转动,进行俯仰和侧摇。腕子前头是手, 即操作器。这个机器人的功能和人手臂功能相似。它成为世界上第一台真 正的实用工业机器人。此后英格伯格和德沃尔成立了“Unimation”公司, 兴办了世界上第一家机器人制造工厂。第一批工业机器人被称为“尤尼梅 特(UNIMATE)” ,意思是“万能自动” 。 他们因此被称为机器人之父。1962 年美国机械与铸造公司也制造出工业机器人,称为“沃尔萨特兰 (VERSTRAN)” ,意思是“万能搬动” 。 ”尤尼梅特”和“沃尔萨特兰”就成 为世界上最早的、至今仍在使用的工业机器人。 机器人三原则: 随着科学技术的不断进步,机器人的智能水平也在不断提高。那么, 将来的机器人的智能是否会超过人类而最终战胜人类呢? 1997 年,一部会下棋的计算机“深蓝”战胜了国际象棋大师卡斯帕罗 夫(kasparov) ,这是人工智能领域取得的伟大成就。这一事件引发了人们 更多的思考和关注。 当机器人这一名词刚出现时,卡佩克(Karel Capek)就提出了机器人 的安全、感知和自我繁殖等问题。科学技术的进步很可能会引发人类不希 望出现的问题。虽然科幻世界只是一种想象,但人类应及早采取措施,避 免类似事件的发生。 为了防止机器人伤害人类, 1942 年科幻小说作家阿西莫夫( Isaac
第一章 认识机器人?6

◇机器人兴趣活动课程◇

Asimov)提出了机器人三原则: 1. 机器人不可伤害人,或看到人将遇害而袖手旁观。 2. 机器人必须服从人的命令。但是,如果该命令违反第一条时可不服 从。 3. 机器人必须在不违反第一条和第二条规定的情况下保护自己。 这是人类所公认的约束机器人行为的基本准则,给机器人赋予的伦理 性纲领。机器人专家一直将这三原则作为机器人开发的准则。否则,人类 创造机器人的壮举就会失去意义。 机器人的分类: 机器人有哪些种类呢?我国的机器人专家从应用环境出发,将机器人 分为两大类:工业机器人和特种机器人。工业机器人就是面向工业领域的 多关节机械手或多自由度机器人。特种机器人则是除工业机器人之外的、 用于非制造业并服务于人类的机器人,包括:服务机器人、水下机器人、 娱乐机器人、军用机器人、农业机器人、机器人化机器等。 家务型机器人:能帮助人们打理生活,做简单的家务活。 操作型机器人:能自动控制,可重复编程,多功能,有几个自由度, 可固定或运动,用于相关自动化系统中。 程控型机器人:按预先要求的顺序及条件,依次控制机器人的机械动 作。 示教再现型机器人:通过引导或其它方式,先教会机器人动作,输入 工作程序,机器人则自动重复进行作业。 数控型机器人:不必使机器人动作,通过数值、语言等对机器人进行 示教,机器人根据示教后的信息进行作业。 感觉控制型机器人:利用传感器获取的信息控制机器人的动作。 适应控制型机器人:能适应环境的变化,控制其自身的行动。 学习控制型机器人:能“体会”工作的经验,具有一定的学习能力, 并将所“学”的经验用于工作中。 智能机器人:以人工智能决定其行动的机器人。 古人对机器人的探索 本周时期, 偃师研制出能歌善舞的伶人, 这是我国有记载的最早的 “机 器人” 。东汉时期,张衡发明的指南车是我国早期研制的机器人雏形。三国 时期,蜀国丞相诸葛亮成功地创造出了“木牛流马”来运输军粮。此外, 我国古代的能工巧匠还发明了用于测距离的“机器人”记里车。
第一章 认识机器人?7

☆中学生智能科技探索☆

机器人教育 机器人教育(Robot-Based Education)应该包括以下三方面内容: 1. 机器人学科教学(Robot Subject Instruction,简称 RSI) 。 2. 机器人辅助教育(Robot-Assisted Education ,简称 RAE) 。 3. 机器人与传统学科相互渗透。 在国外,机器人教育一直是个热点:早在 1994 年麻省理工学院(MIT) 就设立了 “设计和建造 LEGO 机器人”课程(Martin),目的是提高工程设 计专业学生的设计和创造能力,尝试机器人教育与理科实验的整合;麻省 理工学院媒体实验室“终身幼儿园”项目小组开发了各种教学工具,通过 与著名积木玩具商乐高公司的紧密合作,该项目组开发出可编程的乐高玩 具,帮孩子们学会在数字时代怎样进行设计活动。自 1992 年开始,美国政府 有关部门在全国高中生中推行“感知和认知移动机器人”计划,高中生可免 费获得 70 公斤重的一套零件,自行组装成遥控机器人,然后可参加有关的比 赛。 我国 2004 年制定的高中信息技术新课程标准中,首次增加了人工智能 部分,但是理论比重较大,机器人实践活动较少,非常不利于开展相关教 学。而在高中通用技术课程标准中,也增加了简易机器人选修课,但是由 于受到课程地位和课时的局限,效果尚不明显。

第一章 认识机器人?8

◇机器人兴趣活动课程◇

第二章 构建机器人躯体
对机器人的探索,我们首先从它的躯体开始。机器人的躯体主要由控 制器件、感知器件和执行器件三大类元件组成。一般来说,机器人都有一 个中央控制器,它是机器人的核心,是机器人的思维器官,它实质上是一 部微型电脑,因此它也就具有电脑所共有的运算器、存储器、控制器、输 入设备、输出设备等模块。 在机器人系统中,控制系统相当于人的大脑,机器人可以通过它的感 觉器官获取环境的相关信息,并依据预置的程序作出相应的加工和决策判 断,最后向它的动作器官发出驱动指令,指挥和控制机器人系统的运行。

机器人与人类运作类比图

以我们目前的条件,我们并不足以生产玉兔号这么先进的机器人,那 么我们就务实地去选择拼装式机器人吧。拼装式机器人的零件非常多,只 有熟悉它们,我们才能轻而易举地搭建出自己心目中的机器人。下面我们 以中鸣公司生产的拼装机器人为例,认识一下拼装机器人的一些基本组件。 一、思维器官 这里指的思维器官即机器人的中央控制器,它包含程序存储、运算和 控制等功能。它的控制程序可以由普通的 PC 电脑编写,编写程序的语言可 以是普及化的 C 语言系统,但我们一般都采用专用的图形化语言来编写这 些控制程序。 控制器一般会提供一些输入和输出接口,以便扩充它的功能。我们编 写好的控制程序就是通过它的通讯端口输送入控制器的程序存储器当中 的。此外,控制器上还提供了很多的电子接口,它们一般被分为三类接口,
第二章 构建机器人躯体?9

☆中学生智能科技探索☆

它们分别是:模拟信号接口、数字信号接口、电机驱动接口。使用这三类 接口时不能将之混淆,否则控制器将无法正确读取数据从而导致思维混乱, 控制不正常,甚者可能会损坏相关设备。尤其是一般的电子设备不应接到 电机驱动接口中,因为该接口所提供的输出电压和电流相对较高。

简易机器人的控制器

二、感觉器官 这里的感觉器官是指安装在机器人身上的各种传感器,它们是机器人 的信息输入设备,用于获取相关的环境信息,以便中央控制器作出决策。 在拼装机器人组件中,这类组件是种类最多的。它们使得机器人与外界取 得联系,使之能感应到外界环境的变化,从而作出相应的执行动作,呈现 出机器的“智能”来。 常见的感觉器官有触碰检测、灰度测量、音量检测、红外测距、环境 光检测等等,下面我们来简单学习一下这些感觉器官的相关知识。 1. 触碰模块 用于检测是否发生碰撞,实质上就是一个轻触式微动开关,它只有两 种状态表示,分别是“1”表示触碰, “0”表示未触碰,属于数字信号输入, 因此应该将它接到中央控制器的数字信号输入端口上,但实质上模拟端口
第二章 构建机器人躯体?10

◇机器人兴趣活动课程◇

亦能正常检测到这种感觉器官的两种不同状态。 触碰模块主要用于检测机器人是否与外界物体发生了亲密接触,如果 发生了接触,则让机器人作出相应的调整。例如:行进时,机器人碰到了 前方的障碍物,从而调整机器人的行走方向以绕过障碍等。

触碰检测

音量检测

2. 音量检测模块 用于检测环境音量强弱,属于模拟信号输入部件,接线时应将它接到 中央控制器的模拟信号输入端口上。 音量模块主要用于检测机器人所处环境的音量强弱变化情况,如果环 境音量变化达到指定的阀值,则让机器人作出相应的调整。例如:机器人 听到我们发出的哨声时,自动向前运动或停止运动等。 3. 灰度测量模块 用于分辨灰度颜色的深浅,属于模拟信号输入元件,接线时应将它接 到中央控制器的模拟信号输入端口上。 灰度测量模块主要用于测量环境灰度值,通常,它所探测的区域的颜色 越白,测得的灰度值则越高,越黑则越低。如果探测到的灰度阀值超过程 序预设的值,则让机器人作出相应的动作以调整其自身状态。例如:让机 器人寻着黑色的轨迹线行走,而不偏离轨迹线。

第二章 构建机器人躯体?11

☆中学生智能科技探索☆

灰度测量模块 块

红外测距模块

超声波测距模

4. 红外测距模块 红外测距模块属于模拟信号输入元件,接线时应将它接到中央控制器 的模拟信号输入端口上。 用于测量距离,有效距离 2~40 厘米。工作原理是通过发射红外线并 测量红外线被反射的强度来输出反映和物体距离的电压信号,是一种非接 触式测距工具。例如:让机器人“摸”着墙壁向前走,如果检测到离墙过 近,就调整运动方向来偏离墙壁,以防止因发生碰撞和摩擦导致机器人效 率降低甚至任务失败;如果离墙太远了,就再调整运动方向来靠近墙壁, 以防止机器人迷失方向。 红外测距模块的精确度容易受到材质、环境光以及来自兄弟模块的探 测光线等因素的干扰。 5. 超声测距模块 超声测距模块输出的是数字信号,可以将它接到中央控制器的任何非 电机专用接口上使用。 用于测量距离的,测量范围 3-100 厘米。工作原理是发射超声波,检测 被测物体反射回波接收后的时差来测量距离的模块,是一种非接触式测量 工具。例如:机器人向前运动过程中,通过超声波检测前方是否存在突起 的障碍物,如果有就调整自身的运动方向来绕开它。 超声测距模块比红外模块测量的距离要大,且环境干扰因素相对少许 多,测量准确度相对较高。在测距中应注意模块的安装,以确保超声波垂 直发射到被测物体表面,这样测量结果会更加精确。严禁用手及其它物体 触摸超声波探头表面以免损坏探头。 6. 温度测量模块 用于测量环境温度的强弱,属于模拟信号输入元件,接线时应将它接 到中央控制器的模拟信号输入端口上。
第二章 构建机器人躯体?12

◇机器人兴趣活动课程◇

机器人通过环境温度的检测,知道自己所处的环境情况,从而作出相 应的动作。例如:机器人根据温度的强弱,自动调节风扇的转速或开关风 扇。

温度测量模块

环境光检测模块

红外复眼模块

7. 环境光检测模块 用于测量环境光线的强弱,属于模拟信号输入元件,接线时应将它接 到中央控制器的模拟信号输入端口上。 通过环境光检测模块,机器人能知道自己所处的环境的光线情况,从 而作出相应的处理,例如:根据光线的强弱,机器人自动开关窗帘;机器 人巡视过程中,通过识别环境光的变化,自动找到着火点来进行扑灭。 8. 红外复眼模块 用于测量多方位的环境光强弱,并确定最强光线的方向。红外复眼模 块输出的是数字信号,可以将它接到中央控制器的任何非电机专用接口上 使用。 红外复眼模块也叫红外复眼(ommateum, compound eye)模块、飞眼, 它由一个中央处理器和多个光敏二极管构成。中央处理器时刻检测安装在 不同方位的光敏二极管的强度,并找出最强的一个。机器人通过读取这些 测量数值,做出相应的响应动作,例如:在灭火比赛中用于确定火焰的位 置;在足球比赛中用于确定足球的方向。 在机器人快车中有一个模块图标是用来控制复眼模块的,在模块图标 的属性中有一“command”栏,在此栏中输入不同的控制命令,便可以控 制复眼了。各控制命令的含义如下表:
控制命令 返回值含义 功能分类描述 1 第一个通道测量到的光 能在 180 度范围内任意读取 7 个 值 方向中的任一个感光值。 2 第二个通道测量到的光 值 3 第三个通道测量到的光 值 4 第四个通道测量到的光 值
第二章 构建机器人躯体?13

☆中学生智能科技探索☆

5 6 7 8 9 10 11 12

第五个通道测量到的光 值 第六个通道测量到的光 值 第七个通道测量到的光 值 最大光值所在的通道号 能即时读取 7 个方向中的最强的感 光值及其方位。 最大光值 最小光值所在的通道号 能即时读取 7 个方向中的最弱的感 光值及其方位。 最小光值 7 个通道测出的平均光 能即时读取 7 个方向的平均感光 值 值。

9. 指南针模块 指南针返回的数据是角度值,范围在 0~360 之间,单位是“度” 。顺 时针转动模块,角度增大;逆时针转动模块,角度减小。指南针模块块输 出的是数字信号,可以将它接到中央控制器的任何非电机专用接口上使用。

指南针模块

如上右图所示,指南针各部分的名称与功能如下: ①接线端口:把接线埠直接连接到微型电脑控制器自由端口。 ②正北校正按钮:指南针执行正北校正程序,将当前指南针的方向假 定为正北方向。同时按住②、④两个按键无效。 ③指南针方向:表示当前指南针所指的方向。 ④硬铁补偿按钮:指南针执行硬铁补偿程序,将当前指南针的方向假 定为正北方向。降低附近的铁物质等产生的磁场引起的失真。注意:此功 能使用不当,可能导致读取角度紊乱、不断重复出现某个特定的值或者是 角度偏差非常大等,慎用! !同时按住②、④两个按键无效。 ⑤硬铁补偿旋转示意:提示执行硬铁补偿时,模块必须水平旋转一圈 以上。 ⑥工作状态指示灯:表示当前指南针模块的工作状态。亮灯表示有电 源供电;绿色表示指南针可以正常读取数据;红色表示执行特定功能程序, 读取数据无效;红、绿灯交替闪动时表示模块出错或者是模块复位。 ⑦指南针模块编号:指南针模块的编号,方便查找应用文档以及疑难
第二章 构建机器人躯体?14

◇机器人兴趣活动课程◇

解答。 ⑧磁场方向指示:没有使用“正北校正”功能前,指南针返回的数据 是 0 或者 360 度,此标示的各个方向与地球磁场一致。如果使用了“正北 校正”功能,那正北方 0(或者是 360)度就表示您新认定的方向,此标示 就会以新的北方为参考,不再表示自然的磁场方向。 模块使用说明: 使用前水平地固定好模块,防止使用时模块转动,保证测量准确。安 装时指南针要远离电子部件(包括主控板、其它模块、电池、电机、液晶 等等)至少 15 厘米,避免磁场干扰。 ①、硬铁补偿: 功能:指南针是以读取地球磁场方向来辨认地理方向的。附近的铁物 质等产生的磁场可能会引起角度偏差。消除该偏差,使读出的方向角更精 确,这就是硬铁补偿。 使用方法:首先把指南针模块放在尽量水平的位置。然后按下硬铁补 偿按钮,此时模块指示灯会变为红色,放开按键后就可以开始硬铁补偿了。 这时把指南针模块水平地旋转一圈以上。整个硬铁补偿过程大约持续 10 秒 钟,完成后红灯会恢复为绿灯,完成硬铁补偿。

注意: 键按下时模块指示灯会变为红色,此时开始读取数据无效。直至模块 完成补偿,指示灯会恢复绿色后,才可以正常读取数据。 补偿的结果在模块断电后也会保存下来。所以在同一个地点可以只进 行一次补偿。不同地点则因为环境不同,干扰磁场也不相同,用户可以按 需要进行补偿。每次执行硬铁补偿都会取消上一次的补偿结果,幷以最新 这次的结果取代。 “硬铁补偿”功能会取消正北校正信息,使模块指向恢复 与地球磁场方向一致。所以在需要时,执行了“硬铁补偿”后要再次进行 正北校正。 此功能使用不当,可能导致读取角度紊乱、不断重复出现某个特定的 值或者是角度偏差非常大等。除非环境特别恶劣,否则本模块在不使用硬 铁补偿时读取的角度数据已经比较准确。本功能要慎用! !如果不确定,可 以使用液晶模块来查看指南针的角度数据。必要时可以使用“硬铁补偿” 功能或者“模块复位”功能来纠正。 ②、正北校正: 功能:将模块当前的方向设置为正北方向。 使用方法:当用户需要对正北的方向进行重新设置时,把指南针模块 水平指向用户认为的正北方,按下正北校正按钮幷放开。

第二章 构建机器人躯体?15

☆中学生智能科技探索☆

注意: 按键按下时模块指示灯会变为红色,此时读取数据无效。放开按键时 刻,模块认定当前方向为新的正北方。完成后指示灯会恢复绿色,可以正 常读取数据。 校正的结果即使模块断电也会保存下来。所以在同一个地点可以只进 行一次校正。不同地点则按需要进行校正。每次执行正北校正都会取消上 一次的校正结果,幷以最新这次的结果取代。 “硬铁补偿”功能或者“模块 复位”功能会取消正北校正信息,使模块指向恢复与地球磁场方向一致。 所以在需要时,执行了“硬铁补偿”或者“模块复位”后要再次进行正北 校正。 ③、模块复位 功能:将模块恢复为出厂时候的状态(无校正、补偿信息) 。此功能将 清除“正北校正” 、 “硬铁补偿”等信息,主要是让用户在不能正确(或时 间不足够)使用硬铁补偿,或是希望取消原来的校正、补偿信息等情况下 使用。 使用方法:首先按下硬铁补偿按钮,此时模块指示灯会变为红色。放 开补偿按键后在亮红灯的期间按住正北校正按钮不放(约 2 秒钟) ,直至指 示灯红绿交替闪动,表示完成模块复位。此时松开所有按键,指示灯恢复 绿色,模块恢复为出厂状态,可以正常使用。

注意: 亮红灯或者红、绿灯交替闪动时读取数据无效。直至模块完成复位, 指示灯恢复绿色后,才可以正常读取数据。 可能碰到的问题: ①、读取不到模块的数据(角度值一直是“999” ) 首先检查电源是否接触良好,电池电力是否充足,确保双方有足够电 力进行通讯。然后检查连接线是否完全插入插座里面。如果是偶尔接收数 据有错误,有可能是使用中旋转模块、机器人受到撞击等影响接线的接触, 请做好机器人的防撞、防震动措施。 ②、在读取角度的过程中,无论当前方向在哪里,都是不断重复出现 某个特定的数值时(例如 180) ,或者是角度偏差非常大。这是由于“硬铁 补偿”操作过程不当引起的,请按上面“硬铁补偿”的说明,重新进行硬 铁补偿;或者使用“模块复位”来取消硬铁补偿。 ③、在读取角度的过程中,在某个局部区域角度偏差大。
第二章 构建机器人躯体?16

◇机器人兴趣活动课程◇

这是由于模块受到交大的磁场干扰所致(例如紧贴着电池、电机之类 模块安装) 。请重新安装模块,指南针要远离电子部件至少 15 厘米,并且 是有按键的一面朝上,水平安装。 三、动作器官 这里的动作器官指的是机器人的控制命令执行机构,它们能根据控制 器的指令,完成一系列特定功能的动作行为。在拼装型机器中这些机构被 制作成一个个的独立模块,我们可以对这些模块进行适当的组合运用,达 到满意的执行效果。下面我们就来认识一些觉的动作器官: 1. 电机模块 电机模块需要做功较多,所需的输入电压也较高,中央控制器上一般会 给它提供专用的接口,接线时应将它接到中央控制器的电机专用接口上, 以避免动力不足的情况。 电机模块主要用于行走或驱动机械臂来执行特定的任务,是一个动力输 出部件,动?从输出轴以圆周运动的方式输出,可以带动与之连接的物体 作圆周运动,转动方向有顺时针和逆时针两种选择,转动速度在静止到最 高速间可调。可以通过螺栓将它与其它?件紧固在一起。

电机模块

发光模块

发音模块

显示模块

2. 发光模块 发光模块有各种灯光颜色可选,主要起到装饰和指示的作用,它的主要 元件是发光二极管,并用塑料外壳进行封装,以便安装到机器人身上。通 过发光模块的指示作用,可以简单地判断出机器人当前的运行状态,例如: 发现前方有障碍物则发光模块亮灯,我们通过观察灯光的变化,很便捷地 知道,机器人程序正确执行到这一步了。 接线时应避免将发光模块接到电机专用接口上。

第二章 构建机器人躯体?17

☆中学生智能科技探索☆

3. 发音模块 发音模块是让机器人发出声音的电子部件,音频高低可以调节。接线时 应避免将发光模块接到电机专用接口上。应用举?:唱一段小星星的?谱; 当遇到一种特定的情况时,发出一种特定频?的声音,等等。 4. 显示模块 中央控制器一般会自带一块显示模块,用于显示简单的状态数据,便 于我们编写程序时及时了解机器人的运行状态,这比使用发光模块来指示 来得更直接有效。有时自带的显示模块不能满足需要,例如需要显示一幅 较大的图像甚至是视频时,我们可以采用专用的显示模块。 5. 微型伺服电机

微型伺服电机

伺服电机本质上是可定位的电机。国内亦称之为“舵机” ,含义为: “掌 舵人操纵的机器” 。可见,微型伺服电机主要用作运动方向的控制部件。当 伺服电机接受到一个位置指令,它就会旋转到指定的位置。因此,常用它 作为机器人可控的运动关节,这些活动关节我们也常称它为自由度。 微型 伺服是一个精细的机械部件,超出它承受范围的外力会导致其损坏,不正 确的电线连接也会对它造成损毁,因此,使用它时务须谨慎。 微型伺服电机内部结构。一个微型伺服电机内部包括了一个小型直流 电机;一组变速齿轮组;一个反馈可调电位器;及一块电子控制板。其中, 高速转动的直流电机提供了原始动力,带动变速(减速)齿轮组,使之产 生高扭力的输出,齿轮组的变速比愈大,伺服电机的输出扭力也愈大,也 就是说越能承受更大的重量,但转动的速度也愈低。

第二章 构建机器人躯体?18

◇机器人兴趣活动课程◇

微型伺服电机的工作原理。一个微型伺服电机是一个典型闭环反馈系统,其原理可由下图表示:

减速齿轮组由电机驱动,其终端(输出端)带动一个线性的比例电位 器作位置检测,该电位器把转角坐标转换为一比例电压反馈给控制线路板, 控制线路板将其与输入的控制脉冲信号比较,产生纠正脉冲,并驱动电机 正向或反向地转动,使齿轮组的输出位置与期望值相符,令纠正脉冲趋于 为 0,从而达到使伺服电机精确定位的目的。 除非你使用的是数码式的伺服电机,否则以上的伺服电机输出臂位置 只是一个不准确的大约数。普通的模拟微型伺服电机不是一个精确的定位 器件,即使是使用同一品牌型号的微型伺服电机产品, 他们之间的差别也 是非常大的, 在同一脉冲驱动时, 不同的伺服电机存在±5?的偏差也是 可能的。 6. 伺服电机控制套件 在制作人型机器人或其它仿生机器人时,通常会使用多个微型伺服电 机作为其肢体的转动部件。中鸣机器人的 24 路微型伺服电机控制套件 (JMC-CB-1302)正是一套用于控制多达 24 个伺服电机协调动作的软件和 硬件系统。

第二章 构建机器人躯体?19

☆中学生智能科技探索☆

伺服电机控制板及其接口

伺服电机接插端口① 此端口用于接插国际标准接口的伺服电机,包括模拟式的以及数字式 的伺服电机。端口正前方有 1~24 号的标注,表示本列(按照上页标示图, 纵向为“列” )端口是受哪一个通道信号控制的伺服电机。每一列可以接插 一个伺服电机。整行端口侧面有 G/ V / X 的标注,表示本行(按照上页标 示图,行向为“行” )的接插的是什么引线。其中“G”表示接插伺服电机 的地线(一般为黑色) ; “V”表示接插伺服电机的电源线(一般为红色) ; “X”表示接插伺服电机的控制信号线(一般为黄色)等等。 引脚输出参 数如下:

第二章 构建机器人躯体?20

◇机器人兴趣活动课程◇

电源端口② 此端口用于接插整套系统的供电电源。按照上页标示图,上侧带钩的 一侧应当连接电源的地线(0V) ,下侧应当连接电源的正极(5~6V) 。 此 电源接口可以接插中鸣标准接口的伺服系列电池,方便脱机运行或者是无 线遥控运行。为了方便长时间调试,也可以用套件内提供的的电源转接线, 接插符合下面表格指定的合适外置电源适配器(注意电源极性! )来使用。 运行方式。控制板的运行模式分为脱机运行方式和实时控制方式两种。 控制板在接通电源后,或者是按下“复位按钮⑦”后,首先执行软启动, 使用用户设定的时间间隔,逐个启动每个伺服电机。然后进入等待状态。 如果此时,等待上位机发送正确的伺服电机实时控制指令,控制板就会进 入实时控制状态。如果没有上位机发送正确的伺服电机实时控制指令,而 “运行按钮④”被按下,控制板则进入脱机运行状态,顺序执行上一次下 载到机器人中的动作表。在脱机运行状态中,一旦控制板接受到上位机的 数据,并且是符合正确的正确的伺服电机实时控制协议,就会马上切换到 实时控制模式,等待上位机的控制。 四、构造零件 用于构造机器人的外观、加固机器人结构、传递动力、安装感觉器官 和动作器官等,觉的构造零件有如下这些:

常见的拼装机器人构造零件

如果以上的构造零件不能满足需要的话,我们可以利用身边的使得条 件去自行制造符合需要的机器人零件。 五、构建机器人的躯体: 拼装式的机器人是用各种拼装零件组合而成的,没有固定的外形。拼
第二章 构建机器人躯体?21

☆中学生智能科技探索☆

装机器人的外形和功能是由我们的创意和设计决定的。根据预设的机器人 功能,我们有目的地去选择机器人的感知器件和执行器件。如果所有的预 制零件都无法满足设计要求时,我们还可以利用身边的材料自己去制造符 合需要的零件。 1. 设计机器人功能和外形。 拼装前,一定要先构思好机器人的功能,以便选取适合的构件;再根 据机器人的功能和所选用的构件,初步构思设计出机器人的外形。初步构 思完成后直接展开机器人的拼装。 例如:设计一个能感知自己碰到了障碍物,并能绕过障碍物行走的简 易机器人。 根据设计需求,机器人必须一个中央控制器。 没有粮食,中央控制器是不会去工作的,因此还须给控制器配备一定 的粮草——电池一套。 机器人必须能完成基本的向前行走、转向、倒退任务,我们可以确定 机器人必须拥有至少一对电机来实现这方面的功能,考虑到成本和工程复 杂性尽量简化等因素,我们就采用一对型号一样的电机来完成这行走的功 能,电机同时正转,机器人则向前走;电机同时倒转,机器人则向后退; 电机一个正转,一个反转,则可调整机器人方向。 光有电机还是不够的,还得给电机穿上鞋子——轮胎一对。 又因为使用两个轮做支点的机器人的重心不稳定,因此可增加一个被 动式万向轮作为第三支点,以平衡机器人的躯体。 还有,机器人必须具有检测发生了碰撞的功能,因此它必须拥有至少 一个触碰模块。 此外,连结以上这些构件还需要适量的构造零件和固定螺栓。 经过以上的设计和分析,机器人的全部构件清单如下: 中央控制器一个; 电池一套; 驱动电机一对; 轮胎一对; 万向轮一个; 至少一个触碰模块; 构造零件和固定螺栓适量。 2. 拼装机器人。 拼装时,一般以中央控制器为中心,逐步添加安装外围构件,由内至
第二章 构建机器人躯体?22

◇机器人兴趣活动课程◇

外、由下至上地安装。在外围构件的安装过程中,又宜先考虑大构件的安 装,然后再考虑小型构件的添装。一些特殊的构件,例如电池,需要经常 拆装充电,故应考虑将它们安装在便于装卸的位置上。但又要让它们固定 好,以防止机器人运动时将它们甩掉。 在上例关于触碰机器人的设计中,我们就应考虑先安装机器人的驱动 电机,后安装触碰模块。 机器人构建完毕后,对一些应力点宜采用金属螺丝进行加固处理,防 止在机器人运动过程中轻易脱落。 3. 布线与接线。 完成机器人的构件拼装工作后,接下来就是要给一些电子构件接线了。 各种导线的布置以不干扰机器人感觉器官和执行器官的工作为原则,同时 尽可能做到美观大方。 在给各种感觉器官和动作器官接线时,务须注意电线的极性、作用和 适用电压等,这些不同的电子构件在控制器上适用的接口是不一样的,是 绝对不能接错的,否则很可能会导致构件的彻底烧损。一般来说,构件上 的引出导线中,黑色线是地线,应将它与电源的负极相连接;红色线为正 极,应将它与电源的正极相连接。除主电机外,包括伺服电机在内的其它 设备一率不应接到电机专用接口上,否则都有被烧坏的可能。此外,模拟 信号输入类的元件不应接在数字信号输入端口上,同样,数字信号输入类 的元件除特别说明外,也不应接到模拟信息输入端口上,否则都有可能造 成信息数据读取错误,进而导致机器人无法工作或工作错乱。 4. 完善机器人的外形设计。 机器人组装完毕后,应对它进行初步的调试和推敲,初步论证它在运 作过程中可能遭遇到的问题,是否需要添加一些其它构件以解决这些问题, 从而完善机器人的构建。例如下图的“轮式触觉简易机器人”考虑到它在 运动过程中可能容易走偏被墙壁卡死,于是又加装了四个飞翼式活动齿轮。 此外, 也可适当为它设计一件合身的 “外套” , 以使它更让人赏心悦目。

第二章 构建机器人躯体?23

☆中学生智能科技探索☆

5. 几个已安装好的机器人欣赏:

轮式触觉简易机器人

臂动式双触觉机器狗

轮式双灰度颜色检测寻迹机器人

可以直立行走的人型机器人

我校自建的荣获市二等奖、省三等奖的交通协管员“畅安”

第二章 构建机器人躯体?24

◇机器人兴趣活动课程◇

小结: 1. 机器人的核心硬件主要由作为思维器官的中央控制器,作为感觉器 官的传感器输入设备,以及作为行动器官的信息、动力输出设备等三者组 成,此外还需要一些用于传递动力的装置,用于连结和加固机器人各部件 结构的构造零件,以及用于装饰、保护的外壳等。 2. 拼装机器人的外形和功能是由我们的创意和设计决定的。根据预设 的机器人功能,我们有目的地去选择机器人的感知器件和执行器件。如果 所有的预制零件都无法满足设计要求时,我们还可以利用身边的材料自己 去制造符合需要的零件。 3. 拼装机器人时,一般以中央控制器为中心,逐步添加安装外围构 件,由内至外、由下至上地安装。在外围构件的安装过程中,又宜先考虑 大构件的安装,然后再考虑小型构件的添装。如电池等需要经常拆装的构 件,应考虑将它们安装在便于装卸的位置上。但又要让它们固定好,以防 止机器人运动时将它们甩掉。 练习和活动: 1. 设计一个用于防灾救援的机器人,列出它的预设功能以及所需要的 感觉器官和执行器官,利用身边已有的拼装机器人构件,把它构造出来。 2. 假设你是登月总设计师,由你来设计一台月球车,你会考虑哪些因 素,需要哪些机器人感觉器官和执行器官,以纸上一一把它们列举出来。

阅览室

我国第一台类人型机器人诞生记
走进国防科技大学机器人实验室,一台名叫“先行者”的机器人亲切 地向人们打招呼: “你好,我是国防科技大学研制的第一台类人型机器人, 欢迎您来参观,希望得到您的关心和呵护。 ”这位具有人类外观特征,能模 拟人类基本行为动作的机器人,身高 2.2 米,体重 20 公斤,是国防科技大 学科研人员 10 年艰苦攻关的结晶,是中华民族智慧的又一次闪光。 1985 年世界著名的筑波博览会在日本举行,美国研制的世界第一台两 足步行机器人和日本研制的两足步行机器人成了大会焦点。各国专家学者
第二章 构建机器人躯体?25

☆中学生智能科技探索☆

聚成一团,兴奋地观看机器人的表演,赞叹不已。 在拥挤的人群中,有位中国人显得出奇平静,他就是中国国防科技大 学的常教授。面对这一高科技挑战,其实他心中正涌动巨大波澜。伟大的 发明家爱迪生曾说: “上帝创造人类,两条腿是最美妙的杰作。因为两条腿 不但要支撑全身的重量,而且还要保证身体的平衡。 ”一个多世纪来,全世 界的机械学专家们把攻克两条腿的机器作为机械和自动化控制领域的最高 目标,研制具有人类外观特征和行为特征的机器人成了人类的梦想。 在波音 747 飞机上,常教授无心欣赏大海的碧蓝和白云的柔美,脑子 里只有一个念头:中国人的两足步行机器人,什么时候能站起来?回到长 沙,他连家都没回,就走进了我国自动化专家张良起教授家中,把筑波博 览会的见闻一股脑地端出来,他们的血沸腾了。张教授扶案站起来坚定地 说: “美国人有,日本人有,中国人也必须有! ” 从这一天起,中国研制两足步行机器人的艰辛历程开始了。 那时,先进的机械设计已在一些发达国家运用,然而,在最初的科研 阶段,中国人还只有铅笔和尺子,中外科学家展开了一场并不平等的竞赛。 图纸画出来了,制作成了难题?常教授来到车间,与工人师傅围在炉 前,谈博览会,谈机器人,谈中国人的骨气。就这样,中国的两足步行机 器人在一间简陋的车间里出生了。 然而,让机器人站起来,谈何容易?科研人员将历经两个多月设计的 程序输入两足步行机器人后,机器人却没有像预想那样站起来。面对这上 万行程序命令,博士生小竺没有放弃,他又逐字逐行清理、校正、调试, 这简直像海底捞针。 1987 年 12 月 31 日,是该写进史册的日子,小竺终于完成了我国两足 步行机器人第一套程序命令。中国的两足步行机器人,伴着新年的鞭炮声, 在中国大地上,走出了颤巍巍的第一步。 从此,我国的机器人研究进入了新时代。1989 年,国防科技大学的科 研人员把瞄准两条腿机器人的目光,转向具有双手协调、神经网络、生理 视觉等一系列与人类相仿功能的类人型机器人身上。 2000 年 11 月 29 日,中国第一台类人型机器人终于在国防科技大学实 验室站起来,走起来,扭起来。 这个机器人具有类同人一样的身躯、脖子、头部、眼睛、双臂与双足, 具备了一定的语言功能,其行走频率从过去的每 6 秒 1 步,提高到了每秒 2 步,从只能平地静态步行,到快速自如的动态步行;从只能在已知环境中 步行,到可在小偏差、不确定环境中行走。在机械结构、控制系统结构、 协调运动规划和控制方法等关键技术方面取得一系列突破,真正成为我国 机器人研究走向新世纪的“先行者” 。

第二章 构建机器人躯体?26

◇机器人兴趣活动课程◇

进入血管的机器人 在美国洛杉矶市举行的一次新闻发布会上,与会者在投影屏幕上看到 了这样一组镜头:字幕: 2005 年的某一天, 一个由直径只有 30 微米的齿轮装配成的小小机器人, 被植入血管里。这个小小机器人像潜水艇一样在血液的河流中自由自在地 游动着。一旦遇到血管中淤积或飘浮的胆固醇、脂肪,它们就毫不留情地 扑上去,迅速将其撕烂嚼碎。同凶恶的病毒相遇时,它们也毫不畏惧,挺 身而出。 可是,病毒是很狡猾的,它们眼看对方来势凶猛,往往会装出一副缩 头缩尾的可怜相,好像已经投降;或者干脆一下子躺下,一动不动,似乎 已经成了一具僵尸。机器人善良大度,它们大踏步地从这些已经放下武器 的敌人身边走过。 但是,受到优待的病毒并没有就此罢休,等机器人擦肩而过后,它们 一跃而起,开始从背后恶狠狠地攻击机器人,机器人不断倒下。 您别着急,这些机器人体内有纠错程序。它们中的许多机器人在吃了 一次亏之后,只要不是光荣牺牲,它们便能自动调整行为方式。于是,机 器人不再老实可欺。它们见到病毒后,不管它们如何伪装,非要杀它个片 甲不留。 病毒也随机应变,当它们同机器人相遇时,便拼命膨胀躯体,虚张声 势,竭力装出一副凶神恶煞的模样。可是,大脑内藏有“超级勇敢”程序 的机器人,英勇善战,视死如归,决心以自己的生命来捍卫主人的健康。 于是机器人同病毒进行了激烈的大搏杀。最后,病毒被不断歼灭。病毒的 碎块不断渗透出血管,流入肾脏,通过尿液排除体外。于是动脉畅通无阻, 人体更加健康。 上述有关超微技术的剧情,是根据科学家的设想编造出来的,但这并 不是无法实现的梦想,随着微机电技术的发展,幻想正一步步走向现实。 1988 年 5 月 27 日, 美国加利弗尼亚大学的两位华裔教授研制出了只有 76 微米(3?英寸)的微马达。 1991 年 11 月,日本电子公司的科研人员在当时最先进的“电子隧道扫 描显微镜”下,用“超微针尖” ,将硅原子排成金字塔形的“凹棱锥体” , 它只有 36 个原子那样高,这是人类首次用手工排列原子,在世界原子物理 界引起轰动。 1996 年 7 月,美国哈佛大学研制成功了直径只有 7 微米的涡轮机。一 张邮票上可以放置几千个这种涡轮机。只有在超高倍显微镜下才能看清楚 它的外形和结构。我国也已研制出了 1 毫米电机。 超微技术现在与老百姓关系还不密切,这主要是因为它们还不实用。
第二章 构建机器人躯体?27

☆中学生智能科技探索☆

对此,美国斯坦福大学的现代超微物理学专家本杰明?金博士作了这样的描 述: “未来人们将研制出高度智能化的人造跳蚤、蜘蛛等动物。它们集超微 型电脑、驱动器、传动装置、传感器、电源等于一体,成为人类十分独特、 而且非常得力的助手。它们将广泛应用于医疗、农业、工业、航天、军事 等各个领域。除了人们津津乐道的注入血管清除毒物的功能外,在外科手 术上还可用微马达来缝合神经、微血管、眼球等;还可用它来深入人体内 脏,如肾、心脏等作检查。将成千上万个“跳蚤”机器人搬入农田,消灭 害虫,使农业丰收,又防止了因使用农药造成的环境污染??。 ” 这位教授最后说: “与目前许多处于试验阶段的高新尖端技术一样,超 微技术产品的潜在价值和用途一时还很难设想。但是,可以相信在将来的 某一天,这种巧夺天工的产品,会悄悄进入我们的家庭,起到种种奇妙无 比的作用。 机器人的自由度: 机器人运动到空间的位置是由各关节独立运动的合成来确定的。机器 人每个构件相对于固定坐标系所具有的独立运动能力称为自由度。为了使 机器人把它的端部执行装置或与它连接的工具准确地移动到空间上任何位 置和方位﹐机器人通常需要六个自由度 不过,如果工具本身具有某种特别结构,那么就可能不需要六个自由 度。例如,要把一个球放到空间某个给定位置,有三个自由度就足够了(见 下左图)。又如,要对某个旋转钻头进行定位与定向,就需要五个自由度; 这个钻头可表示为某个绕着它的主轴旋转的圆柱体(见下右图) 。

三自由度示意图

五自由度示意图

机器人机械手的手臂一般具有三个自由度,其他的自由度数为末端执 行装置所具有。当要求某一机器人钻孔时,其钻头必须转动。不过,这一 转动总是由外部的马达带动的。因此,不把它看做机器人的一个自由度。 这同样适用于机器人的机械手。机械手的夹手应能开闭。不过,也不能把 夹手的这个开闭所用的自由度当做机器人的自由度之一,因为这个自由度 只对夹手的操作起作用。

第二章 构建机器人躯体?28

◇机器人兴趣活动课程◇

自由度与机动度

六自由度机械手

六自由度机械手示意图

传感器: 传感器是将某种输入信号转换成相应电信号的检测器件。人们为了从 外界获取信息,必须借助于感觉器官。但如果单靠人们自身的感觉器官来 研究自然现象、规律及生产活动等就远远不够了。为适应这种情况,传感 器应运而生。可以说,传感器是人类五官的延长,因此又被称为“电五官” 。 随着新技术革命和信息时代的到来。在利用信息的过程中,首先要解 决的就是如何获取准确可靠的信息,而利用传感器是获取自然领域中信息
第二章 构建机器人躯体?29

☆中学生智能科技探索☆

的主要途径与手段。随着科技的发展及某些特殊工作环境的需要,各种各 样的机器人被研制出来,用来完成特定的任务,而它们对外界情况的获悉 也离不开传感器。在现代化工业生产,尤其是自动化生产过程中,要用各 种传感器来监视和控制生产过程中的各个参数,使设备以最佳状态或正常 状态工作,使产品达到最好的质量。可以说,没有众多优良的传感器,也 就没有现代化生产。 目前,传感器已渗透到诸如工业生产、宇宙开发、海洋探测、环境保 护、资源调查、健康管理、生物工程及文物保护等极其广泛的领域。可以 毫不夸张地说,从茫茫的太空,到浩瀚的海洋,以至各种复杂的工程系统, 几乎每一个工程项目都离不开各种各样的传感器。 传感器一般由敏感元件、转换元件、转换电路三部分组成,如下图所 示。敏感元件是直接感受被测量,使输出与被测量成确定关系的某一物理 量的元件。转换元件用于接收敏感元件的输出,并将它转换成电路的参数 量。转换电路用于接收转换元件的电路参数量,并转换成有意义的和便于 利用的电量输出。
被检测量 敏感元件 转换元件 转换电路 电量

传感器的结构组成

传感器的种类繁多,如下是一些常见的传感器种类: 1. 力敏传感器。如电子秤、智能手机的重力感应等。 2. 热敏传感器。用于火警和电器过热保护、空调测温等。 3. 湿敏传感器。如湿度传感器,用于如空调、抽湿机等。 4. 磁敏传感器。如用于无刷直流电机、电子水表、煤气表的霍尔元件 等。 5. 气敏传感器。如家庭煤气泄漏报警装置。 6. 声敏传感器。如医疗 B 超检测设备。 7. 位移传感器。如鼠标中应用的光栅传感器等。 8. 液位传感器。如汽车检测油箱油料的多少并传回驾驶室的仪表上。 9. 烟雾传感器。如楼宇里安装在天花板上的用于消防的烟雾报警器。 教育机器人: 教育机器人是由生产厂商专门开发的以激发学生学习兴趣、培养学生 综合能力为目标的机器人成品、套装或散件。它除了机器人机体硬件相关 构件本身之外,还有相应的控制软件和教学课本等。 这类机器人通常是采用一些通用型的单片机来制造其中央控制器,并 将构成机器人机体的一些构件进行模块化生产,形成一系列可拼装和拆解
第二章 构建机器人躯体?30

◇机器人兴趣活动课程◇

的零件。利用这些零件可以构成形态各异功能多样化的各种机器人,它们 一般会提供专用的编程平台,编程方式简单易学。这类机器人非常适合于 机器人爱好者入门使用,也可用于参加各种机器人的竞赛活动。 目前生产这类机器人的厂家非常多,国内常见的有如下这些:少昊科 技高性价比教育机器人、北京 ROBOROBO 机器人、成都 IOROBOX 机器 人、大连博佳机器人、北京智慧天下、I 奇教育机器人、能力风暴机器人、 能力源、创新核、进化力、上海未来伙伴、乐高机器人、诺宝机器人、深 圳诺博特智能科技、紫光机器人、通用机器人、北京通用依耐特、慧鱼机 器人、中鸣机器人、纳英特机器人、杭州纳英特电脑电子工程、未来之星 机器人、上海积成电子系统、研究版机器人、上海英集斯自动化技术等等。 这些机器人性能各异,各有所长,但目前都有一个共通的特点——彼此不 相互兼容,这是让人非常遗憾的。 教育机器人虽然已经有了不少,但是对于广大的机器人爱好者来说, 这并不是他们的首选。他们喜欢自己选择零件,自己设计电路板,自己编 写程序,从头到尾自己搞出一套机器人来。当然,这需要较强的电子电路 知识和程序设计知识作为支撑。

形形式式的教育机器人

第二章 构建机器人躯体?31

☆中学生智能科技探索☆

单片机: 单片微型计算机简称单片机, 是典型的嵌入式微控制器 (Microcontroller Unit) ,单片机是一种集成电路芯片,是采用超大规模集成电路技术把具有 数据处理能力的中央处理器 CPU 随机存储器 RAM、只读存储器 ROM、多 种 I/O 口和中断系统、定时器/计数器等功能(可能还包括显示驱动电路、 脉宽调制电路、模拟多路转换器、A/D 转换器等电路)集成到一块硅片上 构成的一个小而完善的微型计算机系统,和计算机相比,单片机缺少了外 围设备等。单片机在工业控制领域广泛应用。从上世纪 80 年代,由当时的 4 位、8 位单片机,发展到现在的 300M 的高速单片机。 1971 年 intel 公司研制出世界上第一个 4 位的微处理器; Intel 公司的霍 夫研制成功世界上第一块 4 位微处理器芯片 Intel 4004, 它包含 2300 个晶体 管,尺寸规格为 3mm?4mm,计算性能远远超过当年的 ENIAC。4004 标 志着第一代微处理器问世,微处理器和微机时代从此开始。因发明微处理 器,霍夫被英国《经济学家》杂志列为“二战以来最有影响力的 7 位科学 家”之一。 1972 年霍夫等再次开发出 8 位的微处理器 8008,8008 仍采用 P 沟道, 属第一代微处理器。1973 年 intel 公司研制出 8 位的 N 沟道 MOS 微处理器 8080,第二代微处理器由此诞生。1975 年 MITS 发布第一个通用型 Altair 8800,这是世界上第一台微型计算机。1976 年 intel 公司研制出 MCS-48 系 列 8 位的单片机,这也是单片机的问世。20 世纪 80 年代初,Intel 公司在 MCS-48 系列单片机的基础上,推出了 MCS-51 系列 8 位高档单片机。 MCS-51 系列单片机无论是片内 RAM 容量,I/O 口功能,系统扩展方面都 有了很大的提高。因为简单可靠而性能不错获得了很大的好评。尽管 2000 年以后 ARM 已经发展出了 32 位的主频超过 300M 的高端单片机,直到现 在基于 8051 的单片机还在广泛的使用。在很多方面单片机比专用处理器更 适合应用于嵌入式系统,因此它得到了广泛的应用。事实上单片机是世界 上数量最多处理器。 现代人类生活中所用的几乎每件有电子器件的产品中都会集成有单片 机。手机、电话、计算器、家用电器、电子玩具、掌上电脑以及鼠标等电 子产品中都含有单片机。本课程所谈及的中鸣公司生产的机器人就主要使 用ARM公司生产的系列单片机作为控制器的核心。

第二章 构建机器人躯体?32

◇机器人兴趣活动课程◇

当代单片机系统已经不再只在裸机环境下开发和使用,大量专用的嵌 入式操作系统被广泛应用在全系列的单片机上。而在作为掌上电脑和手机 核心处理的高端单片机甚至可以直接使用专用的 Windows 和 Linux 操作系 统。 如何学习单片机: 学习单片机知识需要掌握模拟电路、数字电路和 C 语言知识等基础理 论知识。在你学习单片机之前,觉得模拟电路和数字电路基础不好的话, 不要急着学习单片机,否则,你的单片机学习之路不仅会很艰难和漫长, 还可能半途而废。单片机的学习离不开编程,在所有的程序设计中 C 语言 运用的最为广泛。C 语言知识并不难,没有任何编程基础的人都可以学, 在我看来,初中生、高中生、中专生、大学生都能学会。当然,数学基础 好、逻辑思维好的人学起来相对轻松一些。C 语言需要掌握的知识就那么 3 个条件判断语句、3 个循环语句、3 个跳转语句和 1 个开关语句。别小看这 10 个语句,用他们组合形成的逻辑要多复杂有多复杂。学习时要一条语句 一条语句的学,学一条活用一条,全部学过用过这些关键语句后,相信你 的 C 基础建立了。 当基础打好以后,你会感觉到单片机不再难学了,而且越学越起劲。 当单片机乖乖的依照你的逻辑思维和算法去执行指令,实现预期控制效果 的时候,成就感会让你信心十足、夜以续日、废寝忘食的投入到单片机的 世界里。可以这么说,扎实的电子技术基础和 C 语言基础能增强学习单片 机信心,较快掌握单片机技术。 学习单片机必须有一台个人电脑、一块单片机开发板(如果开发板不 能直接下载程序代码的话还得需要一个编程器) 、一套视频教程、一本单片 机教材和一本 C 语言教材。电脑是用来编写和编译程序,并将程序代码下 载到单片机上;开发板用来运行单片机程序,验证实际效果;视频教程就 是手把手教你单片机开发环境的使用、单片机编程和调试。对于单片机初 学者来说,视频教程必须看,要不然,哪怕把教材看了几遍,还是不知道 如何下手,尤其是院校里的单片机教材,学了之后,面对真正的单片机时 可能还是束手无策;单片机教材和 C 语言教材是理论学习资料,备忘备查。 不要为了节约成本不用开发板而光用 Proteus 软件仿真调试,这和纸上谈兵 没什么区别。 在实践过程中不仅要学会别人的例程,还要在别人的程序上改进和拓 展,让程序产生更强大的功能。同时,还要懂得通过查阅芯片数据手册 (DATASHEET) 里有关芯片命令和数据的读写时序来核对别人例程的可靠 性。 当编写自己的程序信手拈来、阅读别人的程序能够发现问题的时候,
第二章 构建机器人躯体?33

☆中学生智能科技探索☆

说明你的单片机编程水平相当不错了。接下来就应该研究硬件了。硬件设 计包括电路原理设计和 PCB 板设计。学习做硬件要比学习做软件麻烦,成 本更高,周期更长。但是,学习单片机的最终目的是做产品开发,使软件 和硬件相结合形成完整的控制系统。 电路原理设计涉及到各种芯片的应用,而这些芯片外围电路的设计、 典型应用电路和与单片机的连接等在芯片数据手册(DATASHEET)都能找 到答案,从芯片数据手册里你所获得的知识可能是在教科书、网络文档和 课外读物等所没有的知识。

第二章 构建机器人躯体?34

◇机器人兴趣活动课程◇

第三章 编造机器人的灵魂
一个“机器人”如果只具有脑壳、感觉器官和执行机构等硬件实体, 而脑中空空,则不能做任何事情,那么它就不能算是一个真正的机器人。 就像人们发现的“狼孩” ,它具有人的身体部件、结构。但是,它没有 和人生活在一起,脱离了人的生存环境,没有学习知识,他的大脑不会像 人那样进行思考、分析和判断,因此就不具有正常人的智慧,是一个没有 灵魂的躯壳。机器人的“智慧”来自于人们编写的程序,程序由一系列机 器指令组成,存在机器人的控制系统中。有了这些程序,机器人才能指挥 它的动作器官按要求完成各种工作。我们接下来的工作就是要给这个充满 科技感的躯体注入灵魂。使其变得智慧起来。 在教育机器人制作中,我们基本上都是使用基于 C 语言环境的积木式 流程图编程软件。这类软件?学、?用、易读、?懂,都非常适合于编程 思维的培养。它们采用图形化、模块化的流程图式编程语言,全部功能模 块使用图标表示。程序员只需简单地拖放各种模块图标,绘制出?程图, 并在图标的属性中设置好相关参数,软件就能自动生成可编译成机器语言 的 C 语言源代码,实现对机器人的控制。 下面我们就以机器人快车 3.6 为例,了解一下这类软件的基本操作。机 器人快车的软件界面如下右图。给机器人编程的流程一般如下左图所示:

第三章 编造机器人的灵魂?35

☆中学生智能科技探索☆

程序开始图 标

变量 设置面板 图标属性 设置面板

功能模 块 图标库

程序编辑 作图区

程序编写流程图

机器人快车软件界面

一、我的第一个程序 双击桌面或者开始菜单中的“机器人快车 v3.6”快捷方式,打开机器 人快车编程软件。在机器人快车中选择“文件”→“新建” ,在新建对话框 中的“名称”栏中自拟一个机器人程序的名称(例如下图中的“walk” ,要 求尽可能使用英文字符) ,点击确定“按钮”创建新的机器人控制程序。 (如 下图)

在我们开始飞奔之前,我们还是先学习如何行走吧,下面我们就写一 个让机器人行走的程序。在机器人快车程序的左侧模块库的执行模块中, 用鼠标左键拖两个“马达”图标放到作图区中,并使用连线工具将程序开
第三章 编造机器人的灵魂?36

◇机器人兴趣活动课程◇

始图标与这两个马达图标依次连接起来,如下图所示:

在上图中,我们可以看到,当我们使用选择工具选中其中一个马达图 标时,程序右侧的属性面板中显示了马达图标的参数设置。 点击那个 “which”右侧的空白处,在其下拉菜单中将出现“定义硬件信息”的选项, 我们就点击这个选项来定义一下机器人的两个驱动电机吧。 如下左图, 在接口列表中选择 M1 接口, 并在名称文本框中输入该电机 的名称“Left” ,最后点击“确定”按钮。再次点击“定义硬件信息”选项 进入硬件设置对话框, 在接口列表中选择 M2 接口, 并在名称文本框中输入 该电机的名称“Right” ,点击“确定”按钮退出。这样机器人身上安装的两 个驱动电机都定义好了。

第三章 编造机器人的灵魂?37

☆中学生智能科技探索☆

使用“选择”工具,用鼠标选中其中一个马达图标,然后在右侧属性 面板的 which 中选中“_MOTOR_Left_”硬件,如上右图所示。同样给另一 个马达图标选择 “_MOTOR_Right_”硬件进行关联。 接着,我们分别将两个马达图标的“state”值由原来的“1”更改为新 值“0” 。state 的取值范围及各值的具体意义如下图红框内文字所示。值得 注意的是,我们同样可以通过这种办法来知道其它图标相关参数的意义哦。

第三章 编造机器人的灵魂?38

◇机器人兴趣活动课程◇

程序开始 启动电机 程序结束 程序流程图

看吧, 我们的第一个机器人程序就这么写完了, 思考: 是不是很简单呢?我们赶紧把它下载到机器人里 本程序中,机器 试试看吧。 人走的是直线吗?为 什么?如何纠正? 首先用数据线将机器人与电脑连接起来, 然后 执行机器人快车 “工具” 菜单中的 “下载” 命令 (如 下左图) , 待出现下载进度条对话框时 (如下右图) , 打开机器人的电源按钮, 然后等待程序下载完毕后 关闭机器人电源按钮。 拔开下载数据线,重新打开机器人电源按钮,观察机器人的运行情况。

第三章 编造机器人的灵魂?39

☆中学生智能科技探索☆

二、让机器人走走停停 执行了上一节编写的程序后, 机器人就会一直向前走, 也太单调了吧? 只知道一直向前走的机器人,它还能叫智能机器人吗?那么,我们能不能 让机器人走走停停呢? 通过上一节的学习,我们知道,当马达图标的 state 值为 0 时,机器人 就向前行走,而当 state 值为 1 时,机器人就能停止不动。那么我们是否可 以将多个 state 值为 0 的马达图标与多个 state 值为 1 的马达图标, 以如下图 所示的方式穿插着串联起来,从而实现让机器人走走停停的功能呢?

行与不行,将程序下载到机器人里测 试一下就都知道了。请务必去试一试,试 完以及思考过后,再继续去看下文。

思考: 上图所示程序的机器人 执行结果怎么样?和你的预 期效果一样吗?为什么?

显然,上述程序并没有实现我们让机 器人走走停停的梦想。你甚至可能会怀疑 机器人是不是坏了?或者程序没有正确 下载到机器人里? 其实都不是,机器人之所以没有按我们的指令运行,那是因为我们对 机器人还不够了解所导致的。 马达图标的作用是在向机器人发送一组特定的指令,让机器人的电机 器件按指令所规定的状态来运行,并在接到下一组指令前一直保持这种运 行状态,但每秒钟机器人可以执行成千上万组甚至更多的指令。可见上述 程序在机器人的控制器里瞬间就被执行完毕了,而程序的最后一组指令正 是让机器人的马达停止下来。于是机器人就像没接到过指令一样动也未动 过似的。 显然,如果要实现走走停停的功能效果,我们就必须设法让每次设置 的马达状态保持运行一段时间,然后再去设置新的马达运行状态。

第三章 编造机器人的灵魂?40

◇机器人兴趣活动课程◇

程序开始 启动电机 等待 3 秒 停止电机 等待 3 秒 启动电机 等待 3 秒 停止电机 程序结束 程序流程图

在模块库的“内置模块”类别中有 3 个图标正是实现这一功能的。它 们是“秒级延时” 、 “1/10 秒级延时”和“1/100 秒级延时” ,如上左图所示。 根据实际需要延长的时间和延时的精度,我们可以选择恰当的延时级别。 引入延时图标后,我们让机器人“走走停停”的程序就重新调整成如上中 图所示了。将程序下载到机器人里,再看看运行效果? 三、再让机器人走走停停 上面那个程序终于实现了让机器人走走停停了吧?这是值得庆贺的事 情,毕竟我们的机器人又智慧了一点点了,而我们的知识也长了一点点了。 但我们不禁又要问:如果要让机器人执行 1000 次走走停停,甚至让它 一直以这种运动方式前进,难道我们就写 1000 组,甚至无穷组这样的程序 段,然后用连线工具将它们一一连接起来?可以吗? 你确定真的可以吗? 真的可以! 但我们不能老干这种没效率的事情!这种重复而无聊的繁重劳动,我 们还是把它交给机器奴隶去做吧,这个工作它比你更在行。 像上面一、二节所示的那两个程序,它们都是自上而下地执行的,在 程序设计中,我们称之为顺序结构的程序。而本节我们要求机器人走走停
第三章 编造机器人的灵魂?41

☆中学生智能科技探索☆

停重复多次,我们可以使用循环执行同一段程序的形式来实现,这种重复 执行同一段程序的程序结构形式,我们称之为循环程序结构。对于这种循 环程序结构,我们将在后面的章节中详细展开学习。本节我们就先简单认 识一下它的威力吧。 在机器人快车软件的“流程控制”类模块库中,有一个 图标和一个

图标,它们都是用来实现程序循环执行的。不同之处是, “For”图标是 用于实现有限次数的循环;而“While”图标则是让程 序段一直循环下去, 直到循环条件无效时, 才结束循环。 用鼠标左键将一个 图标拖入到作图区中,这时 图标外,机器人快

我们发现,作图区中除出现一个

车又自动给我们添加了一个 图标。是的, “While” 和“For”这两种图标都是成双成对出现的,如果落单 了,那么程序就肯定错了。其中 图标是循环程序体

的开始标记,而 图标则是循环程序体的终结标记。 需要重复执行的程序段请放在这两个图标之间。 用连线 工具将循环体的开始图标与需要循环的程序段的第一 个图村相连,同样,再用连线工具将需要循环执行的程 序段的最后一个图标与循环体的终结图标连起来。最后用鼠标选中循环体 的开始图标,在机器人快车的右侧属性面板中输入循环的次数即可。 下图所示程序就是要让机器人走走停停 10 次,你看,咱们用不着写上 10 组一模一样的程序段,然后再拿边线工具连上 10 次吧。

你掌握这种循环执行的程序了吗?如果要让机器人实现 100 次的走走 停停看来也没什么困难吧。 但无限次呢?试一试? 四、让机器人受到袭击就逃跑 通过上面的学习,我们让机器人知道怎样走走停停了。但是,即使你 能让机器人学会走停 1000 次、一亿次,它也远远称不上智能啊。因为它只 知道走走停停,遇到其它任何情况都不懂得处理,这样的“机器人”只能
第三章 编造机器人的灵魂?42

◇机器人兴趣活动课程◇

称得上是机器,与“人”一点毛的关系也扯不上。 那么我们怎样才能让机器人具有这种智慧,使它能在遇到情况时,进 行“自主”的处理呢? 我们假设当机器人遇到袭击时,能自动逃离。那么机器人首先须具备 感知受到外力冲击的能力,根据第二章的学习,我们知道触碰模块、红外 测距模块、超声波测距模块等感觉器官具备这种感知能力。我们就给机器 人选装上触碰模块来试一试吧。 我们在机器人快车软件“其它检测”类别的模块库中找到“触碰检测” 图标 ,触碰图标的作用是让程序去读取一次触碰模块的状态,如果有 触碰情况就返回数值 1,如果没有就返回数值 0。我们将触碰图标添加到程 序作图区中。因为涉及到硬件,我们首先要进行硬件信息定义。 选中触碰图标,点击属性面板“which”下拉菜单中的“定义硬件信息” 来打开“硬件设置”对话框,在对话框中挑选一个可用的接口,并输入触 碰模块的名称“front” ,点击“确定”按钮完成硬件的定义,有关硬件定义 的更详细的说明及图示请参考第一节中定义“马达”硬件的过程。最后别 忘了给触碰图标的 which 选定刚才定义的硬件名称。

此外,我们还需要设置触碰图标的“返回变量” 。选中触碰图标后,如 上面左图所示,点击属性面板“返回变量”的下拉菜单中的“定义变量” 选项。进入“变量”面板后,如上面右图,在变量面板中点击“添加”按 钮添加一个变量,将新添加的变量名更改为“cupeng” ,并将新变量的“数 据类型”一项选定成与上面左图“返回类型”相一致的类型名称,变量的 初始值使用默认的 0。定义好变量后,点击变量面板底部的“属性”标签返 回属性面板。 在属性面板中的 “返回变量” 项目中指定成新变量名 “cupeng” 。 什么是变量?请参阅本章阅览室中关于变量的材料。 那么,接下来的程序应该怎么写呢,如下图这样写行不行?

上面第二节的学习经验悄然告诉我们——这似乎是不行的!
第三章 编造机器人的灵魂?43

☆中学生智能科技探索☆

那么,我们该怎么办呢?再加延时图标吗? 我们不能总在一条路上走死吧,延时图标在这里其实并没有什么效果 的。因为一个触碰图标只检测一次触碰模块的情况,如果想实现对触碰模 块的长期性监测,那么就需要反复地使用触碰图标去读取 触碰模块的实时情况。这得在程序中串入多少个触碰图标 呢? 我们可以使用上一节刚学习过的循环图标来实现这 种反复的检测。在程序开始的位置设置一个“while”类型 的循环,因为变量 cupeng 的初始值是 0,明显符合循环条 件“cupeng==0” ,于是程序就一直在循环执行这段程序, 而这段程序就只做一个事情——监测触碰模块。当触碰模 块受到外力碰撞时,触碰图标返回值变成 1,变量 cupeng 的值由原来的 0 变成了 1, 此时的变量 cupeng 与 0 进行比 较,明显不相等,因此不现满足循环的条件,从而开始执 行循环后面的程序——驱动电机逃离现场。实现受到袭击 就逃跑的全部程序如下图所示:

五、让机器人碰到障碍就停下来 经过前面的学习,我们终于让机器人“智慧”了一点点了,受到袭击 居然会躲了!那么我们能不能让机器人再智慧一点点呢,例如假如它发现 前方有凸起的障碍物时,能自动进行刹车处理,避免碰撞把自己给撞毁了。 为了实现这一功能,那么机器人就必须具备预知前方有障碍的能力。 根据第二章的学习,我们可以给机器人选装红外测距模块或超声波测距模 块,以使机器人具备这种能力。下面我们就选用超声波测距模块来试一试 吧。 在机器人快车软件的“其它检测”类别的模块库中找到“超声测距” 图标 , 超声测距图标的作用是让程序去读取一次超声波测距模块的测量 结果,并将新测量的距离值保存下来。我们将超声测距图标添加到程序作 图区中,并进行硬件信息定义。 选中超声测距图标,点击属性面板“which”下拉菜单中的“定义硬件 信息”来打开“硬件设置”对话框,在对话框中挑选一个可用的接口,并 输入超声测距模块的名称“cejuli” ,点击“确定”按钮完成硬件的定义,有
第三章 编造机器人的灵魂?44

◇机器人兴趣活动课程◇

关硬件定义的更详细的说明及图示请参考第一节中定义“马达”硬件的过 程。最后别忘了给超声测距图标的 which 选定刚才定义的硬件名称。 此外,我们还需要设置超声测距图标的“返回变量” 。选中超声测距图 标,点击属性面板“返回变量”下拉菜单中的“定义变 量”选项,进入“变量”面板后,在变量面板中点击“添 加” 按钮添加一个变量, 将新添加的变量名更改为 “juli” , 变量的数据类型与属性面板返回类型一致的“ unsigned int”类型,有关变量定义的更详细的说明及图示请参考 上一节中定义“cupeng”变量的过程。定义好变量后,点 击变量面板底部的“属性”标签返回属性面板。在属性 面板中的“返回变量”项目中指定变量名“juli” 。 接下来我们就开始编写程序来读取超声波测距模块 的测量数据,根据上一节的经验,我们可以使用一个循 环来读取超声波测距模块的测量数据。如果,测量到的 距离值小于某个指定义,例如小于等于 30,那就执行马 达停止程序让机器人停止运动。 While 图标中的条件表达 式为“juli>30” ,即当机器人测得前方的障碍物距离大于 30 时,机器人就 一直去循环读取超声波模块的距离值,只有当超声波模块的返回值小于或 等于 30 时,循环条件不再成立,于是程序就开始执行循环后面的图标,即 让机器人的马达暂时停机,使机器人停止了前进。程序如下图:

我们将上一节的程序与本节的程序串连起来,这样就得到一个完整的 “智能”型机器人控制程序了:

在这个程序中,机器人既知道躲避袭击,又知道在遇到前方障碍物时 自动停止,看起来挺智能的。但是,它的“智慧”似乎属于一次性消费品, 用完了就没有了——这显然不是很合理吧。你能让它实现智慧的自动回收, 从而制造出可重复使用的“智慧”吗? 六、让机器人的智慧呼之即来 经过上面的学习,我们的机器人是越来越聪明了,为了让它的“智慧” 能呼之即来,我们必须先学习一个特殊的模块图标“If”: , “If”图标位

第三章 编造机器人的灵魂?45

☆中学生智能科技探索☆

于机器人快车软件的模块库的最顶部, 它可以说是机器人 “智慧” 的源泉, 因为有了它,我们就能让机器人对各种可能的外界情况作出判断,进而选 择恰当的程序来解决问题。下面是“If”图标的几点使用注意事项: 1. 它的作用是判断机器人当前的运行参数是否符合设置在该图标上的 判断条件,判断后如果条件成立,就执行“If”图标箭头向上的那部分程序; 如果条件不能成立,程序就执行“If”图标箭头向下的那部分程序。 2. “If”图标也是成双成对的,首尾两个图标不可缺一。 3. 在进行程序图标连线时,从“If”起始图标上箭头引出的线,最终 必须引回“If”结束图标的上箭头上。同理,从下箭头引出的线,最终也须 引回到结束图标的下箭头上。 4. 可同时给上下两组箭头都连上线, 也可以只连上箭头或只连下箭头, 但至少必须连上其中一组箭头的线。 使用 If 图标时,必须设置 If 图标的判断条件,设置判断条件时将涉及 到常用的 3 种逻辑运算、6 种比较运算、5 种算术运算及一个括号运算,我 们先来了解一下这 15 种常用运算的意义及符号: a. 三种常用逻辑运算符 与运算:用于联结两个以上的判断条件,只有当所有参与联结的条件 都成立时,整体条件才成立。与运算的运算符号是“&&” ,例如: “A&&B” 的意思是当 A 条件成立,并且 B 条件也成立,则整个条件就成立了,运算 结果为真(True) ;如果 A、B 两个条件中,任意一个条件不成立,则整个 条件就不成立,运算结果为假(False) 。 或运算:用于联结两个以上的判断条件,当所有参与联结的条件中有 一个是成立的,则整体条件就成立。或运算的运算符号是双竖线“||” ,例 如: “A||B”的意思是当 A 条件成立, 或者 B 条件成立, 则整个条件就成立, 运算结果为真(True) ;只有当 A、B 两个条件都不成立时,整个条件才不 成立,运算结果为假(False) 。 非运算: 即取反运算, 运算符号是英文输入法中的叹号 “! ” 。 例如: “!A” , 表示如果 A 条件是成立的, “!A”条件就不成立了,运算结果为假(False) ; 反之,如果 A 条件原本是不成立的, “!A”条件就成立了,运算结果为真 (True) 。 b. 六种常用比较运算符 小于: 运算符号为 “<” , 例如: “5<6” 的条件成立, 运算结果是真 (True) ; “5<5”或“5<3”的条件都是不成立的,运算结果为假(False) 。 等于:运算符号为两个连起来写的等于号“==” ,例如: “5==5”的条 件是成立的,运算结果是真(True) ; “5==6”或“5==3”的条件都是不成 立的,运算结果为假(False) 。 大于: 运算符号为 “>” , 例如: “5>3” 的条件成立, 运算结果是真 (True) ; “5>5”或“5>6”的条件都是不成立的,运算结果为假(False) 。
第三章 编造机器人的灵魂?46

◇机器人兴趣活动课程◇

小于或等于:运算符号为“<=” ,例如: “5<=6”和“5<=5”的条件都 是成立的,运算结果是真(True) ; “5<=3”的条件是不成立的,运算结果 为假(False) 。 大于或等于:运算符号为“>=” ,例如: “5>=3”和“5>=5”的条件都 是成立的,运算结果是真(True) ; “5>=6”的条件是不成立的,运算结果 为假(False) 。 不等于:运算符号为英文输入法状态下的叹号与等号的组合“!=” 。例 如: “5!=3”和“5!=6”的条件都是成立的,运算结果是真(True) ; “5!=5” 的条件则是不成立的,运算结果为假(False) 。 c. 五种常用算术运算符 加法运算:符号“+” ,符号两边的数值相加后,再拿其运算结果来进 行下一步的条件判断。例如:5+5=10,用 10 来做下一步的条件判断。 减法运算:符号“-” ,符号左边的数值减去符号右边的数值后,再拿运 算结果来进行下一步的条件判断。例如:5-5=0,用 0 来做下一步的条件判 断。 乘法运算:符号“*” ,符号两边的数值相乘后,再拿乘积来进行下一 步的条件判断。例如:5*5=25,用 25 来做下一步的条件判断。 除法运算:符号“/” ,符号左边的数值除以符号右边的数值后,用得到 的商来进行下一步的条件判断。注意符号右边的除数不能为零,否则程序 可能会运行错误。例如:5/5=1,用 1 来做下一步的条件判断。 求余运算:符号“%” ,符号左边的数值除以符号右边的数值,得到整 数的商和被除数中未除尽的余数,用该余数来进行下一步的条件判断。注 意符号右边的除数不能为零,否则程序可能会运行错误。例如: 5%5=0、 5%3=2,用 0、2 来做下一步的条件判断。 d. 圆括符“( )” 圆括符运算符常用于将运算式中的个别运算提高级别。 e. 运算符的级别 同一条条件表达式中可能有很多的去处符号,那么哪些数值或条件先 进行运算,而哪些后进行运算呢?这将直接影响到整体条件的最终结果。 上述提到的这些运算符的运算先后顺序如下: 1. ()、!; 2. %、*、/; 3. +、-; 4. <、>、==、<=、>=、!=; 5. &&、||; 6. 同级的运算符运算时自左至右进行。 f. 条件表达式运算示例 例如:表达式: “(3+5)*2>30/2-1&&4<8||!(8>5)”的运算过程如下:
第三章 编造机器人的灵魂?47

☆中学生智能科技探索☆

第一步: 8 *2> 15 - 1&&4<8||! True 第二步: 16 > 14 &&4<8||False 第三步: False &&True||False 第四步: False||False 第五步: False 结果显然为假(False),条件不成立。 好了,有了上面的这些知识作为武装,我们可以开始改写上一节中的 那段程序了,让机器人的智慧告别一次性消费吧。 首先,为了让机器人的“智慧”能重复出现,我们使用一组大循环来 包含机器人的全部程序,使它能够反复地去读取触碰模块和超声波模块的 测量结果。读取到测量结果后,再用两组 If 图标对两个模块的测量结果分 别作出判断,如果判断的条件成立,就执行被 If 图标组包含于其中的程序; 如果条件不成立,就直接跳过该 If 图标组去执行其后面的程序。全部的程 序图标如下图:

在上图的程序中,程序一开始运行就进入一个 while 类型的循环,该循 环的循环条件为默认值“1” ,即无穷循环。每轮循环首 先读取触碰模块和超声波模块的测量结果,并将结果分别 存放在“cupeng” 、 “juli”两个变量中。接下来用一组 If 图标判断变量“cupeng”的值是否为1(If 图标内的判断 条件表达式为 cupeng==1) , 如果是变量 cupeng 的值为1, 说明机器人被袭击了,则启动马达让机器人逃离现场;如 果变量 cupeng 的值不为1,则说明机器人未被袭击,程 序直接去执行下一组 If 图标程序, 机器人暂时保持此前的 运动状态不变。第二组 If 图标则是对变量“juli”的值作 判断,如果值小于或等于 30(If 图标内的判断条件表达式 为 juli<=30) ,说明机器人运动的前方不远处有障碍物,则 机器人执行马达停机操作, 让机器人停止下来, 避免碰撞; 如果变量 juli 的值大于 30,则程序认为前方暂无障碍物, 可以通行,程序直接进入下一轮循环,机器人暂时保持此 前的运动状态不变。程序的流程图如右图所示。至此,让 机器人智慧呼之即来的程序编写完了。 本节程序中,我们引入了 If 图标,这是一个让程序进 行分支的图标。程序的分支结构与此前介绍过的程序的循 环结构、程序的顺序结构一起,构成程序的三大基本结构。
第三章 编造机器人的灵魂?48

◇机器人兴趣活动课程◇

七、让机器人绕过障碍 通过前面的学习, 我们做到了让机器人 在每次发现障碍物时 都能随时停下来了。 但这样的机器人显然 仍有些不足,我们遇 到困难时从来都不轻 易停下脚步,我们又 怎能让我们的机器人 在遇到障碍时举步不 前呢?接下来,我们 将继续研究如何让机 器人绕开障碍物继续前进。 绕开障碍物的办法有很多,本节采用较简单的左转避障法则。当机器 人前进过程中发现前方有障碍物时,机器人向左旋转机身,直到前方不再 检测到障碍物,然后机器人继续前进并检测前方是否有障碍物。其原理如 左图。 为了更便于控制机器人,并让程序更有新意,我们也重新定义一下触 碰模块的作用:机器人处于停止状态时,触动触碰模块可以启动机器人; 机器人处于运动状态时,触动触碰模块则可让机器人停下来。其原理如上 面右图。为了记录机器人是否在运动,我们再引入一个名为“moving”的 新变量。 在开始编写程序之前,我们引入一个新的模块图标“calculate” ,即“计 算”图标 ,顾名思义,该图标的作用是表达式的计算,我们使用该图标 来改变变量 moving 的存储值,用以标记机器人的新的运动状态。要给一个 变量赋值须用到赋值符“=” ,该符号的作用是将符号右边的表达式的运算 结果存储到符号左边的变量中保存下来。例如:在计算图标中输入表达式 “moving=3+1” ,则程序运动过该图标后变量 moving 的值就是 4。如果要 在计算图标中进行多条表达式的综合计算,则使用英文状态下的分号“;” 来分隔各条表达式,例如:计算图标中的表达 式组为 “moving=3+1; moving= moving + 1” , 中, 观察和思考: 经过第一步计算,变量 moving 的值是 4,但紧 赋值符“ = ”与比较 跟着执行表达式“moving= moving + 1” ,而此 运算符“==”有什么区别 时的 moving 的值实际上是 4,所以后面表达式 区别?
第三章 编造机器人的灵魂?49

☆中学生智能科技探索☆

的意义相当于“moving= 4+ 1” ,故经过计算后变量 moving 的最终值为 5。 下面,我们开始改写程序: 我们先新定义一个变量 “moving” , 变量的数据类型为 “unsigned char” , 变量的默认值为 0。当我们触动触碰模块时,如果 moving 的值为 0,说明 机器人处于静止状态,那么我们就将 moving 的值设置为 1,标记它已处于 运动状态;那么当我们再次触动触碰模块时,就可以轻松地通过 moving 的 值来获知机器人正在运动了,从而采取停止马达同时将 moving 的值重新还 原为 0 的措施,而非启动机器人。而在后面的程序中,我们对 moving 变量 进行判断,如果值为 1,说明可以驱动机器人,从而让机器人向前移动或转 弯避障。如果此时 moving 的值为 0,后面程序就不作任何操作,从而保持 此前触动触碰模块时设置的机器人静止状态。为了判断机器人是否在运动, 我们还须引入一组新的 If 图标。程序图标及连线更改如下图所示。

第三章 编造机器人的灵魂?50

◇机器人兴趣活动课程◇

小提示: 当程序越来越复杂时,老是从模块库中提取图标有些麻烦。特别是当后 面程序所使用的一连串图标从内容到布局上基本与前面的某串图标一致时。 如果此时仍从模块库中逐一拖拽图标来创建新的程序图标并进行连线操作, 其工程重复繁琐,又容易出错,实无必要。机器人快车具有程序图标的复制 功能。具体操作办法如下: 在图标旁边按下鼠标左键,拖动鼠标,让鼠标画出的选择区域覆盖住你 要复制的图标串,放开鼠标左键后,那些图标就被选中了。 在选中的图标上点击鼠标右键,选择“复制”命令。 在机器人快车空白的编辑区上点击鼠标右键,选择“粘贴”命令,复制 完成。

1、选择图标

2、复制图标

3、粘贴图标

4、复制的结果

八、使用子程序简化程序结构 学习到上面一节,我们可以看到机器人的控制程序是越来越复杂了。 然而,若要让机器人完成系列任务,其程序将远远比上述程序要复杂。复 杂度越来越高的程序如果仍要写在同一界面中,从视觉上来说,这将是非 常凌乱的,极不利于我们对程序进行检查和调试。而个别程序段还可能在 程序中反复出现,如果都要逐一地去编写这些重复的程序段,对我们来说 也是劳动力的极大浪费。 如何避免上述情况呢? 仍记得我们在第一节新建第一个程序时,在新 建对话框中,我们选择了“主程序” ,而我们上面编写的七个机器人控制程 序都正是单一的主程序。那么接下来,我们将谈一谈另一类程序——“子 程序” 。 子程序是能被其他程序反复调用调用,具有特定的功能,完成该功能 后能自动返回到调用它的程序中去的程序。在编程过程中,如果其中有些 程序段内容完全相同或相似,为了简化程序,可以把这些重复的程序段单 独列出,并按一定的格式编写成子程序。 相对而言,主程序是指计算机基本的被独立提供出来的程序,它能够 调用子程序,而不被任何子程序所调用。主程序是计算机程序的中心部分,
第三章 编造机器人的灵魂?51

☆中学生智能科技探索☆

是整个程序的入口并被自动首先执行。主程序在执行过程中如果需要某一 子程序,通过调用指令来调用该子程序,子程序执行完后又返回到主程序, 继续执行后面的程序段。子程序还可以继续调用另一个子程序,甚至是调 用其自身(递归调用) ,形成程序的嵌套。 在编写机器人主程序时,我们可以在机器人快车菜单栏的“项目”菜 单中找到“新建私有子程序”的菜单项,如下左图。点击该菜单项即可打 开如下面右图所示的新建私有子程序对话框。

在上图的“新建”对话框中输入新子程序的程序名称“move_stop” ,然 后点击“确定”按钮,这时程序打开了新子程序的“属性”对话框。在新 打开的“属性”对话框中,先选中左侧的“返回”属性页,并在返回属性 页中指定子程序返回数据的数据类型“unsigned char” ,如下图所示。

第三章 编造机器人的灵魂?52

◇机器人兴趣活动课程◇

设置完返回值后,我们再点击该“属性”对话框左侧的“参数”标签 进入的“参数”页。在这一页里,我们将给这个子程序定义一些运行它时 需要引用外部数据的程序初始变量。如下图所示,依次给输入新变量的名 称、数据类型及默认值,然后点“添加”按钮即可,本例中我们点击了两 次添加按钮,分别添加了 moving 和 cupeng 两个变量。

最后点击“确定”按钮完成第一个子程序“move_stop”的添加,它主 要用于控制机器人的运动和停止。接着再以同样的办法添加第二个子程序 “moveMode” ,这个子程序的作用是控制机器人的运动模式,使机器人工 作于避障状态或是工作于前进状态。该子程序的添加过程如下述三图所未:

第三章 编造机器人的灵魂?53

☆中学生智能科技探索☆

新建名为 moveMode 的子程序

将新子程序的返回变量的返回类型设置为 void(无返回变量)

第三章 编造机器人的灵魂?54

◇机器人兴趣活动课程◇

给新子程序建立两个传入参数(moving、juli),参数的类型分别为 unsigned char 和 unsigned int

建立好两个子程序后,在主程序 walk 的图标模块库中的 walk 类别中, 我们将看到程序新增了两个图标模块,它俩的名字分别为:move_stop 和 moveMode,如下图所示,它们正是我们通过上述步骤建立起来的两个子程 序。

接下来,我们就可以像使用其它普通的模块图标一样在这个 walk 主程 序中使用这两个子程序图标了。下面我们就利用这两个图标来编写一段功 能与上一节一模一样的机器人程序:

第三章 编造机器人的灵魂?55

☆中学生智能科技探索☆

新的 walk 主程序如上图所示,看起来是不是比上一节的程序要简洁了 许多呢? 好吧,咱们赶紧将新的程序下载到机器人上运行试试看? 吓?没有效果! 没有效果就对了,因为上面新建立的两个子程序都还是空空的呢,我 们得给它们编写上程序,机器人才会按我们的意思去运行啊。 我们首先将主程序 walk 的相关图标的参数完善好。在主程序中,while 图标的参数仍然使用默认值(留空或填写数值 1) ,使 while 图标所包括的 程序段永远循环执行。接着是触碰图标,将它的 which 参数指定为已定义 好的 front 触碰硬件,返回变量指定为 cupeng,如下左图所示。超声波图标 的 which 参数设置为已定义好的 cejuli 触碰硬件,返回变量指定为 juli,如 下右图所示。

move_stop 子 程 序 图 标 的 参 数 及 返 回 变 量 设 置 如 下 左 图 所 示 。 moveMode 子程序图标的参数设置如下右图所示。

好了, 主程序至此就编写好了, 下面我们先来写写较简单的 moveMode 子程序,子程序的功能是判断机器人是否处于运动状态,如果不是运动状 态就不要做任何事情了,而直接跳出子程序去执行主程序中的下一个图标 任务; 如果机器人处于运动状态的话, 就去判断 juli 变量的当前值是否小于 或等于 30,如果小于或等于 30 就让机器人以绕障形式运动,否则就让机器 人直行。

第三章 编造机器人的灵魂?56

◇机器人兴趣活动课程◇

该子程序的全部图标及其连线、各图标的参数设置如上图所示,可谓一目 了然,大家看图即可,在此就不再赘述了。 至于第二个子程序 move_stop, 其功能是判断机器人的触碰模块是否检 测到了触碰,如果检测到了触碰,就进一步判断机器人当前是处于运动状 态还是停止状态,并将机器人的当前运动状态反置。这个子程序的全部图 标如下图所示,其程序结构和参数设置也基本一目了然,唯有 别说明一下。 图标须特

是返回图标,它的作用是退出当前的子程序,并返回调用该子程序 的主程序中,并且也可同时返回一个数据值,这个数据值代表该子程序的 运行结果,称为返回值。选中该返回图标后即可输入这个返回值了,返回 值可以填写具体的已知数值,也可以填写某个变量的变量名,以返回该变 量所存储的动态数值。我们可以在主程序中读取这个返回值,并让后续运 行程序根据这个返回值作相应的动作。 在上图中,上面的那个返回图标的属性中应填写数字“ 0” ,下面的返 回图标的属性中应该赶写数字“1” 。即机器人原先是处于运动状态的,就 先将机器人停止下来,并且返回数字 0 来标记机器人已经停止了;如果机 器人原先是停止状态的,就返回数字 1 来标记机器人现在处于运动状态了,
第三章 编造机器人的灵魂?57

☆中学生智能科技探索☆

至于以何种方式来运动,则由另一个子程序去设定。 此外,在子程序中也须定义使用到的硬件信息,本例中两个子程序均 只使用到驱动马达,因此在子程序中只需要定义左右两个马达的硬件信息 即可,定义时须注意硬件的接口要与主程序的定义一致。 我们也可以先在主程序中将本机器人所用到的全部硬件信息统一定义 好,然后在子程序中导入主程序的硬件信息的办法来简化程序的硬件定义 工作,同时也可以减少硬件的错误定义。在子程序中导入主程序中已定义 好的硬件信息的操作过程如下页三图所示:

第三章 编造机器人的灵魂?58

◇机器人兴趣活动课程◇

子程序的硬件信息导入后,可以在子程序的硬件信息列表中将该子程 序不使用的那些硬件定义删除掉,如下图所示:

第三章 编造机器人的灵魂?59

☆中学生智能科技探索☆

经过上述的一翻“折腾”第七节中所述的“让机器人绕过障碍”程序 被一分为三,以一个主程序外加两个功能各自独立的子程序而实现,每部 分的程序看起来都简洁了许多。

小结: 本章从能让机器人动起来,到实现机器人的简单避障,分八步循序渐 进地讲述了一些机器人编程的基础知识。 1. 硬件定义:使用到硬件模块图标时,须先定义硬件,定义硬件概括 为三步:一是指定硬件接口,并给硬件实物接线;二是给硬件模块起一个 响亮而易记易用的名字;三是给程序的硬件图标的 which 参数填写上新定 义好的硬件名字。 2. 变量定义:程序在运行过程中需要做一些运算,运算的参数和结果 都是一些变化的数据,这些数据需要使用一些机器人内部存储器区域来存 放,为了方便调用这些区域,我们须给它起一个响亮而易记易用的名字, 这就是变量名;为了节约有限的存储器资源,编程系统根据参数的数据大 小量身定做了大小不等的多种变量类型。因此定义变量也概括为三步:一 是指定变量名称;二是根据参数的可能的最大值选择合适的变量类型;三 是在需要使用变量的图标上输入变量及其运算表达式。 3. 顺序程序结构:程序从开始图标往下顺序执行,直至最后一个程序 图标结束为止,中间没有分支或往返的情况。 4. 循环程序结构:程序根据某些变量运算的条件进行判断,反复执行 一段特定的程序段,直到条件不能满足而自动退出为止。在机器人快车编 程环境中包含两种类型的循环,它们分别是 while 循环和 for 循环,均有特 别的开始图标和结束图标。为了使循环更多样性和更符合编程者的需要, 使用它们的过程中可配合使用 continue(中断本轮循环)和 break(中断并 退出循环)两个图标。 5. 分支程序结构:程序根据某些变量运算的条件进行判断,分情况执 行不同的程序段。在机器人快车编程环境中提供了一分二的分支模式( if 图标) ,满足条件就执行上面的程序分支,不能满足条件就执行下面的程序 分支,两个分支至少要选择其中一个分支进行连线。分支图标是双图标模 块,首尾两个图标不能缺少其一。 6. 条件运算表达式:和数学中的不等式类似,须注意单等号(=)与双等 号(==)的区别。 7. 子程序:子程序是能被其他程序反复调用调用,具有特定的功能,
第三章 编造机器人的灵魂?60

◇机器人兴趣活动课程◇

完成该功能后能自动返回到调用它的程序中去的程序。在编程过程中,如 果其中有些程序段内容完全相同或相似,为了简化程序,可以把这些重复 的程序段单独列出,并按一定的格式编写成子程序。

练习和活动: 1. 组装一个带一个或两个触碰模块(或超声波模块)的机器人,让它 像瞎人走路一样摸着课室的墙壁向前走,让它不要长时间与墙壁碰接,也 不要过于远离墙壁,更不能让墙壁卡死。

阅览室 控制论之父——维纳 在机器人发展史中,一个关键的人物是有“控制论之父”美誉的维纳。 维纳生于哥伦比亚市一个犹太人家里。维纳 4 岁开始读书,9 岁时读中 学,11 岁进人大学学习,他 18 岁时取得了哈佛大学数学和哲学 两个博士学位,后来又到德国、英国学习,拜著名哲学家罗素、数学 家希尔伯特为师,进一步深造。 维纳已是一个很有名的数学家了,但他对其他学科也很有兴趣。在第 二次世界大战末期,有两个大问题特别引起了他的兴趣,一个是电子计算 机,另一个是火炮命中率问题。在第二次世界大战期间,交战双方都在努 力提高防空火炮打飞机的命中率, 当时平均 3000 发炮弹才能击中一架敌机。 维纳和一位年轻工程师合作,从驾驶汽车这种简单的动作中发现,人是采 用了一种叫“反馈”的控制方法,使汽车按要求行驶。维纳又请来了神经 专家进行共同研究,发现机器和人的控制机能有相似之处。后来,维纳又 和许多有名科学家进行讨论,听取对方的批评意见,甚至是“攻击”意见, 终于 1948 年把自己的研究成果发表了出来,叫《控制论》 。 控制论的大意是,人和自动机器人是一种系统,都是由感觉装置、动 作装置(器官)、传递信息系统(神经系统)、控制装置(脑)所组成。工作基本 上是采用反馈规律,也就是给定信号使动作装置(器官)动作,结果由感觉装 置(器官)检测出来,送到控制装置(脑)去计算、比较。如果有误差,控制装 置(脑)按一定规律产生控制信号,再去控制动作装置(器官),使误差减小, 直到消失为止。
第三章 编造机器人的灵魂?61

☆中学生智能科技探索☆

当然,控制论比这复杂得多,它对许多科学技术都是有作用和影响, 而机器人的诞生和发展与它有着极其密切的关系。 “更深的蓝”战胜了什么? 北京时间 1997 年 5 月 12 日凌晨 4 时 50 分,当“深蓝”将棋盘上的兵 走到 C4 位置时,卡斯帕罗夫推秤认负。至此轰动全球的第二次人机大战结 束, “深蓝”以 3.5:2.5 微弱的优势取得了胜利。 那么“更深的蓝”是何许人也?卡斯帕罗夫又是何许人也? “更深的蓝”是美国 IBM 公司生产的一台超级国际象棋电脑,重 1270 公斤,有 32 个大脑(微处理器) ,每秒钟可以计算 2 亿步。 “更深的蓝”输 入了一百多年来优秀棋手的对局两百多万局。 卡斯帕罗夫是人类有史以来最伟大的棋手,在国际象棋棋坛上他独步 天下,无人能出其右。可是,在临近世纪末的 1997 年,孤独求败的卡斯帕 罗夫不得不承认自己输了,而战胜他的是一台没有生命力、没有感情的电 脑。也许这是一件偶然的事件,可是,这件事使人类看到了一个自己不愿 看到的结果:人类的工具终于有一天会战胜自己。 “深蓝”和卡斯帕罗夫曾于 1996 年交过手,结果卡斯帕罗夫以 4:2 战胜了“深蓝” 。经过一年多的改进, “深蓝”有了更深的功力,因此又被 称为“更深的蓝” 。 “更深的蓝”与一年前的“深蓝”相比具有了非常强的 进攻性,在和平的局面下也善于捕捉杀机。 卡斯帕罗夫与“更深的蓝”的较量,引来了全世界无数棋迷和非棋迷 的关注。人们对此次人机大战倾注了巨大的热情,各种新闻媒体都竞相报 道和评论此次人机大战,显然不只是出于对国际象棋的热爱,事实上,许 多关心比赛的记者和读者都是棋盲,是因为这场比赛所蕴涵的机器与人类 智慧的较量的特殊意义吸引了他们。 卡斯帕罗夫输掉这场人机大战在社会上引起了轩然大波,引出了两种 不同的观点:一部分人对此深感悲观,甚至惊恐不安,就像一些人对克隆 技术感到可怕一样。另外一些人则只是对这一结果感到不愉快,但他们认 为这未必不是好事。首先,比赛的结果不足以说明电脑就战胜了人脑,因 为电脑的背后是包括美籍华裔谭崇仁、许峰雄等一大批计算机专家。这些 专家经过多年的努力,培养出来一个世界超级电脑棋手。电脑的进步表明 人类对人脑的思维方式有了更深入的了解。从科学意义上讲,人机大战只 是一项科学实验。其次,虽然电脑在棋盘上战胜了人类,但这并不会封杀 国际象棋艺术,相反许多棋坛人士从人机大战中看到了国际象棋的新机遇。 他们认为,如果在今后的国际象棋比赛中,棋手们可以使用计算机,通过 高科技手段检验我们认为天才而又过分大胆的棋着。 不错,我们已经发明了比我们跑得快的、举得重的、看得远的机器,
第三章 编造机器人的灵魂?62

◇机器人兴趣活动课程◇

如汽车、起重机、望远镜等,它们只能成为人类的一种工具,并没有影响 到人的本质。人类发明的机器或许可以分为两类: “体能机器”和“智能机 器” 。体能机器如汽车、飞机等,已经得到了公众的赞许,但智能机器却得 到完全不同的反应。向来都自以为智商最高的人类,却在智力游戏中输掉 了,于是有人惊呼,今天我们输掉了最伟大的棋手,明天我们还将输掉什 么! 变量: 一、什么是变量 机器人程序在运行过程中需要做一些运算,运算过程中的参数和结果 都是一些变化的数据,这些数据需要暂时或长期存放起来,于是我们就在 机器人的大脑中统一安放一个专门用来存取这些数据的器件,称之为机器 人的内部存储器。我们又针对每个单独的运算参数在这个内部存储器中划 分一个小小区域来存取它们,这个小小区域我们就称它为变量。为了区别 和方便调用这个小小区域,我们一般要给它起一个响亮而易记易用的名字, 这就是变量名。为?么要用变?呢?这个问题如同大家上学为?么要用书 包一样,书包是用来存取书的,同样道理,变?是用来存取数据的。 二、变?的命名 变量的命名有一定的规则,下面是机器人快车变?的命名规则: 1. 所有变?名必须由一个字母(a~z, A~Z)或下划线(_)开头; 2. 变?名的其它部分可以用字母、下划线或数字(0~9)组成; 3. 变?名?能以双下划线开头,也?能以单下划线开头并且结尾,如 __aa,_aa_是?正确的; 4. 大小写字母表示?同意义, 即代表?同的变?; 5. 变?长??能超过 32 个字符,注意:不宜使用中文来给变量命名; 6. )机器人快车中的每个模块内及每个应用程序中的变??能存在同 名; 7. 变量的名字不能与系统关键词(如 int、char、long 等)同名。 三、变量的数据类型 为了节约有限的存储器资源,编程系统根据运算参数的数据大小量身 定做了大小不等的多种变量数据类型。原则上?么样的数据类型变?,存 取?么样数据类型的数据。在机器人快车中常用的数据型如下表所示。 类型 名称 数值范围 Char 字符型 -128~127 Int 整型 -32768~32767 Long 长整型 -2147483648~2147483647
第三章 编造机器人的灵魂?63

☆中学生智能科技探索☆

unsigned char 无符号字符型 0~255 unsigned int 无符号整型 0~65535 unsigned long 无符号长整型 0~4294967296 Double 实数型 5.0*10^-324~1.7*10^308 四、变量的定义 选中当前正在编辑中的应用程序或子程序,然后点击菜单栏中“视图” 主菜单下的“变?窗口”子菜单,或者选中需要使用变量的程序图标后, 在属性面板的变量输入位置上选择“定义变量”命令(如下左图所示)均 可打开变量操作面板(如下右图所示) 。 在局部变量标签面板中首先点击“添加”按钮添加一个变量。依次输 入变量名、数据类型、初始值和变量说明等内容即可。

初始值是?么?开始给变?划分空间时,这个空间是空的,但可以在 划的时候就给它装入数据,这个数据就是初始值。如果该变?有初始值, 就在初始值输入框中填写该变?的初始值。 变量说明是用来帮助编程者或程序阅读人员理解程序的,程序工程较 大的话最好输入一些变量说明文字,以帮助日后更易阅读这个程序。 局部变量和全局变量,这主要也是为了节约机器人存储资源而设置的, 它说明变量的作用范围。全局变量在整个程序中都将起作用,定义在主程 序中;而局部变量则只在定义它的子程序内起作用,随子程序的调用而产 生,随子程序的退出而注销。 定义变量时须注意: 使用全局变量会占用更多的内存(因为其生命期长) ,不过在计算机配 置很高的今天,这个不成为什么问题,除非使用的是巨大对象的全局变量, 能避免就一定要避免。但教育机器人使用的仍然是较低内存的单片机,所 以这个仍须注意。 使用全局变量程序运行时速度更快一些(因为内存不需要再分配) ,同 样现在也快不了多少。 总之,全局变量可以使用,但是全局变量使用时应注意的是尽可能使 期名字易于理解,而且不能太短,避免名字空间的污染;避免使用巨大对
第三章 编造机器人的灵魂?64

◇机器人兴趣活动课程◇

象的全局变量。 变量的作用域,比如你会粤语,出了广东别人听不懂你说的什么了, 一个变量,出了定义它的程序体后就会失效。 外部变量 任何在函数定义之外定义的变量都是外部变量,此时,通常省略关键 字 extern。 外部变量是全局变量,其作用域是整个程序,即全局有效。外部变量 定义之后,该程序下面所有的函数都可以对它进行存取或修改。它的值被 永久保留,存放在用户空间的静态存储区中。这样,同一外部变量在两次 函数调用期间能保持它先前的值。这些性质是与自动变量截然不同的。 自动变量可以与外部变量同名(当然最好区分开) 。当按名存取时,优 先使用自动变量。 五、变量的修改与删除 选中当前正在编辑的程序或子程序,然后进入变量面板。在面板的变 ??表中选中需要修改的变?,就可以重新输入变量的新的数据类型、初 始值和变量说明文字等内容了。 选中当前正在编辑的程序或子程序,然后进入变量面板。在面板的变 ??表中选中需要删除的变?,最后点击“删除”按钮,即可删除该变? 了。 数制: 数制也称计数制,是用一组固定的符号和统一的规则来表示数值的方 法。它有三个基本要素:数码、基数和位权。 数码:数制中表示基本数值大小的不同数字符号。例如,常用的十进制 中有 10 个数码:0、1、2、3、4、5、6、7、8、9。相应地,八进制就有 8 个数码,六十进制(时钟)则有 60 个数码?? 基数:数制所使用数码的个数。例如,二进制的基数为 2;十进制的基 数为 10。 位权:以基数为底的幂。即数制中某一位上的 1 所表示数值的大小(所 处位置的价值) 。例如,十进制数“123”中,1 的位权是 100(102) ,2 的 1 0 位权是 10(10 ) ,3 的位权是 1(10 ) 。 目前人们常用的数制有十进制(decimal system,用 D 表示) 、十二进制 (duodecimal system) 、六十进制(sexagesimal system) 、七进制(septinary system) 、二进制(binary system,用 B 表示) 、八进制(octal system,用 O 表示) 、十六进制(hex system,用 H 表示)等。受硬件因素的影响,当前 的计算机采用的是二进制,对应的数码为“0 和 1” 。其中, “1”代表物理
第三章 编造机器人的灵魂?65

☆中学生智能科技探索☆

电路上的高电压和磁盘上的北极, “0”代表电路的低电压和磁盘的南极。 由于二进制的编码过于庞大,例如十进制中的“100”如果用二进制来表示 就是“1100100” ,不便于书写,占的纸张也多了点,因此人们结合二进制 在计算机中的编码的特点,又引入了八进制、十六进制等数制。而我们日 常生活中常用的数制则是十进制和十二进制、六十进制等。 为了在不同系统或环境下表达相同的数值,人们必须进行数制转换。当 然,在电脑里,这些转换操作都由操作系统(winXP 等)默默地自动完成, 你只需要在计算机上输入你的十进制数值,操作系统会自动把它翻译成电 脑硬件所认识的二进制数进行计算,计算完成后操作系统又会将二进制的 运算结果翻译成你熟悉的十进制数值,不需要你手工去做翻译。 虽然使用计算机时,翻译数制的工作不需要你手工去做。但能够偷懒的 只有一般的计算机使用者,对于计算机的开发者而言,你必须了解二进制、 八进制、十六进制和十进制,以及了解这些数制之间的相互转换知识。 数制的转换 1.把其它数制的数值翻译成十进制数 方法是:将其它进制按权位展开,然后各项相加,就得到相应的十进制 数。 例: 将二进制数 10110.101 转换为十进制数: 按权展开二进制数 10110.101: 1*24 + 0*23 + 1*22 + 1*21 + 0*20 + 1*2-1 + 0*2-2 + 1*2-3 16 + 0 + 4 + 2 + 0 + 0.5 + 0 + 0.125 求和后得到十进制数:22.625 2.将十进制数翻译成其它数制的数值 分两部分分别进行转换。 整数部分采用基数除法。把我们要转换的数除以新进制的基数,把余 数作为新进制的最低位;把上一次得的商再除以新的进制基数,把余数作 为新进制的次低位;继续上一步,直到最后的商为零,这时的余数就是新 进制的最高位。 即采用短除法,将十进制数连续除以新进制的基数,反向取余数: 余数 例如十进制数 30 转换为二进制数: 短除法得到的余数分别为:0、1、1、1、1 反向排序后为:11110 因此: (30)D =(11110)

第三章 编造机器人的灵魂?66

◇机器人兴趣活动课程◇

小数部分采用基数乘法。把要转换数的小数部分乘以新进制的基数,把 得到的整数部分作为新进制小数部分的最高位;把上一步得的小数部分再 乘以新进制的基数,把新的整数部分作为新进制小数部分的次高位;继续 上一步,直到小数部分变成零或者达到预定的精度要求为止。 例如十进制数 0.6875 转换为二进制数: 小数部分 乘积部分 整数 0.625 ?2 =1.375 ??1 0.375 ?2 =0.75 ??0 0.75 ?2 =1.5 ??1 0.5 ?2 =1.0 ??1 因此: (0.6875)D =(0.1011)B 3.八进制与二进制的互换: 二进制数转换成八进制数。从小数点开始,整数部分向左、小数部分向 右,将二进制数每 3 位划为一组,不足 3 位的,整数部分在其左侧、小数 部分在其右侧分别加“0”补足 3 位,每组二进制数字用一位八进制数的数 字表示。就得到一个八进制数。 八进制数转换成二进制数则刚好相反,把每一个八进制数转换成 3 位的 二进制数,就得到一个二进制数。 二进制数字与八进制数字对应关系如下: 000→0;001→1;010→2;011→3;100→4;101→5;110→6;111→7。 例:将八进制的 37.416 转换成二进制数: 3 7 . 4 1 6 011 111 .100 001 110 即: (37.416)O =(11111.10000111)B 例:将二进制的 10110.0011 转换成八进制: 010 110 .001 100 2 6 . 1 4 即: (10110.011)B = (26.14)O 4.十六进制与二进制的互换: 十六进制数、二进制数之间的转换与八进制数、二进制数之间的转换类 似。所不同的是要将二进制数划成 4 位一组,不足 4 位的加“0”补足 4 位。 十六进制数字与二进制数字的对应关系如下: 0000→0;0001→1;0010→2;0011→3;0100→4;0101→5;0110→6;0111 →7; 1000→8;1001→9;1010→A;1011→B;1100→C;1101→D;1110→E;1111 →F。 例:将十六进制数 5DF.9 转换成二进制: 5 D F . 9
第三章 编造机器人的灵魂?67

☆中学生智能科技探索☆

0101 1101 1111 .1001 即: (5DF.9)H =(10111011111.1001)B 例:将二进制数 1100001.111 转换成十六进制: 0110 0001 .1110 6 1 . E 即: (1100001.111)B =(61.E)H 二进制数的编码 无符号整数 在计算机中常用的编码方式之一是“无符号整数(unsigned int)”编码。 在这种编码的二进制数字中,210 = 1,024 通常被表示为“千(K) ” ,所 以很多 2 的高次幂通常可以简写成: 211 = 2 K = 2,048 212 = 4 K = 4,096 213 = 8 K = 8,192 214 = 16 K = 16,384 215 = 32 K = 32,768 216 = 64 K = 65,536 217 = 128 K = 131,072 218 = 256 K = 262,144 219 =512 K = 65,536 值 220 = 1,024 K = 1,048,576 通常被表示为“兆(M) ” : 21 22 2 =2M 2 =4M 依此类推还有诸如 230 被表示为“吉(G) ” ;240 被表示为“特(T) ” 等等。 如果我们使用 16 位的二进制数, 那么我们可以得到 65,536 种不同的值, 因此您不能对 65,535 或更大的数据进行操作,否则您将得到一个“数据溢 出”的错误。这个术语表明,您正在进行的是“有限精度”的操作。 使用这种编码不能表示小数。您只能使用非小数的“整数” 。 使用这种编码不能表示负数。所有的数字都是“无符号数” 。 虽然有这种限制,但是在计算机中对于简单的增 1 计数来说, “无符号 整数”还是十分有用的。它们对计算机来说是很容易处理的。计算机通常 使用 16 位或 32 位无符号整数, 分别称为 “整数 (integer) ” 和 “长整数 (long integer) ” 。一个整数允许对从 0 到 65,535 的数据进行操作,而一个长整型 允许对从 0 到 4,294,967,295 的数进行操作。 有符号整数和补码 在定义了无符号二进制数后,我们就要着手定义负数了,或称为“有 符号整数” 。最简单的一个方法是保留一个位来表示数值的符号。这个“符 号位”可以位于数值的最左边,当然也可以位于数值的最右边。如果这个 符号位为 0,表示数值是正的,如果这个符号位为 1,表示数值是负的。
第三章 编造机器人的灵魂?68

◇机器人兴趣活动课程◇

这样做是可以的,虽然从人类的角度来看是最明显的解决方案,但是 它对于计算机来说有可能带来一些难度。例如,这种编码使得 0 可以有正 负两种。人们可能对此感到不可思议,但是这对计算机来说是适应的。 对计算机来说,更自然的表达方式是对给定的位数的二进制数按其范 围分成两半,其中前一半用来表示负数。例如,在 4 位数值中,你可以得 到: 0000 = 十进制 0 1000 = 十进制-8 0001 = 十进制 1 1001 = 十进制-7 0010 = 十进制 2 1010 = 十进制-6 0011 = 十进制 3 1011 = 十进制-5 0100 = 十进制 4 1100 = 十进制-4 0101 = 十进制 5 1101 = 十进制-3 0110 = 十进制 6 1110 = 十进制-2 0111 = 十进制 7 1111 = 十进制-1 现在我们得到了一个“有符号整数”数字系统, “补码”编码方式。对 16 位有符号数字编码来说, 我们可以得到范围为-32,768 到 32,767 的有符号 数字。对一个 32 位的有符号编码系统来说,我们可以为从-2,147,483,648 到 2,147,482,647 的数编码。 与只改变符号位来表示负数的编码方式相比, “补码”编码方式与之有 所不同。例如对于-5 来说,只对符号位编码,应该是:1101 但是对于“补码”编码方式来说,则是: 1011 所以,现在我们可以以二进制方式来表示正负两种不同的数值。请记 住对于一个二进制数来说,只有两种解释方式。如果在内存中有一个这样 的二进制数值:1101,它只能解释为十进制的“13”或“-3” 。 定点小数 这种格式通常被用于商业计算(例如在电子表格或 COBOL 中) ;因为 在这里,丢弃小数位来记录金钱是不能接受的。因此了解二进制如何存贮 小数是十分有用的。 首先我们必须决定要用多少位来存贮小数部分和多少位来存储整数部 分。假设我们使用 32 位来表示这种格式,那么我们用 16 位表示整数部分, 16 位来表示小数部分。 小数部分怎么使用呢?这沿用了表示整数的方式:如果 8 位接下来是 4 位, 是 2 位,1 位,那么当然接下来就是半位,1/4 位和 1/8 位等等了。 例如: 整数位 小数位 0.5 = 1/2 = 00000000 00000000 . 10000000 00000000 1.25 = 1+1/4 = 00000000 00000001 . 01000000 00000000
第三章 编造机器人的灵魂?69

☆中学生智能科技探索☆

7.375 = 7+3/8 = 00000000 00000111 . 01100000 00000000 有一点棘手的是,如果您要表达 1/5(十进制的 0.2) ,那您不能得到精确的 数值表达方式。最好的方法只能是: 13107/65536 = 00000000 00000000.00110011 00110011 = 0.1999969... 十进 制 13108/65536 = 00000000 00000000.00110011 00110100 = 0.2000122... 十进 制 然而您不能这样做,即使你有更多的数位来表达。问题是,一些小数 使用二进制的方式不能精确地表达出来。除非您使用一个特殊的办法。这 个特殊的办法是分别使用两个数字来表达小数:一个是分子,一个是分母。 然后您可以使用学校学习的加、减、乘、除来得到它们。然而,这些方法 不能表达更高级的数字(例如平方根) ,或者如果这两个分母的最小公倍数 很大的话,那就难以使用。这就是使用定点小数表达小数的优点。 浮点小数 当我们使用了有符号和无符号的数值表达方式时。如果遇到连 32 位也 不足以表达的大范围的数,或也许可以表达,但我们必须为此放弃小数位 时,我们可以选择的以获得更大范围的数值的表达方式的方法是使用“浮 点小数”格式而抛弃“定点小数”格式。 在十进制中,我们对以下的表达方式很熟悉: 1.1030402 ? 105 = 1.1030402 ? 100000 = 110304.02 或简写成: 1.1030402E5 这表示“1.103402 乘以一个 1 后面跟着 5 个零的数” 。我们可以得到一 个确定的称谓 “尾数”的数值 (1.1030402) , 乘以一个 10 的某个幂级数(E5, 5 表示 10 或 100,000) ,也就是“幂级数” 。如果我们使用一个负的幂级数, 那就意味着乘以该正级数的倒数。例如: 2.3434E-6 = 2.3434 ? 10-6 = 2.3434 ? 0.000001 = 0.0000023434 使用这种定义的好处是我们可以得到更大范围的数值,虽然尾数部分 的精确度受到影响。相似的原理可以应用于二进制中为计算机使用。人们 设计了很多方式,但是作常用的是由美国电器和电子工程师协会定义的一 种方法。它对 64 位浮点格式的定义是: 11 位二进制表示指数,52 位尾数,一个符号位。这个方式提供的数字 范围为: 最大值 最小值 正数 1.797693134862231E+308 4.940656458412465E-324 负数 -4.940656458412465E-324 -1.797693134862231E+308 这种方式也定义了一些不是数字的值, 例如 “NaNs” ( “不是一个数字” ) 。
第三章 编造机器人的灵魂?70

◇机器人兴趣活动课程◇

这通常用来返回表示数字溢出的信息。 一些程序使用 32 位浮点小数。 最普遍的是使用 32 位尾数, 1 位符号位, 8 位阶码。它的范围为: 最大值 最小值 3.402823E+38 2.802597E-45 正数 -2.802597E-45 -3.402823E+38 负数 通常我们可以把 32 位的二进制浮点数称为“单精度”浮点数,而把 64 位的二进制浮点数称为“双精度”浮点数。我们常使用 real 表示双精度的 浮点数;而使用 float 表示单精度的浮点数。 浮点数在计算机的存储是连续的: 当计算机内存中有一个 64 位数据时, 它可能是一个双精度的浮点数,也可能是两个单精度的浮点数,或 4 个有 符号或无符号的整数,或其它 8 位的数据,这取决于计算机如何读取它们。 如果计算机把 4 个无符号整数以双精度浮点小数方式读出的话,它可以得 到一个双精度浮点小数,但这个数据可能是一个垃圾数据。 所以,现在虽然我们已经解决了正、负数的存贮方式,但是对于浮点 数来说,仍然存在一些与整数一样的缺陷,例如: 像整数一样,浮点数也有范围。虽然我们得到了比整数要大得多的范围, 但是仍然是有限的, 如果您试图把两个很大的数乘起来, 您可能会得到 “数 据上溢”的错误。而如果您把一个小的数字除以一个函大的数字,那就可 能使得指数的数值出错,出现“数据下溢”的错误。通常把最大值称为“机 器无穷” ,因为它是计算机所能处理的最大的数字。 另一个问题是精度。虽然您有 15 位的数字来表示很大的数,但是挡对 它进行四则运算的时候,它们可能不给您任何提示就把一些数字丢弃。这 意味着,如果您把一个很小的数加到一个很大的数值上去的时候,由于这 个数字太小,以至于 15 位或 16 位的精度都不能显示它,计算机就会把这 个数字丢弃。如果您在做计算的时候得到一个十分奇怪的数字,您可以需 要检查您的数据范围是否合适。 这意味着,如果您做浮点计算,较小的数字很可能被丢弃了。虽然这 在平常来说并不明显,但是如果您是做要求很高的数学分析工作,这些错 误可能会累积起来,以至于最后得到的结果十分不准确。 这个错误对进行数学研究的人来说十分重要,他们必须对误差十分了解, 以及研究一些办法来减少误差,并且应该可以估计到误差的大小。 “精度”问题与“范围”问题不同,前者指的是有关尾数的表示范围, 后者指的是指数的表达范围。 另外一个不太明显的误差是由于浮点数的二进制和十进制并不完全相 等。如果您操作的数好是 2 的幂级数的倒数,例如用二进制来表示十进制 数 0.75,那么可以准确的标示为 0.11,因为它刚好是 1/2+1/4 的值。可是不 幸的是,您可能通常不会得到如此恰到好处的数字,这就是说,计算机会
第三章 编造机器人的灵魂?71

☆中学生智能科技探索☆

把一些数字丢掉,例如要表示十进制数 0.1,只能使用无穷循环的二进制小 数 0.000110011??表示了。 如果您对这部分内容不理解,别担心。这里的要点是,计算机不是万 能的,它只是一部机器,并要符合一定的规则和受到一定的限制。虽然很 多人对计算机抱有孩子似的信任,但是在计算机虽好的解决方法下也有一 些不可避免的不精确。 莱布尼茨与二进制 莱布尼茨(Gottfried Wilhelm Leibniz,1646—1716,德国)不仅发现了 二进制,而且赋予了它宗教的内涵。他在写给当时在中国传教的法国耶稣 士会牧师布维(Joachim Bouvet,1662 - 1732)的信中说: “第一天的伊始是 1,也就是上帝。第二天的伊始是 2,??到了第七天,一切都有了。所以, 这最后的一天也是最完美的。因为,此时世间的一切都已经被创造出来了。 因此它被写作‘7’ ,也就是‘111’ (二进制中的 111 等于十进制的 7) ,而 且不包含 0。只有当我们仅仅用 0 和 1 来表达这个数字时,才能理解,为什 么第七天才最完美,为什么 7 是神圣的数字。特别值得注意的是它(第七 天)的特征(写作二进制的 111)与三位一体的关联。 ” 布维是一位汉学大师,他对中国的介绍是 17、18 世纪欧洲学界中国热 最重要的原因之一。莱布尼茨曾将很多布维的文章翻译成德文,发表刊行。 恰恰是布维向莱布尼茨介绍了《周易》和八卦的系统,并说明了《周易》 在中国文化中的权威地位。另一个可能引起莱布尼茨对八卦的兴趣的人是 坦泽尔(Wilhelm Ernst Tentzel) ,在他主管的图灵根大公爵硬币珍藏室中有 一枚印有八卦符号的硬币。 八卦是由八个符号组构成的占卜系统,而这些符号分为连续的与间断 的横线两种。这两个后来被称为“阴”、“阳”的符号,在莱布尼茨眼中,就是 他的二进制的中国翻版。他感到这个来自古老中国文化的符号系统与他的 二进制之间的关系实在太明显了,因此断言:二进制乃是具有世界普遍性 的、最完美的逻辑语言。 计算机程序 程序(program 或 procedur,港台称之为程式) ,是为实现特定目标或 解决特定问题而用计算机语言编写的命令序列的集合。含义 1:为进行某活 动或过程所规定的途径;含义 2:程序是由序列组成的,告诉计算机如何完 成一个具体的任务。由于现在的计算机还不能理解人类的自然语言,所以 还不能用自然语言编写计算机程序。计算机程序是利用一些计算机编程语 言编写并翻译成机器语言的计算机指令集合。
第三章 编造机器人的灵魂?72

◇机器人兴趣活动课程◇

程序一般分为系统程序(如 windowsXP、安卓等)和应用程序(如 ph otoshop、各种游戏等)两大类。程序就是为使电子计算机执行一个或多个 操作,或执行某一任务,按序设计的计算机指令的集合。由程序计数器(P rogram Counter)控制。是用汇编语言、高级语言等开发编制出来的可以运 行的文件,在计算机中称可执行文件(后缀名一般为.exe) 。我们玩的游戏 一般都是应用程序(但现在后缀名为.swf 的 Flash 影片类的游戏也比较流 行) 。 下面是一些常见的编程语言:
.NET K Basic ++ Clipper phi Forth IDL GO Modula og Python Tk R Ruby Scheme Smalltalk Tcl/ Nuva Perl PHP PL/I Prol Fortran Java FoxPro JavaScript F# LISP Fava Lua J# LO Objective-C COBOL dBase PASCAL Del Qbasic Visual Basic VBScript Brainfuck C 、C ActionScript APL 、A +和 J Ada 汇编语言 AW

第三章 编造机器人的灵魂?73

☆中学生智能科技探索☆

第四章 机器人快车程序实例

在本章的学习中,我们将接触几个机器人的实例程序。通过对实例程 序的观摩和学习,提高自己的编程能力。 一、利用灰度模块自动巡黑迹前进 让机器人寻找黑标并按黑色或白色轨迹前进是一个基本的常见机器人 任务。根据任务的不同,一般会在机器人的前面下方安装两个或多个灰度 测量模块。机器人运行过程中,将对这些灰度模块的即时值作为判断,并 采取适当的动作措施以完成指定的任务。 本例中,我们将让机器人沿着一条弯曲的黑色轨迹行驶。由于任务并 不复杂,我们只给机器人安装了两个灰度检测模块,如下右侧图片所示:

给机器人行走的黑色轨迹

在展示程序前,我们先来谈谈机器人巡黑标的工作原理:
第四章 机器人快车程序实例?74

◇机器人兴趣活动课程◇

启动机器人前,我们将机器人放在黑线的正上方,使两个灰度模块分 别处于黑线的左、右两侧。然后启动机器人,使机器人向前行走。如果机 器人向右走偏了,则机器人左侧的灰度模块的测量值必小于黑标值与白标 值的中间值,说明左侧灰度模块踏到黑线了。此时,机器人右侧的马达应 该多发力,右侧马达应降低马力,使机器人向左少量偏移修正机位。同理, 当检测到右侧灰度模块踏线时,机器人应向右偏移以修正机位。如果机器 人左右两个灰度模块都没有踏线,则控制机器人向正前方直行。

程序中使用到的全部变量及说明

图标的使用及程序代码图

全部程序如上页图片所示,图中 L、R 两个图标分别代表机器人左侧和 右侧两个灰度检测模块, 检测到的数值分别存放在 varL 和 varR 两个变量中。
第四章 机器人快车程序实例?75

☆中学生智能科技探索☆

程序中两个灰度的中间标准值 (ML 和 MR) 采用智能计算的办法生成。 将机器人在行驶过程中灰度模块读到的最大值和最小值分别保存到变量 中,再通过简单的求平均运算得到一个标准值,如果灰度模块当前读到的 值小于这个标准值,则我们认为该灰度模块正踏在黑线上,反之则认为它 未踏线。 特别说明:从行走线路图来看,右上角处的弯位角度较小,机器人有 可能会在此处脱离轨迹。可从两方面调试机器人,使其正确巡完全部黑迹。 一是降低机器人的前进速度,给机器人的反应留下更大的时间空间。 当然,机器人前进的速度往往是有要求的,就如赛跑一样,速度低了,拿 第一就无望了。 二是加大两个驱动马达的速度差,甚至是让低速度的那个马达干脆反 向转动,从而使机器人走偏后的纠正动作幅度大一些,反应更快一些。 本节程序使用了两个新的图标“ 图标“ ”和“ ” ,在这里简单介绍一下。 ”用于显示三位数字的变量数据,使用时需要输入两个参数,从

哪一个位置开始显示及显示什么内容。图标“ ”用于读取灰度模块的测 量数值,它的使用与此前介绍过的超声波模块类似。 二、让机器人按复杂的轨迹前进 在机器人竞赛中,机器人所巡的黑迹往往不是一条简单的直线或曲线, 而是一幅纵横交错的“地图” 。在这张地图中,一些路口须要直行,而另一 些路口则须要转弯。 例如右图所示的一张地图,机器人从 A 点出发,在第 一个路口 B 处选择直行,但在第二个路口 C 处则要左转弯 驶向 D 处,这正是本节程序编写的任务。 完成这个任务的办法主要有两个,一是时间法,二是 路口识别法。 时间法一般来说受到机器人的电力稳定性、机器人摆 放的位置及地图摩擦力差异、程序优劣、机器人构造等等诸多因素影响。 完成任务的保险性比较差,但程序相对简单,较适合于入门者采用。而路 口识别法则基本只与机器人本身的构造及其程序有关, 稳定性大大提高,建议高中生采用智能的路口识别法。 机器人我们还是采用上一节所构建的机器人。 下面我们先来看看时间法的程序编写过程: 我们可以将机器人的行走过程分为三个部分: 直行 A→C,C 点左转,直行 C→D。根据时间法的程序原理,我们先绘制出程
第四章 机器人快车程序实例?76

◇机器人兴趣活动课程◇

序的流程图: 在前进的过程中,机器人至少有两处使用到巡迹程序,因此这部分程 序可以独立出来作为子程序,以便于主程序反复调用。 程序如下面图片所示:

巡迹子程序流程图及其程序、传入参数变量

程序流程图及其程序、变量

上面是据时间法原理所编写的全部程序,其中循环图标中的语句
第四章 机器人快车程序实例?77

☆中学生智能科技探索☆

“while(mcount<xxx)”中的数值即为当前阶段机器人应行走的时间值,单 位是百分之一秒(即 10 毫秒) 。机器人每阶段所需的实际时间值以具体调 试为准。 本节程序又出现了两个新图标“ 图标“ ”和“ ” ,在这里简单介绍一下。 ”用于给系统时钟计数器设置新的值,本节程序用于将系统时钟

计数器清零。图标“ ”用于读取系统时钟计数器当前的数值,这个数值 是一个无符号长整型数据,定义变量来装载这个数值时,应注意变量的数 据类型是否为“unsigned long” ,数值的单位为 0.01 秒,亦即只要将读到的 数值除以 100 后,就能知道系统时钟上次清零以来机器人运行了几秒钟。
――――――――――――――――――――――――――――――――――――――――

上面我们采用的是时间法,本例我们还可以采用路口识别法来编写程 序,这样机器人看起来会更智能一些,而且程序无需根据不同的地图尺寸 及摆放位置去反复修改时间参数,程序适应性更强一些。下面我们就来看 看路口识别法的程序是如何编写的: 机器人在 A→D 的巡线过程中,同时观察当前是否经过了路口,如果经 过了路口则让路口计数变量自增 1, 以便记录当前灰度模块处于第几个路口 上。图中 C 点所示路口属于第二个路口,则路口计数变量的值为 2 时,让 程序调用左转弯程序,使机器人驶向 D 点。由于从 C 点到 D 点间没有参照 标志,因此这段轨迹使用上例中的时间法来完成。根据上述程序原理,我 们先绘制出程序的流程图:

主程序及其流程图

上述主程序中调用了两个子程序,一个是巡迹行走子程序,另一个是 转弯子程序。巡迹行走子程序我们仍然采用时间法中编写的那一个:
第四章 机器人快车程序实例?78

◇机器人兴趣活动课程◇

巡迹子程序流程图及其程序、传入参数变量

除了巡迹子程序,本例还引入了一个左右转弯子程序:

左转弯和右转弯子程序

上面的转弯子程序设置了三个传入参数变量:

第四章 机器人快车程序实例?79

☆中学生智能科技探索☆

另外,在子程序内部也定义了两个 unsigned char 类型的变量 varL 和 varR,分别用于存储子程序中左侧灰度模块和右侧灰度模块的测量值。 这个子程序只考虑了机器人两灰度模块刚越过路口或均踏在路口横线 上时,机器人左侧灰度模块位于竖向轨迹的左侧,机器人右侧灰度模块位 于竖向轨迹的右侧的情况。若要考虑更多的情况,则可能需要增加一些探 测灰度模块,且程序的复杂度将会大幅增加。 下面谈谈这个子程序的工作原理, 以左转 弯为例,如右图所示: 1. 机器人右侧灰度模块踏在横线上,机 器人向左前方偏移, 直到机器人右侧灰度进入 白色区域为止。如果机器人已越过了黑色横 线,则这一步因不符合条件会被自动忽略。 2. 然后,机器人右侧灰度模块位于白色区域时,机器人继续向左前方 偏移,直到机器人右侧灰度进入黑色竖线区域为止; 3. 接着,机器人仍 继续向左前方偏移,直 到机器人右侧灰度向左 离开了黑色竖线区域为 止; 4. 最后,机器人又 继续向左前方偏移,直 到机器人右侧灰度向左 进入了黑色横线区域为 止。此时,机器人已完 成转弯程序,可以交给 行走子程序去巡线前进 了。 5. 但 为 了 保 险 起 见,我们在转弯子程序 的未端又加入了一小段 修正程序——让机器人 向右前方适量偏移一点 点,以修正机身为机器 人左右两个灰度模块分 别位于巡迹线的左侧和右侧的情形。
第四章 机器人快车程序实例?80

◇机器人兴趣活动课程◇

根据原理,绘制转弯子程序流程图如右: 三、灭火搜救机器人程序(节选) 灭火搜救机器人比赛是一 个常规的机器人比赛项目,场 地大致如下图所示。模拟房间 的墙壁高 33cm,材质为木质。 墙壁为白色。竞赛场地地板为 黑色的光滑木制表面。房间所 有走廊和门框的宽度均不小于 46cm。门框上没有门,在门框 所在地面上用一条长 46cm ? 宽 1cm?高 1cm 的白色木条表 示房间入口和门,木条本身面 积属于房间内的区域。 机器人必须从边长为 30cm? 30cm 的白色正方形中 (位于图中标有“H”的位置) 开始启动。执行完任务后回到 该位置后停下来。机器人的启 动方向及回家路线由参赛选手自行设定。 这个比赛项目的比赛场地和比赛细则均可能有一些细微的调整,具体 以当年的活动规则为准。 本节我们就来讨论一下如何编写这个比 赛的相关程序。 我们采用的机器人类似下图。 机器人采取四轮驱动结构,底部前后两侧各 安装一个灰度探测模块,用于辅助检测是否 进入了房间内部或回到了起始点等。在机器 人腰部四周安装了 8 个红外测距模块,用于 确定机器人当前与四周墙壁的距离,从而确 定机器人的位置,例如判别是否到了拐角或 到了房间门口等。机器人顶部前后各安装了 一个复眼红外光探测模块,主要用于探测和 发现火焰,并较准确地校正机器人的方向, 使得灭火风扇正对着蜡烛火焰。为了更精确 地判断机器人的运动方向,在机器人顶部还配装了一个电子指南针角度探
第四章 机器人快车程序实例?81

☆中学生智能科技探索☆

测模块。 下面来说说程序的处理。 首先是主程序及其工作原理,由于比赛要求声控启动,那么在程序的 一开始,我们接入一个条件循环,在循环内部使用音量检测模块对环境音 量进行反复检测。如果环境音量超过指定的阀值(20) ,则将 volFlag 标志 变量的值设置为 1,使条件“volFlag==0”的循环条件不能成立,从而跳出 该循环,从而使程序继续往下执行诸如驱动机器人前进之类的程序。 当机器人接收到启动声音指令后,则先读取机器人的指南针的角度数 据值,并将值存储到变量 nowAng 中,利用条件循环反复读取并比较机器 人当前的角度值,并驱动马达校正机器人的机身到预设方向(360°) 。 接下来开始按 1、2、3、4 的顺序逐个搜索房间,判断房间里的红外光 强度是否超过变量 FoundFire 的预设值,超过该值则判定该房间有火,并将 有火的房间号记录到变量 fireRoom 中,然后继续搜索剩下的房间。 搜索完所有的房间后,根据 fireRoom 变量中记录的数值执行指定房间 的灭火程序,灭火救人后机器人将返回起始区。 但如果 fireRoom 的值为 0,则说明机器人此前的搜索没发现火苗。那 么就驱动机器人返回超始出发点, 并且降低 FoundFire 的值, 然后重新搜索。 如果 fireRoom 的值不为零, 则说明机器人已搜到火并执行了灭火动作。 那么就给机器人的驱动机构传输停机的指令,让已灭火并回到起始区的机 器人停下来。

搜救灭火机器人主程序

接下来我们谈谈搜索房间是否有火的子程序及其工作原理。 我们给这个程序命名为“findfire” 。本程序依据安装在机器人腰部的那 一圈红外测距模块所测量机器人与四周墙壁的距离数据,定位和判断机器 人的当前位置,从而指导机器人采取怎样的运动方向和速度,进而使机器
第四章 机器人快车程序实例?82

◇机器人兴趣活动课程◇

人到达不同的房间里。当判定机器人进入了某房间后,则调用安装在机器 人前后部的两个复眼模块,测量机器人所处房间里的红外线值,从而判定 该房间里是否有火。倘若房间内有火,则记录下该房间序号。 首先, 程序初始化用于记录有火房间序号的变量, 将变量的值设置为 0。 然后驱动机器人向前行驶,并检测左前方的那个红外测距模块 Ia 的数值。 如果 Ia 的测量数值超过 50,那么说明机器人机器人前进方向的左侧仍有墙 壁,继续驱动机器人向前行驶,直至 Ia 的检测值小于 50 为止。 如果机器人越过了第一面墙,那么机器人已到达 1 号房间门前的右侧, 机器人可以以小弧形的方式走一小段时间,就能使自己的头部正对着 1 号 房间的大门中央。行走的过程中可以反复检测角度测量模块,看看机器人 是否已调头到正确的角度,是的话就结束弧形行走方式。 当机器人调好头后,驱动机器人向正前方行驶,并反复检测安装在机 器人前方底部的灰度检测模块,看看机器人是否已迈过门槛上的白线。如 果机器人检测到了设置在房间门槛上的白线,说明机器人已进入并搜索过 房间 1,可以前往其它房间进入搜索了。 在机器人检测房间 1 门槛上的白线的过程中,机器人同时反复检测安 装在机器人前方的红外复眼检测模块。复眼模块上有七个红外线探测管, 分散安装在一条半圆弧上。在机器人进入房间 1 时,房间 1 如果有火焰, 火焰应位于机器人的右前方。那么机器人前方复眼模块的七个红外探测管 中,探测到的最强红外光值的管应位于中右部,管的序号应至少大于 2。那 么机器人在检测复眼模块时,如果最大值超过预设火焰阈值,且最大值管 序号大于 2,则说明房间 1 内有火,此时程序将记录有火房间序号的变量的 值设置为 1。 当检测完房间 1 后,因为房间 2 离房间 1 最近,所以我们接着去检测 房间 2。为免犯规,在退出房间 1 前往房间 2 前,首先让机器人往前行驶一 小段时间,以确保机器人整个机身进入了房间 1。然后让机器人向后退出房 间 1,后退的过程中检测机器人左侧中部的红外测距模块,当该模块探测不 到墙壁,则机器人大部分已退出房间 1 了,可以执行前往并进入房间 2 的 程序段了。 由于篇幅所限,且其它房间的搜索程序其原理亦与搜索房间 1 类同, 因此此处不再一一展开讨论。

第四章 机器人快车程序实例?83

☆中学生智能科技探索☆

搜索火源子程序

我们预定给机器人搜索房间的顺序是 1、2、3、4 逐个房间搜索。如果 搜索完一遍房间后,确认火源位于房间 4。那么,最简单的灭火并返回子程 序就是房间 4 的。因为要扑灭其它房间的火,均须先驱动机器人从房间 4 中退出来,并返回那个有火的房间。而房间 4 则不需要这一过程。

下面我们就来谈谈房间 4 的灭火返回子程序。 因为执行完搜索火源子程序后,机器人当前正处于房间 4 内,因此直 接让机器人执行灭火子程序。 灭完火后,让机器人原地旋转一下机身,通过读取指南针模块的数据, 较准确地调整机器人的方向,使机器人的营救仓对准伤员(胶卷盒)的位 置。当机器人对准伤员后,让机器人后退冲向伤员,利用恰当的冲击力将 伤员装入机器人底部的营救仓内。在机器人后冲的过程中,检测安装在机 器人身后的红外测距模块,当检测到机器人已贴着墙壁了,就退出这个检 测去执行出房部分的程序。

第四章 机器人快车程序实例?84

◇机器人兴趣活动课程◇

房间 4 的灭火返回子程序

当机器人将伤员救起后,让机器人沿一半径较小的圆弧向右前方运动, 同时检测指南针模块的数值。当机器人运动到指定的角度值时,机器人完 成调头并正对着房门。 此时让机器人向前滑行一小段时间,使它驶出房间。紧接着让机器人 继续向右前方做圆弧式运动,使机器人转过 90 度的弯。然后让机器人向前 行驶,同时检测机器人右前方的红外测距模块。当检测到机器人右侧不再 有墙壁遮挡时,再在指南针数据的辅助下让机器人向右转 90 度,使机器人 的运动方向正对着出发区的白色区域。 最后驱动机器人扶着左侧墙壁向前行走,同时检测机器人底部的灰度 模块,当机器人检测到已返回白色的出发区后,让机器人停下来。 其它房间的灭火返回子程序因灭火前后的运动路径都不相同,所以实 际程序将相差较大。但程序的原理是类同的,此处不再一一讲述。 接下来我们再谈一谈房间 4 灭火子程序中第二个图标所调用的灭火子 程序:
第四章 机器人快车程序实例?85

☆中学生智能科技探索☆

程序主要含有三个部分: 一是先让机器人正对着火源;二是让机器人奔向火源;三是启动风扇 灭火。 首先通过读取红外复眼模块的最大红外值通道数值,以确定机器人是 否正对着火源。如果正对着火源,那么最大通道值应该是 4,即位于复眼正 中间的那个探头探到了最大红外光。如果通道比 4 小,那么说明机器人偏 右了,应驱动机器人左转校正机身,反之则右转。直至最大通道值为 4(中 间通道) ,则退出机身校正程序段。 接着让机器人向前行走,奔向火源。为了防止机器人跑偏,我们通过 检测复眼模块的最大红外光通道值来确定机器人奔跑的方向。如果通道值 为 4,让机器人左右两轮同速奔跑;如果通道值小于 4,让机器人的右轮跑 快些;否则让机器人的左轮跑快些。 同时检测机器人底部的灰度模块,如果读到地板上火源周围的白色色 带,说明机器人已到达火源附近。此时让机器人停下来,然后启动机器人 灭火风扇,让灭火风扇狂吹一段时间后,让它停下来,整个灭火子程序结 束。

灭火子程序

最后谈一谈机器人在灭火场地中的行走方式。 程序的原理与巡黑标线是类同的,不同之处是用于行走参考的参数检 测硬件模块不同而已。 除奔向火源时采取复眼引导行走外,其它地方一般采取扶墙行走的方 式。即在机器人前进或后退的过程中,检测机器人左侧或右侧的红外测距 模块的数值,从而判断机器人与墙壁的距离。如果判定机器人离墙太近了, 则让机器人最靠近墙的那边轮子加速(或让远离墙壁的轮子减速) 。如果离 墙壁远了则相反操作,使之向墙壁靠近。如果机器人与墙壁的距离在一个 适当的范围内,则让机器人左右两轮同速前进。 在灭火场地中,机器人扶墙行走一般有四种情形:正向扶左侧墙前进, 正向扶右侧墙前进,反向扶左侧墙后退,反向扶右侧墙后退。为了使程序
第四章 机器人快车程序实例?86

◇机器人兴趣活动课程◇

简化,一般来说我们将行走程序独立出来制成子程序,以方便其它程序调 用它。 机器人灭火搜救实例的全部程序讲述至此结束。

小结: 本章以实例的形式,讲述了如何针对任务进行机器人的组装及其驱动 程序的编写等知识。从简至繁,循序渐进,图文并茂地讲述了三个机器人 任务、四个机器人程序的编写过程。尤其是第三节中的灭火搜救程序,针 对真实的竞赛任务展开程序的编写。虽然限于篇幅不能一一将程序展现出 来,但程序的动作原理已讲述得相当透切。读者完全可以根据程序的动作 原理和现有的程序,将全部程序一一还原和实现。 练习和活动: 1. 绘制一张 4 纵线和 6 横线的黑迹网格地图(可用电工胶布在地板上 贴出来) ,组装一台含有 2 个以上灰度探测模块的机器人,编写出对应的驱 动程序,让机器人以“弓”字型通过地图。分别尝试低速、高速、地图中 部通过和贴地图边沿通过四种方式,以检验机器人的可靠性。 2. 针对第六章的第一节或第二节中的竞赛任务,展开机器人的研制和 组装,然后编写相应的驱动程序来让机器人完成竞赛任务。 阅览室 无人月球车: 从某种意义上说,月球车属于机器人技术。月球车无论是轮式的还是 腿式的,都应具有前进、后退、转弯、爬坡、取物、采样和翻转(跌倒后 能翻身)等基本功能,甚至具有初级人工智能,例如:识别、爬越或绕过 障碍物等。但月球车不同于地面使用的机器人,仅有这些功能是不够的。 它是一种在太空特殊环境下执行探测任务的机器人—— 太空机器人,既有 机器人的属性,更具有航天器的特点。 “质量轻,体积小,耗功低”从来就是航天器设计的金科玉律,在最 近的航天优势产品的评价指标中被称为“常规三项” ;追求“轻、小、低”
第四章 机器人快车程序实例?87

☆中学生智能科技探索☆

是航天器研发的永恒主题。航程越远,要求越高,对月球探测器的质量、 体积和功耗要求就更轻、更小和更低。根据中国运载火箭可望达到的能力, 1 台月球车需要由比它重 300 倍的运载火箭发射。 月球车是一个可移动的平台,它要携带若干有效载荷,如探测仪器或 挖掘采样器等。这些设备和装置必须小型化、轻型化。月球车通常作为月 球轨道器的有效载荷,轨道器又作为运载火箭的有效载荷安装在火箭顶端 直径狭小的整流罩里。月球车应制成可折叠式,以尽可能缩小发射体积。 月球车的电源来之不易,用太阳电池发电,其面积和质量与功耗大小成正 比;若用一次性电池,质量与使用时间成正比,为了减轻质量,也必须降 低功耗。因此,月球车的设计必须充分采用微电子器件、微型机械和轻型 材料,在开发应用微机电系统(mems)月球车上应有所突破。 月球车必须适应航天特殊环境,包括力学环境和空间环境。例如在发 射上升过程中运载火箭产生的冲击、振动、过载和噪声;在月面降落过程 中制动火箭产生的冲击、过载;月球表面上的月尘;月球上的巨大昼夜温 差;复杂难料的地貎变化等等。 在“玉兔”之前,全世界只有前苏联成功发射、运行过两辆无人月球探 测车。其中月球车 1 号约重 1.8 吨于 1970 年 11 月 17 日在月面雨海地区着 陆,工作了 10 个多月,在月面上行驶了 10.5 公 里,考察了 8 万平方米的月面;月球车 2 号却只 工作了 4 个月,由于中途出现故障——它在地面 操控下驶入一个撞击坑考察岩石时,将坑壁上的 月壤撞落到太阳电池板和散热器表面,导致供电 骤减、车内过热, 数日后与地面彻底失去了联系。 玉兔号是中国首辆月球车。 嫦娥三号月球车设 计质量 140 千克,以太阳能为能源,能够耐受月球表面真空、强辐射、摄 氏零下 180 度到零上 150 度极限温度等极端环境。月球车具备 20 度爬坡、 20 厘米越障能力。2013 年 12 月 2 日 1 时 30 分,中国在西昌卫星发射中心 成功将由着陆器和“玉兔号”月球车组成的 嫦娥三号探测器送入轨道。2013 年 12 月 15 日 4 时 35 分, 嫦娥三号着陆器与巡视器分离, “玉兔”顺利驶抵月球表面。2014 年 1 月 25 日凌晨,嫦娥三号月球车进入第二次月夜休 眠。但在休眠前,受复杂月面环境的影响, 月球车的机构控制出现异常。从而停留在距 着陆器 20 米处无法动弹。

第四章 机器人快车程序实例?88

◇机器人兴趣活动课程◇

蓝牙飞行机器人亮相 2004-8-26 日,Seiko Epson 公司宣布已经成功 研发出世界上最小最轻的微型飞行机器人, 比起其 前代 FR 来新的机器人更轻盈也更高级。这种新型 机器机型号为 FR-II,它具有独立的飞行能力并且 可采用蓝牙无线进行操控。 FR-II 将在 8 月 27 日到 30 日举行的东京国际论坛上首次亮相。 爱普生公司多年以来一直致力于研发微型机 器人的应用技术。FR-II 型机器人不但翻开的公司 技术新的一页,而且打破了 1993 年记录的最小机 器人 Monsieur 保持的吉尼斯世界纪录。FR-II 的前 代产品也是非常轻的微型产品,它由超小型引擎 带动采用逆时针旋转螺旋浆装置,加上世界上最 小的平衡装置来控制飞行。 然而,FR 也有诸多限制,如采用外置电池飞 行受到连接线长度限制,采用无线电控制所以必 须在视野内进行控制等。因此,爱普生推出了新 一代 FR-II。 新的 FR-II 不但在引擎及能源技术上有重大突破性改进,而且加入了 一个图像传感装置, 能够通过蓝牙 无线连接捕捉并传输图像到地面 监视器上,并且还带有两个 LED 灯能够控制信号。而且,FR-II 的 飞行也从原来的二维空间控制变 成三维空间控制, 采用了全新蓝牙 信号操控及独立飞行, 使它更加具 有实用价值。

第四章 机器人快车程序实例?89

☆中学生智能科技探索☆

第五章 虚拟机器人

伴随着机器人教育活动的深入开展,接触机器人的师生越来越多。但 实体机器人是一套较为昂贵的设备,对不少家庭来说是一个不小的负担, 从而使一些爱好者对机器人活动望而却步。另一方面,在学校进行机器人 教学时,用许多实体机器人来作为教学和培训的试验设备对学校来说也是 个不小的负担。并且,在机器人程序编写调试过程中,需要反复将新改写 的程序下载到机器人中进行测试,不但过程麻烦,且效率较低,还容易加 速损耗设备。 因此我们迫切需要一种可以提供方便和灵活的试验工具和手段,且经 济实用的电脑机器人仿真软件系统。 本章所述的虚拟机器人是指那些能够模拟仿真中小学教育教学中的实 体机器人设备的电脑软件。这些软件在实体机器人编程平台的基础上,增 加了模拟机器人运行、完成工作任务、完成竞赛任务等功能,使机器人程 序的执行效果可以直接在电脑里虚拟演示,使得人们可以不使用实体机器 人就能在一台电脑里完成机器人的搭建、编程和效果展示等全过程。虚拟 机器人软件一般具有三大功能:组装虚拟机器人,编写机器人程序,建立 虚拟仿真场景,演示机器人虚拟运行情况。 近年我国常见的教育虚拟机器人有中鸣公司的 AI-RCJ 虚拟机器人足球 软件、纳英特公司的 3D 仿真机器人软件、南方数码公司的易时代 3D 仿真 虚拟机器人软件(rocky 洛奇机器人)等。其中 AI-RCJ 软件模拟了一个足 球比赛场地,用不同色彩的圆形模拟运动员,运动员通过执行机器人爱好 者所编写的驱动程序来完成找球和碰球的动作。AI-RCJ 软件在视觉感受上 不是最好的虚拟机器人软件,但它为学生的编程能力培养提供了很好的辅 助环境。纳英特和南方数码两公司生产的 3D 仿真机器人软件则采用了 3D 虚拟现实技术,能实现机器人及场景的全 3D 模拟,可以模拟出灭火、走迷 宫、巡迹等机器人比赛环境,除能给我们一个学习提高编程能力的环境外, 也能给我们带来视觉上的感受。 特别是南方数码公司的易时代 3D 仿真虚拟机器人软件(rocky 洛奇机 器人,又名“ETR 虚拟机器人” ) ,除了视觉上的仿真外,该软件还加入了 物理上的仿真。例如,地形起伏、地表纹理、地面摩擦系数,甚至具有风 速、光线等影响机器人运行结果的变化因素。最重要的是该软件是免费软 件,这使得普通的机器人爱好者的入门门槛得以大幅降低,可谓物美价廉 之极品。
第五章 虚拟机器人?90

◇机器人兴趣活动课程◇

下面我们来简单体验一下这个物美价廉的 rocky。 一、机器人的下载和安装 通过在互联网的百度网站,以“ETR 虚拟机器人” 、 “易时代 3D 虚拟机 器人” 、 “rocky 洛奇机器人”等关键词查询,很快就能找到该软件的安装文 件。或者爱好者们也可以通过 QQ 群 83570117 下载安装文件。安装文件下 载下来后,直接双击该 EXE 安装包就可以将软件安装到电脑当中。这些都 与一般的软件安装无异。 二、机器的组装 在开始编写机器人程序前, 我们先根据比赛任务或活动任 务的要求,组装一台能帮助我 们正确完成该任务的机器人。 首先通过电脑的开始菜单 (如右图所示) ,打开 ETR 虚 拟机器人的机器人拼装子软 件。 机器人的拼装界面如下图 所示。在该界面中, 可以通过按下鼠标的右 键,同时手动鼠标进行视角的调整,以看到机器人中的不同部位。 可以通过拔动鼠标中间的滚轮,对画面中的校车机器人进行缩放显示, 以观察机器人的细节情况。 可以通过点击鼠标左键的方法,从视图左侧的零件列表中选择机器人 零件。选择了零件后,可以通过鼠标左键点击界面上方的“XYZ”三个按 钮 来

第五章 虚拟机器人?91

☆中学生智能科技探索☆

调整零件的朝向。零件的朝向调整好后,通过移动鼠标来移动该零件到视 图正中的校车机器人对应的可安装位置上。当零件被移动到可安装位置附 近时,零件将被吸入并被定位,此时再次点击鼠标左键即可将该零件安装 到校车机器人身上。 零件安装好以后,千万不能忘记给该零件接线——设置端口号。如同 实体机器人一样,零件安装固定在校车机器人身上之后,需要将零件上的 信号线与机器人身上的其中一个通讯端口连接起来,这样机器人的相关指 令才能传达给该零件。通过上述界面右侧的“属性设置”面板,可以给零 件指定一个通讯端口号。值得注意的是:所有零件的端口号必须不能相同。 如上图所示,我们新建一个校车机器人,并给机器人安装了两个前轮 (用于控制机器人转向) ,两个后轮(用于驱动机器人前进和后退)和两个 光电巡线传感器 (类同于实体机器人的灰度检测模块) 。 安装零件时须注意, 轮子中间的螺丝应朝外。如果不朝外,则应点击“XYZ”等按钮来调整轮 子的朝向。两个光电传感器的探头则应朝下,以便探测路面上的白线。 各个零件的端口号设置如下: 左前轮:系统自动命名为 F_Wheel44,端口号自设为 2; 右前轮:系统自动命名为 F_Wheel42,端口号自设为 1; 左后轮:系统自动命名为 B_Wheel45,端口号自设为 4; 右后轮:系统自动命名为 B_Wheel43,端口号自设为 3; 左光电传感器:系统自动命名为 sensor_Light36,端口号自设为 5; 右光电传感器:系统自动命名为 sensor_Light40,端口号自设为 6; 机器人拼装完毕,并设置好相关端口以后,用鼠标点击“保存”按钮 将当前拼装好的机器人保存到电脑磁盘中,保存的位置可自由选择。

第五章 虚拟机器人?92

◇机器人兴趣活动课程◇

三、编写机器人控制程序 机器人拼装完成后,通过开始菜单启动“ETR 虚拟机器人”程序(如 下左图) 。

机器人程序打开后,按上面右图的流程,用鼠标左键依次点击以新建 一个机器人程序。 新建的程序只有一个 “strat” 图标, 该图标的下面有一个红色的小圆点, 我们可以把传感器、动作、流程、数据、子程序等其它程序图标接到这个 小圆点上,使它们连接起来,构成完整的程序。我们可以先用鼠标左键从 图标库中点选一个程序图标,然后移动鼠标来移动该选中的程序图标,使 该程序图标上方的绿色小圆点与程序中原有的你想要连接的一个小圆点重 合起来,此时点击一下鼠标左键就可以将新的图标接入到程序中了。 图标接入程序之后,应立即设置该图标的相关属性,例如传感器所使 用的端口号(见上一节机器人组装中设置的端口号) 。 下图是一个简单的机器人巡线程序, 全程序共 10 个图标 (为便于叙述, 均在图标右侧标记了序号) ,各图标的属性设置分别是:

第五章 虚拟机器人?93

☆中学生智能科技探索☆

1:开始图标,无属性值; 2:循环图标,循环类型:无限循环; 3:移动图标,端口 1:3,端口 2:4,功率:50,持续类型:无限制; 4:光电传感器图标, 端口: 5 (传感器安装于机器人左前角, 探头向下) ; 5:光电传感器图标, 端口: 6 (传感器安装于机器人右前角, 探头向下) ; 6:条件判断图标,变量:iGray_1(左光电传感器) ,比较类型:==,比 较值:1(1 表示探头探测到白线,0 表示探头未探测到白线) ; 7:转向图标,端口 1:1,端口 2:2,角度:15(左转 15 度) ; 8:条件判断图标, 变量: iGray_2(右光电传感器) , 比较类型: ==, 比较值: 1; 9: 转向图标,端口 1:1,端口 2:2,角度:-15(右转 15 度) ; 10: 转向图标,端口 1:1,端口 2:2,角度:0(机器人直行) 。 程序的工作原理是:使用一个无限循环反复执行机器人驱动、传感器
第五章 虚拟机器人?94

◇机器人兴趣活动课程◇

检测,及根据传感器的数据纠正机器人前进方向等程序。其中,当左侧光 电传感器检测到白线时,驱动机器人向左偏转,以修正机器人运动方向。 同理,当右侧光电传感器检测到白线时,机器人应向右偏转。如果两个传 感器都没检测到白线,则让机器人保持直行。 程序编写完毕后,点击软件上方的“编译”按钮将图形程序编译成机 器人可识别执行的机器程序,以便进行机器人仿真演示。 与中鸣的“机器人快车”软件不同,本软件连接图标的方式不再是拉 线,而是直接焊接,程序的执行流程线条则是由系统自动添加生成。从流 程图来看,本软件的图形编程所构造的流程图更加直观一些。 四、仿真演示机器人 当程序编写好之 后,我们可以进入仿 真测试环节。 首先点击软件顶 部的“仿真”标签, 进入到虚拟机器人的 仿真界面,如右图: 在右侧软件界面 中,点击“打开”按 钮可加载一个仿真场 景地图,默认情况下 在程序的安装文件夹 里有一个名为 Maps 的 子文件夹,在该子文件夹中有一份“训练地图” ,我们可以打开它来练练身 手。 地图打开完毕后, 通过使用鼠标左键在地图的上方或下方按压,可以对地图进行缩小或 放大显示。 通过使用鼠标左键在地图的左侧或右侧按压,可以对地图进行左右旋 转以显示不同区域。 通过使用鼠标右键在地图的上方或下方按压,可以对地图进行抬高或 降低显示。 通过使用鼠标右键在地图的左侧或右侧按压,可以对地图进行向右或 向左平移显示。 通过在地图的上方或下方同时按压鼠标左键和右键,可以调整俯瞰地 图的角度。
第五章 虚拟机器人?95

☆中学生智能科技探索☆

通过上述的五种鼠标操作,可以找到地图上的机器人出发点——一个 三角形红蓝色渐变图标。 点击上图中的“机器人”按钮(3 号圈所示)给这个虚拟场景地图中加 入此前组装好的机器人。 再点击上图中的 “程序” 按钮 (4 号圈


更多相关文章:
基于信息技术的学习智能评价系统探索
基于信息技术的学习智能评价系统探索_教学案例/设计_教学研究_教育专区。基于信息...特别是一个科学、真实的小学语文学习评价系统必须强 调评价与学习、课堂教学的...
培养学生思维品质的探索与实践
培养学生思维品质的探索与实践》课题开题报告上传: ...深刻地揭示了结合学科教学培养思维 能力是发展智能的...培养的有效途径,构建高中教学中学生科学思维 品质...
培养创新智能从课堂入手
培养创新智能从课堂入手_机械/仪表_工程科技_专业资料。培养创新智能从课堂入手....探索的情境中获取基础知识和思维方法, 培养学生的创新意识, 发展创新思维, 培养...
怎样指导学生选择和确定研究专题
“缓解交通拥堵的智能出租车的调度与路 线选择方法...还有什么科学探索研究的思想和方法可供借鉴,以作为发现...(重复研究)--- 对中学生校园习惯用语 的调查 高速...
高职院校开展智能机器人教学的探索
关键词:高职院校;智能机器人;教学;探索 智能机器人技术水平代表了高科技的发展前沿,不少国家不仅高校开设专门智能机器人课程,甚至将 智能机器人列入中小学信息技术课...
初一信息技术期末复习题
(对) 2、信息是普遍存在的,但在科学探索领域中的...人工智能 D.虚拟现实 26、计算机又被称为是数字...(C) A.48 B.50 C.53 D.55 32、在中学生日常...
六年级科学下册《探索宇宙》教学设计
探索宇宙》【教学目标】 一、科学知识目标 1、了解人类探索宇宙的历史。 2、...质疑解析 延伸目标 智能习练 达成目标 学生展开想象。 学生汇报。 精炼回顾 ...
信息技术教案六年级下册新疆版
情感目标:培养学生对机器人的兴趣,培养学生关心科技、热 爱科学、勇于探索的精神...[案例描述] 片断 1 观看视频引入教学内容 师:21 世纪被信息技术专家誉为智能...
小学生爱做的100个科学小实验
“顶天柱” ¤ 智能答题器 ¤ 蜡烛也坐跷跷板 ¤ 难舍难分 ¤ 摔鸡 蛋的...本书介绍的 100 个科学小实验可以带你去探索大自然的奥秘。植物是怎样生长的,...
智能手机对中学生的影响
智能手机对中学生的影响一、研究的背景随着科技的进步, 手机在我们生活中普遍用...3.通过开展本次研究,学以致用,探索一条科学的学习方法,进而有效地 提高自身...
更多相关标签:
中学生职业探索问卷    中学生智能手机普及率    中学生使用智能手机    中学生智能手表    智能电视探索传    智能电视探索    智能电视 探索频道    智能电视探索传媒    

All rights reserved Powered by 甜梦文库 9512.net

copyright ©right 2010-2021。
甜梦文库内容来自网络,如有侵犯请联系客服。zhit325@126.com|网站地图