智能机器人小车
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
智能机器人小车
创意设计制作指导手册
江苏省天一中学人工智能社团
指导老师:邓一波俞金炎
二零一一年三月
目录
一,机器人概述
二,机器人小车硬件结构解析
三,机器人小车编程语言及环境
四,智能机器人小车安装,调试
五,智能机器人小活动方案及创意案例
第一章机器人概述
1,机器人技术的发展
机器人的由来
机器人是20世纪才出现的新名词。
1920年,捷克剧作家Capek在他的《罗萨姆万能机器人公司()》剧本中,第一次提出了机器人(robot)这个词。
robot是从古代斯拉夫语robota一词演变而来的。
robota本是强制劳动的意思,Capek在二十世纪工业革命后技术和生产快速发展的背景下,根据它造出具有"奴隶机器"含义的新词robot。
它反映着人类希望制造出象人一样会思考,有劳动的机器代替自己工作的愿望。
但在当时,机器人一词也仅仅具有科幻意义,并不具备现实意义,真正使机器人成为现实是 20世纪工业机器人出现以后。
人类发展到20世纪,随着社会分工的细化,从事简单重复工作的人们强烈渴望有某种能代替自己工作的机器出现,在这方面的研究,美国的英格伯格和德沃尔走在了前面。
1954年,电子学家德沃尔获得了一项"可编程序机械手"的专利,这是一种象人手臂的机械手,它按程序进行工作,这种程序可以根据不同工作需要来编制,因此,具有通用性和灵活性,由此,热衷于机器人研究的物理学家英格伯格想到,如果能制造出这种机器,可象人一样学习别人干活的动作,之后便能自动重复进行操作。
于是,在1958年,英格伯格和德沃尔联手制造出第一台真正实用的工业机器人,并很快得到了应用。
随后,他们成立了世界上第一家机器人制造工厂——尤尼梅逊公司,并将第一批机器人称为"尤尼梅物",意
思是"万能自动",英格伯格因此被称为"工业机器人之父",1984年,他还预言:"我要使机器人擦地板,做饭,洗刷我的汽车和检查安全"。
机器人发展的三个发展阶段
随着人们对机器的研究,机器人也在进步,按其发展过程机器人可分为三代:第一代是示教再现型机器人:"尤尼梅特"和"沃尔萨特兰"这两种最早的工业机器人是示教再现型机器人的典型代表。
它由人操纵机械手做一遍应当完成的动作或通过控制器发出指令让机械手臂动作,在动作过程中机器人会自动将这一过程存入记忆装置。
当机器人工作时,能再现人教给它的动作,并能自动重复的执行。
这类机器人不具有外界信息的反馈能力,很难适应变化的环境。
第二代是有感觉的机器人:它们对外界环境有一定感知能力,并具有听觉、视觉、触觉等功能。
机器人工作时,根据感觉器官(传感器)获得的信息,灵活调整自己的工作状态,保证在适应环境的情况下完成工作。
如:有触觉的机械手可轻松自如地抓取鸡蛋,具有嗅觉的机器人能分辨出不同饮料和酒类。
第三代是具有智能的机器人:智能机器人是靠人工智能技术决策行动的机器人,它们根据感觉到的信息,进行独立思维、识别、推理,并作出判断和决策,不用人的参与就可以完成一些复杂的工作。
日本研制的能演奏数首曲目quot;瓦伯特"2号机器人,已达到5岁儿童的智能水平。
目前,智能机器人已在许多方面具有人类的特点,随着机器人技术不断发展与完善,机器人的智能水平将越来越接近人类。
机器人的定义
机器人(Robot)是自动执行工作的机器装置。
它既可以接受人类指挥,又可以运行预先编排的程序,也可以根据以人工智能技术制定的原则纲领行动。
它的任务是协助或取代人类工作的工作,例如生产业、建筑业,或是危险的工作。
机器人学的进展
机器人的偿还期理论促进对机器人产业的投资。
日本后来居上,成为“机器人王国”机器人产业在全世界迅速发展应用范围遍及工业、科技和国防各个领域。
形成新的学科-----机器人学机器人向智能化方向发展
2,机器人结构与分类
机器人系统的结构
机器人一般由执行机构、驱动装置、检测装置和控制系统和复杂机械等组成。
执行机构即机器人本体,其臂部一般采用空间开链连杆机构,其中的运动副(转动副或移动副)常称为关节,关节个数通常即为机器人的自由度数。
根据关节配置型式和运动坐标形式的不同,机器人执行机构可分为直角坐标式、圆柱坐标式、极坐标式和关节坐标式等类型。
出于拟人化的考虑,常将机器人本体的有关部位分别称为基座、腰部、臂部、腕部、手部(夹持器或末端执行器)和行走部(对于移动机器人)等。
驱动装置是驱使执行机构运动的机构,按照控制系统发出的指令信号,借助于动力元件使机器人进行动作。
它输入的是电信号,输出的是线、角位移量。
机器人使用的驱动装置主要是电力驱动装置,如步进电机、伺服电机等,此外也有采用液压、气动等驱动装置。
检测装置的作用是实时检测机器人的运动及工作情况,根据需要反馈给控制系统,与设定信息进行比较后,对执行机构进行调整,以保证机器人的动作符合预定的要求。
作为检测装置的传感器大致可以分为两类:一类是内部信息传感器,用于检测机器人各部分的内部状况,如各关节的位置、速度、加速度等,并将所测得的信息作为反馈信号送至控制器,形成闭环控制。
另一类是外部信息传感器,用于获取有关机器人的作业对
象及外界环境等方面的信息,以使机器人的动作能适应外界情况的变化,使之达到更高层次的自动化,甚至使机器人具有某种“感觉”,向智能化发展,例如视觉、声觉等外部传感器给出工作对象、工作环境的有关信息,利用这些信息构成一个大的反馈回路,从而将大大提高机器人的工作精度。
控制系统有两种方式。
一种是集中式控制,即机器人的全部控制由一台微型计算机完成。
另一种是分散(级)式控制,即采用多台微机来分担机器人的控制,如当采用上、下两级微机共同完成机器人的控制时,主机常用于负责系统的管理、通讯、运动学和动力学计算,并向下级微机发送指令信息;作为下级从机,各关节分别对应一个CPU,进行插补运算和伺服控制处理,实现给定的运动,并向主机反馈信息。
根据作业任务要求的不同,机器人的控制方式又可分为点位控制、连续轨迹控制和力(力矩)控制。
机器人的分类
诞生于科幻小说之中一样,人们对机器人充满了幻想。
也许正是由于机器人定义的模糊,才给了人们充分的想象和创造空间。
家务型机器人:能帮助人们打理生活,做简单的家务活。
操作型机器人:能自动控制,可重复编程,多功能,有几个自由度,可固定或运动,用于相关自动化系统中。
程控型机器人:按预先要求的顺序及条件,依次控制机器人的机械动作。
示教再现型机器人:通过引导或其它方式,先教会机器人动作,输入工作程序,机器人则自动重复进行作业。
数控型机器人:不必使机器人动作,通过数值、语言等对机器人进行示教,机器人根据示教后的信息进行作业。
感觉控制型机器人:利用传感器获取的信息控制机器人的动作。
适应控制型机器人:能适应环境的变化,控制其自身的行动。
学习控制型机器人:能“体会”工作的经验,具有一定的学习功能,并将所“学”的经验用于工作中。
智能机器人:以人工智能决定其行动的机器人。
我国的机器人专家从应用环境出发,将机器人分为两大类,即工业机器人和特种机器人。
所谓工业机器人就是面向工业领域的多关节机械手或多自由度机器人。
而特种机器人则是除工业机器人之外的、用于非制造业并服务于人类的各种先进机器人,包括:服务机器人、水下机器人、娱乐机器人、军用机器人、农业机器人、机器人化机器等。
在特种机器人中,有些分支发展很快,有独立成体系的趋势,如服务机器人、水下机器人、军用机器人、微操作机器人等。
目前,国际上的机器人学者,从应用环境出发将机器人也分为两类:制造环境下的工业机器人和非制造环境下的服务与仿人型机器人,这和我国的分类是一致的。
空中机器人又叫无人机器,近年来在军用机器人家族中,无人机是科研活动最活跃、技术进步最大、研究及采购经费投入最多、实战经验最丰富的领域。
80多年来,世界无人机的发展基本上是以美国为主线向前推进的,无论从技术水平还是无人机的种类和数量来看,美国均居世界之首位。
3,机器人学与人工智能的关系
机器人学与人工智能有十分密切的关系。
人工智能的近期目标在于研究智能计算机及其系统,以模仿和执行人类的某些智力功能,如判断、推理、理解、识别、规划、学习和其他问题求解。
这一研究抓住了创造力的首要问题----人类智能。
人工智能使目前主要用于数值计算的计算机变得更加富有生气,并用它来表达最复杂的生物世界----人脑智能。
人们
的努力远非获得完全成功,但是已经在许多研究领域取得进展。
例如,在规划、博弈、问题求解、语言与语音理解、视觉图像识别、定理证明、知识表示与描述等方面,已取得不少研究成果。
1996年2月10~17日,为了纪念世界上第一台电子计算机诞生50周年,IBM的“深蓝”同国际象棋世界冠军卡斯帕罗夫在美国费城举行六局大赛。
结果卡斯帕罗夫以4:2获胜。
1997年5月3~11日,“深蓝”再次挑战卡斯帕罗夫,此时“深蓝”的运算速度达每秒2亿次,比上次提高了一倍。
结果“深蓝”:获胜。
目前对机器人学的研究主要还是以控制理论的反馈概念为基础的。
也就是说,迄今为止,机器人上的"智能"是由于应用反馈控制而产生的。
但是,反馈控制技术本身并不是建立在人工智能技术的基础上的,而属于古典工程控制理论范畴。
一方面,机器人学的进一步发展需要人工智能基本原理的指导,并采用各种人工智能技术; 另一方面,机器人学的出现与发展又为人工智能的发展带来了新的生机,产生了新的推动力,并提供一个很好的试验与应用场所。
也就是说,人工智能想在机器人学上找到实际应用,并使问题求解、搜索规划、知识表示和智能系统等基本理论得到进一步发展。
粗略地说,由计算机(机器)来模仿人类的智能行为,就是人工智能,或称为机器智能。
而下一代新的机器人就是应用各种人工智能技术的机器人,所以叫做智能机器人。
智能机器人
尽管目前在工业上运行的90%以上的机器人都谈不上有什么智能,机器人执行的许多任务也根本不需要运用传感器; 但是,随着机器人技术的迅速发展和自动化程度的进一步提高,对机器人的功能提出了更高的要求,特别是需要各种具有不同程度智能的机器人和机器人化装置。
最近20年已生产出一批具有传感装置(如视觉、触觉和听觉等)的机器人以及少数具有与环境进行"对话"能力的交互机器人(interactive robot)。
这些机器人就属于智能机器人,它们能够执行一些过去无法解决的工作任务。
智能机器人已在自主系统和柔性加工系统中得到日益广泛的应用。
自主机器人能够设定自己的目标,规划并执行自己的动作,使自己不断适应环境的变化。
柔性加工系统由机器人工段(robotic work cell)或柔性工段组成。
每个机器人工段能够完全自动地完成一系列操作、装卸、运输或加工。
把机器人工段与其他工段相连接,就形成一个柔性组合式机器人生产系统,简称柔性加工系统。
第二章机器人小车硬件结构解析
1,智能机器人小车概述:
TY-1智能机器人小车是由江苏省天一中学人工智能社团师生共同设计,研发,制作的一款多功能,智能化,可编程机器人。
该机器人以小车作为基本活动载体,搭配一块功能强大的控制电路板,在配备各种传感器的情况下可实现足球,灭火,探险等多种可变复杂功能。
另外,对比于当前许多商品机器人,该机器人又具有结构小巧,造价低廉的特点。
所以,该机器人可作为中学生普及机器人知识,培养实践动手能力的良好载体。
通过学生亲身参与到设计,制作的全过程中,使学生从更深的此层次上加深对机器人的理解,培养学生科学兴趣和爱好。
该智能机器人小车外观如图一所示:
图一
TY-1智能机器人小车基本参数:
整体尺寸:130mm*155mm*110mm(长*宽*高)
整车重量:450g
工作电压:DC 7~12V
典型工作电压:DC
工作电流:
峰值电流:1A
行动速度:
2,智能机器人小车结构解析:
TY-1智能机器人小车基本构成主要包括小车车架、机器人控制板和传感器组成。
TY-1智能机器人小车车架主要包括左右减速电、左右驱动轮子、车架固定板、万向轮、固定螺丝等几个部分组成。
减速电机:
减速电机采用普通直流电机,结合机械减速箱制作而成。
价格低廉。
由于采用塑料齿轮,不适合高扭矩的场合,但用于小功率机器人小车非常适合。
减速电机基本参数:
1,工作电压: 3V~12V DC(建议工作电压在6到8V左右) 。
2,最大扭矩: 800gf cm min(3V时)。
3,转速比: 1:48 。
4,负载电流: 70mA (250mA MAX)(3V时)。
5,转速15f/min(3V时)。
车轮:
轮子直径约65MM,厚度约28MM,轮毂采用高强度塑料,轮胎采用黑色橡胶。
万向轮:
万向轮采用具有滑动转向轴承的平面万向轮,转动灵活。
轮子采用尼龙制造,经久耐磨,质量可靠。
电源:
小车电源采用六节5号碱性电池,电池电压为9V。
小车电源采用六节5号五号镍氢可充电电池,电池电压为。
3,智能机器人小车控制板:
控制板是机器人小车核心部件之一。
小车的智能化主要是由控制板来实现的。
控制板的主要作用是通过运行在板载微控制芯片中的用户程序,来完成检测、采集传感器所接受到的外界信号,并根据程序编制的控制算法对信号进行处理后来控制电机的转动,从而完成小车的运动控制。
所以,微控制芯又是控制板的核心部件。
它是一个小型的CPU,执行指令,完成机器人小车的控制任务。
本控制板所采用的是美国Atmel公司生产的单周期,低功耗微控制芯片ATmega8。
ATmega8单片机是高性能、低功耗的 8 位微处理器,8K 字节的系统内可编程Flash,512 字节的EEPROM,1K字节的片内SRAM,非常丰富的内部设备,在构成系统是不需要添加复杂的外围芯片设备,因此适合低成本智能小车的应用需要。
ATmega8是基于增强的AVR RISC 结构的低功耗8位CMOS微控制器。
由于其先进的指令集以及单时钟周期指令执行时间,ATmega8 的数据吞吐率高达1 MIPS/MHz,从而可以缓减系统在功耗和处理速度之间的矛盾。
AVR 内核具有丰富的指令集和32 个通用工作寄存器。
所有的寄存器都直接与算逻单元(ALU) 相连接,使得一条指令可以在一个时钟周期内同时访问两个独立的寄存器。
这种结构大大提高了代码效率,并且具有比普通的CISC 微控制器最高至10 倍的数据吞吐率。
ATmega8 有如下特点:8K 字节的系统内可编程Flash( 具有同时读写的能力,即RWW),512 字节EEPROM,1K 字节 SRAM,32 个通用I/O 口线,32 个通用工作寄存器,三个具有比较模式的灵活的定时器/ 计数器(T/C), 片内/ 外中断,可编程串行USART,面向字节的两线串行接口,10 位6 路 (8 路为TQFP 与MLF 封装)ADC,具有片内振荡器的可编程看门狗定时器,一个SPI 串行端口,以及五种可以通过软件进行选择的省电模式。
工作于空闲模式时CPU 停止工作,而SRAM、T/C、 SPI 端口以及中断系统继续工作;掉电模式时晶体振荡器停止振荡,所有功能除了中断和硬件复位之外都停止工作;在省电模式下,异步定时器继续运行,允许用户保持一个时间基准,而其余功能模块处于休眠状态; ADC 噪声抑制模式时终止CPU 和除了异步定时器与ADC 以外所有I/O 模块的工作,以降低ADC 转换时的开关噪声; Standby 模式下只有晶体或谐振振荡器运行,其余功能模块处于休眠状态,使得器件只消耗极少的电流,
同时具有快速启动能力。
本芯片是以Atmel 高密度非易失性存储器技术生产的。
片内ISP Flash 允许程序存储器通过ISP 串行接口,或者通用编程器进行编程,也可以通过运行于AVR 内核之中的引导程序进行编程。
引导程序可以使用任意接口将应用程序下载到应用Flash存储区(ApplicationFlash Memory)。
在更新应用Flash存储区时引导Flash区(Boot Flash Memory)的程序继续运行,实现了RWW 操作。
通过将8 位RISC CPU 与系统内可编程的Flash 集成在一个芯片内,ATmega8 成为一个功能强大的单片机,为许多嵌入式控制应用提供了灵活而低成本的解决方案。
ATmega8 具有一整套的编程与系统开发工具,包括:C 语言编译器、宏汇编、程序调试器/ 软件仿真器、仿真器及评估板。
智能机器人小车控制板接口说明:
智能机器人小车控制板实物如下图所示。
控制板带有1个电源输入口,由于输入DC 7~12VDE 工作电压。
1个九针串口,用于用户程序下载到板载控制器Atmega8。
14个三线数字信号输入输出口,用于外接数字信号传感器或数字信号驱动设备。
6个三线模拟信号输入口,用于外接模拟信号传感器的信号输入。
2个电机接口,用于外接控制直流电机。
2个二线电机控制接口,其中一线用于控制电机的转动方向,一线用于控制电机的转动速度(功率值)。
智能机器人小车控制板原理说明:
智能机器人小车电源部分如下图所示,电源插座P1接入外部电源,D1为防止电源反接二极管,C1、C3为滤波电容,VIN为电机驱动电源标签,电机驱动电源从该处引出。
U1为LM7805五伏稳压集成块。
C2 ,C4是输出滤波电容,+5V标签是控制板5V稳压电源的引出点。
D2是电源指示发光二极管。
智能机器人小车程序下载串口如右图所示,该电路是由分立元件构成的串口电路。
其中J1为串口使能选择开关SERIAL ON,当跳线开关置于1-2之间时,串口电路切断+5V电源,串口电路不可使用,可以降低电源消耗。
当跳线开关置于2-3之间时,串口电路接通+5V电源,串口电路可以正常使用,用于用户小车控制程序下载。
J3为程序下载过程中的自动复位跳线开关,当加上跳线开关时用户程序在下载过程中可以实现在东南否则要手动进行。
虽然该电路采用价格低廉的分立元件,单时间使用效果很好,工作非常稳定。
智能机器人小车电机驱动电路如右图所示。
该电路由电机驱动集成电路L293D结合一些外围电路构成。
其中J30 MOTO1用于一号电机控制信号的输入,DIR1用于和数字接口连接,控制一号电机的转动方向(高电平为正,低电平为反)。
PWM1用于和具有PWM输出功能的数字接口连接用于控制电机的转速(功率值)。
变化范围为0~255。
MOTO2同MOTO1。
智能机器人小车控制电路如下图所示,该电路以耗微控制芯片(单片机)ATmega8为核心。
其中,J32为控制器Bootloader启动程序的烧写。
J32 、J33为D0~D13十四个数字I/O 口,用于数字传感器信号输入,或输出数字控制信号。
J34为A0~A5模拟六个模拟I/O口外,用于外接模拟信号传感器的信号输入。
S1为手动复位按钮。
其他都是一些辅助电路,原理简单,不再赘述。
4,智能机器人小车光电传感器:
机器人小车实现各种复杂功能的基础是首先要实现小车的自动导航。
在本活动中小车导航时是通过小车的巡线来实现的。
下车巡线简单可靠,容易操作。
本光电传感器通过发光二极管D2发射可见光,在物体表面反射后被光敏三极管接受到。
控制板通过检测光敏三极管两端的电压值来判断物体表面的颜色。
第三章机器人小车编程语言及环境
由于本次活动的机器人控制器所采用的微控制器型号和网络上广泛流行的Arduino开源互动平台项目完全一致,所以在机器人开发语言和编程环境上面完全可以借用该平台的一切资源。
一来可以降低机器人小车设计制作的难度,更主要的是Arduino开源互动平台是一个资源非常广泛,支持者和爱好者众多的优秀平台。
1,Arduino语言
Arduino语言是建立在C/C++基础上的,其实也就是基础的C语言,Arduino语言只不过把AVR单片机(微控制器)相关的一些参数设置都函数化,不用我们去了解他的底层,让我们不了解AVR单片机(微控制器)的朋友也能轻松上手。
在与Arduino DIYER接触的这段时间里,发现有些朋友对Arduino语言还是比较难入手,那么这里我就简单的注释一下Arduino语言(本人也是半罐子水,有错的地方还请各位指正)。
1.1,基础C语言
关键字:
if...else
必须紧接着一个问题表示式(expression),若这个表示式为真,紧连着表示式后的代码就会被执行。
若这个表示式为假,则执行紧接着else之后的代码. 只使用 if不搭配else 是被允许的。
范例: if (val == 1) { digitalWrite(LED,HIGH); }
for
用来明定一段区域代码重复指行的次数。
范例: for (int i = 0; i < 10; i++) { ("ciao"); }
switch case
if叙述是程序里的分叉路口,switch case 是更多选项的路口。
Swith case 根据变量值让程序有更多的选择,比起一串冗长的if叙述,使用swith case可使程序代码看起来比较简洁。
范例:switch (sensorValue)
{ case 23: digitalWrite(13,HIGH);
break;
case 46:
digitalWrite(12,HIGH);
break;
default: . while
和while 相似,不同的是while前的那段程序代码会先被执行一次,不管特定的条件式为真或为假。
因此若有一段程序代码至少需要被执行一次,就可以使用do…while架构。
范例:do { digitalWrite(13,HIGH);
delay(100); digitalWrite(13,HIGH);
delay(100); sensorValue = analogRead(1); }
while (sensorValue < 512);
break
让程序代码跳离循环,并继续执行这个循环之后的程序代码。
此外,在break也用于分隔switch case 不同的叙述。
范例 : 返回变量原始值或增加/消耗后的新值。
Examples范例
x = 2; y = ++x; x 10308。
string 字符串
字符串用来表达文字信息,它是由多个ASCII字符组成(你可以透过序串端口发送一个文字讯息或者将之显示在液晶显示器上)。
字符串中的每一个字符都用一个组元组空间储存,并且在字符串的最尾端加上一个空字符以提示Ardunio处理器字符串的结束。
下面两种宣告方式是相同的。
例如: char string1[] = "Arduino";
随机数函数
randomSeed(seed) 随机数端口定义函数,seed表示读模拟口analogRead(pin)函数。
事实上在Arduino里的乱数是可以被预知的。
所以如果需要一个真正的乱数,可以呼叫此函式重新设定产生乱数种子。
你可以使用乱数当作乱数的种子,以确保数字以随机的方式出现,通常会使用类比输入当作乱数种子,藉此可以产生与环境有关的乱数(例如:无线电波、宇宙雷射线、电话和萤光灯发出的电磁波等)。
范例: randomSeed(analogRead(5));
• Debounce - for reading noisy digital inputs . from buttons)
• Firmata - for communicating with applications on the computer using a standard serial protocol. • GLCD - graphics routines for LCD based on the KS0108 or equivalent chipset.
• LCD - control LCDs (using 8 data lines)
• LCD 4 Bit - control LCDs (using 4 data lines)
• Le dControl - for controlling LED matrices or seven-segment displays with a MAX7221 or MAX7219.
• LedControl - an alternative to the Matrix library for driving multiple LEDs with Maxim chips. • Messenger - for processing text-based messages from the computer • Metro - help you time actions at regular intervals
• MsTimer2 - uses the timer 2 interrupt to trigger an action every N milliseconds. • OneWire - control devices (from Dallas Semiconductor) that use the One Wire protocol.
• PS2Keyboard - read characters from a PS2 keyboard.
• Servo - provides software support for Servo motors on any pins.
• Servotimer1 - provides hardware support for Servo motors on pins 9 and 10 • Simple Message System - send messages between Arduino and the computer
• SSerial2Mobile - send text messages or emails using a cell phone (via AT commands over software serial)
• TextString - handle strings
• TLC5940 - 16 channel 12 bit PWM controller.
• X10 - Sending X10 signals over AC power lines。