机器人学课程实验报告

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

机器人课程实验报告

(二)工业机器人的标定

一.实验目的

1.掌握工业机器人的标定原理和算法;

2.学习测量臂的使用方法;

3.学习和使用Matlab等分析与计算软件;

二.实验步骤(按小组进行,分组名单与时间安排和上次实验一样,如时间不便,可与其他同学调换)

1.在各关节转交范围内随机产生10组转角数据,或利用示教器调整机器人位姿并从示教器中读取10组转

角数据;

2.编制标定程序,要求迭代计算出的参数误差的最大绝对值小于10-10;

3.实验任务分配:**(名义矩阵、实际矩阵的计算)、***(实验数据处理、关系矩阵、误差求取、计算主

程序、辅助程序等)

三.实验结果

1.所建立的IRB120型机器人的坐标系说明(配图说明,要遵守DH规则,并列表说明各关节DH参数的

初始值)各个关节DH参数的初始值如下表所示:

对于关节2,b采用的是改进DH参数beta

2.小组利用测量臂测量得到的10组末端位姿数据,以及机器人基础坐标系的测量结果(只写拟合后的结

果)

本组(group2)的测量结果如下表

3.列表说明每次迭代计算的结果(参数误差的最大绝对值小于10-10时停止迭代)

使用数据为2,3,4,5组同学的40组数据

运行方法:

1:新建一个工作空间,加载angle2-angle5设定的thita角,保存在angle变量(40*6)中;

2:加载measure2-measure5的数据,分别执行choose.m文件进行筛选,结果保存在r变量(132*6)中;3:运行sk.m;

4:执行initi.m可以回到开始状态重新进行计算;

4.标定程序代码(要求代码条理清晰,并具有适当的解释与说明)

子程序

% Cali.m 将参数误差dnom加入名义参数矩阵nominal,求取40组设置thita值下的名义矩阵Pt;nominal= nominal+dnom; %将参数误差加入参数矩阵,起始时候误差设置为0

for i=1:40

kk=nominal;

kk(:,4)=kk(:,4)+(angle(i,:)/180*pi)';

T=eye(4);

for p=1:6

b=kk(p,:);

if(p==2) %由于关节2和3z轴平行,因此采用改进

% 的DH参数,此处需要有一个判断,为此用了2个自定义函数

TranTi和TransTi

%*******************注:TranTi和TransTi*********************************************% function B=tranTi(a,beta,alpha,thita)

B= [ cos(beta)*cos(thita) - sin(alpha)*sin(beta)*sin(thita), -cos(alpha)*sin(thita),

sin(beta)*cos(thita) + cos(beta)*sin(alpha)*sin(thita), a*cos(thita);

cos(beta)*sin(thita) + sin(alpha)*sin(beta)*cos(thita), cos(alpha)*cos(thita),

sin(beta)*sin(thita) - cos(beta)*sin(alpha)*cos(thita), a*sin(thita);

-cos(alpha)*sin(beta), sin(alpha),

cos(alpha)*cos(beta), 0;

0, 0, 0, 1];

**********************************************************************************

function A=transTi(a,b,alpha,thita)

%求其次变换矩阵

A=[cos(thita) -cos(alpha)*sin(thita) sin(alpha)*sin(thita) a*cos(thita);

sin(thita) cos(alpha)*cos(thita) -sin(alpha)*cos(thita) a*sin(thita);

0 sin(alpha) cos(alpha) b ;

0 0 0 1 ];

%***********************************************************************************% M=tranTi(b(1),b(2),b(3),b(4));

else

M=transTi(b(1),b(2),b(3),b(4));

end

T=T*M;

end

Pt(:,:,i)=T; %将标称矩阵结果保存在三维矩阵中;

end

clear p M T i b %清除不必要的参数,使工作空间整洁

***************************分割线*****************************************************

***************************************************************************************** %cali1.m 由保存在132*6的r矩阵中的测量臂测量结果求出实际矩阵pr

%%求出实际矩阵

i=1;

%---------------------- 程序说明------------------------------------------------------------------------------

% 测量结果的数据保存在r矩阵中132*6每33行是一组同学测量的

% 在33行其中前30行是末端位姿,后三行是ABB基础坐标系相对于测量臂

% 因此分4组i=1:4进行考虑;

% 最后需要将末端位姿转换到机器人基础坐标系里面去

%-----------------------------------------------------------------------------------------------------------------------

for m=1:4

q=33*m-2;

while i

k=[r(i,4),r(i,5),r(i,6)];

k=k/norm(k);

j=[r(i+1,1)-r(i+2,1),r(i+1,2)-r(i+2,2),r(i+1,3)-r(i+2,3)];

j=j/norm(j);

A(:,1)=cross(j,k);

A(:,2)=j;

A(:,3)=k;

A(:,4)=[r(i+1,1),r(i+1,2),r(i+1,3)];

A=[A;0 0 0 1];

pr(:,:,(i+2)/3)=A;

相关文档
最新文档