机器人学课程实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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;