坐标转换模型文档格式.docx
《坐标转换模型文档格式.docx》由会员分享,可在线阅读,更多相关《坐标转换模型文档格式.docx(13页珍藏版)》请在冰点文库上搜索。
m为尺度参数,(w1w2w3)分别为坐标轴的旋转参量(角度),构成的旋转矩阵分别为:
分别将R1R2R3代入上式,可得:
当旋转角度w1w2w3很小时(<
=10),cos(w)=1,sin(w)=0;
在误差允许范围内可以将模型简化为:
(同样七参数模型)
四参数模型是在七参数模型的特例,没有考虑坐标轴的旋转量,只考虑坐标轴的平移。
总结:
类似布尔莎模型(以坐标原点为参考点),还有莫洛金斯基坐标模型(以目标点为变换中心)、武测转换模型和范士转换模型(以控制网参考点的站心地平坐标系的三个坐标轴为旋转轴),这些坐标转换模型很容易实现相关坐标在不同坐标系的转换,但是参考位置的偏移向量的相关参数,在实际运用中这些参量是很难测定的,并且受地球重力等物理因素的影响,两个坐标系统即使经过相似变换,仍可能存在较大的残差,所以这些模型适用于简单且规则模型中。
④程序:
clc
clearall
dX=input('
pleaseinputvalueofdX='
);
dY=input('
pleaseinputvalueofdY='
dZ=input('
pleaseinputvalueofdZ='
w1=input('
pleaseinputvalueofw1='
w2=input('
pleaseinputvalueofw2='
w3=input('
pleaseinputvalueofw3='
m=input('
pleaseinputvalueofm='
a=sind(w1);
b=cosd(w1);
c=sind(w2);
d=cosd(w2);
e=sind(w3);
f=cosd(w3);
r1=[100;
0ba;
0-ab]
r2=[d0-c;
010;
c0d]
r3=[fe0;
-ef0;
001]
X=input('
pleaseinputvalueofX='
Y=input('
pleaseinputvalueofY='
Z=input('
pleaseinputvalueofZ='
aa=[dX;
dY;
dZ];
bb=(1+m)*r3*r2*r1*[X;
Y;
Z];
cc=aa+bb;
X1=cc
(1)
Y1=cc
(2)
Z1=cc(3)
选取平移参数(dXdYdZ)=(111),旋转角度(w1w2w3)=(000),尺度参量m取1,选取原坐标中坐标点(XYZ)=(111),则该坐标在新坐标中的坐标值(X1Y2Z2)=(333);
根据结果可知,程序运行正确。
2.大地坐标与空间坐标系的相互转换(参数ab,跟选定的椭球有关)
1)大地坐标向空间坐标系的转换
设P点的大地坐标为(LBH),其对应的球心直角坐标为(XYZ),若P点在椭球面上,则H=0,根据图1所示的三角关系可列出方程:
X=xcos(L)
Y=xsin(L)
Z=y
由图2可见,TP是过P点子午线的切线,与x轴夹角是90°
+B:
dy/dx=-cot(B)
将子午圈椭圆方程x^2/a^2+y^2/b^2=1和第一偏心率公式e=(a^2-b^2)^0.5/a带入上式:
Dy/dx=-cot(B),可得:
将卯酉圈方程N=a/(1-e^2*sin^2(B))^0.5带入上式得:
即将大地坐标(LBH)带入,可得对应的球心坐标值(XYZ)。
e:
第一偏心率
N:
卯酉圈的半径
b:
椭球短半径
a:
椭球长半径
大地坐标是世界公用的最方便的坐标系统,以大地经度L、地纬度B、大地高H来表示空间某一点的位置。
0表示椭球中心,NGS为起始大地子午面,WAE为赤道面,地面点P的法线P-Kp交椭球面于P点,NGS为P地的子午面。
则地面点P的大地坐标定义为:
大地纬度是B-PKp,与赤道面WAE的夹角,从赤道面开始起算,以北为正(0度-90度),称为北纬,以南为负(0度-90度,称为南纬。
大地经度是L-P地的子午面NGS与起始子午面NGS所构成的二面角,以东为正(0度-180度),称为东经,以西为负(0度-180度),称为西经;
大地高H-P
沿法线方向到椭球体的P
P,从椭球面为起算标准,以外为正,以内为负。
大地高H与水准测量中的正常高H^N或正高H^N有以下关系H=H^N+N=H^V+&
式中&
是高程异常,N是大地水准面差距。
其中第一偏心率e和第二偏心率等候可以由长短半径求出!
程序:
clearall
b=input('
pleaseinputvalueofb='
%短半径%
a=input('
pleaseinputvalueofa='
%长半径%
B=input('
pleaseinputvalueofB='
L=input('
pleaseinputvalueofL='
H=input('
pleaseinputvalueofH='
c1=sind(B)
c2=cosd(B)
d1=sind(L)
d2=cosd(L)
e=(a^2-b^2)^0.5/a%第一偏心率%
N=a/(1-e^2*c1^2)^0.5%卯酉圈的半径%
X=(N+H)*c2*d2
Y=(N+H)*c2*d1
Z=[N*(1-e^2)+H]*c1
取a=6378140b=6356755.29L=30B=120H=0
结果:
2)空间坐标系转换为大地坐标
公式:
clc
N=input('
pleaseinputvalueofN='
%卯酉圈的半径%
X=input('
Y=input('
Z=input('
e1=((a^2-b^2)/b^2)^0.5%第二偏心率%
n=X^2+Y^2
w=atand(Z*a/(n^0.5*b))
v=sin(w)
u=cos(w)
den=Z+e1^2*b*v^3
mun=(n-e^2*a*u^3)^0.5
L=atand(Y/X)
B=atand(den/mun)
H=n^0.5/cos(B)-N
3.D-H坐标系的建立
关节的运动会对机械臂末端执行器的位姿产生影响,因此在进行运动学分析时,需要对每个关节指定一个参考坐标系。
在机械臂运动学分析过程中,当需要描述两坐标系间的位姿关系时,可以通过使用齐次变换矩阵来描述一个坐标系对另一坐标系的变换过程。
在机器人中,通常有两类关节:
转动关节和移动关节。
不同于人类的关节,一般机器人关节为一个自由度的关节,其目的是为了简化力学、运动学和机器人的控制。
转动关节提供了一个转动自由度,移动关节提供一个移动自由度,各关节间是以固定杆件相连接的。
机器人杆件是连接两个关节的固定物体(机械)。
机器人杆件的主要目的是用来保持该关节与各相关末端关节一个固定的关系。
对于D-H坐标系的建立思想,首先给每个关节指定坐标系,然后确定从一个关节到下一个关节进行变化的步骤,这体现在两个相邻参考坐标系之间的变化,将所有变化结合起来,就确定了末端关节与基座之间的总变化,从而建立运动学方程,进一步对其求解。
D-H坐标系的建立是通过推导坐标系间的其次变换矩阵来表示坐标系间的变换关系,当坐标系间的关系确定以后就可以建立运动学方程。
机械臂是用旋转关节或平移关节连接刚体连杠组成的,对连杆进行编号时按照从底座至末端执行器的顺序由低到高进行编号,固定的底座为杆件0,与其相连的连杆是杆件1,它们之间的关节编号为关节1;
与连杆1另一端相连的为连杆2,二者之间的连接关节为关节2,以此类推。
1.对于关节处坐标系的建立
1)Z轴应沿着第1个关节的运动轴;
2)X轴垂直于Zi-1和Zi轴,并且其指向为离开Zi-1轴的方向;
3)Y轴根据右手定则确定。
2.相关参数
由于泵车臂架各关节大部分是转动环节,则只需考虑转动参量。
即如果第i个关节为转动副,则θ为关节变量,其它的三个关节参量(ldα)为固定常量。
在连杆坐标系中,(θldα)合称为D-H参数,各参数的具体含义如下:
1)连杆长度l:
关节i轴线与关节i+1轴线之间的公垂线距离(在泵车臂架中l就是各长度);
2)连杆扭角α:
关节i轴线与关节i+1轴线的夹角,指向是从关节i绕公垂线转至关节i+1的方向(在泵车臂架中由于各节臂的伸展是在同一平面上的,所以扭角为零);
3)连杆偏移量(横距)d:
除第一个和最后一个连杆之外,其余相邻两连杆i-1和i通过关节i相连,因此关节轴线i有两条与之垂直的公法线,而这两条公法线之间的距离即为连杆偏移量(在泵车臂架中横距相对于臂架的长度可以忽略不计);
4)关节角θ:
关节z的相邻两条公垂线的夹角。
3.相应的算法
由于空间任一点p绕坐标系(XYZ)轴的旋转矩阵如下:
则我们可以通过下列几个运动由一个坐标系转换到另一个坐标系。
1)绕Zn轴旋转θ角,它使得Xn+1和Xn互相平行;
2)沿Zn轴平移dn+1距离,使得Xn和Xn+1共线;
3)沿Xn轴平移an+1的距离,使Xn和Xn+1的原点重合;
4)将Zn轴绕Xn+1轴旋转αn+1,使得Zn轴与Zn+1轴对准。
这样就可以实现从一个坐标系转换到另一个坐标系(其实转换过程不一定要选取x轴和z轴,但x轴和z轴是建立坐标系首先判定的两个轴,符合建立D-H坐标的思想,一旦两个坐标轴确立,另一个坐标轴也就确定了)。
其中对应的四个矩阵分别是:
则相邻两个关节点的变换矩阵是:
(以四节臂为例)
分别将关节参数带入可得(节臂数越多,变换矩阵越复杂):
将参数带入,可得工作平台的正运动方程:
5.注意事项
1)建立D-H坐标系的时候,第一个关节点的坐标选取是在规定一个默认坐标系的前提下建立的,而下一个坐标系的选取同样要依靠前一个坐标系才行:
2)在第一个关节点确定下来后,默认其初始高度h为零,之后的节点坐标是在其参考下给定的,要求其实际高度,必须还要用初始高度h减去左边运算的Z,才是实际的高度。
6.编程实现
a1=input('
pleaseinputvalueofa1='
%关节1的变量%
b1=input('
pleaseinputvalueofb1='
%关节1的扭转角%
c1=input('
pleaseinputvalueofc1='
%关节1的横距%
d1=input('
pleaseinputvalueofd1='
%关节1的杆长%
w1=sind(a1)
w2=cosd(a1)
v1=sin(b1)
v2=cosd(b1)
R1=[w2-w100;
w1w200;
0010;
0001]
R2=[1000;
0100;
001d1;
R3=[100b1;
R4=[1000;
0v2-v10;
0v1v20;
M=R1*R2*R3*R4
X=M(1,4)
Y=M(2,4)
Z=M(3,4)
上述matlab程序只是选取一个关节参数,实现相邻坐标的转化,在实际运用中关节参数不会只有一个,这就需要将坐标参数进行多次转换,有几个关节参数就要转换几次(即将关节矩阵进行相乘)