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

Kỹ thuật robot nghiên cứu, phân tích, và Đánh giá kết quả hệ thống robot trr sử dụng mô hình hóa mô phỏng

39 0 0
Tài liệu đã được kiểm tra trùng lặp

Đ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

Tiêu đề Kỹ thuật robot nghiên cứu, phân tích, và đánh giá kết quả hệ thống robot TRR sử dụng mô hình hóa mô phỏng
Tác giả Nguyễn Văn A, Nguyễn Văn A, Nguyễn Văn A
Người hướng dẫn TS. Nguyễn Văn Tấn, Nguyễn Văn A
Trường học Trường Đại Học Thủ Dầu Một, Viện Kỹ Thuật – Công Nghệ
Chuyên ngành Kỹ Thuật Robot
Thể loại Tiểu luận
Năm xuất bản 2022
Thành phố Bình Dương
Định dạng
Số trang 39
Dung lượng 2,08 MB

Cấu trúc

  • CHƯƠNG 1: GIỚI THIỆU (9)
    • 1.1. Định nghĩa (9)
    • 1.2. Lịch sử hình thành (9)
    • 1.3. Phân loại (10)
  • CHƯƠNG 2: CƠ SỞ LÝ THUYẾT (11)
    • 2.1. Véc-tơ mô tả vị trí và tọa độ thuần nhất (11)
    • 2.2. Véc-tơ mô tả phép quay (11)
    • 2.3. Ma trận thuần nhất (12)
    • 2.4. Các tham số động học Denavit – Hartenberg (13)
    • 2.5. Ma trận Denavit – Hartenberg (14)
  • CHƯƠNG 3: TÍNH TOÁN ĐỘNG LỰC HỌC (16)
    • 3.1. Động học thuận (16)
    • 3.2. Động học nghịch (0)
    • 3.3. Kiểm tra tính đúng của động học (0)
  • CHƯƠNG 4: BẢN VẼ (21)
    • 4.1. Bản vẽ 3D (21)
      • 4.1.1. Phần đế (21)
      • 4.1.2. Khớp nối thứ nhất (22)
      • 4.1.3. Tay thứ nhất (22)
      • 4.1.4. Tay thứ hai (0)
      • 4.1.5. Khớp thứ tư và cơ cấu tác động cuối (0)
    • 4.2. Bản vẽ 2D (0)
      • 4.2.1. Đế robot (0)
      • 4.2.2. Tay thứ nhất (0)
      • 4.2.3. Tay thứ hai (0)
      • 4.2.4. Khớp thứ tư và cơ cấu tác động cuối (0)
  • CHƯƠNG 5: CHƯƠNG TRÌNH ĐIỀU KHIỂN (24)
    • 5.1. Sơ đồ khối Simmulink (24)
    • 5.2. Màn hình giao diện GUI (26)
  • cos 0 sin 0 (0)
  • sin 0 cos 0 (0)

Nội dung

Tham gia trễ hơn 15phút đến 30 phútTham gia trễhơn 30 phútkhông có lý doThái độ tham gia tích cực tốt Kết nốikhá tốtkhác Có kết nối nhưngđôi khi còn lơ là,phải nhắc nhỡ Hũu ích Tương đối

GIỚI THIỆU

Định nghĩa

Kỹ thuật robot là một ngành kỹ thuật liên quan đến việc thiết kế, chế tạo, vận hành và ứng dụng robot Robot là một hệ thống tự đọng có thể thực hiện một số nhiệm vụ được chỉ định, chúng thường được ứng dụng trong các ngành sản xuất, dịch vụ và quân sự Ngành kỹ thuật robot là một ngành có tính liên ngành cao, kết hợp các kiến thức của nhiều lĩnh vực như: cơ khí, điện tử, điều khiển tự động, trí tuệ nhân tạo,… Dưới đây là 1 số xu hướng chính trong ngành kỹ thuật robot:

- Tự động hóa: Robot đang được sử dụng ngày càng nhiều trong các ngành sàn xuất để tự động hóa các nhiệm vụ nguy hiểm hoặc lặp đi lặp lại.

- Trí tuệ nhân tạo: trí tuệ nhân tạo đang được sử dụng để nâng cao khả năng của robot cho phép chúng thực hiện các nhiệm vụ phức tạp hơn.

- Robot di dộng: Robot di động đang trở nên phổ biến hơn, cho phép chúng được sử dụng trong nhiều môi trường khác nhau.

- Robot cộng tác: robot cộng tác (cobots) được thiết kế để lam việc an toàn cùng con người

Lịch sử hình thành

Giai đoạn này được đánh dấu bởi sự ra đời của thuật ngữ “robot” trong vở kịch

