机器人技术实验指导书(新版)9112_第1页
机器人技术实验指导书(新版)9112_第2页
机器人技术实验指导书(新版)9112_第3页
机器人技术实验指导书(新版)9112_第4页
机器人技术实验指导书(新版)9112_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

机器人技术实验指导书郑嫦娥编写北京林业大学工学院机械工程系

机器人技术实验指导书目录实验一搭建机器蠕虫.............................................................................................................2实验二机器人.................................................................................7传感-控制-决策实验1机器人技术实验指导书实验一搭建机器蠕虫【实验目的】(1)了解机器人的组成,(2)通过搭建机器蠕虫,熟悉机器人机械、控制、驱动、传感等各模块基本构成。(3)通过控制机器蠕虫运动,熟悉MRcommander的使用。【实验设备】博创机器人套件:A、B箱【实验内容】搭建机器蠕虫,并控制其运动。【实验步骤】(1)首先利用博创套件,搭建由4个完全相同的关节串联的机器蠕虫。图1机器蠕虫的一个关节图24个关节串联的机器蠕虫(2)熟悉MultiFLEX控制卡的各种接口,以旧卡(体积小)为例:A:电源接口:+5~6VB:控制板总线2机器人技术实验指导书C:4路电机接口,最大允许电流2A,电机红线+,白线-。连接时,白线朝电路板外侧。D:RS-232串口,5口串口线。插头上▲与电路板上NC对齐。E:7路模拟量输入AD0~AD6,允许输入0~5V模拟量,主要用于传感器信号采集。电路板外侧是地(对应“-”号),中间是电源(对应“+”号),内侧是信号输入线。F:12路PWM舵机控制PW0~PW11,分成了4组。舵机引线是三芯杜邦头,棕色线是地,橙色线是电源,黄色线是信号线。棕色线在电路板外侧。G:16路I/O口,在MRcommander中可以被配置为输入或者输出。如果被配置为输入,主要用于采集开关、数字式传感器的状态。如果被配置为输出,高电平为控制低电平为0,可以用于驱动LED、微型电机等。其中靠近电路板外侧器电源电压,是地,中间是电源,内侧是信号线。H:AVR单片机在线编程接口。控制器上使用AVRATMega128微处理器,具备在线编程功能。交编叉译好的二进制文件可以通过该接口下载到处理器内置的FLASH中运行。I:控制卡功能选择拨码开关,1)第1、2路ON,第3、4路OFF:通过RS232与上第1、2路OFF,第3、4路ON:通过标准总线与上位机通讯。2)第5、6路用来选择波特率。第6位第5位波特率共8路。第一路拨到ON为接通。位机通讯;00110101115200384001920096003)第7路用于选择开机状态。4)第8路保留。本卡使用:87654321保留OFFOFFONOFFOFFONON(3)连接线1)连接舵机线:棕色地线在电路板外侧。舵机次从1到4号,或者从4号从1号。2)连接下载线:并口下载线与电路板的H区的5针插头连接。注意方向。3)连接电源线:上电后,控制卡上若正常,红黄两色指示灯会亮。缆:顺序必须按机体的头尾顺序依图3机器蠕虫的初始状态(4)为机器人编写程序和我们自己编写的C语言程序有关的只有Public.h,Usertask.h,USERTASK.C,其他都是系统文件。Public.h文件作用:为方便编程进行的预定义,以及将实际电路与程序联系进行的一些3机器人技术实验指导书预操作。Usertask.h文件作现对机器人的控制:12路舵机IO口的设置函数,AD口的读取函数灯。这些函数的定义以及代码在其他几个系统文件里。USERTASK.C文件作rc_moto_control(array_rc):12路舵机控制函数array_rc舵机控制数组,数组长度24,可控制12路舵机标角度值,array_rc[奇数]舵机运动速度值。array_rc[0]=90+20,目标角度为正20度,中位为0度(对应数值90)。取值范围为0~180度。舵机运动速度取值范围0~255。dc_moto-control(array_dc):4路电机用:控制卡功能函数的外部声明,通过这些声明可以在USERTASK.C中调用这些外部函数,实的控制函数,4路电机的控制函数,用:自己编写程序实现各种动作。i.。array_rc[偶数]为舵机目ii.控制函数,可控制4路电机array_dc电机控制数组,数组长度8。能控制4路电机。array_dc[偶数]为电机转速,array_dc[奇数]为电机转动时间。如:array_dc=0,0为正转最大转速,128代表电机停转,254为反转最大转速,范围不能超过0~254。转动时间的单位0.1s。以舵机控制例程:#include"Public.h"#include"Usertask.h"voiduser_task(void){uint8array_rc[23]={0};//舵机控制数组长度为24,可控制12路舵机,舵机运动函数要求array_rc[偶数]为舵机目标角度值,array_rc[奇数]为舵机运动速度值array_rc[0]=90+20;//舵机1,中位为0度(对应数值90),目标角度+20度。取值范围0-180,超过此范围程序会丢弃此数据array_rc[1]=170;//舵机1,速度为170。取值范围0-255,超过范围程序会丢弃此数据array_rc[2]=90-20;//舵机2目标角度设置array_rc[3]=170;//舵机2转动速度设置array_rc[4]=90-20;//舵机3array_rc[5]=170;array_rc[6]=90+20;//舵机4array_rc[7]=170;rc_moto_control(array_rc);//将舵机运动信息交给舵机运动函数,实现舵机运动delay(50);//延时50*20MS=1S,给舵机提供反应时间,此反应时间应大于舵机实际运动所需时间array_rc[0]=90;array_rc[1]=170;array_rc[2]=90;array_rc[3]=170;array_rc[4]=90;array_rc[5]=170;array_rc[6]=90;array_rc[7]=170;4机器人技术实验指导书rc_moto_control(array_rc);delay(50);}要控制舵机1(即连接到pw0的舵机),那么只需给数组元素array_rc[0]和array_rc[1]赋予相应的数值90+20、170即可,170代表着舵机的速度,90是舵机的中位角度数,那么90+20意味着舵机将向正方向以170的速度转过20度。最后将数组返回给舵机控制函数,即rc_moto_control(array_rc)。这样控制卡,就知道我们想要实现的对于舵机的如何控制了。(5)编译程序在完成上面对Usertask.c的修改编辑后,保存文件,按F7对整个工程进行编译(快捷按键,如上图右侧红笔圈出所示),生成*.hex文件(8.4.1编写C程序实现对12路舵机的控制的default文件夹内)。然后用并口下载线将电脑的并口与MultiFLEX控制卡的程序下载口连接(注意GND与控制卡I的区GND相配),然后给控制卡通电、,并且将前面生成的MultiFLEX.hex文件烧写至MultiFLEX控制卡中。匹(6)下载程序打开PonyProg2000软件,其界面如下所示:5机器人技术实验指导书连接完成后给控制卡通上电源(程序烧写过程中不允许断电,请确保电源的可靠性)。然后在刚才打开的PonyProg2000中点击“File——》OpenDeviceFile”或者点击图标打开我们前面生成的*.hex文件(编写C程序实现对12路舵机的控制的应该在“8.4.1default”文件夹中),然后点击“Command——》WriteAll”或者点击图标,然后程序就会开始烧写至控制卡里面。看到出现“Writesuccessful”时,便说明我们的程序已经下载成功,这是4路舵机开6机器人技术实验指导书始呈周期性运动,其形状宛如一条游动的小蛇。实验二机器人传感-控制-决策实验【实验目的】(1)了解典型机器人的组成,(2)通过搭建机器人,熟悉机器人构型设计。(3)通过使用传感器,熟悉机器人常用传感器。(4)通过控制机器人完成特定任务,掌握利用传感器感知环境信息,并控制机器人。【实验设备】博创机器人套件:A、B箱【实验内容】搭建典型机器人(机器人构型,从以下选一:四自由度机械臂、简易四足机器人、挖掘作业机器人、仿生蛇形机器人、全向运动作业机器人、仿生机器狗或者设计自己的机器人构型),并控制机器人根据传感器反馈信息完成一定任务。【实验步骤】(1)首先利用博创套件,搭建机器人构型,如四自由度机械臂。图1(2)安装传感器。(3)编写、调试、下载。8.5.1自主避障机器人实验环境:7机器人技术实验指导书已嵌入WinAVR的AVRStudio4.12实验结果:开机后机器人会向前运动,当检测到障碍物之后机器人会先后退一定距离,然后根据接收障碍物的传感器不同采取不同的转向,然后机器人继续向前运动,当遇到障碍物之后再进行判断,如此循环。**************************************************************/#include"public.h"包含的头文件,前面已经提到#include"Usertask.h"voiduser_task(void){uint8array_dc[7]={0};//电机控制数组uint8array_rc[23]={0};//舵机控制数组uint16temp16;定义16位变量,用来保存传感器返回的数值gpio_mode_set(0);//设置16位IO模式全为输入,使用传感器时,必须将IO口设置为输入,这样单片机才能得到返回数值temp16=read_gpio();//读取16位IO信息至temp16if((temp16&0x0003)==3)//红外传感器均为高电平时(红外传感器检测到没有障碍时为输出高电平即为1)此时电机转动5秒,(相当于机器人直行){array_dc[0]=0;//电机1,正转最大速度(0为正转最大转速,0xFE=254为转反最大转速,0x80=128代表电机停止)。范围为0-254,超过此范围程序会丢弃此数据,电机控制数组,与舵机控制类似,偶数元素控制速度(包括正反方向)array_dc[1]=50;//电机1,50×0.1秒转动时间。范围为0-255,超过此范围程序会丢弃此数据奇数元素控制转动时间。array_dc[2]=0xFE;//电机2array_dc[3]=50;array_dc[4]=0;//电机3array_dc[5]=50;array_dc[6]=0xFE;//电机4array_dc[7]=50;dc_moto_control(array_dc);将数组命令返回给函数,程序执行到此时,电机便开始执行刚刚赋值的命令。}elseif(((temp16&0x0003)==2)||((temp16&0x0003)==0))//数字IO区(G区)IO0口所接红外传感器为低电平(右红外传感器检测到障碍)或者两个传感器均为低电平时(两个传感器都检测到障碍)电机左,转蜂鸣器发声{beep_set(5);//蜂鸣器发声0.5秒蜂鸣器控制函数,直接调用,赋值即可//以最高速度后退array_dc[0]=0xFE;array_dc[1]=5;//0.5秒8机器人技术实验指导书array_dc[2]=0;array_dc[3]=5;array_dc[4]=0xFE;array_dc[5]=5;array_dc[6]=0;array_dc[7]=5;dc_moto_control(array_dc);delay(30);//给电机反应时间30×20MS=0.6s,此反应时间应大于电机实际运动时间//机器人转向array_rc[0]=90+20;//舵机1,中位为0度(对应数值90),目标角度+20度。取值范围0-180,超过此范围程序会丢弃此数据array_rc[1]=170;//舵机1,速度为170。取值范围0-255,超过此范围程序会丢弃此数据array_rc[2]=90-20;//舵机2目标角度设置array_rc[3]=170;//舵机2转动速度设置array_rc[4]=90-20;//舵机3array_rc[5]=170;array_rc[6]=90+20;//舵机4array_rc[7]=170;rc_moto_control(array_rc);delay(50);//延时50*20MS=1S,给舵机提供反应时间,此反应时间应大于舵机实际运动所需时间array_dc[0]=0x80+55;//电机速度为+55array_dc[1]=10;array_dc[2]=0x80+55;array_dc[3]=10;array_dc[4]=0x80+55;array_dc[5]=10;array_dc[6]=0x80+55;array_dc[7]=10;dc_moto_control(array_dc);delay(50);//延时50*20MS=1S//机器人恢复直线运动array_rc[0]=90;array_rc[1]=170;array_rc[2]=90;array_rc[3]=170;array_rc[4]=90;array_rc[5]=170;array_rc[6]=90;array_rc[7]=170;9机器人技术实验指导书rc_moto_control(array_rc);delay(50);//延时50*20MS=1S,给舵机提供反应时间,此反应时间应大于舵机实际运动所需时间}else//(右侧红外传感器检测到障碍)电机左转,蜂鸣器发声{beep_set(5);//蜂鸣器发声0.5秒array_dc[0]=0xFE;//后退0.5秒array_dc[1]=5;array_dc[2]=0;array_dc[3]=5;array_dc[4]=0xFE;array_dc[5]=5;array_dc[6]=0;array_dc[7]=5;dc_moto_control(array_dc);delay(30);//给电机反应时间30×20MS=0.6sarray_rc[0]=90+20;//舵机1,中位为0度(对应数值90),目标角度+20度。取值范围0-180,超过此范围程序会丢弃此数据array_rc[1]=170;//舵机1,速度为170。取值范围0-255,超过此范围程序会丢弃此数据array_rc[2]=90-20;array_rc[3]=170;array_rc[4]=90-20;array_rc[5]=170;array_rc[6]=90+20;array_rc[7]=170;rc_moto_control(array_rc);//机器人转向delay(50);//延时50*20MS=1S,给舵机提供反应时间,此反应时间应大于舵机实际运动所需时间array_dc[0]=0x80-55;//电机速度-5

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论