作品名称:识别搬运机器人指导老师:吴爱梅、刘永平作者:谢春伟、杜存忠、董航、高军林机器人综合了机械学、电子学、计算机科学、自动控制工程、人工智能、仿生学等多个学科的最新研究成果,代表了机电一体化的最高成就,是当今世界科学技术发展最活跃的领域之一。
一、作品组成1.BASIC Stamp 微控制器BASIC Stamp微控制器是以PBASIC为编程语言,通过解释器对PBASIC应用程序进行解释执行的微型计算机,具有 8路或 16路 I/O 通道,每个 I/O 通道接脚可以直接连接发光二极管、蜂鸣器、颜色识别传感器等各种传感器。
通过增加一些额外元器件,可以实现不同的功能。
BASIC Stamp由一个5伏特电压调节器、晶振器、Serial EEPROM、及一个PBASIC 解释器组成。
2.伺服马达伺服马达有三根不同色线,分别为:黑、红、白,其中红色的为电源线;黑色为地线;白色的为控制信号线,通过对这信号线输入脉冲序列来控制电机的运动,可以控制电机的运动速度,运动方向。
3.传感器TCS230 颜色传感器属于图像传感器,图像传感器可分为互补金属氧化物半导体(CMOS)图像传感器和电荷耦合器件(CCD)图像传感器两类。
CMOS型和 CCD 型固态图像传感器在光检测方面都利用了硅的光电效应原理,采用感光元件作为影像捕获的基本手段,感光元件的核心都是一个感光二极管(photodiode),该二极管在接受光线照射之后能够产生输出电流,而电流的强度则与光照的强度对应。
每个感光元件对应图像传感器中的一个像点,由于感光元件只能感应光的强度,无法捕获色彩信息,因此必须在感光元件上方覆盖彩色滤光片。
TCS230颜色传感器是由一个颜色检测器组成,包括一个TAOS TCS230 RGB 的传感器芯片,白色的发光二极管,瞄准镜,板卡上的插槽和连接线。
TCS230 颜色传感器通过插槽或直接相连来与其他 BASIC Stamp模块接口,在其固定的范围内对可见光颜色进行检测。
4■机械手主要有手爪支架,手爪臂,及手爪组成,用来模拟人手用来抓取已识别的物体,然后进行搬运指定区域。
二、创新来源该作品启示于生活当中港口码头对不同颜色的集装箱搬运。
从而联想到机器人根据不同颜色自动分拣的目的,以提高搬运工作效率。
三、实现功能机器人从指定区域启动后,到达设定目的地用机械手对不同色块进行分捡和搬运。
机器人在得到指令后启动,不需再次接触机器人,由机器人自主运行完成任务,每次任务机器人连续运行。
四、调试说明1.将机器人放置于启动区的中心位置,此位置相对比较重要(此位置关系到整体的运动结果)。
保证机器人在第一次行走后能到达正五边行的中间位置。
2.调整传感器的位置,与水平面夹角约为 75度。
(可根据实际的情况调整)3.若机器人经测试未能达到指定位置,可进行参数的调整。
五、注意事项1.CMUCAM 传感器对周围的环境要求比较严格,故在改变环境的情况下,需要重新设置各种颜色的参数值。
2.调试时,尽量保证周围无相同颜色的物体,以免误检测。
3.在每次运行机器人前,必须对机器人各部件进行详细检查。
例如,电源电压(6-9v),机械手的灵活性等。
4.伺服电动机必须调零。
六、机器人的控制1.机器人控制组成部分机器人主要由单片机控制,通过驱动电路控制直流伺服电动机,从而控制机器人的行走和机械手的动作。
控制流程图 1所示:图1控制流程图2.机器人直流电源和功率放大器该机器人的驱动采用的是直流伺服电动机,直流电源由4节5号电池提供,电压范围为6-9V,所以它省略了整流电路和稳压电路。
功率放大电路,我们采用的是PWM脉宽调制电路,脉宽调制放大电路有较宽的频带,动态特性较好,抗干扰能力强。
功率放大电路如图2所示:3.单关节机器人的建模与控制该机器人的机械手抓物属于单关节的位置控制,其单关节开环控制传递函数框图如图3所示:图3单关节开环控制传递函数框图单关节的位置控制是利用由电机组成的伺服系统使关节的实际角位移跟踪预期的角位移,把伺服误差作为电机输入信号产生适当的电压。
即式中,kp是位置反馈增益(v/rad); ' ' h - t是系统误差;n是转比实际上“位置负反馈”把单关节机器人系统从开环系统变为闭环系统。
关节角度的实际值可用光电编码器或电位器测出。
对式进行拉普拉斯变换,得八k P[0;(s)-9L(s)] k D E(s)U a(s)=------------------------- = -------n n 其闭环传递控制函数框图如图4所示:七、电子元件布置图:八、程序流程图用合机械手4E(杏<F左转一伞用慶西岌现、色色壇—是否*C1F 1<r打开机臧丰打开枫械手1F F前杆至色块位置前疔至色块位置1r1r|可音机械孚后退回正五边形中心5\F岳退回正五边形申吧简后就转1灿度扑开机械斗打开机械羊耳F1F前行至色决住置前行至色快拉置1 r耳r闭鸟机煽羊継续前种3F后迪S七抹一人奋底正五边形中电甫行車蓝邑区城肩*1鳥开蓝色区區九、程序与调试' {$STAMP BS2} ' {$PBASIC 2.5} DOGOSUB arm_on GOSUB arm_off GOSUB arm_on1 GOSUB arm_offLOOP arm_on:FOR i=1 TO 20 PULSOUT 13,450 PAUSE 20 NEXT RETURN arm_off:FOR i=1 TO 20 PULSOUT 13,780 PAUSE 20 NEXT RETURN arm_on1:FOR i=1 TO10 PULSOUT 13,450 PAUSE 20 NEXT RETURN '{$STAMP BS2} ' {$PBASIC 2.5}' CMUcam Boe-Bot Demo Program 3 ' Copyright 2002, Seattle Robotics ' Basic Stamp 2' CMUcam jumpered for Baud 9600 RcvData VAR Byte(10)step1 VAR Word Confid VAR Byte i VAR Word blue_count VAR Word red_count VAR Word' Pause 1 second for CMUcam startup 'PAUSE 1000‘大角度打开机械手 关闭机械手 ‘小角度打开机械手 关闭机械手' Send "reset" to sync CMUcam and Stamp SEROUT 10, 84, ["RS",CR] SERIN 9, 84, [WAIT (":")]PAUSE 1000' Turn on auto adjust for 5 seconds SEROUT 10, 84, ["CR 18 44",CR] SERIN 9, 84, [WAIT (":")]PAUSE 100' Pause 5 seconds for CMUcam to auto adjust to lighting conditions PAUSE 5000' Turn off auto adjustSEROUT 10, 84, ["CR 18 44 19 32",CR] SERIN 9, 84, [WAIT (":")] PAUSE 100' Send command - Set poll mode - only sends one return packet - ' of data after each command - reduces data flow SEROUT 10, 84, ["PM 1",CR]SERIN 9, 84, [WAIT (":")]PAUSE 100' Send command - Set raw data mode - also suppress Ack:/Nak: to - ' further reduce serial dataSEROUT 10, 84, ["RM 3",CR] PAUSE 100'直行至五边形中间位置GOSUB arm_onstep1=200GOSUB FwdGOSUB arm_offMain:DO WHILE(blue_count<3)GOSUB CMUCam_blueIF RCVData(2) < 55 AND Confid>15 THENblue_count=blue_count+1 GOSUB arm_on1 step1=80GOSUB FwdIF blue_count<3 THEN GOSUB arm_GOSUB backELSEstep1=1GOSUB turn_leftENDIFLOOPGOSUB turn_back_right_180blue_count=0DO WHILE(blue_count<2)GOSUB CMUCam_blueIF RCVData(2) > 41 AND Confid>15 THEN '记录识别到的颜色个数blue_count=blue_count+1 GOSUB arm_onstep1=80GOSUB FwdIF blue_count<2 THENGOSUB arm_off '记录识别到的颜色个数'向前行走一段距离机械手动作'机械手动作'向前行走一段距离GOSUB backENDIFELSEstep1=1GOSUB turn_rightENDIFLOOPstep1=210GOSUB Fwdstep1=17GOSUB turn_rightstep1=100GOSUB FwdGOSUB arm_onstep1=200GOSUB backstep1=17GOSUB turn_rightstep1=130GOSUB Fwdstep1=10GOSUB turn_leftred_count=0DO WHILE(red_count<3)GOSUB CMUCam_redIF RCVData(2) > 40 AND Confid>15 THEN red_count=red_count+1GOSUB arm_on1 step1=110GOSUB FwdGOSUB arm_offELSEstep1=1GOSUB turn_rightENDIFLOOPGOSUB arm_on1step1=100GOSUB back '记录识别到的颜色个数'向前行走一段距离step1=22GOSUB turn_rightGOSUB arm_onstep1=100GOSUB Fwdred_count=0DO WHILE(red_count<3)GOSUB CMUCam_redIF RCVData(2) < 55 AND Confid>15 THENred_count=red_count+1IF red_count<3 THENGOSUB arm_on1IF red_count<3 THENstep1=160ELSEstep1=120ENDIFGOSUB Fwd '记录识别到的颜色个数'向前行走一段距离GOSUB arm_offELSEGOSUB arm_onstep1=120 GOSUBFwdENDIFELSE step1=1 GOSUB turn_leftENDIFLOOP'机械手动作step1=200GOSUB FwdPAUSE 200red_count=0DO WHILE(red_count<1)GOSUB CMUCam_redIF RCVData(2) < 35 AND Confid>15 THENred_count=red_count+1 '记录识别到的颜色个数ELSEstep1=1GOSUB turn_left ENDIFLOOPstep1=150GOSUB Fwdstep1=100GOSUB backstep1=21GOSUB turn_leftstep1=255GOSUB FwdPAUSE 50000GOTO MainFwd:FOR i=1 TO step1 PULSOUT14,803 PULSOUT 15,650PAUSE 20NEXTRETURNback:FOR i=1 TO step1 PULSOUT14,708 PULSOUT15,850 PAUSE 20NEXTRETURNturn_back_left_180:FOR i=1 TO 44PULSOUT 14,708PULSOUT 15,650PAUSE 20NEXTRETURNturn_back_right_180:FOR i=1 TO 44 PULSOUT 14,803 PULSOUT 15,850 PAUSE 20NEXTRETURNturn_right:FOR i= 1 TO step1 PULSOUT 14,803 PULSOUT15,850 PAUSE 20NEXTRETURNturn_left:FOR i=1 TO step1 PULSOUT 14,708 PULSOUT15,650 PAUSE 20NEXTRETURNarm_on:FOR i=1 TO 10 PULSOUT 13,850 PAUSE 20NEXTRETURNarm_off:FOR i=1 TO 50 PULSOUT 13,1060 PAUSE 20NEXTRETURNarm_on1:FOR i=1 TO 50 PULSOUT 13,920 PAUSE 20NEXTRETURNCMUCam_blue:SEROUT 10, 84, ["TC 13 20 10 40 50 100",CR] SERIN 9, 84, [STR RcvData\10]Confid = RcvData(9)RETURNCMUCam_red:SEROUT 10, 84, ["TC 30 60 10 50 10 50",CR]SERIN 9, 84, [STR RcvData\10]Confid = RcvData(9)RETURN。