“Các robot toàn năng của Rossum” của nhà văn Séc Karel Capek vào năm 1920 Tuy nhiên, những robot đầu tiên thực sự tạo ra trong giai đoạn này vẫn còn đơn giản và ko có nhiều khả năng.

Một trong những robot nổi tiếng nhất của giai đoạn này là robot Unimate, được phát triển bởi Joseph F Engberger vào năm 1954 Unimate là robot công nghiệp đầu tiên được sử dụng trong sản xuất, nó đã mở đường cho sự phát triển của robot công nghiệp trong những thập kỷ tiếp theo.

Giai đoạn này chứng kiến sự phát triển nhanh trong của kỹ thuật robot Các công nghệ mới như máy tính và trí tuệ nhân tạo đã được áp dụng vào robot, giúp chúng trở nên phức tạp và linh hoạt hơn.

Một trong những thành tựu nổi bật nhất của giai đoạn này là sự phát triển của robot tự hành, robot tự hành đầu tiên là robot shakey, được phát triển bởi viện nghiên cứu trí thông minh nhân tạo thuộc đại học Stanford vào năm 1969 Shakey có thể di chuyển trong môi trường phức tạp và thực hiện các nhiệm vụ như mở của, lấy đồ vật và tránh chướng ngại vật

Chứng kiến sự phát triển mạnh mẽ của kỹ thuật robot, Robot được sử dụng ngày càng nhiều Hơn thế nữa robot hiện nay đang được phát triển để hoạt động trong môi trường khắc nghiệt: dưới nước, trong lòng đất hoặc ngoài không gian Lịch sử hoàn thiện của kỹ thuật robot đang tiếp tục được viết, với sự phát triển của công nghệ,robot sẽ tiếp tục được cải tiến và ứng dụng trong nhiều lĩnh vực hơn nữa trong tương lai.

Phân loại

Có thể phân loại theo:

 Mục đích sử dụng: robot công nghiệp, robot dịch vụ, robot quân sự, y tế, giải trí, nghiên cứu,….

 Dựa trên cấu trúc: robot cánh ta, robot di động, cộng tác, robot humanoid, dưới nước, trên không, vũ trụ,….

 Dựa trên mức độ tự động hóa: robot tự động hoàn toàn, robot bán tự động và robot không tự động.

 Dựa trên khả năng cảm nhận: Robot thụ động, robot chủ động và robot thông minh

CƠ SỞ LÝ THUYẾT

Véc-tơ mô tả vị trí và tọa độ thuần nhất

Trong hình học, một vị trí hoặc vector vị trí, còn được gọi là tọa độ vector hoặc bán kính vector, là một vectơ đại diện cho vị trí của một điểm P trong không gian liên quan đến một hệ quy chiếu gốc O tùy ý.

Trong hệ tọa độ Oxyz, điểm M được xác định bằng véc- tơ ri: xi i yi zy r r r r

Hình 1 Biểu diễn 1 điểm trong không gian

Ký hiệu (…) T là phép chuyển vị (Transportation) véc-tơ hàng thành véc-tơ cột. Để biểu diễn véc-tơ trong không gian tọa độ có thực, véc-tơ mở rộng có thể viết lại như sau:

Thông thường lấy w = 1, nếu lấy w ≠ 1 thì tọa độ biểu diễn gấp w lần tọa độ thực,nên có thể gọi w là hệ số tỷ lệ.

Véc-tơ mô tả phép quay

Trước hết thiết lập quan hệ giữa 2 hệ toạ độ XYZ và UVW chuyển động quay tương dối với nhau khi gốc O của 2 hệ vần trùng nhau Gọi ( ix, iy, iz) và (iu, iv, iw) là các vectơ đơn vị chỉ phương các trục OXYZ và OUWW tương ứng:

Hình 2 Các hệ tọa độ

Một điểm M nào đó được biểu diễn trong hệ toạ độ OXYZ bằng vectơ:

Còn trong hệ toạ độ OUVW bằng vectơ:

Viết dưới dạng ma trận: x u x v x w y u y v y w z u z v z w i i i j i k rx ry j i j j j j rz k i k j j j

Gọi R là ma trận quay (rotation) 3x3 với các phần tứ là tích vô hướng 2 vectơ chỉ phương các trục tương ứng của 2 hệ toạ độ OXYZ và OUVW Có thể biểu diễn các phần tử ma trận R và R 1 như sau: cos( , ) cos( , ) cos( , ) cos( , ) cos( , ) cos( , ) cos( , ) cos( , ) cos( , ) y x u x v x w

