BỘ GIÁO DỤC VÀ ĐÀO TẠO ĐẠI HỌC ĐÀ NẴNG
PHẠM HỒNG CÔNG
NGHIÊN CỨU ĐIỀU KHIỂN TAY MÁY DÙNG KỸ THUẬT XỬ LÝ ẢNH
Chuyên ngành : TỰ ĐỘNG HÓA Mã số : 60.52.60
TÓM TẮT LUẬN VĂN THẠC SĨ KỸ THUẬT
Đà Nẵng - Năm 2010
Công trình ñược hoàn thành tại ĐẠI HỌC ĐÀ NẴNG
Người hướng dẫn khoa học: TS. PHAN VĂN HIỀN
Phản biện 1: PGS.TS. Nguyễn Hồng Anh Phản biện 2: TS. Lê Tấn Duy
Luận văn sẽ ñược bảo vệ tại Hội ñồng chấm Luận văn tốt nghiệp thạc sĩ kỹ thuật họp tại Đại học Đà Nẵng vào ngày 24 tháng 07 năm 2010
Có thể tìm hiểu luận văn tại:
- Trung tâm Thông tin – Học liệu, Đại học Đà Nẵng - Trung tâm Học liệu, Đại học Đà Nẵng
MỞ ĐẦU 1. Tính cấp thiết của ñề tài
Trong thời ñại ngày nay, ngành công nghiệp ñóng vai trò quan trọng trong nền kinh tế. Từ những ngành như sản xuất, chế biến lương thực thực phẩm, nước uống cho ñến các ngành công nghệ chế tạo máy, công nghệ chế tạo ôtô, các ngành công nghệ cao v.v…Tất cả những ngành ñó có ñược hiệu quả kinh tế cao không ít nhờ vào các hệ thống sản xuất tự ñộng, những Robot tự ñộng, những tay máy công nghiệp, chúng ñã thay thế sức lao ñộng con người một cách hiệu quả nhất. Robot ñược sử dụng rộng rãi từ những nơi mà môi trường có tính ñộc hại, nguy hiểm, ñộ chính xác cao…trong công nghiệp cho ñến các công việc hằng ngày. Do vậy Robot có tầm quan trọng rất lớn và là một trong những lĩnh vực nghiên cứu hàng ñầu trong thời ñại ngày nay.
Qua thời gian học tập và nghiên cứu chương trình thạc sỹ tự ñộng hóa tại Đại học Đà Nẵng, ta thấy lĩnh vực nghiên cứu về robot là một lĩnh vực khá mới mẻ; ñặc biệt là những Robot tự ñộng, những tay máy công nghiệp. Vì vậy chúng tôi ñã quyết ñịnh chọn ñề tài
“Nghiên cứu ñiều khiển tay máy dùng kỹ thuật xử lý ảnh” mà cụ thể là xử lý ảnh hình tròn, ñể nghiên cứu trong luận văn. Thông qua luận văn chúng tôi sẽ khảo sát, nghiên cứu và ñiều khiển tay máy 3 bậc tự do RRP ñể gắp vật cố ñịnh trên mặt phẳng nhờ sự trợ giúp bởi Camera xác ñịnh tọa ñộ vật.
2. Mục ñích nghiên cứu
- Nghiên cứu hai Toolbox trong MATLAB:
Image Processing Toolbox cho việc xử lý ảnh OPC Toolbox cho việc kết nối PLC.
- Nghiên cứu ñiều khiển tay máy 3 bậc tự do RRP.
- Nghiên cứu dùng máy tính ñể xử lý ảnh (cụ thể là xử lý hình tròn) và ñiều khiển tay máy thông qua PLC.
- Phân tích ñánh giá kết quả ñạt ñược qua thi công.
Với sự trình bày và phân tích các vấn ñề nêu trên, chúng tôi ñặt tên cho ñề tài là:
“Nghiên cứu ñiều khiển tay máy dùng kỹ thuật xử lý ảnh”
3. Đối tượng và phạm vi nghiên cứu
- Nghiên cứu ñiều khiển tay máy 3 bậc tự do RRP.
- Nghiên cứu phương pháp dùng máy tính ñể xử lý ảnh (cụ thể là xử lý hình tròn) và ñiều khiển tay máy thông qua PLC bằng phần mềm MATLAB.
- Phân tích ñánh giá kết quả ñạt ñược qua thi công tay máy RRP.
- Nghiên cứu hai Toolbox trong MATLAB cần thiết là: Image Processing Toolbox cho việc xử lý ảnh và OPC Toolbox cho việc kết nối PLC.
4. Phương pháp nghiên cứu
- Nghiên cứu thiết kế màn hình giám sát và ñiều khiển trên máy tính bằng phần mềm MATLAB ñể thực hiện.
- Nghiên cứu và ñiều khiển tay máy 3 bậc tự do ñể gắp vật cố ñịnh trên mặt phẳng nhờ sự trợ giúp bởi Camera xác ñịnh tọa ñộ vật.
- Sử dụng phương pháp lý thuyết ñể ñọc và nghiên cứu tài liệu.
- Thiết kế giao diện ñiều khiển quá trình hoạt ñộng của tay máy trên phần mềm Matlab.
- Dùng phương pháp thực nghiệm, lập trình mô phỏng và thi công.
- Thực hiện trên phần cứng là tay máy 3 bậc tự do RRP.
- Đánh giá kết quả và ñề xuất hướng phát triển của ñề tài.
5. Ý nghĩa khoa học và thực tiễn của ñề tài
- Việc xử lý ảnh và ñiều khiển tay máy 3 bậc tự do RRP ñể ñưa vào ứng dụng thực tế là rất cần thiết trong các ngành công nghiệp hiện nay.
- Vì vậy, trong luận văn này ta ñiều khiển ñược cho tay máy 3 bậc tự do RRP. Trên cơ sở ñó, ta nghiên cứu một số luật ñiều khiển cho tay máy 3 bậc tự do RRP trong môi trường làm việc của nó.
- Tất cả các vấn ñề ñược ñề cập trong cuốn luận văn ñều góp phần vào việc nghiên cứu, xây dựng và phát triển tay máy. Tạo tiền ñề cho việc nghiên cứu chế tạo tay máy, ñáp ứng ñược nhiều công dụng thiết thực trong công tác nghiên cứu giảng dạy ở nước ta.
6. Cấu trúc luận văn
Ngoài chương mở ñầu, trong luận văn còn có các phần và chương kế tiếp như sau:
MỞ ĐẦU
CHƯƠNG 1: CƠ SỞ LÝ THUYẾT
CHƯƠNG 2: THIẾT KẾ VÀ THI CÔNG PHẦN CỨNG CHƯƠNG 3: XÂY DỰNG PHẦN MỀM
KẾT LUẬN VÀ KIẾN NGHỊ PHỤ LỤC
Chương 1 - CƠ SỞ LÝ THUYẾT 1.1. Lý thuyết PLC S7-200
Lý thuyết PLC thì rất rộng nên trong chương này tôi chỉ trình bày những khái niệm cơ bản và những phần lý thuyết liên quan PLC S7-200 loại CPU 224 ñược sử dụng chủ yếu trong luận văn.
1.1.1. Giới thiệu PLC S7-200
Từ những năm 70 ñể ñáp ứng nhu cầu thực tế sản xuất, các mạch ñiều khiển bằng relay, bộ ñịnh thời ñã không còn phù hợp, do ñó bộ ñiều khiển logic khả trình (Programmable Logic Controller – PLC) ra ñời. Các PLC ñời ñầu chỉ thực hiện các phép tính logic, tín hiệu vào là tín hiệu rời rạc. Hiện nay PLC còn thực hiện ñược các phép tính số học, logic và làm việc với tín hiệu vào là tín hiệu liên tục. PLC S7-200 là một trong những PLC mạnh của hãng Siemens.
PLC S7-200 gồm các phần chính sau:
- Khối CPU.
- Khối nhớ RAM, ROM, EPROM, EEPROM.
- Khối vào – ra.
- Khối nguồn.
- Khối mở rộng.
1.1.2. Bộ nhớ PLC S7-200
Bộ nhớ của PLC thường có 3 vùng nhớ chính 1.1.2.1. Vùng nhớ chứa chương trình ứng dụng 1.1.2.2. Vùng nhớ chứa tham số
1.1.2.3. Vùng chứa các khối dữ liệu 1.1.3. Bộ ñiều rộng xung (PWM, PTO)
CPU S7-200 có 2 ngõ ra xung tốc ñộ cao Q0.0, Q0.1, dùng cho việc ñiều rộng xung tốc ñộ cao trong các ứng dụng ñiều khiển thiết bị bên ngoài như ñiều khiển tốc ñộ ñộng cơ, ñiều khiển nhiệt ñộ v.v...
1.1.3.1. Điều rộng xung 50% (PTO)
Để thực hiện việc phát xung tốc ñộ cao ở chế ñộ PTO trước hết ta phải thực hiện các bước ñịnh dạng sau:
Reset ngõ xung tốc ñộ cao ở chu kì ñầu của chương trình.
Chọn loại ngõ ra phát xung tốc ñộ cao Q0.0 hay Q0.1.
1.1.3.2. Điều rộng xung theo tỉ lệ (PWM)
Để thực hiện việc phát xung tốc ñộ cao ở chế ñộ PWM trước hết ta phải thực hiện các bước ñịnh dạng sau:
Reset ngõ xung tốc ñộ cao ở chu kì ñầu của chương trình.
Chọn loại ngõ ra phát xung tốc ñộ cao Q0.0 hay Q0.1.
1.1.4. Bộ ñếm xung tốc ñộ cao (High-Speed Counter)
Bộ ñếm xung tốc ñộ cao ñếm các sự kiện tốc ñộ cao không phụ thuộc vào chu kì quét của CPU. Tần số ñếm cao nhất phụ thuộc vào loại CPU. Khi ñếm bằng hai pha, cả hai xung clock ñều có thể hoạt ñộng ở tốc ñộ cao nhất. Chúng có thể hoạt ñộng ở dạng nhân 1(1x) hoặc nhân 4 (4x) khi ñếm hai pha.
1.1.4.1. Hoạt ñộng Reset 1.1.4.2. Các chế ñộ hoạt ñộng
Tùy từng loại ứng dụng mà ta có thể chọn nhiều chế ñộ ñọc xung tốc ñộ cao khác nhau, có tất cả 12 chế ñộ ñọc xung tốc ñộ cao như sau:
* Chế ñộ 0,1,2:
Dùng ñếm 1 pha với hướng ñếm ñược xác ñịnh bởi Bit nội.
* Chế ñộ 3,4,5:
Dùng ñếm 1 pha với hướng ñếm ñược xác ñịnh bởi Bit ngoại, tức là có thể chọn từ ngõ vào input.
* Chế ñộ 6,7,8:
Dùng ñếm 2 pha với 2 xung vào, 1 xung dùng ñể ñếm tăng và một xung ñếm giảm.
* Chế ñộ 9,10,11:
Dùng ñể ñếm xung A/B của Encoder 1.2. Tổng quan về Robot
Trong phạm vi ñề tài này, tác giả tập trung vào việc nghiên cứu ñiều khiển cánh tay máy RRP.
1.3. Khảo sát tay máy 3 bậc tự do RRP 1.3.1. Quy tắc Denavit – Hartenberg (D-H)
1.3.2. Thiết lập phương trình ñộng học của tay máy robot
a. Bước 1:
Hình 1.23: Mô hình cánh tay robot và các hệ trục tọa ñộ Gắn hệ toạ ñộ lên các khâu:
- Đối với robot loại này các trục khớp ñều song song với nhau, các hệ toạ ñộ ñặt tại các tâm trục khớp. Khâu thứ hai có O2 ñặt tại tâm trục khớp ba và z2 hướng về phía các khâu như hình vẽ.
+ Khâu 1: Có O1 ñặt trên trục khớp thứ hai và có x1 hướng từ trục khớp thứ hai ñến trục khớp thứ ba và z1 nằm trên trục khớp thứ hai hướng từ dưới lên trên. Do ñó xác ñịnh ñược O1. Dựa vào quy tắc bàn tay phải ta xác ñịnh ñược y1. Ta thấy z1 song song với z2 nên O2 tịnh tiến so với O1 trên x1 một ñoạn a2 (Trans(a2, 0,0)) và xác ñịnh ñược y2 theo quy tắc bàn tay phải.
+ Từ O1 ta chon ñược O0 trên trục khớp một và z0 nằm trên trục khớp một hướng từ dưới lên trên. O1 chính là O0 tịnh tiến ñi một ñoạn a1 theo trục x0 (Trans(a1,0,0)) và y0 chọn theo quy tắc bàn tay phải.
+ Chọn O3: nằm trên tâm của trục khớp ba trùng với trục khớp thứ hai và có z3 cùng chiều với z2. Do ñó O3 chính là O2 tịnh tiến ñi một ñoạn d3 (Trans(0,0,d3)).
Như vậy, việc gắn hệ toạ ñộ lên các khâu của robot ñã hoàn thành.
θ
nb. Bước 2:
Lập bảng thông số DH. Thông qua các phân tích trên ta xác ñịnh ñược các thông số DH của tay máy 3 bậc tự do RRP
Khâu θ
iα
ia
id
i1
θ1∗0
a10
2
θ2∗180
0 a20
3 0 0 0
d3*c. Bước 3:
Xác ñịnh các matrận An
Trên cơ sở các hệ toạ ñộ ấn ñịnh cho tất cả các khâu liên kết của Robot ta có thể thiết lập mối quan hệ giữa các hệ toạ ñộ nối tiếp nhau (n0); (n-1); (n) bởi các phép quay và tịnh tiến sau ñây:
Quay quanh trục zn-1 một góc mộ Tịnh tiến dọc trục zn-1 một ñoạn dn Tịnh tiến dọc trục xn-1 một ñoạn an
Quay quanh trục xn một góc xoắn αn
Bốn phép biến ñổi ñồng nhất này thể hiện quan hệ của hệ toạ ñộ thuộc khâu thứ n so với hệ toạ ñộ thuộc khâu thứ n-1 và tích của chúng ñược gọi là ma trận A.
An = Rot(z,θ).Trans(0,0,0).Rot(x,α) os -sin cos sin sin acos sin cos cos -cos sin asin
0 sin cos d
0 0 0 1
n
c A
θ θ α θ α θ
θ θ α θ α θ
α α
=
Ta quy ước cách viết tắt các hàm lượng giác như sau:
1 1=cosθ
c ; s1 =sinθ1; c2 =cosθ2; s2 =sinθ2;
Từ matrận tổng quát An ta xác ñịnh ñược các matrận An của Robot cụ thể như sau:
−
=
1 0 0 0
0 1 0 0
0 0
1 1 1
1
1 1 1 1
1
s a c
s
c a s c A
−
= −
1 0 0 0
0 1 0 0
0 0
2 2 2 2
2 2 2 2
2
s a c s
c a s
c A
=
1 0 0 0
1 0 0
0 0 1 0
0 0 0 1
3
3 d
A
d. Bước 4:
Tính các ma trận biến ñổi thuần nhất + Matrận 3 3
2T =A
+ Matrận 3 2 3
2 2 3
1T = A . T = A A
+ Matrận T3 = A1.1T3 = A1A2A3 Như vậy:
=
1 0 0 0
1 0 0
0 0 1 0
0 0 0 1
3 3
2
T d
=
−
= −
1 0 0 0
1 0 0
0 0 1 0
0 0 0 1 . 1 0 0 0
0 1 0 0
0 0
3 2
2 2
2
2 2 2
2
3 1
d s
a c
s
c a s
c T
−
−
= −
1 0 0 0
1 0 0
0 0
3 2 2 2
2
2 2 2
2
3 1
d s a c
s
c a s
c T
−
−
−
−
=
1 0 0 0
1 0 0
0 0 .
1 0 0 0
0 1 0 0
0 0
3 2 2 2
2
2 2 2
2 1 1 1 1
1 1 1 1
3 d
s a c
s
c a s
c s a c s
c a s c T
−
−
+
−
− +
+
− +
−
=
1 0
0 0
1 0
0
0 0
3 1 1 2 1 2 2 1 2 2
1 2 1 2 1 2 1
1 1 2 1 2 2 1 2 2
1 2 1 2 1 2 1
3 d
s a s c a c s a c
c s s s c c s
c a s c a c c a c
s s c s s c c T
Matrận T3 là matrận xác ñịnh hướng và vị trí của khâu chấp hành
cuối.
3 1 1 3
1 0 0 0
T p A
a o n
p a o n
p a o n T
z z z z
y y y y
x x x x
=
=
Ta có hệ phương trình ñộng học thuận của robot như sau:
= +
=
−
=
0
2 1 2 1
2 1 2 1
z y x
n
s s c c n
s c c c n
;
=
−
= +
=
0
2 1 2 1
2 1 2 1
z y x
o
c c s s o
c s s c o
;
−
=
=
=
1 0 0
z y x
a a a
;
−
=
+
−
=
+
−
=
3
1 1 2 1 2 2 1 2
1 1 2 1 2 2 1 2
d p
s a s c a c s a p
c a s c a c c a p
z y x
1.3.3. Động học ngược cho tay máy 3 bậc tự do dạng RRP Các thông số ñã biết chiều dài của khâu 1: L1 =17cm, chiều dài khâu 2: L2= 17cm. Góc gập ban ñầu của khâu 1 và khâu 2 là 300.
Giả sử ñiểm A có tọa ñộ (x,y) nằm trong vùng làm việc của tay máy, thì khâu 1 sẽ quay 1 góc
φ
1 và khâu 2 sẽ quay 1 gócφ
2 ñếnvị trí của ñiểm A(x,y). Ở ñây các góc
φ φ
1, 2 là góc quay của tay máy mà ta cần xác ñịnh.Chiếu xuống hệ trục oxy ta ñươc:Ở ñây ta có:
θ
1: là góc quay của khâu 1 so với vị trí ban ñầu.θ
2: là góc quay của khâu 2 so với vị trí ban ñầu.L: là chiều dài từ góc tọa ñộ ñến vật.
α
: là góc hợp bởi L và Oy β: là góc hợp bởi L và l2γ : là góc hợp bởi l1 và l2
Với ñiểm A(x,y). Xét tam giác vuông OXA ta có:
Chiều dài: L=x2 +y2 Ở ñây ta có:
θ
1 là góc quay của khâu 1 so với vị trí ban ñầu.A(x,y)
L
45 l1
l2
-y y
x
-x α β
γ
30 B(x0,y0)
θ
2: là góc quay của khâu 2 so với vị trí ban ñầu.L: là chiều dài từ góc tọa ñộ ñến vật.
α
: là góc hợp bởi L và oy β: là góc hợp bởi L và l2γ : là góc hợp bởi l1 và l2
Với ñiểm A(x,y). Xét tam giác vuông OXA ta có:
Chiều dài: L=x2+y2 a) Trường hợp vật ở tọa ñộ có y < 0:
tan( x)
a y
α= 22 2 12
2
cos( )
2. . l L l
a l L
β = + −
2 2 2
2 1
2 1
cos( )
2. .
l l L
a l l
γ = + −
• Góc khớp thứ nhất cần quay là: θ1=α+β+450
• Góc khớp thứ hai cần quay là: θ2=γ-300 b) Trường hợp vật ở tọa ñộ có y = 0:
2 2 2
2 1
2
cos( )
2. .
l L l
a l L
β = + −
2 2 2
2 1
2 1
cos( )
2. .
l l L
a l l
γ = + −
• Góc khớp thứ nhất cần quay là: θ1=β+450 +900
• Góc khớp thứ hai cần quay là: θ2=γ-300 c) Trường hợp vật ở tọa ñộ có y > 0:
tan( )y
a x
α =
2 2 2
2 1
2
cos( )
2. .
l L l
a l L
β = + −
2 2 2
2 1
2 1
cos( )
2. .
l l L
a l l
γ = + −
• Góc khớp thứ nhất cần quay là: θ1=α+β+450 + 900
• Góc khớp thứ hai cần quay là: θ2=γ-300 1.4. Xử lý ảnh
1.4.1. Thay ñổi ñộ tương phản 1.4.2. Lọc nhiễu
1.4.2.1. Lọc không gian trung bình 1.4.2.2. Lọc thông thấp
1.4.2.3. Lọc nhiễu Gaussian
1.4.2.4. Lọc ñồng hình (Homomorphic filtering) 1.4.2.5. Lọc trung vị (Median filter)
1.4.2.6. Lọc giả trung vị (pseudo median filter)
1.4.2.7. Lọc ngoài
1.5. Phương pháp phân ñoạn ảnh 1.5.1. Phân ñoạn bằng một ngưỡng 1.5.2. Phương pháp cục bộ
1.5.3. Phương pháp chia tách, kết nối, và phát triển vùng 1.5.4. Phương pháp tách cây tứ phân (quadtree)
1.5.5. Phương pháp làm nổi biên ảnh 1.6. Ứng dụng MATLAB
Trong luận văn này chúng tôi chỉ sử dụng 2 Toolbox là Image Processing Toolbox và OPC Toolbox. Image Processing Toolbox dùng cho việc xử lý ảnh lấy từ Camera ñể xác ñịnh tọa ñộ vật và OPC Toobox dùng ñể kết nối MATLAB với PLC.
1.6.1. Xử lý ảnh trong MATLAB 1.6.1.1. Các khái niệm cơ bản 1.6.1.2. Các loại ảnh
1.6.1.3. Cơ bản về xử lý ảnh bằng MATLAB
* Đọc một ảnh ñồ họa:
RGB=imread(‘rices.jpg’);
Hàm imread sẽ nhận ra ñịnh dạng file ñể sử dụng từ tên file. Ta cũng có thể chỉ ra ñịnh dạng file như một tham số trong hàm imread.
Matlab trợ giúp rất nhiều ñịnh dạng ñồ hoạ thông dụng chẳng hạn : BMP , GIF , JPEG , PNG , TIFF …
* Hiển thị ảnh:
+ Dùng hàm imview
Để hiển thị một ảnh ta có thể dùng hàm imview hiển thị ảnh nằm trong Workspace của Matlab. Ví dụ:
ricesfig = imread(‘rices.jpg’); % Đọc ảnh vào imview (ricesfig)
Hàm imview chỉ hiện thị ảnh nằm trong thư mục làm việc của Matlab hoặc ñường dẫn. Nếu dùng hàm imview mà không chỉ ra thông số nào thì nó sẽ mở ra hộp thoại cho ta chọn file cần hiện thị.
+ Dùng hàm imshow
Nếu ta chỉ ra một file mà chứa nhiều ảnh, hàm imview chỉ hiển thị ảnh ñầu tiên trong file ñó. Để xem tất cả các ảnh trong file, sử dụng hàm imread ñể nhập mỗi ảnh vào trong không gian làm việc của Matlab sau ñó gọi hàm imview nhiều lần ñể hiển thị mỗi ảnh riêng biệt. Ta có thể sử dụng hàm imshow thay cho imview. Ta sử dụng imshow ñể hiển thị một ảnh ñã ñược nhập vào trong không gian làm việc. Ví dụ :
ricesfig = imread(‘rices.jpg’); % Đọc ảnh vào imshow (ricesfig)
Ta cũng có thể chỉ ra tên của file ảnh như một tham số truyền vào cho hàm như sau :
imshow (‘rices.jpg’)
Khi sử dụng cấu trúc này thì dữ liệu ảnh không ñược nhập vào trong không gian làm việc. Tuy nhiên ,ta có thể mang ảnh vào trong không gian làm việc bằng cách sử dụng hàm getimage. Hàm này sẽ nhận dữ liệu ảnh từ handle của một ñối tượng ảnh hiện tại. Chẳng hạn
ricefig = getimage;
Lúc này ảnh sẽ ñược gán vào biến ricefig
* Các hàm chuyển ñổi kiểu ảnh:
Các hàm sau ñây ñược sử dụng trong việc convert ảnh:
- dither: Tạo một ảnh nhị phân từ một ảnh cường ñộ ñen trắng VD: BW = dither(I) % Với I là một ảnh ñen trắng.
Tạo một ảnh chỉ số từ một ảnh RGB
VD: X =dither(RGB,MAP) %Ảnh chỉ số MAP không hơn 65536 màu.
- gray2ind: Tạo một ảnh chỉ số từ một ảnh cường ñộ ñen trắng.
VD: I = imread('cameraman.tif');
[X, map] = gray2ind(I, 16);
figure, imshow(X, map);
- grayslice: Tạo một ảnh chỉ số từ một ảnh cường ñộ ñen trắng bằng cách ñặt ngưỡng.
VD: I = imread('snowflakes.png');
X = grayslice(I,16);
figure, imshow(I), figure, imshow(X,jet(16))
- im2bw: Tạo một ảnh nhị phân từ một ảnh cường ñộ , ảnh chỉ số hay ảnh RGB bằng cách ñặt ngưỡng ánh sáng.
VD: BW = im2bw(X,map,0.4); % Ngưỡng 0.4
figure, imshow(X,map), figure, imshow(BW)% Hiển thị
- ind2gray: Tạo một ảnh cường ñộ ñen trắng từ một ảnh chỉ số.
VD: I = ind2gray(X,map);
figure, imshow(X,map), figure, imshow(I);
- ind2rgb: Tạo một ảnh RGB từ một ảnh chỉ số.
- mat2gray: Tạo một ảnh cường ñộ ñen trắng từ dữ liệu trong một ma trận bằng cách lấy tỉ lệ giữ liệu.
VD: I = imread('rice.png');
J = filter2(fspecial('sobel'), I);
K = mat2gray(J);
figure, imshow(I), figure, imshow(K)
- rgb2gray: Tạo một ảnh cường ñộ ñen trắng từ một ảnh RGB.
VD: I = imread('board.tif');
J = rgb2gray(I);
figure, imshow(I), figure, imshow(J);
- rgb2ind: Tạo một ảnh chỉ số từ một ảnh RGB.
VD: RGB = imread('peppers.png');
[X,map] = rgb2ind(RGB,128);
figure, imshow(X,map)
Hàm lấy biên: khoanh vùng biên vật như những lỗ trống trên nền ảnh.
B = Bwboundaries(BW) VD: I = imread('rice.png');
BW = im2bw(I, graythresh(I));
[B,L] = bwboundaries(BW,'noholes');
imshow(label2rgb(L, @jet, [.5 .5 .5])) hold on
for k = 1:length(B) boundary = B{k};
plot(boundary(:,2), boundary(:,1), 'w', 'LineWidth', 2) 1.6.1.4. Hệ thống toạñộ
Một ảnh ñược cấu tạo từ ma trận các ñiểm ảnh. Các ñiểm ảnh trong một ảnh ñược sắp xếp có trật tự riêng. Do ñó vị trí của một ñiểm ảnh cũng sẽ có tọa ñộ riêng trong ảnh ñó. Trong Matlab thì có hai hệ tọa ñộ là tọa ñộ pixel và tọa ñộ không gian.
1.6.1.5. Phân tích ảnh
Trong kỹ thuật phân tích ảnh thì có rất nhiều bước khác nhau, nhưng với yêu cầu của luận văn chúng tôi xin trình bày hai bước cơ bản trong khâu phân tích một ảnh. Đó là: phát hiện cạnh (Edge Detection) và tìm biên của vật (Boundary Tracing).
1.6.2. OPC Toolbox của MATLAB 1.6.2.1. Sơ lược OPC Toolbox
Phần mềm OPC Toolbox là một phần mềm mở rộng khả năng trong môi trường MATLAB và SIMULINK.
Chúng ta có thể tăng cường những ứng dụng với Toolbox với việc sử dụng hàm callback như: bắt ñầu nhận sự kiện, khai báo sự kiện, thay ñổi sự kiện…
1.6.2.2. Sử dụng OPC Toolbox Các hàm cơ bản của OPC Toolbox:
* Tạo một Object kết nối với Server
Object name = opcda( ‘locallhost’, ‘OPC Client Name’) VD: da = opcda(‘locallhost’, ‘S7200.OPCServer’)
* Kết nối với Server:
Connect( Object name) VD: Connect(da)
* Ngừng kết nối với server:
Disconnect( Object name) VD: Disconnect( da)
* Tạo một nhóm ñể quản lý các biến:
grp1 =addgroup( Object name) VD: grp1 =addgroup(da)
* Tạo biến trong một nhóm:
Tên biến = additm( Group name, ‘biến truy cập trên Server’) VD: itm1 = additm(grp1,McroWin.s7200.Start)
* Xóa một Object:
Delete ( object name) VD: Delete ( da)
* Lưu một Object vào Workspace của Matlab:
Save myopc “Oblect name”
* Tải lên một Object:
Load myopc
* Ghi dữ liệu vào một biến:
Write ( tên biến, giá trị của biến)
* Đọc dữ liệu một biến:
Read ( tên biến)
* Ghi dữ liệu vào một biến:
Writeasync ( tên biến, giá trị của biến)
* Đọc dữ liệu bất ñồng bộ một biến:
Readasync ( tên biến)
Chương 2 - THIẾT KẾ VÀ THI CÔNG PHẦN CỨNG 2.1. Thiết kế mạch
2.1.1. Mạch nguồn
Khối nguồn phải ñáp ứng các yêu cầu sau:
- 5V cấp cho encoder hoạt ñộng với ñiện áp DC ổn ñịnh.
- 12V cấp cho việc khiển relay và bộ phận kích dẫn FET ñể khiển motor hoạt ñộng.
- 24V cấp nguồn cho PLC và cấp cho ñộng cơ...
2.1.2. Mạch chuyển ñổi ñiện áp
PLC hoạt ñộng ở ñiện áp 24V DC nhưng mạch công suất hoạt ñộng ở 12V DC và Encoder ñọc tín hiệu xung hoạt ñộng ở 5V DC.
Do vậy ñể giao tiếp giữa chúng với nhau cần phải có mạch chuyển áp. Linh kiện cơ bản của mạch là Opto quang.
2.1.3. Mach công suất
Đây là một phần mạch công suất tiếp nhận tín hiệu từ PLC ñể khiển motor. Có thể hoạt ñộng theo ON/OFF hoặc ñiều xung. Đảo chiều ñộng cơ nhờ role.
2.1.4. Mạch ñảo chiều ñộng cơ
ULN2803 ñược cấu tạo bên trong giống như một transistor NPN darlington có Emiter nối GND, Colector là ngõ ra, và Base là ngõ vào. Chỉ có tác dụng ñảo mức 1 thành 0. Còn muốn ñảo mức 0 thành 1 thì phải có ñiện trở kéo lên bên ngoài.
2.1.5. Mạch lấy tín hiệu xung từ encoder ñưa vào PLC Vì encoder có áp sử dụng là 5V, nên ngõ ra là tín hiệu xung 5V. Ta dùng opto ñể chuyển tín hiệu xung 5V của encoder thành tín hiệu xung 24V cấp cho PLC.
Khi xung encoder mức 0(0V) làm cho opto dẫn, và tín hiệu ngõ ra là 24V, và ngược lại khi xung encoder mức 1(5V) thì opto không dẫn, sẽ là 0V.
2.2. Thi công
2.2.1. Mô hình thi công tay máy 3 bậc tự do RRP 2.2.2. Mạch ñiều khiển
2.2.3. Không gian làm việc Tóm tắt kết nối phần cứng:
J2, J3, J5, J6 là các jumper 4 kết nối tới các encoder.
J7 là ngõ ra sau khi chuyển ñổi tín hiệu xung 5V của encoder thành 24V nhờ opto và ñưa vào PLC theo các chân:
I0.0, I0.1 cho HSC0 encoder của khâu ñế I0.3, I0.4 cho HSC4 encoder của khâu 1 I0.6, I0.7 cho HSC1 encoder của khâu 2 Kết nối tới ngõ ra của PLC lần lượt là.
PWM1 chân Q0.0 PWM2 chân Q0.1 PWM3 chân Q0.2 PWM4 chân Q0.3
Nam châm ñiện chân Q1.0 ROLE1 chân Q0.4
ROLE2 chân Q0.5 ROLE3 chân Q0.6 ROLE4 chân Q0.7
Chương 3 - XÂY DỰNG PHẦN MỀM 3.1. Lưu ñồ giải thuật cho toàn hệ thống
START
Xác ñịnh tâm của vật cần gắp
Xác ñịnh tọa ñộ của vật trong trong hệ quy chiếu
Giải ñộng học ngược
Truyền dữ liệu cho PLC
Thực hiện gắp vật
Thực hiện ñặt vật
Trở về vị trí ban ñầu
END
3.2. Lưu ñồ giải thuật cho xử lý ảnh
START
Lấy ảnh từ Camera
Chuyển từ ảnh màu sang ảnh xám
Loại bỏ những ñiểm trắng nhỏ Chuyển từ ảnh xám sang ảnh nhị
phân
Lấp ñầy lỗ trống so với nền ảnh
Lấy biên vật
Lấy tâm vật dựa vào biên ñã xác ñịnh
RUN = 1?
END
Y N
Hiển thị kết quả
3.3. Lưu ñồ giải thuật cho chương trình PLC 3.3.1. Lưu ñồ giải thuật cho chương trình chính
START
XÓA CÁC BIT KHỞI TẠO COUNTER KHỞI TẠO ĐIỂU XUNG NẠP GIÁ TRỊ BAN ĐẦU
CHO WORD
LOAD GIÁ TRỊ ĐIÊU XUNG LẤY GIÁ TRỊ COUNTER CHUYỂN ĐỔI
CÁC GIÁ TRỊ
START=1?
Y N
MANUAL=0?
Y
N
ĐIỀU KHIỂN BẰNG TAY
END
CONTROL
=10?
Y
RESET COUNTER
CONTROL=
11?
N
Y
VITRI_BANDAU
N
CHẠY GẮP VẬT
3.3.2. Lưu ñồ giải thuật cho chương trình con 3.3.2.1. Chương trình con quay về vị trí ban ñầu
START
CÔNG TẮC 1=1?
Y
N
TẮT MOTOR1, ROLE1
BẬT MOTOR1, ROLE1
CÔNG TẮC 2=1?
Y
N
TẮT MOTOR2, ROLE2
BẬT MOTOR2, ROLE2
CÔNG TẮC 3=1?
Y
N
TẮT MOTOR3, ROLE3
BẬT MOTOR3, ROLE3
END
3.3.2.2. Chương trình con khởi tạo Motor
3.3.2.3. Chương trình con Reset các Byte sử dụng
START
KHỞI TẠO ĐIỀU XUNG Q0.0
KHỞI TẠO ĐIỀU XUNG Q0.1
END
START
END
CHO CÁC BYTE LƯU GIÁ TRỊ HSC =0
CHO CÁC BYTE LƯU GIÁ TRỊ GẮP VẬT CỦA KHÂU 1,2,3 =0
CHO CÁC BYTE LƯU GIÁ TRỊ ĐẬT VẬT CỦA KHÂU 1,2,3 =0
CHO CÁC BYTE LƯU GIÁ TRỊ NĂNG =0
CHO CÁC BYTE LƯU GIÁ TRỊ ĐIỀU KHIỂN =0
3.3.2.4. Chương trình con reset Counter
3.3.2.5. Chương trình con dừng Motor
START
END
KHỞI TẠO LẠI COUNTER 1 (ĐẾM ENCODER KHÂU 3) KHỞI TẠO LẠI COUNTER 4 (ĐẾM
ENCODER KHÂU 2) KHỞI TẠO LẠI COUNTER 0 (ĐẾM
ENCODER KHÂU 1)
START
END
XÓA BIT MOTOR, ROLE
XÓA BIT CHẠY TRONG CHƯƠNG TRÌNH
XÓA BIT ĐIỀU XUNG
KẾT LUẬN VÀ KIẾN NGHỊ
1. Những kết quả ñạt ñược của luận văn
- Luận văn hoàn thành ñúng thời hạn và ñạt ñược yêu cầu ñặt ra.
- Thi công phần cứng gọn gàng, mạch hoạt ñộng ổn ñịnh ñáp ứng yêu cầu của luận văn. Khi tay máy hoạt ñộng mặc dù vấn ñề ñiều khiển vẫn chưa thực sự tối ưu nhưng tay máy vẫn gắp ñược vật.
- Đề tài này không phải là một ñề tài dễ, vì có nhiều bài toán cần phải giải quyết. Với kết quả ñạt ñược thì có thể xem như cơ bản giải quyết các vấn ñề cốt lõi, nhưng cần phát triển hơn nữa.
- Sau khi hoàn thành luận văn, tôi ñã học tập ñược rất nhiều nhiều kiến thức về PLC, lý thuyết về tay máy robot, về xử lý ảnh trong Matlab v.v… Chúng sẽ là hành trang quý báu cho công việc sau nay.
2. Những vấn ñề cần tiếp tục nghiên cứu và thực hiện
- Mặc dù luận văn hoàn thành mục tiêu ñề ra nhưng ñể ứng dụng thực tế thì còn khoảng cách rất lớn. Do vậy cần phải phát triển hơn nữa.
- Điều khiển tối ưu lộ trình của tay máy.
- Sử dụng cảm biến góc với ñộ phân giải cao hơn và kết cấu cơ khí tốt hơn ñể táy máy khi hoạt ñộng ít bị sai số góc.
- Thiết kế và ñiều khiển tay máy với số bậc tự do lớn hơn 3 bậc.
- Xử lý ảnh cần phải tốt hơn, loại bỏ ñược nhiễu do ánh sáng và màu nền gây ra.