版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
机器人应用基础机器人时代
2007年,比尔·盖茨预言:
机器人即将重复个人电脑崛起之路!机器人将与个人电脑一样迈入家家户户,彻底改变人类的生活方式!个人电脑
(PC)
=>个人机器人(PR)机器人领域面临严峻的考验:
1、没有标准的操作系统软件
2、处理器和硬件系统受限制
3、没有标准的软件系统平台
…
影响广泛的世界级比赛,推动机器人产业的标准化!一、机器人
按用途分类工业机器人•特种机器人工业机器人搬运机器人焊接机器人喷漆机器人装配机器人…•特种机器人空中机器人地面机器人水下机器人服务机器人军用机器人农业机器人娱乐机器人竞赛机器人…竞赛机器人投篮机器人空中机器人
灭火机器人
寻线机器人舞蹈
机器人足球机器人。。。。。。三、足球机器人•FIRA
•RoboCup•青少年足球机器人•。。。。。。FIRA机器人足球比赛
最早由韩国高等技术研究院的金钟焕教授于1995年提出,并于1996年在韩国举办了第一届国际比赛。机器人足球系统的研究涉及非常广泛的领域,包括机械电子学、机器人学、传感器信息融合、智能控制、通讯、计算机视觉、计算机图形学、人工智能等等。
比赛录像控制难点
1、广角失真问题矫正广角失真
2、队员识别
3、下层控制
4、决策控制
5、通信系统四、RoboCup的发展及关键技术
RoboCup:RobotWorldCup
主要活动
—技术会议
—足球杯比赛国际组织:RoboCup网站:http://
新的里程碑(Landmark)工程
—长远目标:到2050年,完全自主的类人的机器人将打败当时的世界足球冠军队,这是一个50年的长远计划。。涉及的研究领域智能机器人系统多智能体系统实时模式识别与行为系统智能体结构设计实时规划和推理传感器技术动态实时系统分布式合作与对抗带噪声的,非全信息的环境模型非符号化的环境信息受限的通讯带宽技术特点5、机器人的运动规划它具有以下特点:(1)必须考虑多个机器人协作,机器人的运动不能相互干扰;(2)整个比赛都是动态的,障碍(球和其它机器人)处在高速运动中;(3)使用两轮独立驱动方式的移动机器人,是典型的非完整约束系统;(4)机器人存在着显著的动力学约束,即速度和加速度的限制;(5)整个运动规划过程要求很强的实时性。DX117AX12+RX28RX64舵机AX12DX117ComTTLRS485Torque(kg.cm)16.538.5Weight(g)5566Voltage(V)10162006usage(%)1/184/182007usage(%)6/2513/25我们的选择还有:
RX-28Rx-64代理:Robotis
co.或智能佳机器人水球比赛仿生机器鱼的机械结构机械结构控制单元通讯单元驱动单元支撑单元附件鱼类游动的运动学模型鱼体波曲线方程C51单片机与机器人大脑AT89S52教学底板项目一、轮式机器人的制作与应用微控制器的用途单片机与C51系列单片机项目单元1、机器人系统的构建与调试
获得软件——KeiluVision2IDE官方下载()
安装软件从网上下载软件后安装硬件安装通讯测试:你的第一个程序第一个程序#include<uart.h>intmain(void){uart_Init();//串口初始化
printf("Hello,thisisamessagefromyourRobot\n");}第一个程序添加头文件uart.h程序入口,main()函数printf()函数,打印输出,在终端上显示“//”表示注释,后面内容将被编辑器忽视项目单元2、机器人的基本运动控制控制C51单片机的I/O口及伺服电机
机器人指示灯亮、灭控制控制单灯闪烁:使用P1端口的第一脚(P1_0)来控制发光二极管(LED)闪烁。while(1){P1_0=1;//P1_0输出高电平delay_nms(500);//延时500msP1_0=0;//P1_0输出低电平delay_nms(500);//延时500ms}●while循环函数●delay_nms延时函数时序图简介时序图反应的是高、低电压信号与时间的关系图机器人伺服电机控制信号控制伺服电机控制信号
零点标定信号时序图while(1){P1_0=1;//P1_0输出高电平delay_nus(1500);//延时1.5msP1_0=0;//P1_0输出低电平delay_nus(20000);//延时20ms}安装伺服电机伺服电机与教学底板的连线原理图(左)和实际接线示意图(右)测试伺服电机1.3ms的控制脉冲序列使电机顺时针全速旋转1.7ms的连续脉冲序列使电机逆时针全速旋转while(1){P1_0=1;delay_nus(1300);P1_0=0;delay_nus(20000);}while(1){P1_0=1;delay_nus(1700);P1_0=0;delay_nus(20000);}伺服电机旋转规定的时间for循环
for(表达式1;表达式2;表达式3)语句按如下方式理解for(循环变量赋初值;循环条件;循环变量增值)语句for(Counter=1;Counter<=100;i++){P1_1=1;delay_nus(1700);P1_1=0;delay_nms(20);}用PC机控制机器人的运动scanf(格式控制,地址表列);printf("ProgramRunning!\n");printf("Pleaseinputpulsenumber:\n");scanf("%d",&PulseNumber);printf("Pleaseinputpulseduration:\n");scanf("%d",&PulseDuration);for(Counter=1;Counter<=PulseNumber;Counter++){……delay_nus(PulseDuration);……}机器人巡航控制基本巡航动作机器人及其前进方向的定义向前巡航for循环的参数控制了发送给电机的脉冲数量。由于每个脉冲的时间是相同的,因而for循环的参数也控制了伺服电机运行的时间。for(counter=0;counter<130;counter++)//运行3秒{P1_1=1;delay_nus(1700);P1_1=0;//左轮逆时针P1_0=1;delay_nus(1300);P1_0=0;//右轮顺时针delay_nms(20);}其它巡航动作将delay_nus函数的参数n以不同的值组合就可以使机器人以其它的方式运行向后行走P1_1=1;delay_nus(1300);P1_1=0;//左轮顺时针P1_0=1;delay_nus(1700);P1_0=0;//右轮逆时针delay_nms(20);原地左转P1_1=1;delay_nus(1300);P1_1=0;//左轮顺时针P1_0=1;delay_nus(1300);P1_0=0;//右轮顺时针delay_nms(20);原地右转P1_1=1;delay_nus(1700);P1_1=0;//左轮逆时针P1_0=1;delay_nus(1700);P1_0=0;//右轮逆时针delay_nms(20);其它巡航动作——以某一轮子为支点旋转从前面向左旋转P1_1=1;delay_nus(1500);P1_1=0;//左轮静止P1_0=1;delay_nus(1300);P1_0=0;//右轮顺时针delay_nms(20);从前面向右旋转P1_1=1;delay_nus(1700);P1_1=0;//左轮逆时针P1_0=1;delay_nus(1500);P1_0=0;//右轮静止delay_nms(20);从后面向左旋转P1_1=1;delay_nus(1500);P1_1=0;//左轮静止P1_0=1;delay_nus(1700);P1_0=0;//右轮逆时针delay_nms(20);从后面向右旋转P1_1=1;delay_nus(1300);P1_1=0;//左轮顺时针P1_0=1;delay_nus(1500);P1_0=0;//右轮静止delay_nms(20);匀变速运动:防止机器人加速过快for(pulseCount=10;pulseCount<=200;pulseCount=pulseCount+1){P1_1=1;
delay_nus(1500+pulseCount);
P1_1=0;P1_0=1;
delay_nus(1500-pulseCount);
P1_0=0;delay_nms(20); }用函数简化运动程序:Forward()、Left_Turn()、Right_Turn()、Backward()voidForward(void){inti;for(i=1;i<=65;i++){P1_1=1;delay_nus(1700);P1_1=0;P1_0=1;delay_nus(1300);P1_0=0;delay_nms(20);}}高级主题——建立复杂运动如果要让机器人执行一个更长,更复杂的动作,前面讲到的方法将会很麻烦。
●用字符数组存储运动动作
●用switch语句解释这些动作charNavigation[10]={'F','L','F','F','R','B','L','B','B','Q'};while(Navigation[address]!='Q'){switch(Navigation[address]){case'F':Forward();break;case'L':Left_Turn();break;case'R':Right_Turn();break;case'B':Backward();break;}address++;}switch(表达式){case常量表达式1:语句1;break;case常量表达式2:语句2;break;…case常量表达式n:语句n;break;default:语句n+1;break;}switch分支语句一般形式:项目单元3、机器人触觉系统的制作与调试通过前面两章的学习,你已经掌握如何用单片机的端口来控制机器人的各种运动。当时,连接机器人伺服电机的端口是作为输出使用。从本章开始,单片机端口将作为输入使用。触觉导航触须(胡须)硬件安装好胡须的机器人测试胡须胡须电路图intP1_4state(void)//获取P1_4的状态{return(P1&0x10)?1:0;}intP2_3state(void)//获取P2_3的状态{return(P2&0x08)?1:0;}C语言的一种运算符——?表达式1?表达式2:表达式3胡须导航if((P1_4state()==0)&&(P2_3state()==0)){Backward();Left_Turn();Left_Turn();}elseif(P1_4state()==0){Backward();Left_Turn();}elseif(P2_3state()==0){Backward();Right_Turn();}elseForward();两边同时碰到,后退,左转两次}右边碰到,后退再左拐}}左边碰到,后退再右拐没有障碍物,前进当机器人进入墙角时,左胡须触墙,于是它右转,向前行走,右胡须触墙,于是左转前进,又碰到左墙,再次碰到右墙…。如果不是你把它从墙角拿出来,它就会一直困在墙角里而出不来。逃离墙角死区修改程序让机器人碰到上述问题时逃离死区。技巧是记下胡须交替触动的总次数。技巧的关键是程序必须记住每个胡须的前一次触动状态,并和当前触动状态对比。如果状态相反,就在交替总数上加1。如果这个交替总数超过了程序中预先给定的阀值,那么就该做一个“U”型转弯,并且把胡须交替计数器复位。编程实现依赖于if…else嵌套语句if(P1_4state()!=P2_3state()){if((old2!=P1_4state())&&(old3!=P2_3state())){counter=counter+1;old2=P1_4state();old3=P2_3state();if(counter>4){counter=1;Backward();Left_Turn();Left_Turn();}}elsecounter=1; }项目单元4、机器人红外导航使用红外线发射和接收器探测道路搭建IR发射和探测器对左侧和右侧IR组原理图三极管结构、符号及管脚for(counter=0;counter<38;counter++){P1_3=1;delay_nus(13);P1_3=0;delay_nus(13);}irDetectLeft=P1_5state();测试IR发射和探测器对让每个IRLED探测器组工作的关键是发送1毫秒频率38.5kHz的红外信号,然后立刻将IR探测器的输出存储到一个变量中。}周期T=26us,频率f=1/T=38.5kHz持续时间t=38T=1ms变量irDetectLeft存储探测器状态函数延时的不精确性函数调用所需时间是微秒级,与工作要求同级,故延时不精确。空函数——_nop_(void)当微控制器在12MHz晶振下工作时,单片机AT89S52一个时钟周期为:T=(1/12)*10-6S微控制器操作是用机器周期来计算的,一个机器周期为十二个时钟周期:t=12*T=1*10-6s=1us
所以空函数_nop_()能产生1us的延时。教学板的晶振选用11.0592MHz,它能产生延时时间是1.08us,比1us有稍许误差探测和避开障碍物用#define语句来简化程序,如:#defineLeftIRP1_2//左边红外接收连接到P1_2#defineLeftLaunchP1_3//左边红外发射连接到P1_3在以后的程序中,可以用LeftIR代替P1_2发射并检测信号IRLaunch('R');irDetectRight=RightIR;//右边接收IRLaunch('L');irDetectLeft=LeftIR;//左边接收红外线导航,与胡须类似if((irDetectLeft==0)&&(irDetectRight==0))//两边同时接收到红外线{Backward();Left_Turn();Left_Turn();}elseif(irDetectLeft==0)//只有左边接收到红外线{Backward();Right_Turn();}elseif(irDetectRight==0)//只有右边接收到红外线{Backward();Left_Turn();}elseForward();高性能的IR导航发送脉冲给电机之前检查障碍物,可以大大改善机器人的行走性能。程序可以使用传感器输入为每个瞬间的导航选择最好的机动动作。这样,机器人永远不会走过头,它会找到绕开障碍物的完美路线,成功的走过更加复杂的路线。如果前方有障碍物,机器人会使用脉冲命令避开,然后探测,如果物体还在,再使用另一个脉冲来避开它。机器人能持续使用电机驱动脉冲和探测,直到它绕开障碍物,然后它会继续发向前行走的脉冲。if((irDetectLeft==0)&&(irDetectRight==0)){pulseLeft=1300;pulseRight=1700;}……………………P1_1=1;delay_nus(pulseLeft);P1_1=0;P1_0=1;delay_nus(pulseRight);P1_0=0;delay_nms(20);使用整型变量pulseLeft和pulseRight来设置发送的脉冲持续时间边缘探测精确的延时:定时/计数器的应用数组:保存相同类型的若干变量尾随小车跟踪条纹带项目单元5、机器人串行通信系统的制作通过串口发送数据通过串口接收数据串口通讯UART(UniversalAsynchronousReceiver/Transmitter)是一种能够把二进制数据按位(bit)传送的通信方式。AT89S52拥有1个串行通信接口UART。其主要功能如下:在输出数据时,把数据进行并-串转换,即从计算机接收8位并行数据并发送到串口输出;在输入数据时,把数据进行串-并转换,即从串口读入外部串行数据并将其转换为8位并行数据送到计算机。RS232电平与TTL电平转换TTL(Tansistor-TransistorLogic),是指三极管-三极管逻辑电路。很多单片机,包括你所使用的AT89S52都是用的这种标准。它的逻辑“1”电平是5V,逻辑“0”电平是0V。RS232接口是1970年由美国电子工业协会(EIA)联合贝尔系统、调制解调器厂家及计算机终端生产厂家共同制定的用于串行通讯的标准。它的逻辑
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年度红十字应急救护知识培训课件
- 2024年度甲方租赁乙方云计算资源用于数据处理的合同
- 2024年度装修工程安全文明施工合同
- 2024年度储罐用高性能焊接材料供应合同
- 《就业指导案例》课件
- 2024年度股权投资合同投资金额与用途
- 《复合材料板簧》课件
- 2024年度融资租赁合同标的租赁物、租金与还款协议
- 人教版小学语文二年级下册全册教
- 《胸腔穿刺术》课件
- 电影院信息管理系统设计Word
- 露天矿开采工艺课件
- 中医儿科学 呕吐、腹痛
- 小学一年级地方课-《课间十分钟》ppt
- 《道德与法治》三年级部编三年级上册道德与法治《家庭记忆》教学设计
- 沁园春 理解性默写
- 《赤壁赋》课件(共48张PPT)
- 初中数学湘教版七年级上册第三章一元一次方程本章复习与测试【区一等奖】
- 初中数学湘教版八年级上册第3章实数
- RB/T 208-2016化学实验室内部质量控制比对试验
- GB/T 32893-201610 kV及以上电力用户变电站运行管理规范
评论
0/150
提交评论