matlab实现puma机器人工作空间.docx
《matlab实现puma机器人工作空间.docx》由会员分享,可在线阅读,更多相关《matlab实现puma机器人工作空间.docx(8页珍藏版)》请在冰点文库上搜索。
matlab实现puma机器人工作空间
matlab实现PUMA机器人的工作空间
PUMA机器人的工作空间主要有前3个关节决定,后3个关节决定姿态。
程序编写好了,请看运行结果!
步长为20度
步长为10度
步长为5度
步长为3度
步长为2度
步长为5度时的XY平面
步长为5度时的XZ,YZ平面
编写时的界面,为运行
源代码如下:
functionvarargout=mypuma(varargin)
gui_Singleton=1;
gui_State=struct('gui_Name',mfilename,...
'gui_Singleton',gui_Singleton,...
'gui_OpeningFcn',@mypuma_OpeningFcn,...
'gui_OutputFcn',@mypuma_OutputFcn,...
'gui_LayoutFcn',[],...
'gui_Callback',[]);
ifnargin&&ischar(varargin{1})
gui_State.gui_Callback=str2func(varargin{1});
end
ifnargout
[varargout{1:
nargout}]=gui_mainfcn(gui_State,varargin{:
});
else
gui_mainfcn(gui_State,varargin{:
});
end
handles.output=hObject;
guidata(hObject,handles);
functionvarargout=mypuma_OutputFcn(hObject,eventdata,handles)
varargout{1}=handles.output;
%步长为20度时的工作空间,2个for循环就搞定
functionpushbutton1_Callback(hObject,eventdata,handles)
holdoff;
fora=(-160:
20:
160)*pi/180
forb=(-225:
20:
45)*pi/180
x=431.8*cos(b)*cos(a)-149.09*sin(a);
y=431.8*cos(b)*sin(a)+cos(a)*149.09;
z=-431.8*sin(b);
plot3(x,y,z,'b.');
holdon;
gridon;
end
end
title('PUMA56020deg08S008103');
%步长10度时的工作空间,2个for循环就搞定
functionpushbutton2_Callback(hObject,eventdata,handles)
holdoff;
a2=431.8;
d2=149.09;
fora=(-160:
10:
160)*pi/180
forb=(-225:
10:
45)*pi/180
x=431.8*cos(b)*cos(a)-149.09*sin(a);
y=431.8*cos(b)*sin(a)+cos(a)*149.09;
z=-431.8*sin(b);
plot3(x,y,z,'r.');
holdon;
gridon;
end
end
title('PUMA56010deg08S008103');
%步长为5度时的工作空间,2个for循环就搞定
functionpushbutton3_Callback(hObject,eventdata,handles)
holdoff;
a2=431.8;
d2=149.09;
fora=(-160:
5:
160)*pi/180
forb=(-225:
5:
45)*pi/180
x=431.8*cos(b)*cos(a)-149.09*sin(a);
y=431.8*cos(b)*sin(a)+cos(a)*149.09;
z=-431.8*sin(b);
plot3(x,y,z,'g.');
holdon;
gridon;
end
end
title('PUMA5605deg08S008103');
%步长为3度时的工作空间,2个for循环就搞定
functionpushbutton7_Callback(hObject,eventdata,handles)
holdoff;
fora=(-160:
3:
160)*pi/180
forb=(-225:
3:
45)*pi/180
x=431.8*cos(b)*cos(a)-149.09*sin(a);
y=431.8*cos(b)*sin(a)+cos(a)*149.09;
z=-431.8*sin(b);
plot3(x,y,z,'b.');
holdon;
gridon;
end
end
title('PUMA5603deg08S008103');
%步长为2度时的工作空间,2个for循环就搞定
functionpushbutton8_Callback(hObject,eventdata,handles)
holdoff;
fora=(-160:
2:
160)*pi/180
forb=(-225:
2:
45)*pi/180
x=431.8*cos(b)*cos(a)-149.09*sin(a);
y=431.8*cos(b)*sin(a)+cos(a)*149.09;
z=-431.8*sin(b);
plot3(x,y,z,'b.');
holdon;
gridon;
end
end
title('PUMA5602deg08S008103');
%步长为5度时的xy平面
functionpushbutton4_Callback(hObject,eventdata,handles)
holdoff;
a2=431.8;
d2=149.09;
fora=(-160:
5:
160)*pi/180
forb=(-225:
5:
45)*pi/180
x=431.8*cos(b)*cos(a)-149.09*sin(a);
y=431.8*cos(b)*sin(a)+cos(a)*149.09;
z=-431.8*sin(b);
plot(x,y,'g.');
holdon;
gridon;
end
end
title('PUMA5605degXY08S008103');
%步长为5度时的xz平面
functionpushbutton5_Callback(hObject,eventdata,handles)
holdoff;
a2=431.8;
d2=149.09;
fora=(-160:
5:
160)*pi/180
forb=(-225:
5:
45)*pi/180
x=431.8*cos(b)*cos(a)-149.09*sin(a);
y=431.8*cos(b)*sin(a)+cos(a)*149.09;
z=-431.8*sin(b);
plot(x,z,'g.');
holdon;
gridon;
end
end
title('PUMA5605degXZ08S008103');
%步长为5度时的yz平面
functionpushbutton6_Callback(hObject,eventdata,handles)
holdoff;
a2=431.8;
d2=149.09;
fora=(-160:
5:
160)*pi/180
forb=(-225:
5:
45)*pi/180
x=431.8*cos(b)*cos(a)-149.09*sin(a);
y=431.8*cos(b)*sin(a)+cos(a)*149.09;
z=-431.8*sin(b);
plot(y,z,'g.');
holdon;
gridon;
end
end
title('PUMA5605degY-Z08S008103');