工业机器人期末考试复习资料Word格式文档下载.docx
《工业机器人期末考试复习资料Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《工业机器人期末考试复习资料Word格式文档下载.docx(24页珍藏版)》请在冰豆网上搜索。
上标表示选定的坐标系{A},此时有AP=[PXPYPZ]T
式中:
PX、PY、PZ是点P在坐标系{A}中的三个位置坐标分量,如图1.1所示。
图11空间任一点的坐标表示”
坐标轴的方向表示
住圏1.2屮,1、j、k分别表示宜角坐标系屮X、Y、Z坐标轴的单位矢量,,用齐次坐标表示之,则有图1.2坐标轴的方向表示
X=[lOOOJT
Y=[0100]T
Z=[0010]T
由上述可知,若规泄:
4*1列阵[abcw]T中第四个元素为零,且满足a2+b2+c2=l,则[abc0]T中a、b、c的表示某轴的方向;
4*1列阵[abcw]T中第四个元素不为零,则[abcw]T表示空间某点的位置。
图1.2中所示的矢量u的方向用41列阵可表达为:
u=[abc0]T(1.4)
a=cosor7b=cosyff,c=cos^
图1.2中所示的矢量u的起点O为坐标原点,用4*1列阵可表达为:
0=[0001]T
例用齐次坐标表示图13中所示的矢昼
觥矢量coscc=0,cosQ=0.866,cos”=0.5
[00.8660.50卩
矢量牡cosa=0.866,cos/^=0,cos^=0.5丰=[0.86600.50]T
矢量coscz=0.866rcos/7=0-5,cosy=0w=[0.8660.500]T
例1・2图16表示固连于连杆的坐标系{旳位于6点,-¥
b=2,
Ys=19可=0。
^XOY
图1・7那握物体Q的手部.
平面内,坐标系{B}相对固定坐标系{,4}有一个30°
旳偏转.试写出表示连杆位姿的坐标系{B}的4x4矩式。
解扁的方向列阵〃斯COS60^cos9(r0]\=[0.8660.5000.000of
Yb的方向列阵cos30。
cos90"
of=[-0.5000.8660.0000『.
為的方向列阵"
=[0°
°
000010000]丿
坐标系{B}的位置阵列P=[21
01]\
则动坐标系3}的47
矩阵表达式为"
0.866
-0.500
0.000
2.0
T*—
0.500
1.0
1—
0000
1000
00
1
例33图1.7表示手部抓握物体Q,物体是边长为2个单位的正立方体,写出表达该手部位姿的矩阵表达式。
解因为物体Q形心与手部坐标系OWFZ的坐标原点O'
相重合,则手部位置的4x1列阵为』
P=H111]\
手部坐标系工轴的方向可用单位矢量"
来表示:
"
“:
“=90°
Z?
=180\7=90%
=coscz=0tnY=cos/7=-11.
nz=cos/=0,
同理,手部坐标系尸轴与乙轴的方向可分别用单位矢量0和"
〜
根据式(1.8)可知,手韶位姿可用矩阵表示为a
二、坐标系与物休的平移変换"
点的平務的齐次变换公式(119)同样适用于坐标系、物体等的变换,第1.2.1节提到的算子左、右乘规则同样适于平務的齐次变换。
例1,6图1.14所示坐标系与物体的平務变换给出了下而三种情况:
动坐标系{£
相对于固定坐标系的Ao、%、Zo轴作(・1,2,2)平移后到{.『};
动坐标系{.4}相对于自身坐标系的A;
}\Z轴分别作(-1,2,2)平移后到{.f};
物体Q,相对于固定坐标系作(2,6,0)平移后到Q'
。
已知:
*
0-10f
1-1-111-11-f
-1001
n一
00002222
00-11
V-
00110011
0001
t
11111111
■■
写出坐标系⑷、{屮}以及物体Q的矩阵表达式。
仪
解动坐标丟V0的两个齐次坐标变换平移算子均为~
o
Tmns(AA\AZ)=
0一1
02
r°
■
_1
0"
2
-1
3
一1
2」
•0
A'
二Ti<
uis(—1.2.2).4=
W坐标糸屋动卷{.4}沿固定坐标糸作平榜变焕得米的,故算于左乘.式为“
{屮}坐标系晨皴玉⑷沿自身坐标系作平移变换得来的,式为“
■0-1011
「100-1
0102
0012
■0001J
[o001
4fr=.4Ti<
uis(-hl2)=
的矩阵表达
故算子右乘.{•『}的矩阵表达
物体Q的齐次坐标变换平层算子为A
Tnuis(AA:
AZ)=
故有“
Qf=Traiis(2.6.0)0=
6
8
11一1
022
100
111
旋转算子公式(必考)
Rot0⑵表示齐次坐标变换时绕Z轴的技动去次变换矩牲,又称旋转算子,旋转算子左乘表丞相对于固定坐标系进行变换,旋
转算子的内容为•,
c&
00
c彷co$&
:
s^=sin^下同©
“
冋浬,可写出绕X轴转动的旅转算子和绕r轴转动的旋转算亍:
ce
一胡
Rnt(D=
sB
cf)
_0
L
•C0
$6>
(T
Rot(K,^)=
■S0
c8
•
三、算子左、右乘规则
若相对固定坐标系进行变换,则算子左乘;
若相对动坐标系进行变换•则算子
0014
//=100-3
0107
留楔块从图1.8⑴至图gb)的所有变换都是相对于固定坐探系OMZ进行的,故各坐标变换算子应该依次左乘,即复合变换距阵・
'
I0041
■0I0o-
0100
-1000
0010
H=Trai)<
?
(4,0.0)Rot(Z・-90°
)=
.0001」
0二H0二Tnw(4.0.0)Rot(Z-90°
X)p
-11
11
66
1-1
连杆参数:
连杆长度连杆扭角连杆距离连杆转角。
第五章
机器人控制系统具有以下特点:
(1)机器人控制系统本质上是一个非线性系统:
(2)机器人控制系统是由多关节组成的一个多变控制系统,而且关节间具有耦合作用;
(3)机器人控制系统是一个时变系统:
机器人的位置控制可分为点位控制和连续控制。
PID控制是自动化中广泛使用的一种反馈控制,苴控制由比例单元(p)积分单元(i)和积分单元(D)组成,利用信号的偏差值,偏差的积分值偏差的微分值的组合来构成操作量,操作两种包括了偏差信号的现在,过去,未来三方面的信息,所以是一种经典的控制方式。
第六章
1传感器定义
传感器利用物体的物理化学变化,并将这些变化变换成电信号(电压,电流和频率)的装豊
传感器组成:
敏感元件转换元件和基本转换电路
敏感元件的基本功能是将某种不容易测量的物理量转换为易测虽的物理量。
转换元件的功能是将敏感元件输出的物理量转换为电量,它与敏感元件构成传感器的主要部分。
基本转换电路的功能是敏感元件产生的不易测量值的小信号进行变换,是传感器的信号输岀符合具体工业系统的要求。
机器人使用的传感器可分为内部传感器和外部传感器两大类。
(1)内部传感器是用于测量机器人自身状态的参数(如手臂间的角度)的功能元件。
(2)外部传感器用于测量与机器人作业有关的的外部信息,这些信息通常与机器人的目标识别,作业安全有关。
传感器的性能指标:
灵敏度线性度测量范围精度重复性分辨率响应时间抗干扰能力
位豊和位移传感器根据英工作原理和组成的不同多种形式,常见的有电阻式位移传感器,电容式位移传感器,编码式位移传感器,霍尔元件位移传感器磁栅式位移传感器
电位器式位移传感器可以分成两大类:
直线型电位器式位移传感器旋转型电位器式位移传感器
2光电编码器
根据测虽:
原理编码器可分为接触式和非接触式两种,接触式编码器采用电刷输出,以电刷接触到点区和绝缘区分别表示代码的1和0,非接触处编码器的敏感元件是光敏元件和磁敏元件,采用光敏元件时以透光区和不透光区表示代码1和0°
根据测出的信号,编码器可分为绝对式和增疑式两
实验部分
舵机的内部结构:
一般来说,我们用的舵机有以下几个部分组成:
直流电动机、减速器(减速齿轮组)、位置反馈电位计、控制电路板(比较器)。
舵机的输入线共有三根,红色在中间,为电源正极线,黑色线是电源负极(地线)线,黄色或者白色线为信号线。
其中电源线为舵机提供6V到7V左右电压的电源。
2、PWM信号控制精度制定
上而已经提到了八位单片机,我们的舵机需要的是方波信号。
单片机的精度直接影响了舵机的控制精度,这里就详细的说明一下。
我们采用的是8位STC12C5410ADCPU,其数据分辨率为256,那么经过舵机极限参数实验,得到应该将英划分为250份。
那么0.5mS—2.5Ms的宽度为2mS=2000uSa
2000uS-?
250=8uS
则:
PWM的控制精度为8us
我们可以以8uS为单位递增控制舵机转动与定位。
舵机可以转动185度,那么
185度4-250=0.74度,则:
舵机的控制精度为0.74度
o昴mu;
NIHH5Q
<
2.^mS
图4-4
我们在这里做了一些名词上的定义。
DIV是一个时间位置单位,一个DIV等于8us,关系入公式:
共185度,分为250个位置,每个位置叫1DIV。
则:
185一250=0.74度/DIV
PWM高电平函数:
0.5mS+NXDIV
OuSWNXDIVW2mS
0.5mSW0.5Ms+NXDIVW2.5mS
根据这些知识,我们就可以开始编程,并做一些初步的实验了,学会舵机控制是研究机器人的一个比较技术手段,需要完全掌握。
6根据动作需要将各端口输出通道按舵机LI的位置的数值大小进行排序
//
//函数原型:
voidsortingO
//函数名称:
排序子程序(SortingSubroutine)//功能:
对所有通道口的数值进行排序。
//参数:
〃返回值:
无
//
{
uchari=0j=0,x=0;
〃左义循环变量
〃为选择的输出通道提供低电平
kouchu|0]=0xFE:
//11111110
kouchu|l]=0xFD;
//11111101
kouchu[2]=0xFB;
//ninon
kouchu[3]=OxF7;
kouchu[4]=0xEF;
kouchu[5]=0xDF;
kouchu|6]=0xBF:
kouchu[7]=0x7F;
//11110111
//11101111
//11011111
//10111111
//01111111
〃通过冒泡法排序,将舵机目的位置数值按从小到大的顺序排列起来for(i=0;
i<
=6;
i++)
for(j=i+l:
j<
=7;
j++)
if(paixu_ncha[il<
paixu_ncha[j])
{〃交换数据
x=paixu_ncha[j];
paixu_ncha[j]=paixu_ncha[ij;
paixu_ncha[i]=x;
x=kouchu[j];
kouchu[j]=kouchu[i];
〃交换数据
kouchu[i]=x;
}
7、将排好序的数值进行'
差计算,得出每相邻的两个数值间的差值,用于累计延时获得NXDIV动作要求高电平时长。
voidN_value()
〃函数名称:
N差子程序(NpoorSubroutine)
//功能:
对临近数值做差,求出相对差值,用于延时。
uchari;
//定义循环变量
for(i=0;
paixu_ncha[i]=paixu_ncha[i]-paixu_ncha[i+l];
//N差计算
8、为舵机每一次动作提供间隔延时,用来控制其整体的动作速度
sao_wei(ucharsaowei)
扫尾子程序
控制舵机转动的速度和加速度
//影响:
//入口参数:
saowei,表示扫尾系数
voidsao_wei(ucharsaowei)
saowei;
dclay_500us();
〃调用延时500us函数
任务一:
如何让机器人摆头
主函数调用范例:
注:
减小舵机每次循环的增量可以增加动作的流畅度。
baitou(ucharent);
动作函数详解:
voidbaitou(ucharent)
uchari,j;
//建义循环变量
for(j=0;
j<
cnt;
j++)//同一动作整体执行ent次
100;
i++)//循环次数设左为100
position[l]++;
//控制1号舵机逆时针旋转,每次循环增量为1,身体右摆100PW_16();
//调用舵机输出子程序控制舵机运动
sao.wei(15);
//为机器人动作提供间隔延时7.5mS,控制机器人运动速度
}for(i=0;
200;
i++)//循环次数设泄为200
positionEl]-;
〃控制1号舵机顺时针旋转,每次循环增量为1,身体左摆200
PWM_16();
sao_wei(30);
//为机器人动作提供间隔延时15mS,控制机器人运动速度
//控制1号舵机逆时针旋转,每次循环增量为1,身体右摆100
PW_16();
任务二:
如何让机器人鞠躬
jugong(ucharstep,uchartimes):
voidjugong(ucharstep,uchartimes)
//泄义循环变量
//设左鞠躬次数
for(i=0;
i<
times;
i++)
for(j=0;
step;
//设左鞠躬幅度
每次循环增量为1,右腿
每次循环增量为1,左腿
position[0]++;
//控制0号舵机逆时针旋转,position[2]--;
//控制2号舵机顺时针旋转,PWM_16();
sao_wei(20);
positionEO]--;
//控制0号舵机顺时针旋转,position[2]++;
//控制2号舵机逆时针旋转,PWM_16();
delay_500ms0;
同时控制多部舵机时,虽然是依次进行设苣,但是舵机是在得到“PWM_16();
”中的动作命令后同步开始执行动作的。
任务三:
如何让机器人踢球
主函数调用范例:
tiqiuO;
动作函数详解:
voidtiqiuO
//立义循环变量
//左摆头
positionElJ--;
//抬右脚for(i=0;
50;
i++){
sao_wei(10);
//落右脚
positionEOj--;
//身体复位
position[l-++;
PWM_16();
sao_wei(30);
任务四:
如何让机器人左转、右转
turn.l(3);
//左转
turner(3);
//右转
(
voidturn_l(uchartimes){
for(j二0;
j++){
//左摆身,重心左移for(i=0;
40;
position[l]-=2;
sao_wei(15);
10;
{position[0]+=2;
〃重心中移
{position[l]+=l;
//磨擦转身
20;
{position[0]-=l;
position[l]―;
1)左转
(2)右转
voidturn_r(uchartimes){
j++){
//右摆身,重心右移for(i=0;
position[lj+=2;
//抬左脚for(i=0;
position[2j-=2;
//重心中移
positionE1」-=1;
//磨擦转身for(i=0;
position[2]+=1;
position[ll+=l;
}delay_500ms();
任务五:
如何让机器人行走
walking(ucharstep);
voidwalking(ucharstep)
uchari,j:
//右摆身,重心右移
30;
positionEl]+=2;
sao_wei(20);
〃前抬左脚,后抬右脚
5;
position[2]-=l;
position[0]-=l;
sao__wei(15);
//左摆身,重心左移
60;
////////////step步数//////////
for(j=