TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI VIỆN ĐIỆN BÁO CÁO BÀI TẬP LỚNMÔN KỸTHUẬT ROBOT NHÓM 10 TÌM HIỂU ROBOT OMRON VIPER 650 Giảng viên hướng dẫn PGS TS Nguyễn Phạm Thục Anh Sinh viên thực hiện 1 Vũ Văn Tú 20181810 2 Vũ Mạnh Thọ 20181770 3 Bùi Quang Minh 20181644 4 Phạm Duy Thi 20181765 5 Vũ Huy Hùng 20181512 6 Phạm Văn Đồng 20181397 7 Đặng Đình Dũng 20181418 8 Trương Thanh Hằng 20181459 9 Vũ Văn Long 20181633 10 Trần Văn Dương 20181442 11 Đoàn Đức Anh 20181315 Hà Nội – 012022 Mục Lục CHƯƠNG I GIỚI TH.
TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI VIỆN ĐIỆN BÁO CÁO BÀI TẬP LỚNMƠN KỸTHUẬT ROBOT NHĨM 10: TÌM HIỂU ROBOT OMRON VIPER 650 Giảng viên hướng dẫn: PGS TS Nguyễn Phạm Thục Anh Sinh viên thực hiện: Vũ Văn Tú 20181810 Vũ Mạnh Thọ 20181770 Bùi Quang Minh 20181644 Phạm Duy Thi 20181765 Vũ Huy Hùng 20181512 Phạm Văn Đồng 20181397 Đặng Đình Dũng 20181418 Trương Thanh Hằng 20181459 Vũ Văn Long 20181633 10 Trần Văn Dương 20181442 11 Đoàn Đức Anh 20181315 Hà Nội – 01/2022 Mục Lục CHƯƠNG I GIỚI THIỆU ROBOT OMRON VIPER 650 Giới thiệu hãng Omron Giới thiệu Robot Omron Viper 650 2.1 Thông số kỹ thuật 2.2 Kích thước vùng làm việc 2.3 Phụ kiện kèm 2.4 Hình ảnh Robot Omron Viper 650 CHƯƠNG II ĐỘNG HỌC THUẬN ROBOT OMRON VIPER 650 Xác định khớp quay trục tọa độ Xác định ma trận A Xây dựng phần mềm tính tốn động lực học thuận 11 CHƯƠNG III XÂY DỰNG MA TRẬN JACOBY 13 Xác định ma trận T i n 13 Xác định ma trận JH 13 Xác định ma trận J 15 Xây dựng giao diện 16 CHƯƠNG IV ĐỘNG HỌC NGƯỢC ROBOT VIPER 650 20 Bài tốn tìm vị trí giao điểm trục cổ tay (tâm cổ tay) 21 Bài tốn tìm hướng cổ tay 23 CHƯƠNG V THIẾT KẾ QUỸ ĐẠO CHUYỂN ĐỘNG CHO ROBOT VIPER 650 26 1.Giới thiệu sở thiết kế quỹ đạo 26 2.Tính tốn thiết kế quỹ đạo chuyển động dạng bậc 26 CHƯƠNG VI XÂY DỰNG MÔ HÌNH ĐỘNG LỰC HỌC CHO ĐỐITƯỢNG TRÊN TOOLBOX SIMSCAPE/MATLAB 31 CHƯƠNG I GIỚI THIỆU ROBOT OMRON VIPER 650 Giới thiệu hãng Omron Omron công ty Nhật Bản đứng hàng đầu giới công nghệ tự động hóa, thành lập vào năm 1933 Các thiết bị tự động Omron chất lượng cao sản xuất công nghệ đại đa dạng với 100.000 mặt hàng Nhiều sản phẩm chiếm thị phần đứng đầu giới Biến tần, Rơ le, Điểu khiển nhiệt, Công tắc hành trình, Cảm biến quang… Ngày 01/04/2016 Omron Adept giới thiệu Robot cơng nghiệp thị trường đáp ứng đầy đủ tiêu chuẩn vệ sinh Bộ Nơng nghiệp Hoa Kỳ cho phịng chống nhiễm sản phẩm Giới thiệu Robot Omron Viper 650 Robot Viper 650 phù hợp với dây chuyền lắp ráp đóng gói sản phẩm Với thiết kế nhỏ gọn làm việc diện tích nhỏ Phù hợp để lắp ráp linh kiện nhỏ ngành sản xuất ơ-tơ, xe máy Ngồi chúng phân loại, kiểm định chất lượng sản phẩm Robot khớp nối để gia công, lắp ráp xử lý vật liệu Khả trình thơng qua phần mềm ACE ngôn ngữ eV+ thông qua IEC 61131-3 quen thuộc sử dụng kết nối ePLC Hiển thị chẩn đoán cho phép xử lý cố nhanh Encoder tuyệt đối, độ phân giải cao để cung cấp độ xác, theo dõi tốc độ chậm dễ dàng hiệu chỉnh Hiệu suất cao, hộp số Harmonic quán tính thấp cánh tay nhẹ cho phép thực chuyển động với gia tốc tối đa Tầm với: 653mm Tải trọng tối đa: 5kg Khối lượng: 34kg 2.1 Thông số kỹ thuật 2.2 Kích thước vùng làm việc 2.3 Phụ kiện kèm 2.4 Hình ảnh Robot Omron Viper 650 CHƯƠNG II ĐỘNG HỌC THUẬN ROBOT OMRON VIPER 650 Xác định khớp quay trục tọa độ Hình Xác định gốc tọa độ khớp Bảng1 Bảng DH 𝒊 𝜶𝒊 ° 𝒂𝒊 𝜽𝒊 ° 𝒅𝒊 -90 0.075 𝜽𝟏 -0.335 0.27 𝜽𝟐 90 -0.09 𝜽𝟑 -90 𝜽𝟒 0.295 90 𝜽𝟓 0 𝜽𝟔 0.08 Xác định ma trận A >> syms a1 a2 a3 a4 a5 a5 a6; >> a4=0; a5=0; a6=0; >> syms i1 i2 i3 i4 i5 i6; >> syms d1 d2 d3 d4 d5 d6; >> d2=0; d3=0; d5=0; >> A1=[cos(i1) -0*sin(i1) -1*sin(i1) a1*cos(i1); sin(i1) 0*cos(i1) 1*cos(i1) a1*sin(i1); -1 d1; 0 1] A1 = [cos(i1), 0, -sin(i1), a1*cos(i1)] [sin(i1), 0, cos(i1), a1*sin(i1)] [ 0, -1, 0, d1] [ 0, 0, 0, 1] >> A2=[cos(i2) -1*sin(i2) 0*sin(i2) a2*cos(i2); sin(i2) 1*cos(i2) -0*cos(i2) a2*sin(i2); 0 d2; 0 1] A2 = [cos(i2), -sin(i2), 0, a2*cos(i2)] [sin(i2), cos(i2), 0, a2*sin(i2)] [ 0, 0, 1, 0] [ 0, 0, 0, 1] >> A3=[cos(i3) -0*sin(i3) 1*sin(i3) a3*cos(i3); sin(i3) 0*cos(i3) -1*cos(i3) a3*sin(i3); d3; 0 1] A3 = [cos(i3), 0, sin(i3), a3*cos(i3)] [sin(i3), 0, -cos(i3), a3*sin(i3)] [ 0, 1, 0, 0] [ 0, 0, 0, 1] >> A4=[cos(i4) -0*sin(i4) -1*sin(i4) a4*cos(i4); sin(i4) 0*cos(i4) 1*cos(i4) a4*sin(i4); -1 d4; 0 1] A4 = [cos(i4), 0, -sin(i4), 0] [sin(i4), 0, cos(i4), 0] [ 0, -1, 0, d4] [ 0, 0, 0, 1] >> A5=[cos(i5) -0*sin(i5) 1*sin(i5) a5*cos(i5); sin(i5) 0*cos(i5) -1*cos(i5) a5*sin(i5); d5; 0 1] A5 = [cos(i5), 0, sin(i5), 0] [sin(i5), 0, -cos(i5), 0] [ 0, 1, 0, 0] [ 0, 0, 0, 1] >> A6=[cos(i6) -1*sin(i6) 0*sin(i6) a6*cos(i6); sin(i6) 1*cos(i6) -0*cos(i6) a6*sin(i6); 0 d6; 0 1] A6 = [cos(i6), -sin(i6), 0, 0] [sin(i6), cos(i6), 0, 0] [ 0, 0, 1, d6] [ 0, 0, 0, 1] >> T06=A1*A2*A3*A4*A5*A6 T06 = [- cos(i6)*(sin(i5)*(cos(i1)*cos(i2)*sin(i3) + cos(i1)*cos(i3)*sin(i2)) + cos(i5)*(sin(i1)*sin(i4) cos(i4)*(cos(i1)*cos(i2)*cos(i3) - cos(i1)*sin(i2)*sin(i3)))) - sin(i6)*(cos(i4)*sin(i1) + sin(i4)*(cos(i1)*cos(i2)*cos(i3) - cos(i1)*sin(i2)*sin(i3))), sin(i6)*(sin(i5)*(cos(i1)*cos(i2)*sin(i3) + cos(i1)*cos(i3)*sin(i2)) + cos(i5)*(sin(i1)*sin(i4) cos(i4)*(cos(i1)*cos(i2)*cos(i3) - cos(i1)*sin(i2)*sin(i3)))) - cos(i6)*(cos(i4)*sin(i1) + sin(i4)*(cos(i1)*cos(i2)*cos(i3) - cos(i1)*sin(i2)*sin(i3))), cos(i5)*(cos(i1)*cos(i2)*sin(i3) + cos(i1)*cos(i3)*sin(i2)) - sin(i5)*(sin(i1)*sin(i4) - cos(i4)*(cos(i1)*cos(i2)*cos(i3) cos(i1)*sin(i2)*sin(i3))), d6*(cos(i5)*(cos(i1)*cos(i2)*sin(i3) + cos(i1)*cos(i3)*sin(i2)) sin(i5)*(sin(i1)*sin(i4) - cos(i4)*(cos(i1)*cos(i2)*cos(i3) - cos(i1)*sin(i2)*sin(i3)))) + a1*cos(i1) + d4*(cos(i1)*cos(i2)*sin(i3) + cos(i1)*cos(i3)*sin(i2)) + a2*cos(i1)*cos(i2) + a3*cos(i1)*cos(i2)*cos(i3) - a3*cos(i1)*sin(i2)*sin(i3)] [- cos(i6)*(sin(i5)*(cos(i2)*sin(i1)*sin(i3) + cos(i3)*sin(i1)*sin(i2)) - cos(i5)*(cos(i1)*sin(i4) + cos(i4)*(cos(i2)*cos(i3)*sin(i1) - sin(i1)*sin(i2)*sin(i3)))) sin(i6)*(sin(i4)*(cos(i2)*cos(i3)*sin(i1) - sin(i1)*sin(i2)*sin(i3)) - cos(i1)*cos(i4)), sin(i6)*(sin(i5)*(cos(i2)*sin(i1)*sin(i3) + cos(i3)*sin(i1)*sin(i2)) - cos(i5)*(cos(i1)*sin(i4) + cos(i4)*(cos(i2)*cos(i3)*sin(i1) - sin(i1)*sin(i2)*sin(i3)))) cos(i6)*(sin(i4)*(cos(i2)*cos(i3)*sin(i1) - sin(i1)*sin(i2)*sin(i3)) - cos(i1)*cos(i4)), cos(i5)*(cos(i2)*sin(i1)*sin(i3) + cos(i3)*sin(i1)*sin(i2)) + sin(i5)*(cos(i1)*sin(i4) + cos(i4)*(cos(i2)*cos(i3)*sin(i1) - sin(i1)*sin(i2)*sin(i3))), d6*(cos(i5)*(cos(i2)*sin(i1)*sin(i3) + cos(i3)*sin(i1)*sin(i2)) + sin(i5)*(cos(i1)*sin(i4) + cos(i4)*(cos(i2)*cos(i3)*sin(i1) sin(i1)*sin(i2)*sin(i3)))) + a1*sin(i1) + d4*(cos(i2)*sin(i1)*sin(i3) + cos(i3)*sin(i1)*sin(i2)) + a2*cos(i2)*sin(i1) + a3*cos(i2)*cos(i3)*sin(i1) - a3*sin(i1)*sin(i2)*sin(i3)] [ cos(i6)*(sin(i5)*(sin(i2)*sin(i3) cos(i2)*cos(i3)) - cos(i4)*cos(i5)*(cos(i2)*sin(i3) + cos(i3)*sin(i2))) + sin(i4)*sin(i6)*(cos(i2)*sin(i3) + cos(i3)*sin(i2)), cos(i6)*sin(i4)*(cos(i2)*sin(i3) + cos(i3)*sin(i2)) - sin(i6)*(sin(i5)*(sin(i2)*sin(i3) cos(i2)*cos(i3)) - cos(i4)*cos(i5)*(cos(i2)*sin(i3) + cos(i3)*sin(i2))), - cos(i5)*(sin(i2)*sin(i3) - cos(i2)*cos(i3)) - cos(i4)*sin(i5)*(cos(i2)*sin(i3) + cos(i3)*sin(i2)), d1 - d4*(sin(i2)*sin(i3) - cos(i2)*cos(i3)) - d6*(cos(i5)*(sin(i2)*sin(i3) - cos(i2)*cos(i3)) + cos(i4)*sin(i5)*(cos(i2)*sin(i3) + cos(i3)*sin(i2))) - a2*sin(i2) - a3*cos(i2)*sin(i3) a3*cos(i3)*sin(i2)] CHƯƠNG VI XÂY DỰNG MƠ HÌNH ĐỘNG LỰC HỌC CHO ĐỐITƯỢNG TRÊN TOOLBOX SIMSCAPE/MATLAB Hình ảnh mơ mơ hình solid work Đế Thanh nối Thanh nối Thanh nối Thanh Thanh Mô robot matlab Giao diện: Kéo thả để nhập góc theta tính tồn Px Py Pz, close: đóng giao diện, reset: đưa robot tọa độ ban đầu Chương trình matlab: function varargout = giaodien(varargin) gui_Singleton = 1; gui_State = struct('gui_Name', mfilename, 'gui_Singleton', gui_Singleton, 'gui_OpeningFcn', @giaodien_OpeningFcn, 'gui_OutputFcn', @giaodien_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 giaodien_OpeningFcn(hObject, eventdata, handles, varargin) handles.output = hObject; % Update handles structure guidata(hObject, handles); function varargout = giaodien_OutputFcn(hObject, eventdata, handles) varargout{1} = handles.output; function slider1_Callback(hObject, eventdata, handles) a1=0.075; a2=0.27; a3=-0.09; d1=-0.335; d4=0.295; d6=0.08; ModelName = 'Assem1'; global var; theta1=get(handles.slider1,'value'); set(handles.edit1,'string',num2str(theta1)); theta2=get(handles.slider2,'value'); set(handles.edit2,'string',num2str(theta2)); theta3=get(handles.slider3,'value'); set(handles.edit3,'string',num2str(theta3)); theta4=get(handles.slider4,'value'); set(handles.edit4,'string',num2str(theta4)); theta5=get(handles.slider5,'value'); set(handles.edit5,'string',num2str(theta5)); theta6=get(handles.slider6,'value'); set(handles.edit6,'string',num2str(theta6)); set_param([ModelName '/Slider Gain'],'Gain',num2str(theta1)) set_param([ModelName '/Slider Gain1'],'Gain',num2str(theta2)) set_param([ModelName '/Slider Gain2'],'Gain',num2str(theta3)) set_param([ModelName '/Slider Gain3'],'Gain',num2str(theta4)) set_param([ModelName '/Slider Gain4'],'Gain',num2str(theta5)) set_param([ModelName '/Slider Gain5'],'Gain',num2str(theta6)) A1=[cosd(theta1) -sind(theta1) a1*cosd(theta1) ; sind(theta1) cosd(theta1) a1*sind(theta1) ; -1 d1 ; 0 1]; A2=[cosd(theta2) -sind(theta2) a2*cosd(theta2) ; sind(theta2) cosd(theta2) a2*sind(theta2) ; 0 ; 0 1]; A3=[cosd(theta3) sind(theta3) a3*cosd(theta3) ; sind(theta3) -cosd(theta3) a3*sind(theta3) ; 0 ; 0 1]; A4=[cosd(theta4) -sind(theta4) ; sind(theta4) cosd(theta4) 0 -1 d4 ; 0 1]; A5=[cosd(theta5) sind(theta5) ; sind(theta5) -cosd(theta5) 0 0 ; 0 1]; A6=[cosd(theta6) -sind(theta6) 0 ; sind(theta6) cosd(theta6) 0 0 d6 ; 0 1]; T=A1*A2*A3*A4*A5*A6; Px=T(1,4); Py=T(2,4); Pz=T(3,4); set(handles.edit5,'string',num2str(Px)); set(handles.edit6,'string',num2str(Py)); set(handles.edit7,'string',num2str(Pz)); function slider1_CreateFcn(hObject, eventdata, handles) if isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor',[.9 9]); end function slider2_Callback(hObject, eventdata, handles) a1=0.075; a2=0.27; a3=-0.09; d1=-0.335; d4=0.295; d6=0.08; ModelName = 'Assem1'; global var; theta1=get(handles.slider1,'value'); set(handles.edit1,'string',num2str(theta1)); theta2=get(handles.slider2,'value'); set(handles.edit2,'string',num2str(theta2)); theta3=get(handles.slider3,'value'); set(handles.edit3,'string',num2str(theta3)); theta4=get(handles.slider4,'value'); set(handles.edit4,'string',num2str(theta4)); theta5=get(handles.slider5,'value'); set(handles.edit5,'string',num2str(theta5)); ; ; ; theta6=get(handles.slider6,'value'); set(handles.edit6,'string',num2str(theta6)); set_param([ModelName '/Slider Gain'],'Gain',num2str(theta1)) set_param([ModelName '/Slider Gain1'],'Gain',num2str(theta2)) set_param([ModelName '/Slider Gain2'],'Gain',num2str(theta3)) set_param([ModelName '/Slider Gain3'],'Gain',num2str(theta4)) set_param([ModelName '/Slider Gain4'],'Gain',num2str(theta5)) set_param([ModelName '/Slider Gain5'],'Gain',num2str(theta6)) A1=[cosd(theta1) -sind(theta1) a1*cosd(theta1) ; sind(theta1) cosd(theta1) a1*sind(theta1) ; -1 d1 ; 0 1]; A2=[cosd(theta2) -sind(theta2) a2*cosd(theta2) ; sind(theta2) cosd(theta2) a2*sind(theta2) ; 0 ; 0 1]; A3=[cosd(theta3) sind(theta3) a3*cosd(theta3) ; sind(theta3) -cosd(theta3) a3*sind(theta3) ; 0 ; 0 1]; A4=[cosd(theta4) -sind(theta4) ; sind(theta4) cosd(theta4) 0 -1 d4 ; 0 1]; A5=[cosd(theta5) sind(theta5) ; sind(theta5) -cosd(theta5) 0 0 ; 0 1]; A6=[cosd(theta6) -sind(theta6) 0 ; sind(theta6) cosd(theta6) 0 0 d6 ; 0 1]; T=A1*A2*A3*A4*A5*A6; Px=T(1,4); Py=T(2,4); Pz=T(3,4); set(handles.edit7,'string',num2str(Px)); set(handles.edit8,'string',num2str(Py)); set(handles.edit9,'string',num2str(Pz)); function slider2_CreateFcn(hObject, eventdata, handles) if isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor',[.9 9]); end function slider3_Callback(hObject, eventdata, handles) a1=0.075; a2=0.27; a3=-0.09; d1=-0.335; d4=0.295; d6=0.08; ModelName = 'Assem1'; global var; theta1=get(handles.slider1,'value'); set(handles.edit1,'string',num2str(theta1)); theta2=get(handles.slider2,'value'); set(handles.edit2,'string',num2str(theta2)); ; ; ; theta3=get(handles.slider3,'value'); set(handles.edit3,'string',num2str(theta3)); theta4=get(handles.slider4,'value'); set(handles.edit4,'string',num2str(theta4)); theta5=get(handles.slider5,'value'); set(handles.edit5,'string',num2str(theta5)); theta6=get(handles.slider6,'value'); set(handles.edit6,'string',num2str(theta6)); set_param([ModelName '/Slider Gain'],'Gain',num2str(theta1)) set_param([ModelName '/Slider Gain1'],'Gain',num2str(theta2)) set_param([ModelName '/Slider Gain2'],'Gain',num2str(theta3)) set_param([ModelName '/Slider Gain3'],'Gain',num2str(theta4)) set_param([ModelName '/Slider Gain4'],'Gain',num2str(theta5)) set_param([ModelName '/Slider Gain5'],'Gain',num2str(theta6)) A1=[cosd(theta1) -sind(theta1) a1*cosd(theta1) ; sind(theta1) cosd(theta1) a1*sind(theta1) ; -1 d1 ; 0 1]; A2=[cosd(theta2) -sind(theta2) a2*cosd(theta2) ; sind(theta2) cosd(theta2) a2*sind(theta2) ; 0 ; 0 1]; A3=[cosd(theta3) sind(theta3) a3*cosd(theta3) ; sind(theta3) -cosd(theta3) a3*sind(theta3) ; 0 ; 0 1]; A4=[cosd(theta4) -sind(theta4) ; sind(theta4) cosd(theta4) 0 -1 d4 ; 0 1]; A5=[cosd(theta5) sind(theta5) ; sind(theta5) -cosd(theta5) 0 0 ; 0 1]; A6=[cosd(theta6) -sind(theta6) 0 ; sind(theta6) cosd(theta6) 0 0 d6 ; 0 1]; T=A1*A2*A3*A4*A5*A6; Px=T(1,4); Py=T(2,4); Pz=T(3,4); set(handles.edit7,'string',num2str(Px)); set(handles.edit8,'string',num2str(Py)); set(handles.edit9,'string',num2str(Pz)); function slider3_CreateFcn(hObject, eventdata, handles) if isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor',[.9 9]); end ; ; ; function slider4_Callback(hObject, eventdata, handles) a1=0.075; a2=0.27; a3=-0.09; d1=-0.335; d4=0.295; d6=0.08; ModelName = 'Assem1'; global var; theta1=get(handles.slider1,'value'); set(handles.edit1,'string',num2str(theta1)); theta2=get(handles.slider2,'value'); set(handles.edit2,'string',num2str(theta2)); theta3=get(handles.slider3,'value'); set(handles.edit3,'string',num2str(theta3)); theta4=get(handles.slider4,'value'); set(handles.edit4,'string',num2str(theta4)); theta5=get(handles.slider5,'value'); set(handles.edit5,'string',num2str(theta5)); theta6=get(handles.slider6,'value'); set(handles.edit6,'string',num2str(theta6)); set_param([ModelName '/Slider Gain'],'Gain',num2str(theta1)) set_param([ModelName '/Slider Gain1'],'Gain',num2str(theta2)) set_param([ModelName '/Slider Gain2'],'Gain',num2str(theta3)) set_param([ModelName '/Slider Gain3'],'Gain',num2str(theta4)) set_param([ModelName '/Slider Gain4'],'Gain',num2str(theta5)) set_param([ModelName '/Slider Gain5'],'Gain',num2str(theta6)) A1=[cosd(theta1) -sind(theta1) a1*cosd(theta1) ; sind(theta1) cosd(theta1) a1*sind(theta1) ; -1 d1 ; 0 1]; A2=[cosd(theta2) -sind(theta2) a2*cosd(theta2) ; sind(theta2) cosd(theta2) a2*sind(theta2) ; 0 ; 0 1]; A3=[cosd(theta3) sind(theta3) a3*cosd(theta3) ; sind(theta3) -cosd(theta3) a3*sind(theta3) ; 0 ; 0 1]; A4=[cosd(theta4) -sind(theta4) ; sind(theta4) cosd(theta4) 0 -1 d4 ; 0 1]; A5=[cosd(theta5) sind(theta5) ; sind(theta5) -cosd(theta5) 0 0 ; 0 1]; A6=[cosd(theta6) -sind(theta6) 0 ; sind(theta6) cosd(theta6) 0 0 d6 ; 0 1]; T=A1*A2*A3*A4*A5*A6; Px=T(1,4); ; ; ; Py=T(2,4); Pz=T(3,4); set(handles.edit7,'string',num2str(Px)); set(handles.edit8,'string',num2str(Py)); set(handles.edit9,'string',num2str(Pz)); function slider4_CreateFcn(hObject, eventdata, handles) if isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor',[.9 9]); end function slider5_Callback(hObject, eventdata, handles) a1=0.075; a2=0.27; a3=-0.09; d1=-0.335; d4=0.295; d6=0.08; ModelName = 'Assem1'; global var; theta1=get(handles.slider1,'value'); set(handles.edit1,'string',num2str(theta1)); theta2=get(handles.slider2,'value'); set(handles.edit2,'string',num2str(theta2)); theta3=get(handles.slider3,'value'); set(handles.edit3,'string',num2str(theta3)); theta4=get(handles.slider4,'value'); set(handles.edit4,'string',num2str(theta4)); theta5=get(handles.slider5,'value'); set(handles.edit5,'string',num2str(theta5)); theta6=get(handles.slider6,'value'); set(handles.edit6,'string',num2str(theta6)); set_param([ModelName '/Slider Gain'],'Gain',num2str(theta1)) set_param([ModelName '/Slider Gain1'],'Gain',num2str(theta2)) set_param([ModelName '/Slider Gain2'],'Gain',num2str(theta3)) set_param([ModelName '/Slider Gain3'],'Gain',num2str(theta4)) set_param([ModelName '/Slider Gain4'],'Gain',num2str(theta5)) set_param([ModelName '/Slider Gain5'],'Gain',num2str(theta6)) A1=[cosd(theta1) -sind(theta1) a1*cosd(theta1) ; sind(theta1) cosd(theta1) a1*sind(theta1) ; -1 d1 ; 0 1]; A2=[cosd(theta2) -sind(theta2) a2*cosd(theta2) ; sind(theta2) cosd(theta2) a2*sind(theta2) ; 0 ; 0 1]; A3=[cosd(theta3) sind(theta3) a3*cosd(theta3) ; sind(theta3) -cosd(theta3) a3*sind(theta3) ; 0 ; 0 1]; A4=[cosd(theta4) -sind(theta4) ; sind(theta4) cosd(theta4) 0 -1 d4 ; 0 1]; A5=[cosd(theta5) sind(theta5) ; sind(theta5) -cosd(theta5) 0 0 ; 0 1]; A6=[cosd(theta6) -sind(theta6) 0 ; sind(theta6) cosd(theta6) 0 0 d6 ; 0 1]; T=A1*A2*A3*A4*A5*A6; Px=T(1,4); Py=T(2,4); Pz=T(3,4); set(handles.edit7,'string',num2str(Px)); set(handles.edit8,'string',num2str(Py)); set(handles.edit9,'string',num2str(Pz)); function slider5_CreateFcn(hObject, eventdata, handles) if isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor',[.9 9]); end function slider6_Callback(hObject, eventdata, handles) a1=0.075; a2=0.27; a3=-0.09; d1=-0.335; d4=0.295; d6=0.08; ModelName = 'Assem1'; global var; theta1=get(handles.slider1,'value'); set(handles.edit1,'string',num2str(theta1)); theta2=get(handles.slider2,'value'); set(handles.edit2,'string',num2str(theta2)); theta3=get(handles.slider3,'value'); set(handles.edit3,'string',num2str(theta3)); theta4=get(handles.slider4,'value'); set(handles.edit4,'string',num2str(theta4)); theta5=get(handles.slider5,'value'); set(handles.edit5,'string',num2str(theta5)); theta6=get(handles.slider6,'value'); set(handles.edit6,'string',num2str(theta6)); ; ; ; set_param([ModelName '/Slider Gain'],'Gain',num2str(theta1)) set_param([ModelName '/Slider Gain1'],'Gain',num2str(theta2)) set_param([ModelName '/Slider Gain2'],'Gain',num2str(theta3)) set_param([ModelName '/Slider Gain3'],'Gain',num2str(theta4)) set_param([ModelName '/Slider Gain4'],'Gain',num2str(theta5)) set_param([ModelName '/Slider Gain5'],'Gain',num2str(theta6)) A1=[cosd(theta1) -sind(theta1) a1*cosd(theta1) ; sind(theta1) cosd(theta1) a1*sind(theta1) ; -1 d1 ; 0 1]; A2=[cosd(theta2) -sind(theta2) a2*cosd(theta2) ; sind(theta2) cosd(theta2) a2*sind(theta2) ; 0 ; 0 1]; A3=[cosd(theta3) sind(theta3) a3*cosd(theta3) ; sind(theta3) -cosd(theta3) a3*sind(theta3) ; 0 ; 0 1]; A4=[cosd(theta4) -sind(theta4) ; sind(theta4) cosd(theta4) 0 -1 d4 ; 0 1]; A5=[cosd(theta5) sind(theta5) ; sind(theta5) -cosd(theta5) 0 0 ; 0 1]; A6=[cosd(theta6) -sind(theta6) 0 ; sind(theta6) cosd(theta6) 0 0 d6 ; 0 1]; T=A1*A2*A3*A4*A5*A6; Px=T(1,4); Py=T(2,4); Pz=T(3,4); ; ; ; set(handles.edit7,'string',num2str(Px)); set(handles.edit8,'string',num2str(Py)); set(handles.edit9,'string',num2str(Pz)); function slider6_CreateFcn(hObject, eventdata, handles) if isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor',[.9 9]); end function edit1_Callback(hObject, eventdata, handles) function edit1_CreateFcn(hObject, eventdata, handles) if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end function edit2_Callback(hObject, eventdata, handles) function edit2_CreateFcn(hObject, eventdata, handles) if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end function edit3_Callback(hObject, eventdata, handles) function edit3_CreateFcn(hObject, eventdata, handles) if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end function edit4_Callback(hObject, eventdata, handles) function edit4_CreateFcn(hObject, eventdata, handles) if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end function edit5_Callback(hObject, eventdata, handles) function edit5_CreateFcn(hObject, eventdata, handles) if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end function edit6_Callback(hObject, eventdata, handles) function edit6_CreateFcn(hObject, eventdata, handles) if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end function edit7_Callback(hObject, eventdata, handles) function edit7_CreateFcn(hObject, eventdata, handles) if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end function edit8_Callback(hObject, eventdata, handles) function edit8_CreateFcn(hObject, eventdata, handles) if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end function edit9_Callback(hObject, eventdata, handles) function edit9_CreateFcn(hObject, eventdata, handles) if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end function pushbutton2_Callback(hObject, eventdata, handles) close; function pushbutton1_Callback(hObject, eventdata, handles) a1=0.075; a2=0.27; a3=-0.09; d1=-0.335; d4=0.295; d6=0.08; ModelName = 'Assem1'; global var; theta1=get(handles.slider1,'value'); theta1=0; set(handles.edit1,'string',num2str(theta1)); theta2=get(handles.slider2,'value'); theta2=0; set(handles.edit2,'string',num2str(theta2)); theta3=get(handles.slider3,'value'); theta3=0; set(handles.edit3,'string',num2str(theta3)); theta4=get(handles.slider4,'value'); theta4=0; set(handles.edit4,'string',num2str(theta4)); theta5=get(handles.slider5,'value'); theta5=0; set(handles.edit5,'string',num2str(theta5)); theta6=get(handles.slider6,'value'); theta6=0; set(handles.edit6,'string',num2str(theta6)); set_param([ModelName '/Slider Gain'],'Gain',num2str(theta1)) set_param([ModelName '/Slider Gain1'],'Gain',num2str(theta2)) set_param([ModelName '/Slider Gain2'],'Gain',num2str(theta3)) set_param([ModelName '/Slider Gain3'],'Gain',num2str(theta4)) set_param([ModelName '/Slider Gain4'],'Gain',num2str(theta5)) set_param([ModelName '/Slider Gain5'],'Gain',num2str(theta6)) A1=[cosd(theta1) -sind(theta1) a1*cosd(theta1) ; sind(theta1) cosd(theta1) a1*sind(theta1) ; -1 d1 ; 0 1]; A2=[cosd(theta2) -sind(theta2) a2*cosd(theta2) ; sind(theta2) cosd(theta2) a2*sind(theta2) ; 0 ; 0 1]; A3=[cosd(theta3) sind(theta3) a3*cosd(theta3) ; sind(theta3) -cosd(theta3) a3*sind(theta3) ; 0 ; 0 1]; A4=[cosd(theta4) -sind(theta4) ; sind(theta4) cosd(theta4) 0 -1 d4 ; 0 1]; A5=[cosd(theta5) sind(theta5) ; sind(theta5) -cosd(theta5) 0 0 ; 0 1]; A6=[cosd(theta6) -sind(theta6) 0 ; sind(theta6) cosd(theta6) 0 0 d6 ; 0 1]; T=A1*A2*A3*A4*A5*A6; Px=T(1,4); Py=T(2,4); Pz=T(3,4); set(handles.edit7,'string',num2str(Px)); set(handles.edit8,'string',num2str(Py)); set(handles.edit9,'string',num2str(Pz)); ; ; ; ... NGƯỢC ROBOT VIPER 650 20 Bài toán tìm vị trí giao điểm trục cổ tay (tâm cổ tay) 21 Bài tốn tìm hướng cổ tay 23 CHƯƠNG V THIẾT KẾ QUỸ ĐẠO CHUYỂN ĐỘNG CHO ROBOT VIPER 650 ...Mục Lục CHƯƠNG I GIỚI THIỆU ROBOT OMRON VIPER 650 Giới thiệu hãng Omron Giới thiệu Robot Omron Viper 650 2.1 Thông số kỹ thuật 2.2... 01/04/2016 Omron Adept giới thiệu Robot cơng nghiệp thị trường đáp ứng đầy đủ tiêu chuẩn vệ sinh Bộ Nông nghiệp Hoa Kỳ cho phịng chống nhiễm sản phẩm Giới thiệu Robot Omron Viper 650 Robot Viper 650