1 cos( , ) cos( , ) cos( , ) cos( , ) cos( , ) cos( , ) cos( , ) cos( , ) cos( , ) y u x u y u z

Ma trận thuần nhất

Trong không gian, vị trí của điểm mới cần được xác định sau khi thực hiện động tác, cần phải có thông tin cả về phép quay và vị trị của điểm Do đó, ma trận 4x4 được gọi là ma trận thuần nhất được biểu diễn dưới dạng 4 khối sau: x x x x y 0 z n s a p n s a p n s a p

R - ma trận quay 3x3 p - ma trận 3x1 biểu thị 3 toạ độ cùa điểm gốc hệ toạ độ of trong hệ tọa độ OXYZ1x3 - ma trận không1x1- ma trận đơn vị

Các tham số động học Denavit – Hartenberg

Đối với robot công nghiệp, Denavit – Hartenberg (1995) đã đưa ra cách chọn trục tọa độ như sau:

1 Chọn trục zi-1 được chọn dọc theo hướng của trục khớp động thứ i

2 Trục xi-1 được chọn dọc theo đường vuông góc chung của hai trục zi-2 và zi-1, hướng đi từ trục zi-2 sang trục zi-1 Nếu trục zi-1 cắt trục zi-2 thì hướng của trục xi-1 được chọn tùy ý.

3 Các góc tọa độ Oi-1 được chọn tại điểm giao của trục xi-1 và zi-1.

4 Trục yi-1 được chọn sao cho hệ (Oxyz)i-1 là hệ quy chiếu thuận.

Với cách chọn hệ tọa độ như trên, đôi khi các hệ tọa độ khâu (Oxyz)i-1 không xác định được một cách duy nhất Vì vậy ta cần có một số bổ sung thích hợp như sau:

5 Đối với hệ trục tọa độ (Oxyz)0 theo quy ước trên ta mới chỉ chọn được trục z0 còn trục x0 chưa có trong quy ước trên Ta có thể chọn trục x0 một cách tùy ý.

6 Đối với hệ trục tọa độ (Oxyz)n do không có khớp n+1, nên theo quy ước trên không xác định được trục zn Trục zn không được xác định duy nhất, trong khi trục xn lại được chọn theo pháp tuyến của trục zn-1 Trong trường hợp này, nếu khớp n là khớp quy ta có thể chọn trục zn song song với trục zn-1 Ngoài ra, có thể chọn tùy ý sao cho hợp lý.

7 Khi hai trục zi-2 và zi-1 song song với nhau, giữa hai trục này có nhiều đường pháp tuyến chung, có thể chọn trục xi-1 hướng theo pháp tuyến chung nào cũng được.

8 Khi khớp thứ I là khớp tịnh tiến, về nguyên tắc có thẻ chọn trục zi-1 một cách tùy ý Tuy nhiên trong nhiều trường hợp người ta thường chọn trục zi-1 dọc theo trục của khớp tịnh tiến này.

Vị trí của hệ tọa độ khaia (Oxyz), đối với hệ tọa độ khâu (Oxyz)i-1 được xác định bởi 4 tham số Denavit – Hartenberg θ i , d i , a i , α i như sau:

