⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 simuladorcs.m

📁 是一个在matlab下的机器人运动仿真的软件
💻 M
📖 第 1 页 / 共 4 页
字号:
end



function editteta6_Callback(hObject, eventdata, handles)
% hObject    handle to editteta6 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

% Hints: get(hObject,'String') returns contents of editteta6 as text
%        str2double(get(hObject,'String')) returns contents of editteta6 as a double
Teta6 = str2num(get(handles.editteta6,'String'));
if(Teta6<-180 || Teta6>180)
   errordlg('耼gulo Invalido:Digite um valor entre -180?e 180?','Erro','on')
   set(handles.editteta6,'String',' '); %limpar a caixa
end

% --- Executes during object creation, after setting all properties.
function editteta6_CreateFcn(hObject, eventdata, handles)
% hObject    handle to editteta6 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    empty - handles not created until after all CreateFcns called

% Hint: edit controls usually have a white fundoaxes on Windows.
%       See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
    set(hObject,'BackgroundColor','white');
end


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%INICIAR%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

% --- Executes on button press in pbiniciar.
function pbiniciar_Callback(hObject, eventdata, handles)
% hObject    handle to pbiniciar (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

handles.output = hObject;
global teta1 d2 d3 d4 l1 teta4 teta5 teta6 T06
global flag_cinematicainversa flag_cinematicadirecta flag_joystick flag_joyInver

global ai BP d flag_joy

flag_joy=0;



if flag_joystick==1   
    Mov_joystick(hObject, eventdata,handles);  %Matlab 7.3
   %% SimuladorCs('Mov_joystick',hObject, eventdata,handles);  %%Matlab 7.1  
    set(handles.editteta1,'String',get(handles.textteta1,'String'));
    set(handles.editteta4,'String',get(handles.textteta4,'String'));
    set(handles.editteta5,'String',get(handles.textteta5,'String'));
    set(handles.editteta6,'String',get(handles.textteta6,'String'));
    set(handles.editd2,'String',get(handles.textd2,'String'));
    set(handles.editd3,'String',get(handles.textd3,'String'));
    set(handles.editPX,'String',get(handles.textpx,'String'));
    set(handles.editPY,'String',get(handles.textpy,'String'));
    set(handles.editPZ,'String',get(handles.textpz,'String'));
    set(handles.edittetaf,'String',get(handles.texttetaf,'String'));
    set(handles.edittetap,'String',get(handles.texttetap,'String'));
    return;
end  


if flag_joyInver==1        
    Joy_Inverso(hObject, eventdata,handles);%%Matlab 7.3
    %SimuladorCs('Joy_Inverso',hObject, eventdata,handles);    %%Matlab 7.1
    set(handles.editteta1,'String',get(handles.textteta1,'String'));
    set(handles.editteta4,'String',get(handles.textteta4,'String'));
    set(handles.editteta5,'String',get(handles.textteta5,'String'));
    set(handles.editteta6,'String',get(handles.textteta6,'String'));
    set(handles.editd2,'String',get(handles.textd2,'String'));
    set(handles.editd3,'String',get(handles.textd3,'String'));
    set(handles.editPX,'String',get(handles.textpx,'String'));
    set(handles.editPY,'String',get(handles.textpy,'String'));
    set(handles.editPZ,'String',get(handles.textpz,'String'));
    set(handles.edittetaf,'String',get(handles.texttetaf,'String'));
    set(handles.edittetap,'String',get(handles.texttetap,'String'));
    
    return;
end  


if flag_cinematicadirecta==1
    
   teta1deg=str2num(get(handles.editteta1,'String'));
   d2=str2num(get(handles.editd2,'String'));
   d3=str2num(get(handles.editd3,'String'));
   teta4deg=str2num(get(handles.editteta4,'String'));
   teta5deg=str2num(get(handles.editteta5,'String'));
   teta6deg=str2num(get(handles.editteta6,'String'));

   teta1=(teta1deg*pi)/180;
   teta4=(teta4deg*pi)/180;
   teta5=(teta5deg*pi)/180;
   teta6=(teta6deg*pi)/180;
    
   set(handles.textd2,'String',get(handles.editd2,'String'));
   set(handles.textd3,'String',get(handles.editd3,'String'));
   set(handles.textteta1,'String',get(handles.editteta1,'String'));
   set(handles.textteta4,'String',get(handles.editteta4,'String'));
   set(handles.textteta5,'String',get(handles.editteta5,'String'));
   set(handles.textteta6,'String',get(handles.editteta6,'String'));
   
   Desenha_robo(hObject, eventdata,handles); %Matlab 7.3
   %SimuladorCs('Desenha_robo',hObject, eventdata,handles); %Matlab 7.1
   
   %% Determinar PX,Py e Pz
   Px=T06(1,4);
   Py=T06(2,4);
   Pz=T06(3,4);
   
   tetaf=teta6+teta4;
   tetafdeg=tetaf*180/pi;
   
   set(handles.textpx,'String',num2str(Px));
   set(handles.textpy,'String',num2str(Py));
   set(handles.textpz,'String',num2str(Pz));
   set(handles.texttetaf,'String',num2str(tetafdeg));
   set(handles.texttetap,'String',get(handles.editteta5,'String'));
   
    set(handles.editteta1,'String',get(handles.textteta1,'String'));
    set(handles.editteta4,'String',get(handles.textteta4,'String'));
    set(handles.editteta5,'String',get(handles.textteta5,'String'));
    set(handles.editteta6,'String',get(handles.textteta6,'String'));
    set(handles.editd2,'String',get(handles.textd2,'String'));
    set(handles.editd3,'String',get(handles.textd3,'String'));
    set(handles.editPX,'String',get(handles.textpx,'String'));
    set(handles.editPY,'String',get(handles.textpy,'String'));
    set(handles.editPZ,'String',get(handles.textpz,'String'));
    set(handles.edittetaf,'String',get(handles.texttetaf,'String'));
    set(handles.edittetap,'String',get(handles.texttetap,'String'));
   return;
end



if flag_cinematicainversa==1
   
    Px=str2num(get(handles.editPX,'String'));
    Py=str2num(get(handles.editPY,'String'));
    Pz=str2num(get(handles.editPZ,'String'));    

    if(sqrt((Px^2)+(Py^2))<112.75 || sqrt((Px^2)+(Py^2))>282) %est?fora do volume de trabalho
      errordlg('Posi珲es Px e Py fora do volume de trabalho:Digite novamente','Erro','on')
      set(handles.editPX,'String',' '); %limpar a caixa
      set(handles.editPY,'String',' '); %limpar a caixa      
    end
 
    if(sqrt((Px^2)+(Py^2))>=112.75 && sqrt((Px^2)+(Py^2))<=282) %est?dentro do volume de trabalho
       tetaf=str2num(get(handles.edittetaf,'String'));
    tetap=str2num(get(handles.edittetap,'String'));
    
    teta1=atan2(Py,Px)+atan2(sqrt(Px^2+Py^2-l1^2),l1);
    d2=Pz;
    d3=sin(teta1)*Px-cos(teta1)*Py-d4;
    teta4=atan2(1,0);
    teta5=(tetap*pi)/180;
    tetaf=(tetaf*pi)/180;
    teta6=tetaf-teta4;   
    
    teta1deg=teta1*180/pi;
    teta4deg=teta4*180/pi;
    teta5deg=teta5*180/pi;
    teta6deg=teta6*180/pi;
    
    teta1str=num2str(teta1deg);
    teta4str=num2str(teta4deg);
    teta5str=num2str(teta5deg);
    teta6str=num2str(teta6deg);
    d2str=num2str(d2);
    d3str=num2str(d3);
    
    set(handles.textd2,'String',d2str);
    set(handles.textd3,'String',d3str);
    set(handles.textteta1,'String',teta1str);
    set(handles.textteta4,'String',teta4str);
    set(handles.textteta5,'String',teta5str);
    set(handles.textteta6,'String',teta6str);
    set(handles.textpx,'String',get(handles.editPX,'String'));
    set(handles.textpy,'String',get(handles.editPY,'String'));
    set(handles.textpz,'String',get(handles.editPZ,'String'));
    set(handles.texttetaf,'String',get(handles.edittetaf,'String'));
    set(handles.texttetap,'String',get(handles.edittetap,'String'));
    
    Desenha_robo(hObject, eventdata,handles); %Matlab 7.3
   %SimuladorCs('Desenha_robo',hObject, eventdata,handles); %Matlab 7.1 
    
    set(handles.editteta1,'String',get(handles.textteta1,'String'));
    set(handles.editteta4,'String',get(handles.textteta4,'String'));
    set(handles.editteta5,'String',get(handles.textteta5,'String'));
    set(handles.editteta6,'String',get(handles.textteta6,'String'));
    set(handles.editd2,'String',get(handles.textd2,'String'));
    set(handles.editd3,'String',get(handles.textd3,'String'));
    set(handles.editPX,'String',get(handles.textpx,'String'));
    set(handles.editPY,'String',get(handles.textpy,'String'));
    set(handles.editPZ,'String',get(handles.textpz,'String'));
    set(handles.edittetaf,'String',get(handles.texttetaf,'String'));
    set(handles.edittetap,'String',get(handles.texttetap,'String'));
    end
        
end   


% --- Executes on button press in rbcinemdirect.
function rbcinemdirect_Callback(hObject, eventdata, handles)
% hObject    handle to rbcinemdirect (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

% Hint: get(hObject,'Value') returns toggle state of rbcinemdirect
global flag_cinematicainversa flag_cinematicadirecta flag_joystick flag_joy flag_joyInver

flag_cinematicadirecta=1;%%%assim sei q este radio buttom est?selecionado
flag_cinematicainversa=0;   
flag_joystick=0;
flag_joy=0;
flag_joyInver=0;
set(handles.editteta1,'Enable','on');
set(handles.editteta4,'Enable','on');
set(handles.editteta5,'Enable','on');
set(handles.editteta6,'Enable','on');
set(handles.editd2,'Enable','on');
set(handles.editd3,'Enable','on');

set(handles.editPX,'Enable','off');
set(handles.editPY,'Enable','off');
set(handles.editPZ,'Enable','off');
set(handles.edittetaf,'Enable','off');
set(handles.edittetap,'Enable','off');

% --- Executes on button press in rbjoyistick.
function rbjoyistick_Callback(hObject, eventdata, handles)
% hObject    handle to rbjoyistick (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

% Hint: get(hObject,'Value') returns toggle state of rbjoyistick
global flag_cinematicainversa flag_cinematicadirecta flag_joystick flag_joyInver

flag_joystick=1;%%%assim sei q este radio buttom est?selecionado
flag_cinematicainversa=0;   
flag_cinematicadirecta=0;
flag_joyInver=0;
set(handles.editteta1,'Enable','off');
set(handles.editteta4,'Enable','off');
set(handles.editteta5,'Enable','off');
set(handles.editteta6,'Enable','off');
set(handles.editd2,'Enable','off');
set(handles.editd3,'Enable','off');

set(handles.editPX,'Enable','off');
set(handles.editPY,'Enable','off');
set(handles.editPZ,'Enable','off');
set(handles.edittetaf,'Enable','off');
set(handles.edittetap,'Enable','off');


% --- Executes on button press in rbjoyInverso.
function rbjoyInverso_Callback(hObject, eventdata, handles)
% hObject    handle to rbjoyInverso (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

% Hint: get(hObject,'Value') returns toggle state of rbjoyInverso
global flag_cinematicainversa flag_cinematicadirecta flag_joystick flag_joy flag_joyInver

flag_cinematicainversa=0;   %%%assim sei q este radio buttom est?selecionado
flag_cinematicadirecta=0;
flag_joystick=0;
flag_joy=0;
flag_joyInver=1;
set(handles.editteta1,'Enable','off');
set(handles.editteta4,'Enable','off');
set(handles.editteta5,'Enable','off');
set(handles.editteta6,'Enable','off');
set(handles.editd2,'Enable','off');
set(handles.editd3,'Enable','off');

set(handles.editPX,'Enable','off');
set(handles.editPY,'Enable','off');
set(handles.editPZ,'Enable','off');
set(handles.edittetaf,'Enable','off');
set(handles.edittetap,'Enable','off');
% -------------------------------------






% --- Executes on button press in rbcineminv.
function rbcineminv_Callback(hObject, eventdata, handles)
% hObject    handle to rbcineminv (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

% Hint: get(hObject,'Value') returns toggle state of rbcineminv
global flag_cinematicainversa flag_cinematicadirecta flag_joystick flag_joy flag_joyInver

flag_cinematicainversa=1;   %%%assim sei q este radio buttom est?selecionado
flag_cinematicadirecta=0;
flag_joystick=0;
flag_joy=0;
flag_joyInver=0;
set(handles.editteta1,'Enable','off');
set(handles.editteta4,'Enable','off');
set(handles.editteta5,'Enable','off');
set(handles.editteta6,'Enable','off');
set(handles.editd2,'Enable','off');
set(handles.editd3,'Enable','off');

set(handles.editPX,'Enable','on');
set(handles.editPY,'Enable','on');
set(handles.editPZ,'Enable','on');
set(handles.edittetaf,'Enable','on');
set(handles.edittetap,'Enable','on');
% --------------------------------------------------------------------
function ficheiro_Callback(hObject, eventdata, handles)
% hObject    handle to ficheiro (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)


% --------------------------------------------------------------------
function imprimir_Callback(hObject, eventdata, handles)
% hObject    handle to imprimir (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)



⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -