1. Trang chủ
  2. » Giáo Dục - Đào Tạo

BÁO cáo môn học kỹ THUẬT ROBOT đề tài THIẾT kế và điều KHIỂN CÁNH TAY ROBOT 4 bậc tự DO

29 20 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 29
Dung lượng 2,72 MB

Nội dung

BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TP.HỒ CHÍ MINH KHOA ĐIỆN – ĐIỆN TỬ Mơn học: KỸ THUẬT ROBOT BÁO CÁO MƠN HỌC KỸ THUẬT ROBOT ĐỀ TÀI: THIẾT KẾ VÀ ĐIỀU KHIỂN CÁNH TAY ROBOT BẬC TỰ DO GVHD: TS NGUYỄN VĂN THÁI Sinh viên thực hiện: Nhóm 10 Hồ Chí Vũ Nguyễn Thanh Hiếu Nghĩa - 19151260 Nguyễn Thanh Sơn Tp Hồ Chí Minh, tháng 06 năm 2022 Thiết kế mơ hình Solidworks: Mơ hình robot gồm phần Tổng quan mơ hình cánh tay robot bậc tự Hệ trục 0, 1, 2, 3, 1.1 Phần đế: Hệ tọa độ gốc: ● Trục Z hướng lên, trùng với chiều quay robot ● Trục X hướng sang phải ● Trục Y hướng vào 1.2 Khâu 1: Hệ tọa độ 1: ● Trục Z hướng khỏi hình ● Trục X hướng sang phải ● Trục Y hướng lên 1.3 Khâu 2: Hệ tọa độ 2: ● Trục Z hướng ngồi hình ● Trục X hướng sang phải ● Trục Y hướng lên 1.4 Khâu 3: Hệ tọa độ 3: 1.5 ● Trục Z hướng ngồi hình ● Trục X hướng sang phải ● Trục Y hướng lên Khâu chấp hành: Hệ tọa độ 3: 1.6 ● Trục Z hướng hình ● Trục X hướng sang phải ● Trục Y hướng lên Kết nối matlab simulink: Mỗi khớp có đầu vào vị trí góc, vận tốc góc, gia tốc góc Do mơ động học robot nên cung cấp đầu vào vị trí góc, vận tốc góc gia tốc góc số Tính tốn động học: 2.1 Động học thuận: Figure 1: Mơ hình tương đương cánh tay robot bậc tự a Trong đó: ● a: chiều dài (là khoảng cách trục động Zi với Zi+1) ● : độ xoắn (được xác định độ lệch trục động Zi với Zi+1) ● d: độ lệch (là khoảng cách mặt phẳng chứa xi với xi+1 vng góc với trục Z) ● : góc khớp Thơng số: ● Ma trận tổng quát chuyển đổi từ hệ i sang hệ i+1: ● Ma trận chuyển đổi từ hệ sang hệ 1: ● Ma trận chuyển đổi từ hệ sang hệ 2: ● Ma trận chuyển đổi từ hệ sang hệ 3: ● Ma trận chuyển đổi từ hệ sang hệ 4: ● Ma trận chuyển đổi từ hệ sang hệ 4: handles.output = hObject; guidata(hObject, handles); img = imread('D:\4DOF_manipulator\Simscape\LOGO.JPG'); imshow(img); function varargout = START_OutputFcn(hObject, eventdata, handles) varargout{1} = handles.output; function START_Callback(hObject, eventdata, handles) close run FINAL_PROJECT.m 3.2 Giao diện điều khiển: Chức giao diện: ● Nút START: chạy file simulink mơ hình robot ● Nút STOP: dừng file simulink mơ hình robot ● Nút RESET: đặt lại giá trị góc theta ● Nút SOLVE: tính tốn giá trị góc theta 1,2,3,4 từ vị trí Px, Py, Pz cho trước ● Nhập góc mơ cách: kéo trượt nhập trực tiếp Code giao diện điều khiển: function varargout = FINAL_PROJECT(varargin) gui_Singleton = 1; gui_State = struct('gui_Name', mfilename, 'gui_Singleton', gui_Singleton, 'gui_OpeningFcn', @FINAL_PROJECT_OpeningFcn, 'gui_OutputFcn', @FINAL_PROJECT_OutputFcn, 'gui_LayoutFcn', [] , 'gui_Callback', []); if nargin && ischar(varargin{1}) gui_State.gui_Callback = str2func(varargin{1}); end if nargout [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:}); else gui_mainfcn(gui_State, varargin{:}); end function FINAL_PROJECT_OpeningFcn(hObject, eventdata, handles, varargin) handles.output = hObject; guidata(hObject, handles); % ///////////////////////// TRANG THAI BAN DAU theta1 = get(handles.slider_theta1,'value'); set(handles.theta1,'string',num2str(theta1)); theta2 = get(handles.slider_theta2,'value'); set(handles.theta2,'string',num2str(theta2)); theta3 = get(handles.slider_theta3,'value'); set(handles.theta3,'string',num2str(theta3)); theta4 = get(handles.slider_theta4,'value'); set(handles.theta4,'string',num2str(theta4)); %Tinh FK P = Forward_kinematic(theta1,theta2,theta3,theta4); Px = P(1); Py=P(2); Pz=P(3); %hien thi cac gia tri Px_inv,Py_inv,Pz_inv len cac o hien thi gia tri Px_inv,Py_inv,Pz_inv guide set(handles.Px,'string',num2str(Px)); set(handles.Py,'string',num2str(Py)); set(handles.Pz,'string',num2str(Pz)); % Tinh IK theta234 = 0; set(handles.Px_inv,'string',num2str(Px)); set(handles.Py_inv,'string',num2str(Py)); set(handles.Pz_inv,'string',num2str(Pz)); set(handles.theta234,'string',num2str(theta234)); theta = Inverse_kinematic(Px,Py,Pz,theta234); set(handles.theta1_inv,'string',num2str(theta(1))); set(handles.theta2_inv,'string',num2str(theta(2))); set(handles.theta3_inv,'string',num2str(theta(3))); set(handles.theta4_inv,'string',num2str(theta(4))); %///////////////////////////////////// function varargout = FINAL_PROJECT_OutputFcn(hObject, eventdata, handles) varargout{1} = handles.output; % silder theta1 function slider_theta1_Callback(hObject, eventdata, handles) theta1 = get(handles.slider_theta1,'value'); set(handles.theta1,'string',num2str(theta1)); theta2 = get(handles.slider_theta2,'value'); set(handles.theta2,'string',num2str(theta2)); theta3 = get(handles.slider_theta3,'value'); set(handles.theta3,'string',num2str(theta3)); theta4 = get(handles.slider_theta4,'value'); set(handles.theta4,'string',num2str(theta4)); % Tinh FK P = Forward_kinematic(theta1,theta2,theta3,theta4); Px = P(1); Py=P(2); Pz=P(3); %hien thi cac gia tri Px_inv,Py_inv,Pz_inv len cac o hien thi gia tri Px_inv,Py_inv,Pz_inv guide set(handles.Px,'string',num2str(Px)); set(handles.Py,'string',num2str(Py)); set(handles.Pz,'string',num2str(Pz)); % lien ket voi khoi simulink set_param('manipulator/theta1','Value',num2str(theta1)); function slider_theta1_CreateFcn(hObject, eventdata, handles) if isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor',[.9 9]); end %% silder theta2 function slider_theta2_Callback(hObject, eventdata, handles) theta1 = get(handles.slider_theta1,'value'); set(handles.theta1,'string',num2str(theta1)); theta2 = get(handles.slider_theta2,'value'); set(handles.theta2,'string',num2str(theta2)); theta3 = get(handles.slider_theta3,'value'); set(handles.theta3,'string',num2str(theta3)); theta4 = get(handles.slider_theta4,'value'); set(handles.theta4,'string',num2str(theta4)); % Tinh FK P = Forward_kinematic(theta1,theta2,theta3,theta4); Px = P(1); Py=P(2); Pz=P(3); %hien thi cac gia tri Px_inv,Py_inv,Pz_inv len cac o hien thi gia tri Px_inv,Py_inv,Pz_inv guide set(handles.Px,'string',num2str(Px)); set(handles.Py,'string',num2str(Py)); set(handles.Pz,'string',num2str(Pz)); % lien ket voi khoi simulink set_param('manipulator/theta2','Value',num2str(theta2)); function slider_theta2_CreateFcn(hObject, eventdata, handles) if isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor',[.9 9]); end %% slider theta3 function slider_theta3_Callback(hObject, eventdata, handles) theta1 = get(handles.slider_theta1,'value'); set(handles.theta1,'string',num2str(theta1)); theta2 = get(handles.slider_theta2,'value'); set(handles.theta2,'string',num2str(theta2)); theta3 = get(handles.slider_theta3,'value'); set(handles.theta3,'string',num2str(theta3)); theta4 = get(handles.slider_theta4,'value'); set(handles.theta4,'string',num2str(theta4)); % Tinh FK P = Forward_kinematic(theta1,theta2,theta3,theta4); Px = P(1); Py=P(2); Pz=P(3); %hien thi cac gia tri Px_inv,Py_inv,Pz_inv len cac o hien thi gia tri Px_inv,Py_inv,Pz_inv guide set(handles.Px,'string',num2str(Px)); set(handles.Py,'string',num2str(Py)); set(handles.Pz,'string',num2str(Pz)); % lien ket voi khoi simulink set_param('manipulator/theta3','Value',num2str(theta3)); function slider_theta3_CreateFcn(hObject, eventdata, handles) if isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor',[.9 9]); end %% slider theta4 function slider_theta4_Callback(hObject, eventdata, handles) theta1 = get(handles.slider_theta1,'value'); set(handles.theta1,'string',num2str(theta1)); theta2 = get(handles.slider_theta2,'value'); set(handles.theta2,'string',num2str(theta2)); theta3 = get(handles.slider_theta3,'value'); set(handles.theta3,'string',num2str(theta3)); theta4 = get(handles.slider_theta4,'value'); set(handles.theta4,'string',num2str(theta4)); % Tinh FK P = Forward_kinematic(theta1,theta2,theta3,theta4); Px = P(1); Py=P(2); Pz=P(3); %hien thi cac gia tri Px_inv,Py_inv,Pz_inv len cac o hien thi gia tri Px_inv,Py_inv,Pz_inv guide set(handles.Px,'string',num2str(Px)); set(handles.Py,'string',num2str(Py)); set(handles.Pz,'string',num2str(Pz)); % lien ket voi khoi simulink set_param('manipulator/theta4','Value',num2str(theta4)); function slider_theta4_CreateFcn(hObject, eventdata, handles) if isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor',[.9 9]); end %////////////////////////////////////////////////////////////////////// function theta1_inv_Callback(hObject, eventdata, handles) function theta1_inv_CreateFcn(hObject, eventdata, handles) if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end function theta2_inv_Callback(hObject, eventdata, handles) function theta2_inv_CreateFcn(hObject, eventdata, handles) if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end function theta3_inv_Callback(hObject, eventdata, handles) function theta3_inv_CreateFcn(hObject, eventdata, handles) if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end function theta4_inv_Callback(hObject, eventdata, handles) function theta4_inv_CreateFcn(hObject, eventdata, handles) if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end %////////////////////////////////////////////////////////////////////// function Px_inv_Callback(hObject, eventdata, handles) function Px_inv_CreateFcn(hObject, eventdata, handles) if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end function Py_inv_Callback(hObject, eventdata, handles) function Py_inv_CreateFcn(hObject, eventdata, handles) if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end function Pz_inv_Callback(hObject, eventdata, handles) function Pz_inv_CreateFcn(hObject, eventdata, handles) if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end %////////////////////////////////////////////////////////////////////// function SOLVE_Callback(hObject, eventdata, handles) Px_new=get(handles.Px_inv,'String'); Px_new = str2num(Px_new); Py_new=get(handles.Py_inv,'String'); Py_new = str2num(Py_new); Pz_new=get(handles.Pz_inv,'String'); Pz_new = str2num(Pz_new); theta234_new=get(handles.theta234,'String'); theta234_new = str2num(theta234_new); % Tinh IK theta = Inverse_kinematic(Px_new,Py_new,Pz_new,theta234_new); set(handles.theta1_inv,'string',num2str(theta(1))); set(handles.theta2_inv,'string',num2str(theta(2))); set(handles.theta3_inv,'string',num2str(theta(3))); set(handles.theta4_inv,'string',num2str(theta(4))); % lien ket voi khoi simulink set_param('manipulator/theta1','Value',num2str(theta(1))); set_param('manipulator/theta2','Value',num2str(theta(2))); set_param('manipulator/theta3','Value',num2str(theta(3))); set_param('manipulator/theta4','Value',num2str(theta(4))); %////////////////////////////////////////////////////////////////////// function START_Callback(hObject, eventdata, handles) handles = guidata(hObject); modelName = 'manipulator'; handles.modelname = modelName; % if modelIsLoaded(modelName) load_system(modelName); end set_param(handles.modelname,'BlockReduction','off'); set_param(handles.modelname,'StopTime','inf'); set_param(handles.modelname,'SimulationMode','normal'); set_param(handles.modelname,'SimulationCommand','start'); set_param(handles.start,'Disable','on'); set_param(handles.stop,'Enable','on'); %% kiem tra load file function modelLoaded = modelIsLoaded(modelName) try modelLoaded = ~isempty(find_system('Type','block_diagram','Name',modelName)); catch ME modelLoaded = false; end %////////////////////////////////////////////////////////////////////// function STOP_Callback(hObject, eventdata, handles) handles = guidata(hObject); modelName = 'manipulator'; handles.modelname = modelName; set_param(handles.modelname,'SimulationCommand','stop'); set_param(handles.modelname,'StopTime','10'); set_param(handles.modelname,'StartFcn',''); set_param(handles.stop,'Disable','on'); set_param(handles.start,'Enable','on'); guidata(hOject,handles); %////////////////////////////////////////////////////////////////////// function RESET_Callback(hObject, eventdata, handles) theta = 0; set(handles.theta1,'string',num2str(theta)); set(handles.slider_theta1,'Value',theta); set(handles.theta2,'string',num2str(theta)); set(handles.slider_theta2,'Value',theta); set(handles.theta3,'string',num2str(theta)); set(handles.slider_theta3,'Value',theta); set(handles.theta4,'string',num2str(theta)); set(handles.slider_theta4,'Value',theta); theta1 = get(handles.slider_theta1,'value'); set(handles.theta1,'string',num2str(theta1)); theta2 = get(handles.slider_theta2,'value'); set(handles.theta2,'string',num2str(theta2)); theta3 = get(handles.slider_theta3,'value'); set(handles.theta3,'string',num2str(theta3)); theta4 = get(handles.slider_theta4,'value'); set(handles.theta4,'string',num2str(theta4)); % Tinh FK P = Forward_kinematic(theta1,theta2,theta3,theta4); Px = P(1); Py=P(2); Pz=P(3); %hien thi cac gia tri Px_inv,Py_inv,Pz_inv len cac o hien thi gia tri Px_inv,Py_inv,Pz_inv guide set(handles.Px,'string',num2str(Px)); set(handles.Py,'string',num2str(Py)); set(handles.Pz,'string',num2str(Pz)); % lien ket voi khoi simulink set_param('manipulator/theta1','Value',num2str(theta)); set_param('manipulator/theta2','Value',num2str(theta)); set_param('manipulator/theta3','Value',num2str(theta)); set_param('manipulator/theta4','Value',num2str(theta)); %////////////////////////////////////////////////////////////////////// function theta1_Callback(hObject, eventdata, handles) theta1_new=get(handles.theta1,'String'); theta1_new = str2num(theta1_new); set(handles.slider_theta1,'Value',theta1_new); theta1 = theta1_new; theta2 = get(handles.slider_theta2,'value'); set(handles.theta2,'string',num2str(theta2)); theta3 = get(handles.slider_theta3,'value'); set(handles.theta3,'string',num2str(theta3)); theta4 = get(handles.slider_theta4,'value'); set(handles.theta4,'string',num2str(theta4)); % Tinh FK P = Forward_kinematic(theta1,theta2,theta3,theta4); Px = P(1); Py=P(2); Pz=P(3); %hien thi cac gia tri Px_inv,Py_inv,Pz_inv len cac o hien thi gia tri Px_inv,Py_inv,Pz_inv guide set(handles.Px,'string',num2str(Px)); set(handles.Py,'string',num2str(Py)); set(handles.Pz,'string',num2str(Pz)); % lien ket voi khoi simulink set_param('manipulator/theta1','Value',num2str(theta1_new)); function theta1_CreateFcn(hObject, eventdata, handles) if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end %////////////////////////////////////////////////////////////////////// function theta2_Callback(hObject, eventdata, handles) theta2_new=get(handles.theta2,'String'); theta2_new = str2num(theta2_new); set(handles.slider_theta2,'Value',theta2_new); theta2 = theta2_new; theta1 = get(handles.slider_theta1,'value'); set(handles.theta1,'string',num2str(theta1)); theta3 = get(handles.slider_theta3,'value'); set(handles.theta3,'string',num2str(theta3)); theta4 = get(handles.slider_theta4,'value'); set(handles.theta4,'string',num2str(theta4)); % Tinh FK P = Forward_kinematic(theta1,theta2,theta3,theta4); Px = P(1); Py=P(2); Pz=P(3); %hien thi cac gia tri Px_inv,Py_inv,Pz_inv len cac o hien thi gia tri Px_inv,Py_inv,Pz_inv guide set(handles.Px,'string',num2str(Px)); set(handles.Py,'string',num2str(Py)); set(handles.Pz,'string',num2str(Pz)); % lien ket voi khoi simulink set_param('manipulator/theta2','Value',num2str(theta2_new)); function theta2_CreateFcn(hObject, eventdata, handles) if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end %////////////////////////////////////////////////////////////////////// function theta3_Callback(hObject, eventdata, handles) theta3_new=get(handles.theta3,'String'); theta3_new = str2num(theta3_new); set(handles.slider_theta3,'Value',theta3_new); theta3 = theta3_new; theta2 = get(handles.slider_theta2,'value'); set(handles.theta2,'string',num2str(theta2)); theta1 = get(handles.slider_theta1,'value'); set(handles.theta1,'string',num2str(theta1)); theta4 = get(handles.slider_theta4,'value'); set(handles.theta4,'string',num2str(theta4)); % Tinh FK P = Forward_kinematic(theta1,theta2,theta3,theta4); Px = P(1); Py=P(2); Pz=P(3); %hien thi cac gia tri Px,Py,Pz len cac o hien thi gia tri Px,Py,Pz guide set(handles.Px,'string',num2str(Px)); set(handles.Py,'string',num2str(Py)); set(handles.Pz,'string',num2str(Pz)); % lien ket voi khoi simulink set_param('manipulator/theta3','Value',num2str(theta3_new)); function theta3_CreateFcn(hObject, eventdata, handles) if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end %////////////////////////////////////////////////////////////////////// function theta4_Callback(hObject, eventdata, handles) theta4_new=get(handles.theta4,'String'); theta4_new = str2num(theta4_new); set(handles.slider_theta4,'Value',theta4_new); theta4 = theta4_new; theta2 = get(handles.slider_theta2,'value'); set(handles.theta2,'string',num2str(theta2)); theta1 = get(handles.slider_theta1,'value'); set(handles.theta3,'string',num2str(theta1)); theta3 = get(handles.slider_theta3,'value'); set(handles.theta3,'string',num2str(theta3)); % Tinh FK P = Forward_kinematic(theta1,theta2,theta3,theta4); Px = P(1); Py=P(2); Pz=P(3); %hien thi cac gia tri Px,Py,Pz len cac o hien thi gia tri Px,Py,Pz guide set(handles.Px,'string',num2str(Px)); set(handles.Py,'string',num2str(Py)); set(handles.Pz,'string',num2str(Pz)); % lien ket voi khoi simulink set_param('manipulator/theta4','Value',num2str(theta4_new)); function theta4_CreateFcn(hObject, eventdata, handles) if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end %////////////////////////////////////////////////////////////////////// function theta234_Callback(hObject, eventdata, handles) function theta234_CreateFcn(hObject, eventdata, handles) if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end 3.2.1 Hàm tính động học thuận: function P = Forward_kinematic(theta1,theta2,theta3,theta4) %% thong so mo hinh L1 = 150; L2 = 350; L3 = 363.5; L4 = 210; d1 = 140; theta234 = theta2+theta3+theta4; %% main program Px = cosd(theta1)*(L3*cosd(theta2 + theta3) - L1 + L2*cosd(theta2) + L4*cosd(theta2 + theta3 + theta4)) Py = sind(theta1)*(L3*cosd(theta2 + theta3) - L1 + L2*cosd(theta2) + L4*cosd(theta2 + theta3 + theta4)) Pz = d1 + L3*sind(theta2 + theta3) + L2*sind(theta2) + L4*sind(theta2 + theta3 + theta4) P = [Px Py Pz theta234]; end 3.2.2 Hàm tính động học nghịch: function theta = Inverse_kinematic(Px,Py,Pz,theta234) % khai bao thong so L1 = 150; L2 = 350; L3 = 363.5; L4 = 210; d1 = 140; % tinh theta1 theta1 = atan2d(Py,Px); %% Tinh theta3 nx = Px*cosd(theta1)+Py*sind(theta1)+L1L4*cosd(theta234); ny = -d1+Pz-L4*sind(theta234); c3 = ((nx^2)+(ny^2)-(L3^2)-(L2^2))/(2*L3*L2); s3 = -sqrt(1-c3^2); theta3 = atan2d(s3,c3); %% Tinh theta2 c2 = (nx*(L3*c3+L2)+L3*s3*ny)/((L3*c3+L2)^2+L3^2*s3^2); s2 = (ny*(L3*c3+L2)-L3*s3*nx)/((L3*c3+L2)^2+L3^2*s3^2); theta2 = atan2d(s2,c2); %% Tinh theta4 theta4 = theta234-theta2-theta3; %% KQ theta = [theta1 theta2 theta3 theta4] end .. .Thiết kế mơ hình Solidworks: Mơ hình robot gồm phần Tổng quan mơ hình cánh tay robot bậc tự Hệ trục 0, 1, 2, 3, 1.1 Phần đế: Hệ tọa độ gốc: ● Trục Z hướng lên, trùng với chiều quay robot. .. Đặt: Đăt: 2.2.3 Tính Theta2: Ta có: Thế s2 vào phương trình c2, ta được: Làm tương tự ta được: 2.2 .4 Tính theta4 Đặt: θ2 +θ3 +? ?4= 0 ? ?4= θ2 34? ??θ2−θ3 Thiết kế giao diện: 3.1 Giao diện giới thiệu: Code... function theta4_Callback(hObject, eventdata, handles) theta4_new=get(handles.theta4,''String''); theta4_new = str2num(theta4_new); set(handles.slider_theta4,''Value'',theta4_new); theta4 = theta4_new; theta2

Ngày đăng: 25/12/2022, 05:22

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w