- θ i : góc quanh quanh trục zi-1 để trục xi-1 chuyển đến trục x’1 (x’i // xi)

- d i : dịch chuyển tịnh tiến dọc theo trục zi-1 để góc tọa độ Oi-1 chuyển đến O’i giao điểm của trục xi và trục zi-1.

- a i : dịch chuyển tịnh tiến dọc theo trục xi để điểm O’i chuyển đến O’i.

- α i : góc quay quanh trục xi sao cho trục z’i-1 chuyển đến trục zi.

Trong bốn tham số trên, các tham số a i và α i luôn luôn là hằng số, độ lớn của chúng phụ thuộc vào hình dáng và sự ghép nối các khâu thứ i – 1 và thứ i Hai tham số còn lại θi và di, một là hằng số, một là biến số phụ thuộc vào khớp i là khớp quay hay khớp tịnh tiến Khi khớp i là khớp quay thì θi là biến, còn di là hằng số Khi khớp i là khớp tịnh tiến thì θi là hằng số, còn di là biến.

Ma trận Denavit – Hartenberg

Có thể dịch chuyển tọa độ các khâu (Oxyz)i-1 sang hệ tọa độ các khâu (Oxyz)i, bằng bốn phép biến đổi cơ bản như sau:

- Quay quanh trục zi-1 một góc θ i

- Dịch chuyển tịnh tiến dọc trục z i-1 một đoạn d i

- Dịch chuyển tịnh tiến dọc trục x i một đoạn a i

- Quanh quanh trục x i một góc α i

Ma trận của phép biến đổi, ký hiệu Hi, là tích của bốn ma trận biến đổi cơ bản và có dạng như sau:

0 i cos - sin cos sin sin cos sin cos cos - cos sin sin

TÍNH TOÁN ĐỘNG LỰC HỌC

Động học thuận

Động học thuận trong kỹ thuật robot là xác định các góc khớp cần thiết để đạt được một vị trí và hướng mong muốn của cánh tay robot Nó là một vấn đề ngược, nghĩa là các khớp là các biến độc lập, vị trí và hướng của tay robot là các biến phụ thuộc.

Hình 3 Hệ trục tọa độ trên cánh tay robot

Số bậc tự do của robot: 3

Trong đó: ai: αi: Góc giữa trục Zi-1 và Zi quay xung quanh trục Xi di: Khoảng cách tử trục Xi-1 đến trục Xi dọc theo trục Zi-1

Bảng 1 Bảng thông số động học cánh tay robot 4 bậc tự do θi: Góc giữa trục Xi-1 và Xi quay xung quanh trục Zi-1

Ma trận chuyển đổi từ hệ n-1 sang n:

2 2 2 2 1 2 cos - sin 0 l cos sin cos 0 l sin 0 0 1 0

Ma trận biến đổi thuần nhất x x x x

Trong đó: nx = cos(t1)*cos(t2) 77\*

MERGEFORMAT (3.) ny = cos(t2)*sin(t1) 88\*MERGEFORMAT (3.) nz = sin(t2) 99\*

MERGEFORMAT (3.) pz = a1 + a2*sin(t2) + a3*sin(t2) 1818\* MERGEFORMAT (3.)

3.2 Động học nghịch Động học nghịch trong kỹ thuật robot là xác định vị trí và hướng tay robot khi đã biết các góc khớp Nó là một vấn đề thuận, nghĩa là các góc khớp là các biến phụ thuộc, vị trí và hướng của tay robot là các biến độc lập.

Hình 4 Tính toán động học nghịch

Xét tam giác vuông OP1A có: tan(theta1) = AP1/OA = x/y

Do đó, theta1 = arctan(x/y) command matlab: atan(x/y);

Xét tam giác vuông DCP có:

DP DC CP  OA AP  DO PP  x  y  l  z

Xét tam giác thường DEP có:

Command matlab: op1 = sqrt(x^2+y^2); dp = sqrt(op1^2+(l1-z)^2; t21 = acosd((l2^2+DP^2-l3^2)/(2*l2*DP));

Xét tam giác vuông DFP có:

Xét tam giác thường DEP có:

Kiểm tra tính đúng của động học

Hình 5 Bản vẽ lắp 3D tổng thể4.1.1 Phần đế

BẢN VẼ

Bản vẽ 3D

Hình 5 Bản vẽ lắp 3D tổng thể4.1.1 Phần đế

Hình 6 Bản vẽ chi tiết phần đế 3D 4.1.2 Khớp nối thứ nhất

Hình 7 Bản vẽ chi tiết khớp nối phần đế 3D4.1.3 Tay thứ nhất

Hình 8 Bản vẽ chi tiết 3D tay thứ hai 4.1.4 Khớp 3 và cơ cấu tác động cuối

Hình 9 Bản vẽ chi tiết 3D khớp 3 và cơ cấu tác động cuối

Bản vẽ 2D

Hình 10 Sơ đồ khối điều khiển trong Matlab Simmulink

CHƯƠNG TRÌNH ĐIỀU KHIỂN

Sơ đồ khối Simmulink

Hình 10 Sơ đồ khối điều khiển trong Matlab Simmulink

Hình 11 Kết quả chạy trong Matlab Simmulink

Màn hình giao diện GUI

Hình 12 Màn hình giao diện GUI trong Matlab 5.3 Code đổ chương trình function varargout = control(varargin) gui_Singleton = 1; gui_State = struct('gui_Name', mfilename,

'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 control_OpeningFcn(hObject, eventdata, handles, varargin) handles.output = hObject; guidata(hObject, handles); function varargout = control_OutputFcn(hObject, eventdata, handles) varargout{1} = handles.output; function slider1_Callback(hObject, eventdata, handles) ModelName = 'robotAssem3'; a1 = 496; a2 = 500; a3 = 451.38; a4 = 175.20; 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)); 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));

T1 = [ cosd(theta1) 0 sind(theta1) 0; sind(theta1) 0 -cosd(theta1) 0;

T2 = [ cosd(theta2) -sind(theta2) 0 a2*cosd(theta2); sind(theta2) cosd(theta2) 0 a2*sind(theta2);

T3 = [ cosd(theta3) -sind(theta3) 0 a3*cosd(theta3); sind(theta3) cosd(theta3) 0 a3*sind(theta3);

T4 = [ cosd(theta4) -sind(theta4) 0 a4*cosd(theta4); sind(theta4) cosd(theta4) 0 a4*sind(theta4);

T = T1*T2*T3*T4; 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 9]); end function slider2_Callback(hObject, eventdata, handles) ModelName = 'robotAssem3'; a1 = 496; a2 = 500; a3 = 451.38; a4 = 175.20; 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_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));

T1 = [ cosd(theta1) 0 sind(theta1) 0; sind(theta1) 0 -cosd(theta1) 0;

T2 = [ cosd(theta2) -sind(theta2) 0 a2*cosd(theta2); sind(theta2) cosd(theta2) 0 a2*sind(theta2);

T3 = [ cosd(theta3) -sind(theta3) 0 a3*cosd(theta3); sind(theta3) cosd(theta3) 0 a3*sind(theta3);

T4 = [ cosd(theta4) -sind(theta4) 0 a4*cosd(theta4); sind(theta4) cosd(theta4) 0 a4*sind(theta4);

T = T1*T2*T3*T4; 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 slider2_CreateFcn(hObject, eventdata, handles) if isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor',[.9 9 9]); end function slider3_Callback(hObject, eventdata, handles) ModelName = 'robotAssem3'; a1 = 496; a2 = 500; a3 = 451.38; a4 = 175.20; 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)); 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));

T1 = [ cosd(theta1) 0 sind(theta1) 0; sind(theta1) 0 -cosd(theta1) 0;

T2 = [ cosd(theta2) -sind(theta2) 0 a2*cosd(theta2); sind(theta2) cosd(theta2) 0 a2*sind(theta2);

T3 = [ cosd(theta3) -sind(theta3) 0 a3*cosd(theta3); sind(theta3) cosd(theta3) 0 a3*sind(theta3);

T4 = [ cosd(theta4) -sind(theta4) 0 a4*cosd(theta4); sind(theta4) cosd(theta4) 0 a4*sind(theta4);

T = T1*T2*T3*T4; 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 slider3_CreateFcn(hObject, eventdata, handles) if isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor',[.9 9 9]); end function slider4_Callback(hObject, eventdata, handles) ModelName = 'robotAssem3'; a1 = 496; a2 = 500; a3 = 451.38; a4 = 175.20; 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)); 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));

T1 = [ cosd(theta1) 0 sind(theta1) 0; sind(theta1) 0 -cosd(theta1) 0;

T2 = [ cosd(theta2) -sind(theta2) 0 a2*cosd(theta2); sind(theta2) cosd(theta2) 0 a2*sind(theta2);

T3 = [ cosd(theta3) -sind(theta3) 0 a3*cosd(theta3); sind(theta3) cosd(theta3) 0 a3*sind(theta3);

T4 = [ cosd(theta4) -sind(theta4) 0 a4*cosd(theta4); sind(theta4) cosd(theta4) 0 a4*sind(theta4);

T = T1*T2*T3*T4; 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 slider4_CreateFcn(hObject, eventdata, handles) if isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor',[.9 9 9]); 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) py = get(handles.edit9,'string'); set(handles.slider6,'value',str2num(py)); function edit9_CreateFcn(hObject, eventdata, handles) if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end function edit10_Callback(hObject, eventdata, handles) pz = get(handles.edit10,'string'); set(handles.slider7,'value',str2num(pz)); function edit10_CreateFcn(hObject, eventdata, handles) if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end function slider6_Callback(hObject, eventdata, handles) py = get(handles.slider6,'value'); set(handles.edit9,'string',num2str(py)); function slider6_CreateFcn(hObject, eventdata, handles) if isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor',[.9 9 9]); end function slider7_Callback(hObject, eventdata, handles) pz = get(handles.slider7,'value'); set(handles.edit10,'string',num2str(pz)); function slider7_CreateFcn(hObject, eventdata, handles) if isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor',[.9 9 9]); end function edit1_Callback(hObject, eventdata, handles) ModelName = 'robotAssem3'; a1 = 496; a2 = 500; a3 = 451.38; a4 = 175.20; thate1=get(handles.edit1,'string'); thate2=get(handles.edit2,'string'); thate3=get(handles.edit3,'string'); thate4=get(handles.edit4,'string'); theta1= str2num(thate1); theta2= str2num(thate2); theta3= str2num(thate3); theta4= str2num(thate4); set(handles.slider1,'value',theta1); set(handles.slider2,'value',theta2); set(handles.slider3,'value',theta3); set(handles.slider4,'value',theta4); 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));

T1 = [ cosd(theta1) 0 sind(theta1) 0; sind(theta1) 0 -cosd(theta1) 0;

T2 = [ cosd(theta2) -sind(theta2) 0 a2*cosd(theta2); sind(theta2) cosd(theta2) 0 a2*sind(theta2);

T3 = [ cosd(theta3) -sind(theta3) 0 a3*cosd(theta3); sind(theta3) cosd(theta3) 0 a3*sind(theta3);

T4 = [ cosd(theta4) -sind(theta4) 0 a4*cosd(theta4); sind(theta4) cosd(theta4) 0 a4*sind(theta4);

T = T1*T2*T3*T4; 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 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) ModelName = 'robotAssem3'; a1 = 496; a2 = 500; a3 = 451.38; a4 = 175.20; thate2=get(handles.edit2,'string'); thate3=get(handles.edit3,'string'); thate4=get(handles.edit4,'string'); theta1= str2num(thate1); theta2= str2num(thate2); theta3= str2num(thate3); theta4= str2num(thate4); set(handles.slider1,'value',theta1); set(handles.slider2,'value',theta2); set(handles.slider3,'value',theta3); set(handles.slider4,'value',theta4); 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));

T1 = [ cosd(theta1) 0 sind(theta1) 0; sind(theta1) 0 -cosd(theta1) 0;

T2 = [ cosd(theta2) -sind(theta2) 0 a2*cosd(theta2); sind(theta2) cosd(theta2) 0 a2*sind(theta2);

T3 = [ cosd(theta3) -sind(theta3) 0 a3*cosd(theta3); sind(theta3) cosd(theta3) 0 a3*sind(theta3);

T4 = [ cosd(theta4) -sind(theta4) 0 a4*cosd(theta4); sind(theta4) cosd(theta4) 0 a4*sind(theta4);

T = T1*T2*T3*T4; 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 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) ModelName = 'robotAssem3'; a1 = 496; a2 = 500; a3 = 451.38; a4 = 175.20; thate1=get(handles.edit1,'string'); thate2=get(handles.edit2,'string'); thate3=get(handles.edit3,'string'); thate4=get(handles.edit4,'string'); theta1= str2num(thate1); theta2= str2num(thate2); theta3= str2num(thate3); theta4= str2num(thate4); set(handles.slider1,'value',theta1); set(handles.slider2,'value',theta2); set(handles.slider3,'value',theta3); set(handles.slider4,'value',theta4); 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));

T1 = [ cosd(theta1) 0 sind(theta1) 0; sind(theta1) 0 -cosd(theta1) 0;

T2 = [ cosd(theta2) -sind(theta2) 0 a2*cosd(theta2); sind(theta2) cosd(theta2) 0 a2*sind(theta2);

T3 = [ cosd(theta3) -sind(theta3) 0 a3*cosd(theta3); sind(theta3) cosd(theta3) 0 a3*sind(theta3);

T4 = [ cosd(theta4) -sind(theta4) 0 a4*cosd(theta4); sind(theta4) cosd(theta4) 0 a4*sind(theta4);

T = T1*T2*T3*T4; 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 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) ModelName = 'robotAssem3'; a1 = 496; a2 = 500; a3 = 451.38; a4 = 175.20; thate1=get(handles.edit1,'string'); thate2=get(handles.edit2,'string'); thate3=get(handles.edit3,'string'); thate4=get(handles.edit4,'string'); theta1= str2num(thate1); theta2= str2num(thate2); theta3= str2num(thate3); theta4= str2num(thate4); set(handles.slider2,'value',theta2); set(handles.slider3,'value',theta3); set(handles.slider4,'value',theta4); 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));

T1 = [ cosd(theta1) 0 sind(theta1) 0; sind(theta1) 0 -cosd(theta1) 0;

T2 = [ cosd(theta2) -sind(theta2) 0 a2*cosd(theta2); sind(theta2) cosd(theta2) 0 a2*sind(theta2);

T3 = [ cosd(theta3) -sind(theta3) 0 a3*cosd(theta3); sind(theta3) cosd(theta3) 0 a3*sind(theta3);

T4 = [ cosd(theta4) -sind(theta4) 0 a4*cosd(theta4); sind(theta4) cosd(theta4) 0 a4*sind(theta4);

T = T1*T2*T3*T4; 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 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 pushbutton1_Callback(hObject, eventdata, handles)

ModelName = 'robotAssem3'; open_system(ModelName); set_param(ModelName,'BlockReduction','off'); set_param(ModelName,'StopTime','inf'); set_param(ModelName,'simulationMode','normal'); set_param(ModelName,'StartFcn','1'); set_param(ModelName, 'SimulationCommand', 'start'); function pushbutton2_Callback(hObject, eventdata, handles) ModelName = 'robotAssem3'; a1 = 496; a2 = 500; a3 = 451.38; a4 = 175.20; theta1 = 0; theta2 = 0; theta3 = 0; theta4 = 0; 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));

T1 = [ cosd(theta1) 0 sind(theta1) 0; sind(theta1) 0 -cosd(theta1) 0;

T2 = [ cosd(theta2) -sind(theta2) 0 a2*cosd(theta2); sind(theta2) cosd(theta2) 0 a2*sind(theta2);

T3 = [ cosd(theta3) -sind(theta3) 0 a3*cosd(theta3); sind(theta3) cosd(theta3) 0 a3*sind(theta3);

T4 = [ cosd(theta4) -sind(theta4) 0 a4*cosd(theta4); sind(theta4) cosd(theta4) 0 a4*sind(theta4);

T = T1*T2*T3*T4; px=T(1,4); py=T(2,4); pz=T(3,4); set(handles.slider1,'value',theta1); set(handles.slider2,'value',theta2); set(handles.slider3,'value',theta3); set(handles.slider4,'value',theta4); set(handles.edit1,'string',num2str(0)); set(handles.edit2,'string',num2str(0)); set(handles.edit3,'string',num2str(0)); set(handles.edit4,'string',num2str(0)); set(handles.edit5,'string',num2str(px)); set(handles.edit6,'string',num2str(py)); close; function pushbutton4_Callback(hObject, eventdata, handles) ModelName = 'robotAssem3'; global var; px=get(handles.slider10,'value'); set(handles.edit20,'string',num2str(px)); py=get(handles.slider6,'value'); set(handles.edit9,'string',num2str(py)); pz=get(handles.slider7,'value'); set(handles.edit10,'string',num2str(pz)); set(handles.edit5,'string',num2str(px)); set(handles.edit6,'string',num2str(py)); set(handles.edit7,'string',num2str(pz)); a1 = 496; a2 = 500; a3 = 451.38; a4 = 175.20; theta1=atan2d(py,px); theta234= 0; nx = px*cosd(theta1)+py*sind(theta1)-a4*cosd(theta234); ny = -a1 + pz-a4*sind(theta234); c3 = ((nx^2)+(ny^2)-(a3^2)-(a2^2))/(2*a3*a2); s3 = sqrt(1-c3^2); theta3 = atan2d(s3,c3); c2 = (nx*(a3*c3+a2)+a3*s3*ny)/((a3*c3+a2)^2+a3^2*s3^2); s2 = (ny*(a3*c3+a2)-a3*s3*nx)/((a3*c3+a2)^2+a3^2*s3^2); theta2 = atan2d(s2,c2); theta4=theta234-theta2-theta3; 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(handles.edit1,'string',num2str(theta1)); set(handles.edit2,'string',num2str(theta2)); set(handles.edit3,'string',num2str(theta3)) set(handles.edit4,'string',num2str(theta4)); function slider10_Callback(hObject, eventdata, handles) px = get(handles.slider10,'value'); set(handles.edit20,'string',num2str(px)); function slider10_CreateFcn(hObject, eventdata, handles) if isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor',[.9 9 9]); end function edit20_Callback(hObject, eventdata, handles) px = get(handles.edit20,'string'); set(handles.slider10,'value',str2num(px)); function edit20_CreateFcn(hObject, eventdata, handles) if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end function axes1_CreateFcn(hObject, eventdata, handles) imshow('D:\Ca nhan\Dao tao dai hoc\Nam4\HKI\Kythuatrobot\Final\Picture\LOGO.jpg');

6.1 Kết quả mô phỏng động học thuận

Hình 13 Robot ban đầu có giá trị các góc theta bằng không

Hình 14 Mô phỏng động học thuận cánh tay robot

6.2 Kết quả mô phỏng động học nghịch

Hình 15 Mô phỏng động lực học cánh tay robot

Ngày đăng: 18/11/2024, 19:35

HÌNH ẢNH LIÊN QUAN

Hình thức - Kỹ thuật robot nghiên cứu, phân tích, và Đánh giá kết quả hệ thống robot trr sử dụng mô hình hóa mô phỏng
Hình th ức (Trang 2)
Hình 1. Biểu diễn 1 điểm trong không gian - Kỹ thuật robot nghiên cứu, phân tích, và Đánh giá kết quả hệ thống robot trr sử dụng mô hình hóa mô phỏng
Hình 1. Biểu diễn 1 điểm trong không gian (Trang 11)
Hình 2. Các hệ tọa độ - Kỹ thuật robot nghiên cứu, phân tích, và Đánh giá kết quả hệ thống robot trr sử dụng mô hình hóa mô phỏng
Hình 2. Các hệ tọa độ (Trang 12)
Hình 3. Hệ trục tọa độ trên cánh tay robot - Kỹ thuật robot nghiên cứu, phân tích, và Đánh giá kết quả hệ thống robot trr sử dụng mô hình hóa mô phỏng
Hình 3. Hệ trục tọa độ trên cánh tay robot (Trang 16)
Hình 5. Bản vẽ lắp 3D tổng thể 4.1.1. Phần đế - Kỹ thuật robot nghiên cứu, phân tích, và Đánh giá kết quả hệ thống robot trr sử dụng mô hình hóa mô phỏng
Hình 5. Bản vẽ lắp 3D tổng thể 4.1.1. Phần đế (Trang 21)
Hình 6. Bản vẽ chi tiết phần đế 3D 4.1.2. Khớp nối thứ nhất - Kỹ thuật robot nghiên cứu, phân tích, và Đánh giá kết quả hệ thống robot trr sử dụng mô hình hóa mô phỏng
Hình 6. Bản vẽ chi tiết phần đế 3D 4.1.2. Khớp nối thứ nhất (Trang 22)
Hình 7. Bản vẽ chi tiết khớp nối phần đế 3D 4.1.3. Tay thứ nhất - Kỹ thuật robot nghiên cứu, phân tích, và Đánh giá kết quả hệ thống robot trr sử dụng mô hình hóa mô phỏng
Hình 7. Bản vẽ chi tiết khớp nối phần đế 3D 4.1.3. Tay thứ nhất (Trang 22)
Hình 9. Bản vẽ chi tiết 3D khớp 3 và cơ cấu tác động cuối - Kỹ thuật robot nghiên cứu, phân tích, và Đánh giá kết quả hệ thống robot trr sử dụng mô hình hóa mô phỏng
Hình 9. Bản vẽ chi tiết 3D khớp 3 và cơ cấu tác động cuối (Trang 23)
Hình 8. Bản vẽ chi tiết 3D tay thứ hai 4.1.4. Khớp 3 và cơ cấu tác động cuối - Kỹ thuật robot nghiên cứu, phân tích, và Đánh giá kết quả hệ thống robot trr sử dụng mô hình hóa mô phỏng
Hình 8. Bản vẽ chi tiết 3D tay thứ hai 4.1.4. Khớp 3 và cơ cấu tác động cuối (Trang 23)
5.1. Sơ đồ khối Simmulink - Kỹ thuật robot nghiên cứu, phân tích, và Đánh giá kết quả hệ thống robot trr sử dụng mô hình hóa mô phỏng
5.1. Sơ đồ khối Simmulink (Trang 24)
Hình 11. Kết quả chạy trong Matlab Simmulink - Kỹ thuật robot nghiên cứu, phân tích, và Đánh giá kết quả hệ thống robot trr sử dụng mô hình hóa mô phỏng
Hình 11. Kết quả chạy trong Matlab Simmulink (Trang 25)
Hình 12. Màn hình giao diện GUI trong Matlab 5.3. Code đổ chương trình - Kỹ thuật robot nghiên cứu, phân tích, và Đánh giá kết quả hệ thống robot trr sử dụng mô hình hóa mô phỏng
Hình 12. Màn hình giao diện GUI trong Matlab 5.3. Code đổ chương trình (Trang 26)
Hình 13. Robot ban đầu có giá trị các góc theta bằng không - Kỹ thuật robot nghiên cứu, phân tích, và Đánh giá kết quả hệ thống robot trr sử dụng mô hình hóa mô phỏng
Hình 13. Robot ban đầu có giá trị các góc theta bằng không (Trang 37)
Hình 14. Mô phỏng động học thuận cánh tay robot - Kỹ thuật robot nghiên cứu, phân tích, và Đánh giá kết quả hệ thống robot trr sử dụng mô hình hóa mô phỏng
Hình 14. Mô phỏng động học thuận cánh tay robot (Trang 37)
Hình 15. Mô phỏng động lực học cánh tay robot - Kỹ thuật robot nghiên cứu, phân tích, và Đánh giá kết quả hệ thống robot trr sử dụng mô hình hóa mô phỏng
Hình 15. Mô phỏng động lực học cánh tay robot (Trang 38)

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

  • Đang cập nhật ...

TÀI LIỆU LIÊN QUAN

w