Baocao TNROBOT
Baocao TNROBOT
BÁO CÁO
THÍ NGHIỆM KỸ THUẬT ROBOT
2
%% Print Reference Frame 0
if get(handles.checkbox1,'value')==1
Print_Reference_Frame(p0,x0,y0,z0,0);
end
function Plot_Robot(handles,theta1,theta2,theta3,theta4)
global d1 a2 a3 a4 a5;
Parameter
DH = [d1, theta1 , 0 , 90;
0 , theta2 + 90, a2, 0 ;
0 , -90 , a3, 0 ;
0 , theta3 , a4, 0 ;
0 , theta4 , a5, 0 ];
A0_1 = Matrix_Link(DH(1,1),DH(1,2),DH(1,3),DH(1,4));
A1_1p = Matrix_Link(DH(2,1),DH(2,2),DH(2,3),DH(2,4));
A1p_2 = Matrix_Link(DH(3,1),DH(3,2),DH(3,3),DH(3,4));
A2_3 = Matrix_Link(DH(4,1),DH(4,2),DH(4,3),DH(4,4));
A3_4 = Matrix_Link(DH(5,1),DH(5,2),DH(5,3),DH(5,4));
A0_2 = A0_1*A1_1p*A1p_2;
A0_3 = A0_1*A1_1p*A1p_2*A2_3;
A0_4 = A0_1*A1_1p*A1p_2*A2_3*A3_4;
Min_X = str2double(get(handles.edit_Min_X,'String'));
Max_X = str2double(get(handles.edit_Max_X,'String'));
Min_Y = str2double(get(handles.edit_Min_X,'String'));
Max_Y = str2double(get(handles.edit_Max_X,'String'));
Min_Z = str2double(get(handles.edit_Min_Z,'String'));
Max_Z = str2double(get(handles.edit_Max_Z,'String'));
3
Min_View = str2double(get(handles.edit_view_min,'String'));
Max_View = str2double(get(handles.edit_view_max,'String'));
opacity = get(handles.slider_opacity,'value');
set(handles.edit_opacity,'string',num2str(100*opacity));
cla(handles.axes3,'reset');
rotate3d(handles.axes3,'on')
set(handles.axes3,'View', [Min_View, Max_View]);
axis([Min_X Max_X Min_Y Max_Y Min_Z Max_Z]);
hold(handles.axes3,'on');
grid(handles.axes3,'on');
Plot_Link_1(opacity,theta1);
Plot_Link_2(opacity,theta1,theta2);
Plot_Link_3(opacity,theta1,theta2,theta3);
Plot_Link_4(opacity,theta1,theta2,theta3,theta4);
RPY_1 = Roll_Pitch_Yaw(A0_1);
set(handles.text_X_1,'string',round(A0_1(1,4),3));
set(handles.text_Y_1,'string',round(A0_1(2,4),3));
set(handles.text_Z_1,'string',round(A0_1(3,4),3));
set(handles.text_Roll_1,'string',num2str(RPY_1(1),'%.3f'));
set(handles.text_Pitch_1,'string',num2str(RPY_1(2),'%.3f'));
set(handles.text_Yaw_1,'string',num2str(RPY_1(3),'%.3f'));
RPY_2 = Roll_Pitch_Yaw(A0_2);
set(handles.text_X_2,'string',round(A0_2(1,4),3));
set(handles.text_Y_2,'string',round(A0_2(2,4),3));
set(handles.text_Z_2,'string',round(A0_2(3,4),3));
set(handles.text_Roll_2,'string',num2str(RPY_2(1),'%.3f'));
set(handles.text_Pitch_2,'string',num2str(RPY_2(2),'%.3f'));
set(handles.text_Yaw_2,'string',num2str(RPY_2(3),'%.3f'));
RPY_3 = Roll_Pitch_Yaw(A0_3);
set(handles.text_X_3,'string',round(A0_3(1,4),3));
set(handles.text_Y_3,'string',round(A0_3(2,4),3));
set(handles.text_Z_3,'string',round(A0_3(3,4),3));
set(handles.text_Roll_3,'string',num2str(RPY_3(1),'%.3f'));
set(handles.text_Pitch_3,'string',num2str(RPY_3(2),'%.3f'));
set(handles.text_Yaw_3,'string',num2str(RPY_3(3),'%.3f'));
RPY_EE = Roll_Pitch_Yaw(A0_4);
set(handles.text_X_EE,'string',round(A0_4(1,4),3));
set(handles.text_Y_EE,'string',round(A0_4(2,4),3));
set(handles.text_Z_EE,'string',round(A0_4(3,4),3));
set(handles.text_Roll_EE,'string',num2str(RPY_EE(1),'%.3f'));
set(handles.text_Pitch_EE,'string',num2str(RPY_EE(2),'%.3f'));
set(handles.text_Yaw_EE,'string',num2str(RPY_EE(3),'%.3f'));
if get(handles.checkbox1,'value')==1
Reference_Frame(handles,theta1,theta2,theta3,theta4)
end
if get(handles.checkbox1,'value')==0
Reference_Frame(handles,theta1,theta2,theta3,theta4)
end
if get(handles.checkbox2,'value')==1
4
Reference_Frame(handles,theta1,theta2,theta3,theta4)
end
if get(handles.checkbox2,'value')==0
Reference_Frame(handles,theta1,theta2,theta3,theta4)
end
if get(handles.checkbox3,'value')==1
Reference_Frame(handles,theta1,theta2,theta3,theta4)
end
if get(handles.checkbox3,'value')==0
Reference_Frame(handles,theta1,theta2,theta3,theta4)
end
if get(handles.checkbox4,'value')==1
Reference_Frame(handles,theta1,theta2,theta3,theta4)
end
if get(handles.checkbox4,'value')==0
Reference_Frame(handles,theta1,theta2,theta3,theta4)
end
if get(handles.checkbox5,'value')==1
Reference_Frame(handles,theta1,theta2,theta3,theta4)
end
if get(handles.checkbox5,'value')==0
Reference_Frame(handles,theta1,theta2,theta3,theta4)
end
if get(handles.checkbox6,'value')==1
Reference_Frame(handles,theta1,theta2,theta3,theta4)
end
if get(handles.checkbox6,'value')==0
Reference_Frame(handles,theta1,theta2,theta3,theta4)
end
end
5
theta1 = atan2d(py, px);
t1 = theta1;
pr = sqrt(px^2+py^2);
Px = pr;
Py = pz - d1;
Pwx = Px - a4*cosd(Phi);
Pwy = Py - a4*sind(Phi);
c3 = (Pwx^2 + Pwy^2 - a2^ 2 - a3^2)/(2*a2*a3);
s3 = [-sqrt(1-c3^2), sqrt(1-c3^2)];
%theta3_ = atan2d(s3, [c3,c3]);
theta3_ = atan2d(s3, c3);
theta3 = theta3_ + alpha;
c2 = ((a2 + a3*cosd(theta3_))*Pwx +
(a3*sind(theta3_))*Pwy)/(Pwx^2+Pwy^2);
s2 = ((a2 + a3*cosd(theta3_))*Pwy -
(a3*sind(theta3_))*Pwx)/(Pwx^2+Pwy^2);
theta2_ = atan2d(s2, c2);
theta2 = theta2_ - alpha;
theta4 = Phi - theta2_ - theta3_;
t2 = theta2;
t3 = theta3;
t4 = theta4;
end