机器人 设计doc.docx
《机器人 设计doc.docx》由会员分享,可在线阅读,更多相关《机器人 设计doc.docx(14页珍藏版)》请在冰豆网上搜索。
机器人设计doc
自动寻迹机器人设计
摘要:
前言
机器人发展史
1920年捷克斯洛伐克作家卡雷尔·恰佩克在他的科幻小说《罗萨姆的机器人万能公司》中,根据Robota(捷克文,原意为“劳役、苦工”)和Robotnik(波兰文,原意为“工人”),创造出“机器人”这个词。
1998年丹麦乐高公司推出机器人(Mind-storms)套件,让机器人制造变得跟搭积木一样,相对简单又能任意拼装,使机器人开始走入个人世界。
1999年日本索尼公司推出犬型机器人爱宝(AIBO),当即销售一空,从此娱乐机器人成为目前机器人迈进普通家庭的途径之一。
2002年丹麦iRobot公司推出了吸尘器机器人Roomba,它能避开障碍,自动设计行进路线,还能在电量不足时,自动驶向充电座。
Roomba是目前世界上销量最大、最商业化的家用机器人。
2006年6月,微软公司推出MicrosoftRoboticsStudio,机器人模块化、平台统一化的趋势越来越明显,比尔·盖茨预言,家用机器人很快将席卷全球。
机器人分类
操作型机器人:
能自动控制,可重复编程,多功能,有几个自由度,可固定或运动,用于相关自动化系统中。
程控型机器人:
按预先要求的顺序及条件,依次控制机器人的机械动作。
示教再现型机器人:
通过引导或其它方式,先教会机器人动作,输入工作程序,机器人则自动重复进行作业。
数控型机器人:
不必使机器人动作,通过数值、语言等对机器人进行示教,机器人根据示教后的信息进行作业。
感觉控制型机器人:
利用传感器获取的信息控制机器人的动作。
适应控制型机器人:
机器人能适应环境的变化,控制其自身的行动。
学习控制型机器人:
机器人能“体会”工作的经验,具有一定的学习功能,并将所“学”的经验用于工作中。
智能机器人:
以人工智能决定其行动的人。
下面我介绍一下机器人的基本组成部分:
(一)、机器人的大脑
它可以有很多叫法,可以叫做:
可编程控制器、微控制器,微处理器,处理器或者计算器等,不过这都不要紧,通常微处理器是指一块芯片,而其它的是一整套控制器,包括微处理器和一些别的元件。
任何一个机器人大脑就必须要有这块芯片,不然就称不上机器人了。
在选择微控制器的时候,主要要考虑:
处理器的速度,要实现的功能,ROM和RAM的大小,I/O端口类型和数量,编程语言以及功耗等。
其主要类型有:
单片机、PLC、工控机、PC机等。
单有这些硬件是不够的,机器人的大脑还无法运行。
只有在程序的控制下,它才能按我们的要求去工作。
可以说程序就是机器人的灵魂了。
而程序是由编程语言所编写的。
编程语言是一个控制器能够接受的语言类型,一般有C语言,汇编语言或者basic语言等,这些通常能被高级一点的控制器直接执行,因为在高级控制器里面内置了编译器能够直接把一些高级语言翻译成机器码。
微处理器将执行这些机器码,并对机器人进行控制。
(二)、机器人的眼睛耳朵
传感器,是机器人的感觉器官,是机器人和现实世界之间的纽带,使机器人
能感知周围的环境情况。
其主要有:
光电传感器、红外传感器、力传感器、超声波传感器、位置和姿态传感器等等。
下面我将就几种常用传感器进行介绍:
1、光电传感器:
光电传感器的原理是光电效应。
其主要用途是颜色识别(机
器人就可以沿着地上的线条行进了)和光电编码等。
2、红外传感器:
红外传感器是用来测量距离和感知周围情况的。
因为发射出去的红外信号在一定距离内遇到物体就会反射回来。
通过发送红外线信号,并接收反射回来的信号,机器人就可以感知前方或身体周围的情况,做出相应的调整(如:
倒退或绕行等)。
3、力传感器:
力传感器是用来检测碰撞或者接触信号的,比如机械手的应用,当你放一个东西到机械手的时候,机械手自动抓住它,它就需要力传感器检测东西抓的紧不紧。
典型的力传感器是微动开关和压敏传感器。
微动开关其实就是一个小开关,通过调节开关上的杠杆长短,能够调节触动开关的力的大小。
用来做碰撞检测这是最好不过了。
但是这种传感器必须事先确定好力的阀值,也就是说只能实现硬件控制(开还控制)。
而压敏传感器是能根据受力大小,自动调节输出电压或者电流,从而可以实现软件控制(闭环控制)。
4、超声波传感器:
超声波传感器是从蝙蝠那里学来的,通过把发射出的信号与接收到的信号进行对比,就可以测定周围是否有障碍物,及障碍物的距离,也属于距离探测传感器,能提供交远的探测范围,而且还能提供在一个范围内的探测而不是一条线的探测。
5、位置和姿态传感器:
机器人在移动或者动作的时候必须时时刻刻知道自己的姿态动作,否则就会产生控制中的一个开环问题,没有反馈,无法获知运动是否正确。
位置传感器和姿态传感器就是用来解决这个问题的。
常用的有光电编码器,由于机器人的执行机构一般是电机驱动,通过计算电机转的圈数,可以得出电机带动部件的大致位置,编码器就是这样一种传感器,它一般和电机轴或者转动部件直接连接,电机或者转动部件转了多少圈或者角度能够通过编码器读出,控制软件再根据读出数据进行位置估计计算。
还有一种是陀螺仪,这是利用陀螺原理制作的传感器,主要可以测得移动机器人的移动加速度,转过的角度等信息。
(三)、机器人的腿——驱动器与驱动轮
驱动器就是驱动机器人的动的部件。
最常用的是电机了。
当然还有液压,气动等别的驱动方式。
一个机器人最主要的控制量就是控制机器人的移动,无论是自身的移动还是手臂等关节的移动,所以机器人驱动器中最根本和本质的问题就是控制电机,控制电机转的圈数,就可以控制机器人移动的距离和方向,机械手臂的弯曲的程度或者移动的距离等。
所以,第一个要解决的问题就是如何让电机能根据自己的意图转动。
一般来说,有专门的控制卡和控制芯片来进行控制的。
有了这些控制卡和芯片,我们所要做的就是把微控制器和这些连接起来,然后就可以用程序来控制电机了。
第二个问题是控制电机的速度,在机器人上的实际表现就是机器人或者手臂的实际运动速度了,机器人走的快慢全靠电机的转速,这样,我们就要求控制卡对电机有速度控制。
电机目前常用的有两种,步进电机和直流电机。
下面我将就这两种电机进行介绍:
1、直流电机:
这是最最普通的电机了。
直流电机最大的问题是你没法精确控制电机转的圈数,也就前面所说的位置控制。
你必须加上一个编码盘,来进行反馈,来获得实际转的圈数。
但是直流电机的速度控制相对就比较简单,用一种叫PWM(脉宽调速)的调速方法可以很轻松的调节电机速度。
现在也有很多控制芯片带调速功能的。
选购时要考虑的参数是电机的输出力矩,电机的功率,电机的最高转速。
2、步进电机:
看名字就知道了,它是一步一步前进的。
也就是说,它可以一个角度一个角度旋转,不象直流电机,你可以很轻松的调节步进电机的转角位置,如果你发一个转10圈的指令,步进电机就不会转11圈,但是如果是直流电机,由于惯性作用,它可能转11圈半。
步进电机的调速是通过控制电机的频率来获得的。
一般控制信号频率越高,电机转的越快,频率越低,转的越慢。
选购时要考虑的参数是电机的输出力矩,电机的功率,每个脉冲电机的最小转角。
还有就是关于输出的动力,要说明一下:
一般情况下,电机都没法直接带动轮子或者手臂,因为速度过高力矩不够大,所以我们需要加上一个减速箱来增加电机的输出力矩,但是代价是电机速度的减小,比如一个1:
250的齿轮箱,会让你电机的输出力矩增大250倍,但是速度只有原来的1/250了。
首先计算出机器人所需要的速度与力矩大小,然后根据速度与力矩去选择电机与减速器。
(四)、机器人的手臂——机械传动专制
机械传动专制就是,由电机驱动的一些杆件和机构(如:
凸轮机构、螺杆机构等),用以实现机械手臂的上升、下降、伸缩、弯曲等动作。
通常运用的机构有四杆机构、凸轮机构、螺杆机构、摇臂等。
(五)、机器人的心脏——电池
电池为机器人的控制系统与驱动系统提供能源供应。
主要有:
电瓶及可充电电池、电池。
前面介绍了机器人的一些基本知识,但这是远远不够的。
机器人学科,是在多学科基础上发展起来的综合性技术。
机器人技术涉及机械、电子、计算机、语言学和人工智能等许多学科。
现在机器人已经应用在人类社会生活的各个领域,发挥着越来越重要的影响。
我设计了一个六足爬虫机器人,用日立(HITACHI)的录像机遥控器来对它进行控制。
基本原理是:
遥控器发出红外学号,机器人通过红外接收器接收倒红外信号后,对信号进行解码,并以存储的代码进行比较,确定指令的含义,后可以实现前进、后退、左转、右转及发声等功能。
控制系统我使用的是AT89S51单片机,编程语言使用的是汇编语言,动力系统使用的是微型伺服马达,能源系统使用的是9V电池。
下面我将就具体设计进行介绍。
一、arm简介
(一)、arm主要功能列举如下:
主要特性
∙16/32位ARM7TDMI-S核;
∙16/32/64kB片内SRAM;
∙128/256kB片内Flash程序存储器;
∙128位宽度接口/加速器可实现高达60MHz工作频率;
∙EmbeddedICE可实现断点和观察点;
∙嵌入式跟踪宏单元(ETM)支持对执行代码进行无干扰的高速实时跟踪;
∙10位A/D转换器,转换时间低至2.44μs;
∙CAN接口,带有先进的验收滤波器;
∙多个串行接口,包括2个16C550工业标准UART、高速I2C接口(400kHz)和2个SPI接口。
通过片内Boot-loader软件实现在系统编程(ISP)和在应用编程(IAP);Flash编程时间:
1ms
可编程512字节,单扇区擦除和整片擦除只需400ms。
向量中断控制器,可配置优先级和向量地址。
当前台任务使用片内RealMonitor软件调试时,中断服务程序可继续执行。
嵌入式跟踪宏单元对指令的执行实现了非插入的高速实时跟踪
两个32位定时器(7路捕获/比较通道)、PWM单元(6路输出)、实时时钟和看门狗定时器。
小型的LQFP48封装(7×7mm2)有多达32个可承受5V的通用I/O口
通过可编程的片内锁相环可实现最大为60MHz的CPU操作频率,设置时间为100us。
片内晶振的操作频率范围:
1MHz~30MHz
两个低功耗模式:
空闲和掉电
通过外部中断将处理器从掉电模式中唤醒
外设功能可单独使能/禁止,实现功耗最优化
双电源
-CPU操作电压范围:
1.65V~1.95V(1.8V±8.3%)
-I/O电源电压范围:
3.0V~3.6V(3.3V±10%),I/O可承受5V电压
通过片内Boot-loader软件实现在系统编程(ISP)和在应用编程(IAP);Flash编程时间:
1ms
可编程512字节,单扇区擦除和整片擦除只需400ms。
二、控制系统电路图
控制系统电路图
三、微型伺服马达原理与控制
(一)、微型伺服马达内部结构
一个微型伺服马达内部包括了一个小型直流马达;一组变速齿轮组;一个反馈可调电位器;及一块电子控制板。
其中,高速转动的直流马达提供了原始动力,带动变速(减速)齿轮组,使之产生高扭力的输出,齿轮组的变速比愈大,伺服马达的输出扭力也愈大,也就是说越能承受更大的重量,但转动的速度也愈低。
(二)、微行伺服马达的工作原理
一个微型伺服马达是一个典型闭环反馈系统,其原理可由下图表示:
减速齿轮组由马达驱动,其终端(输出端)带动一个线性的比例电位器作位置检测,该电位器把转角坐标转换为一比例电压反馈给控制线路板,控制线路板将其与输入的控制脉冲信号比较,产生纠正脉冲,并驱动马达正向或反向地转动,使齿轮组的输出位置与期望值相符,令纠正脉冲趋于为0,从而达到使伺服马达精确定位的目的。
(三)、伺服马达的控制
标准的微型伺服马达有三条控制线,分别为:
电源、地及控制。
电源线与地线用于提供内部的直流马达及控制线路所需的能源,电压通常介于4V—6V之间,该电源应尽可能与处理系统的电源隔离(因为伺服马达会产生噪音)。
甚至小伺服马达在重负载时也会拉低放大器的电压,所以整个系统的电源供应的比例必须合理。
(四)、选用的伺服马达
我选用的伺服马达为TowPro的,型号为SG303。
其主要技术参数如下:
●转速:
0.23秒/60度。
●力矩:
3.2kg·cm。
●尺寸:
40.4mm×19.8mm×36mm。
●重量:
37.2g。
●5V电源供电。
●控制周期脉冲宽度为20ms。
送出不同的正脉冲宽度是,就可以得到不同的控制效果。
控制正脉冲宽度如下:
正脉冲宽度为0.3ms时,伺服马达反转。
●正脉冲宽度为2.5ms时,伺服马达正转。
●正脉冲宽度为1.4ms时,伺服马达回到中点。
四、光电传感器
输出电流
DC:
<200mAAC:
<200mA继电器输出,触点电流1A3A
消耗电流
5mA-30mA
响应时间
DC:
<2.5msAC:
<30ms
开关频率
<300Hz
绝缘电阻
>200MΩ
外壳体材料
金属/塑料ABS
工作环境照度
太阳光10000LX以下白炽灯300LX以下
工作环境温度
-20℃~+55℃
检测物体
透明或不透明
不透明体
指向角
3℃~20℃
3℃~10℃
接线方式
2mPVC电缆插头
五、控制程序
;沿黑线走c代码
线的颜色比地面深。
● 机器人将沿着线的左边前进(例如:
检测不到线时向右转,检测到线时左转)
● 输出端口A和C分别控制左、右驱动轮。
● 输出端口B控制手臂。
● 输入端口1通过缓冲装置与触动传感器连接。
缓冲器被触动时关闭(从状态0到状态1)
● 输入端口2是连接光电传感器,检测端朝下,以读取黑线的光值。
下面即为该机器人的程序码:
intfloor,line;
taskMain()
{
Initialize();
Calibrate();
Go_Straight();
while(true)
{
Check_Bumper();
Follow_Line();
}
}
.
voidInitialize()
{
SetSensor(SENSOR_1,SENSOR_TOUCH);
SetSensor(SENSOR_2,SENSOR_LIGHT);
}
void告诉NQC你正在记述一个子程序,其后为你对它的命名;SetSensor语句用于在1端口设置触动传感器,在2端口设置光电传感器。
voidCalibrate()
{
WaitBumperPress();
floor=SENSOR_2;
WaitBumperPress();
line=SENSOR_2;
WaitBumperPress();
}
voidWait_Bumper_Press()
{
PlaySound(SOUND_DOUBLE_BEEP);
while(SENSOR_1==0);//waitforbumperpress
while(SENSOR_1==1);//waitforbumperrelease
}
Check_Bumper程序负责测试机器人是否碰到障碍及如何反应:
voidCheck_Bumper()
{
if(SENSOR_1==1)
{
Stop();
Remove_Obstacle();
Go_Straight();
}
}
检查缓冲器是否找到机器人障碍物,叫做Remove_Obstacle子程序,清除路径然后继续运行。
Follow_Line程序是使你的机器人接近线的边缘——也就是左边缘。
如果光电传感器长时间读到的场地数值,它向右边线的方向转弯。
如果相反,它长时间读到线的光值,它会远离线。
(看第4章这个方法的讨论)
voidFollow_Line()
{
#defineSENSITIVITY5
if(SENSOR_2<=floor+SENSITIVITY)//readingtoo"floor"
Turn_Right();
elseif(SENSOR_2>=line-SENSITIVITY)//readingtoo"line"
Turn_Left();
else
Go_Straight();
voidGo_Straight()
{
OnFwd(OUT_A+OUT_C);
}
voidStop()
{
Off(OUT_A+OUT_C);
}
voidTurn_Left()
{
Off(OUT_A);
OnFwd(OUT_C);
}
voidTurn_Right()
{
Off(OUT_C);
OnFwd(OUT_A);
}
我通过这次实习收获了佷多,不仅在能力上得到了提高,拓展了知识面,锻练自己的能力
参考:
CProgrammingLanguage(2ndEdition)
单片机典型模块设计实例导航
嵌入式.系統c程式設計
步进电机程序控制
情感语录
1.爱情合适就好,不要委屈将就,只要随意,彼此之间不要太大压力
2.时间会把最正确的人带到你身边,在此之前,你要做的,是好好的照顾自己
3.女人的眼泪是最无用的液体,但你让女人流泪说明你很无用
4.总有一天,你会遇上那个人,陪你看日出,直到你的人生落幕
5.最美的感动是我以为人去楼空的时候你依然在
6.我莫名其妙的地笑了,原来只因为想到了你
7.会离开的都是废品,能抢走的都是垃圾
8.其实你不知道,如果可以,我愿意把整颗心都刻满你的名字
9.女人谁不愿意青春永驻,但我愿意用来换一个疼我的你
10.我们和好吧,我想和你拌嘴吵架,想闹小脾气,想为了你哭鼻子,我想你了
11.如此情深,却难以启齿。
其实你若真爱一个人,内心酸涩,反而会说不出话来
12.生命中有一些人与我们擦肩了,却来不及遇见;遇见了,却来不及相识;相识了,却来不及熟悉,却还要是再见
13.对自己好点,因为一辈子不长;对身边的人好点,因为下辈子不一定能遇见
14.世上总有一颗心在期待、呼唤着另一颗心
15.离开之后,我想你不要忘记一件事:
不要忘记想念我。
想念我的时候,不要忘记我也在想念你
16.有一种缘分叫钟情,有一种感觉叫曾经拥有,有一种结局叫命中注定,有一种心痛叫绵绵无期
17.冷战也好,委屈也罢,不管什么时候,只要你一句软话,一个微笑或者一个拥抱,我都能笑着原谅
18.不要等到秋天,才说春风曾经吹过;不要等到分别,才说彼此曾经爱过
19.从没想过,自己可以爱的这么卑微,卑微的只因为你的一句话就欣喜不已
20.当我为你掉眼泪时,你有没有心疼过