工业机器人期末考试复习资料文档格式.docx
《工业机器人期末考试复习资料文档格式.docx》由会员分享,可在线阅读,更多相关《工业机器人期末考试复习资料文档格式.docx(28页珍藏版)》请在冰豆网上搜索。
4臂部设计的基本要求:
(1)手臂应具有足够的承载能力和刚度
(2)导向性要好
(3)重量和转动惯量要小(4)运动要平稳定位精度要高
P36的题2—20要去理解
5手部的分类
根据用途手部可以分为手爪和工具两大类,手爪具有一定的通用性,工具用于进行某种作业。
根据其夹持原理,手部又可为机械钳爪式和吸附式两大类,其中吸附式手部还可以分为磁力吸附式和真空吸附式。
吸附式手部结构即为吸盘,主要有磁力吸附式和真空吸附式。
6行走机构
机器人可以分为固定式和行走式两种
行走机构按其运动轨迹可分为固定轨迹式和无固定轨迹式。
行走机构按其机构分为车轮式,步行式,履带式和其他方式。
第三章
计算题是课后1————6掌握
齐次坐标
一、空间任意点的坐标表示
在选定的直角坐标系{A}中,空间任一点P的位置可以用3 1的位置矢量AP表示,其左上标表示选定的坐标系{A},此时有AP = [PXPYPZ]T
式中:
PX、PY、PZ是点P在坐标系{A}中的三个位置坐标分量,如图所示。
坐标轴的方向表示
在图中,i、j、k分别表示直角坐标系中X、Y、Z坐标轴的单位矢量,,用齐次坐标表示之,则有图坐标轴的方向表示X = [1000]TY = [0100]TZ = [0010]T
由上述可知,若规定:
4 *1列阵[a b c w]T中第四个元素为零,且满足a2 + b2 + c2 = 1,则[abc0]T中a、b、c的表示某轴的方向;
4 ´
*1列阵[abcw]T中第四个元素不为零,则[abcw]T表示空间某点的位置。
图中所示的矢量u的方向用4 ´
1列阵可表达为:
u= [abc0]T
图中所示的矢量u的起点O为坐标原点,用4*1列阵可表达为:
O = [0001]T
旋转算子公式(必考)
连杆参数:
连杆长度连杆扭角连杆距离连杆转角。
第五章
机器人控制系统具有以下特点:
(1)机器人控制系统本质上是一个非线性系统;
(2)机器人控制系统是由多关节组成的一个多变控制系统,而且关节间具有耦合作用;
(3)机器人控制系统是一个时变系统;
机器人的位置控制可分为点位控制和连续控制。
PID控制是自动化中广泛使用的一种反馈控制,其控制由比例单元(p)积分单元(i)和积分单元(D)组成,利用信号的偏差值,偏差的积分值偏差的微分值的组合来构成操作量,操作两种包括了偏差信号的现在,过去,未来三方面的信息,所以是一种经典的控制方式。
第六章
1传感器定义
传感器利用物体的物理化学变化,并将这些变化变换成电信号(电压,电流和频率)的装置
传感器组成:
敏感元件转换元件和基本转换电路
敏感元件的基本功能是将某种不容易测量的物理量转换为易测量的物理量。
转换元件的功能是将敏感元件输出的物理量转换为电量,它与敏感元件构成传感器的主要部分。
基本转换电路的功能是敏感元件产生的不易测量值的小信号进行变换,是传感器的信号输出符合具体工业系统的要求。
机器人使用的传感器可分为内部传感器和外部传感器两大类。
(1)内部传感器是用于测量机器人自身状态的参数(如手臂间的角度)的功能元件。
(2)外部传感器用于测量与机器人作业有关的的外部信息,这些信息通常与机器人的目标识别,作业安全有关。
传感器的性能指标:
灵敏度线性度测量范围精度重复性分辨率响应时间抗干扰能力
位置和位移传感器根据其工作原理和组成的不同多种形式,常见的有电阻式位移传感器,电容式位移传感器,编码式位移传感器,霍尔元件位移传感器磁栅式位移传感器
电位器式位移传感器可以分成两大类:
直线型电位器式位移传感器旋转型电位器式位移传感器
2光电编码器
根据测量原理编码器可分为接触式和非接触式两种,接触式编码器采用电刷输出,以电刷接触到点区和绝缘区分别表示代码的1和0,非接触处编码器的敏感元件是光敏元件和磁敏元件,采用光敏元件时以透光区和不透光区表示代码1和0。
根据测出的信号,编码器可分为绝对式和增量式两
实验部分
舵机的内部结构:
一般来说,我们用的舵机有以下几个部分组成:
直流电动机、减速器(减速齿轮组)、位置反馈电位计、控制电路板(比较器)。
舵机的输入线共有三根,红色在中间,为电源正极线,黑色线是电源负极(地线)线,黄色或者白色线为信号线。
其中电源线为舵机提供6V到7V左右电压的电源。
2、PWM信号控制精度制定
上面已经提到了八位单片机,我们的舵机需要的是方波信号。
单片机的精度直接影响了舵机的控制精度,这里就详细的说明一下。
我们采用的是8位STC12C5410ADCPU,其数据分辨率为256,那么经过舵机极限参数实验,得到应该将其划分为250份。
那么的宽度为2mS=2000uS。
2000uS÷
250=8uS
则:
PWM的控制精度为8us
我们可以以8uS为单位递增控制舵机转动与定位。
舵机可以转动185度,那么185度÷
250=度,
舵机的控制精度为度
图4-4
我们在这里做了一些名词上的定义。
DIV是一个时间位置单位,一个DIV等于8us,关系入公式:
实际寄存器内的数值为:
(#01H)01———(#0FAH)250。
共185度,分为250个位置,每个位置叫1DIV。
PWM高电平函数:
+N×
DIV
0uS≤N×
DIV≤2mS
≤+N×
DIV≤
根据这些知识,我们就可以开始编程,并做一些初步的实验了,学会舵机控制是研究机器人的一个比较技术手段,需要完全掌握。
//────────────────────────────────────────
//函数原型:
voidsorting()
//函数名称:
排序子程序(SortingSubroutine)
//功能:
对所有通道口的数值进行排序。
//参数:
//返回值:
无
//┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈
{
uchari=0,j=0,x=0;
//定义循环变量
//为选择的输出通道提供低电平
kouchu[0]=0xFE;
//
kouchu[1]=0xFD;
kouchu[2]=0xFB;
kouchu[3]=0xF7;
kouchu[4]=0xEF;
kouchu[5]=0xDF;
kouchu[6]=0xBF;
kouchu[7]=0x7F;
//01111111
//通过冒泡法排序,将舵机目的位置数值按从小到大的顺序排列起来
for(i=0;
i<
=6;
i++)
for(j=i+1;
j<
=7;
j++)
if(paixu_ncha[i]<
paixu_ncha[j])
{//交换数据
x=paixu_ncha[j];
paixu_ncha[j]=paixu_ncha[i];
paixu_ncha[i]=x;
x=kouchu[j];
kouchu[j]=kouchu[i];
//交换数据
kouchu[i]=x;
}
}
6根据动作需要将各端口输出通道按舵机目的位置的数值大小进行排序
7、将排好序的数值进行N差计算,得出每相邻的两个数值间的差值,用于累计延时获
//───────────────────────────────────────
voidN_value()
N差子程序(NpoorSubroutine)
对临近数值做差,求出相对差值,用于延时。
//┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈
uchari;
//定义循环变量
paixu_ncha[i]=paixu_ncha[i]-paixu_ncha[i+1];
//N差计算
得N×
DIV动作要求高电平时长。
sao_wei(ucharsaowei)
扫尾子程序
控制舵机转动的速度和加速度
//影响:
//入口参数:
saowei,表示扫尾系数
voidsao_wei(ucharsaowei)
//定义循环变量
saowei;
delay_500us();
//调用延时500us函数
8、为舵机每一次动作提供间隔延时,用来控制其整体的动作速度
任务一:
如何让机器人摆头
主函数调用范例:
动作函数详解:
任务二:
如何让机器人鞠躬
jugong(ucharstep,uchartimes);
voidjugong(ucharstep,uchartimes)
{
uchari,j;
//定义循环变量
times;
i++)//设定鞠躬次数
{
for(j=0;
step;
j++)//设定鞠躬幅度
{
position[0]++;
//控制0号舵机逆时针旋转,每次循环增量为1,右腿
position[2]--;
//控制2号舵机顺时针旋转,每次循环增量为1,左腿
PWM_16();
sao_wei(20);
}
j++)
position[0]--;
//控制0号舵机顺时针旋转,每次循环增量为1,右腿
position[2]++;
//控制2号舵机逆时针旋转,每次循环增量为1,左腿
}
delay_500ms();
注:
同时控制多部舵机时,虽然是依次进行设置,但是舵机是在得到“PWM_16();
”中的动作命令后同步开始执行动作的。
任务三:
如何让机器人踢球
tiqiu();
voidtiqiu()
//左摆头
for(i=0;
100;
{
position[1]--;
PWM_16();
sao_wei(30);
//抬右脚
50;
position[0]++;
sao_wei(10);
//落右脚
position[0]--;
//身体复位
position[1]++;
任务四:
如何让机器人左转、右转
turn_l(3);
//左转
turn_r(3);
//右转
(
voidturn_l(uchartimes)
for(j=0;
//左摆身,重心左移
for(i=0;
40;
{
position[1]-=2;
PWM_16();
sao_wei(15);
}
//抬右脚
10;
position[0]+=2;
//重心中移
position[1]+=1;
//磨擦转身
20;
position[0]-=1;
position[1]--;
sao_wei(30);
}
1)左转
(2)右转
voidturn_r(uchartimes)
//右摆身,重心右移
position[1]+=2;
//抬左脚
position[2]-=2;
position[1]-=1;
position[2]+=1;
}
任务五:
如何让机器人行走
walking(ucharstep);
voidwalking(ucharstep)
//右摆身,重心右移
30;
position[1]+=2;
sao_wei(20);
//前抬左脚,后抬右脚
5;
position[2]-=1;
position[0]-=1;
sao_wei(15);
60;
position[1]-=2;
////////////step步数//////////
//前抬右脚,后抬左脚
for(i=0;
position[2]+=2;
position[0]+=2;
//右摆身,重心右移
position[1]+=3;
//左半身跟上,抬左脚
position[2]-=2;
position[0]-=2;
//左摆身,重心左移
position[1]-=3;
//右半身跟上
position[2]+=1;
position[0]+=1;
delay_500ms();