TÓM TẮT LUẬN VĂN ỨNG DỤNG GIAO TIẾP ROBOT YK400X VÀ ỨNG DỤNG PHÂN LOẠI SẢN PHẨM BẰNG CAMERA Ứng dụng Camera cho việc định vị và nhận dạng là một đề tài được đặt ra từ cuối thế kỷ 20. Trải qua một giai đoạn phát triển, đến thời điểm này kỹ thuật nhận dạng và định vị bằng Camera đã tương đối hoàn chỉnh. Với sự phát triển của công nghệ cảm biến Camera, độ chính xác định vị ngày càng cao. Đồng thời, sự ra đời của các thư viện xử lý ảnh giúp người lập trình nhanh chóng viết ứng dụng mà không cần phải mất thời gian tìm hiểu quá sâu về lý thuyết xử lý ảnh. Trên tinh thần đó, tôi chọn thư viện xử lý ảnh Stockcar của Lecky Integaration. Thư viện này chứa các hàm cần thiết cho việc xử lý ảnh và định vị vật trong không gian 2D. Nhiệm vụ chính của luận văn là xây dựng một phần mềm (viết bằng Visual C). Phần mềm này gồm 2 chức năng chính: Giao tiếp với bộ điều khiển RCX142 và ứng dụng điều khiển Robot YK400x bằng máy tính. Phân tích ảnh chụp từ Camera sau đó định vị và nhận dạng vật. Sau khi hoàn thành hai nhiệm vụ chính trên, tôi viết một ứng dụng nhỏ để định vị và phân loại sản phẩm theo màu, Robot sẽ thao tác gắp vật và thả đúng vào giỏ chứa sản phẩm theo màu tương ứng.
Trang 1KHOA CƠ KHÍ
BỘ MÔN CƠ ĐIỆN TỬ -o0o -
LUẬN VĂN TỐT NGHIỆP ĐẠI HỌC
ỨNG DỤNG GIAO TIẾP ROBOT YK400X
VÀ ỨNG DỤNG PHÂN LOẠI SẢN PHẨM DÙNG
CAMERA
Tp HCM, 6/2014
i
Trang 2Trước tiên, tôi xin cảm ơn thầy Nguyễn Tường Long, giáo viên trực tiếp hướng dẫn Xin đượccảm ơn thầy Chung Tấn Lâm, giáo viên đồng hướng dẫn Các thầy đã cho tôi những định hướng,tạo mọi điều kiện về vật chất lẫn tinh thần, đã giúp tôi hoàn thành trọn vẹn và đúng thời hạn đềtài của mình.
Xin cảm ơn thầy Từ Diệp Công Thành, giáo viên chủ nhiệm của lớp Thầy là người trực tiếp giúp
đỡ, cung cấp thông tin và nhắc nhở kịp thời cho lớp chúng tôi với mọi hoạt động liên quan đếnviệc học tập và làm luận văn trong suốt ba năm thầy chủ nhiệm lớp
Xin được chân thành cảm ơn các thầy cô trong hội đồng chấm luận văn tốt nghiệp Cám ơn cácthầy, các cô đã bớt thời gian quý báu để xem xét đề tài của tôi
Xin được gửi lời tri ân các thầy, các cô đã dìu dắt tôi trong suốt các năm học vừa qua
Cuối cùng, tôi dành lời cảm ơn sâu sắc cho ba, mẹ và những người thân Mọi người là chỗ dựatinh thần, là nguồn động viên để tôi vượt qua những khó khăn, thử thách trong học tập và cuộcsống
Một lần nữa, xin chân thành cảm ơn tất cả mọi người!
Tp Hồ Chí Minh, 06/2014Nguyễn Bá Hoàng Long
ii
Trang 3SẢN PHẨM BẰNG CAMERA
Ứng dụng Camera cho việc định vị và nhận dạng là một đề tài được đặt ra từ cuối thế kỷ
20 Trải qua một giai đoạn phát triển, đến thời điểm này kỹ thuật nhận dạng và định vị bằngCamera đã tương đối hoàn chỉnh Với sự phát triển của công nghệ cảm biến Camera, độ chínhxác định vị ngày càng cao Đồng thời, sự ra đời của các thư viện xử lý ảnh giúp người lập trìnhnhanh chóng viết ứng dụng mà không cần phải mất thời gian tìm hiểu quá sâu về lý thuyết xử lýảnh Trên tinh thần đó, tôi chọn thư viện xử lý ảnh Stockcar của Lecky Integaration Thư việnnày chứa các hàm cần thiết cho việc xử lý ảnh và định vị vật trong không gian 2D
Nhiệm vụ chính của luận văn là xây dựng một phần mềm (viết bằng Visual C#) Phần mềm nàygồm 2 chức năng chính:
Giao tiếp với bộ điều khiển RCX142 và ứng dụng điều khiển Robot YK400x bằng máytính
Phân tích ảnh chụp từ Camera sau đó định vị và nhận dạng vật
Sau khi hoàn thành hai nhiệm vụ chính trên, tôi viết một ứng dụng nhỏ để định vị và phân loạisản phẩm theo màu, Robot sẽ thao tác gắp vật và thả đúng vào giỏ chứa sản phẩm theo màutương ứng
iii
Trang 4Trang bìa i
Nhiệm vụ luận văn Lời cam kết Lời cảm ơn ii
Tóm tắt luận văn iii
Mục lục iv
Danh sách hình ảnh vii
Danh sách bảng biểu ix
Chương 1: TỔNG QUAN 1
1.1 Đặt vấn đề 1
1.1.1 Trong lĩnh vực thám hiểm 1
1.1.2 Trong công nghiệp 2
1.1.3 Trong đời sống hằng ngày 3
1.2 Cơ sở lựa chọn đề tài 4
1.2.1 Phần cứng 4
1.2.2 Lý thuyết 5
1.2.3 Phần mềm 6
Chương 2: ROBOT SCARA YK_400X VÀ BỘ ĐIỀU KHIỂN RCX142 7
2.1 Giới thiệu Robot SCARA 7
2.1.1 Khái quát Robot SCARA 7
2.1.2 Bài toán động học ngược vị trí 8
2.2 Robot YK400X 11
2.2.1 Các thông số của YK400x 11
2.2.2 Bộ điều khiển RCX142 15
iv
Trang 53.2 Hệ thống cảm biến của Camera 22
3.2.1 Cảm biến CCD (Charge-Coupled Device) 22
3.2.2 Cảm biến CMOS (Complementary Metal-Oxide-Semiconductor) 24
3.3 Logitech Quickcam Pro 4000 25
3.4 Cơ bản về kỹ thuật xử lý ảnh 25
3.4.1 Khái niệm ảnh đen trắng, ảnh màu 25
3.4.2 Chuyển ảnh màu thành ảnh xám 26
3.4.3 Phân ngưỡng 26
3.4.4 Phân tích BLOBS (Binary Large Objects) 27
Chương 4: GIỚI THIỆU PHẦN MỀM 29
4.1 Giao tiếp máy tính với bộ điều khiển RCX142 29
4.1.1 Cài đặt các thông số giao tiếp 29
4.1.2 Chế độ điều khiển bằng tay 30
4.1.3 Chế độ lập trình 31
4.2 Giao tiếp máy tính với Camera 33
4.3 Bảng điều khiển chính 34
4.3.1 Calibration 34
4.3.2 Phần xử lý ảnh 36
Chương 5: ỨNG DỤNG 38
5.1 Các thành phần của hệ thống 38
5.2 Hoạt động của hệ thống 38
5.3 Các yếu tố ảnh hưởng đến sai số hệ thống 42
5.4 Đánh giá sai số quá trình định vị bằng Camera 42
v
Trang 66.2 Hướng ứng dụng và mở rộng đề tài 48
6.3 Lời kết 48
TÀI LIỆU THAM KHẢO 48
PHỤ LỤC 48
A GIỚI THIỆU THƯ VIỆN XỬ LÝ ẢNH STOCKCAR 48
I Giới thiệu Stockcar 48
II Cơ bản về lập trình Stockcar 54
B ĐIỀU KHIỂN YK400X VỚI BỘ ĐIỀU KHIỂN RCX142 58
I Các tập tin dữ liệu 58
II Các lệnh di chuyển cơ bản 61
III Các lệnh về lập trình 64
vi
Trang 7Hình 1.2: ROV Lastic hoạt động dưới đáy biển 2
Hình 1.3: Camera thông minh hỗ trợ Robot sơn xe quân đội các loại 3
Hình 1.4: Robot làm việc nhà 3
Hình 1.5: Robot làm vườn 4
Hình 1.6: Robot YK400x 5
Hình 1.7: Logitech Quickcam Pro 4000 5
Hình 2.1: Hình dáng động học của SCARA 7
Hình 2.2: Hệ tọa độ gốc của SCARA và các biến khớp 8
Hình 2.3 Các hệ tọa độ được gắn theo quy tắc Denavit-Hatenberg 8
Hình 2.4: Tính động học ngược cho Scara 11
Hình 2.5: Hình chiếu đứng YK400x 12
Hình 2.6: Hình chiếu cạnh YK400x 12
Hình 2.7: Không gian làm việc YK400x 14
Hình 2.8: Bộ điều khiển RCX 142 15
Hình 2.9: Manual Program Board 16
Hình 2.10: Bắt tay phần cứng 18
Hình 2.11: Bắt tay phần mềm 19
Hình 3.1: Nguyên tắc tạo ảnh với cảm biến CCD 22
Hình 3.2: Lưới lọc Bayer 23
Hình 3.3: Cảm biến 3CCD 23
Hình 3.4: Nguyên tắc tạo ảnh với cảm biến CMOS 24
vii
Trang 8Hình 3.7: Ảnh phân ngưỡng cho thuật toán tìm Blob 27
Hình 4.1: Giao diện chính của chương trình điều khiển 29
Hình 4.2: Cài đặt các thông số giao tiếp 29
Hình 4.3: Chức năng MANUAL 30
Hình 4.4: Hộp Incoming với dữ liệu điểm 31
Hình 4.5: Chế độ PROGRAM 32
Hình 4.6: Hộp Incoming với dữ liệu các chương trình 32
Hình 4.7: Giao diện Camera 33
Hình 4.8: Bảng điều khiển chính 34
Hình 4.9: Giao diện Calibration 35
Hình 4.10: Hệ tọa độ mặt bàn 35
Hình 4.11: Giao diện xử lý ảnh 36
Hình 4.12: Giao diện lựa chọn hệ số tỷ lệ màu 37
Hình 5.1: Bảng điều khiển cho ứng dụng 38
Hình 5.2: Lưu đồ chương trình điều khiển Robot 39
Hình 5.3: Lưu đồ điều khiển xử lý ảnh và tìm tọa độ vật 41
Hình 5.4: Lưới điểm giúp đánh giá sai số 43
Hình 5.5: Kết quả tọa độ của lưới điểm 43
Hình 5.6: Phân bố sai số theo quy tắc Tchebychev 45
Hình 5.7: Phân bố sai số theo 2 phương X và Y 46
Hình 5.8: Phân bố sai số tổng hợp 46
viii
Trang 9Bảng 2.2:Bảng các thông số cho Robot Scara YK400x 13
Bảng 2.3: Sơ đồ chân D-SUB 9 17
Bảng 5.1: Hướng tập trung của sai số 44
Bảng 5.2: Hướng phân tán của sai số 44
Bảng 5.3: Các tỷ lệ % ứng với m 45
Bảng A.1: Kiểu tên gọi các hàm xử lý ảnh 51
Bảng A.2: Các định dạng dữ liệu điểm ảnh 52
Bảng A.3: Kiểu hằng ROI 52
Bảng A.4: Hằng số toán học 52
Bảng A.5: Các màu vẽ chồng 53
Bảng A.6: Kiểu hằng chuyển tọa độ 53
Bảng A.6: Các mã lỗi thông dụng 54
ix
Trang 10Chương 1: TỔNG QUAN
1.1 Đặt vấn đề
Trong những năm gần đây, sự phát triển mạnh của các bộ vi xử lý cao cấp đã tạo một bướctiến vô cùng to lớn cho Robot Giấc mơ chế tạo được một Robot giống người, có thể làm thay cáccông việc cho con người đã thành hiện thực Các loại Robot này đang ngày càng được hoàn thiện,phục vụ con người trong nhiều lĩnh vực khác nhau Từ thế hệ các Robot đơn giản chỉ hoạt độngmột cách thụ động theo các chương trình cài đặt sẵn, đến thời điểm này, các Robot đã có thể hoạtđộng một cách phức tạp hơn, có khả năng tự xử lý và phân tích các tình huống như con người.Cùng với sự phát triển của các loại cảm biến với độ chính xác cao, các bộ vi xử lý có thể thựchiện hàng tỉ phép tính trong một giây, Robot đang dần dần thay thế con người trong một số lĩnhvực đặc thù, cho hiệu quả và năng suất cao hơn
Ta có thể coi các bộ vi xử lý này là bộ não của Robot, bộ não này càng ngày càng được tối
ưu hóa về kích thước cũng như tốc độ để điều khiển Robot một cách hiệu quả nhất Vai trò củacảm biến đối với Robot được xem như là các cơ quan thị giác, xúc giác, vị giác của con người
Ví dụ với camera, ta xem camera như là con mắt trợ giúp cho Robot xác định vị trí, nhận dạngvật Ngày nay, Camera là một cảm biến không thể thiếu đối với các thế hệ Robot hiện đại CácRobot này sử dụng Camera để định vị, nhận dạng và thu thập dữ liệu Ứng dụng Camera choRobot được dùng trong nhiều lĩnh vực khác nhau:
1.1.1 Trong lĩnh vực thám hiểm
Robot giúp con người thám hiểm ở những nơi không trực tiếp làm được hoặc những nơinguy hiểm như: sao hỏa, miệng núi lửa, lò phản ứng hạt nhân… Năm 2007, người Mỹ đã đưa lênsao Hỏa 2 xe tự hành mang tên Spirit va Opportunity Các xe này không có tay lái, trung tâm điềukhiển thuộc Phòng thí nghiệm chuyển động phản lực của NASA ở thành phố Pasadena CácRobot dạng này dùng Camera để thu thập dữ liệu hình ảnh, lấy mẫu và phân tích các thông tin vềkhí hậu, đất đai và địa chất của nơi thám hiểm, sau đó gửi các dữ liệu này về trung tâm
1
Trang 11Hình 1.1: Robot Spirit và Opportunity thám hiểm sao hỏa
Gần đây nhất, một thiết bị điều khiển từ xa – ROV Latis đã được một nhóm các nhà nghiêncứu từ cộng hòa Ireland chế tạo nhằm giúp xác định ranh giới dưới đáy biển của các quốc gia.Thông tin do thiết bị thu thập được sẽ được dùng để giải quyết một lần và vĩnh viễn các tranhchấp về đường lục địa Máy sử dụng hệ thống camera chất lượng cao và có độ nhạy màu trongđiều kiện ánh sáng rất yếu Các hình ảnh thu thập được trên máy tính sẽ giúp xác định vị trí, địađiểm, chiều di chuyển và cự ly của thiết bị đối với đáy biển và tàu mẹ cùng lúc
Hình 1.2: ROV Lastic hoạt động dưới đáy biển 1.1.2 Trong công nghiệp
Trong công nghiệp quốc phòng, việc sơn màu ngụy trang cho các loại xe có ý nghĩa đặcbiệt quan trọng Màu sơn cho xe quân sự cần thay đổi thích hợp cho từng chiến trường khác nhau
Vì vậy mà quân đội Mỹ đang nghiên cứu, phát triển kỹ thuật sơn tự động, chỉ cần chọn màu sơnRobot sẽ tự động sơn cho các loại xe khác nhau Camera sử dụng dữ liệu ảnh để nhận biết, xác
2
Trang 12định các thông tin vị trí của các loại xe khác nhau, các phụ kiện kèm trên xe…rồi chuyển sangkhông gian 3D Sau khi đã hiệu chỉnh về hệ tọa độ Robot, chiếc xe được sơn với mô hình vừađược cung cấp, phụ thuộc vào các yếu tố: kích thước, hình dáng, đời xe, các phụ kiện gắn thêmtrên xe…
Hình 1.3: Camera thông minh hỗ trợ Robot sơn xe quân đội các loại 1.1.3 Trong đời sống hằng ngày
Đây là lĩnh vực đang rất phát triển tại Nhật Robot giúp làm việc nhà, làm vườn, dạy học vàđồng thời cũng là phương tiện giải trí cho con người Các Robot này đều được trang bị Camera(nhiều hơn 2) để phân biệt các vật thể khác nhau:
Hình 1.4: Robot làm việc nhà
Đây là dự án mang tên Robot giúp việc AR của đại học Tokyo Robot này có thể quan sát
và phân biệt các vật khác nhau bằng mắt 2 tròng, có thể định vị được vật ngay cả khi chúng nằm
3
Trang 13dưới ghế hoặc bàn Các loại Robot truyền thống thường gặp khó khăn trong việc xử lý những vậtkhông ở dạng rắn, nhưng AR có thể nhận ra quần áo bằng nếp nhăn của chúng.
Hình 1.5: Robot làm vườn
Đây là một dự án thuộc Viện Công nghệ Massachusetts – Mỹ, phía trên Robot được gắnmột cánh tay và máy tính nhúng Cánh tay này vốn được trang bị một Camera và tay kẹp Trongcuộc thử nghiệm, Robot có thể tưới cho một cây cà chua, rồi tiến đến một cây cà chua khác và háiquả bằng tay kẹp sau khi đã nhận diện qua webcam
Như vậy, ta có thể thấy việc xử lý ảnh để định vị cho Robot là một việc không còn mới, vấn
đề là ứng dụng nó sao cho thật thích hợp, đảm bảo tính hiệu quả và độ chính xác
1.2 Cơ sở lựa chọn đề tài
Với sự yêu thích trong lĩnh vực Robot, tôi đã quyết định tìm hiểu từ loại Robot công nghiệpđơn giản nhất là SCARA Để tăng cường thêm sự linh hoạt và tự động cho SCARA, tôi kết hợp
nó với một Camera để định vị vật trong mặt phẳng Từ đó, tôi có thể ứng dụng vào các hệ thống
phân loại sản phẩm theo kích thước, theo màu sắc…Vì vậy, tôi chọn đề tài là: “Ứng dụng giao tiếp Robot YK400x và ứng dụng phân loại sản phẩm dùng Camera ”
1.2.1 Phần cứng
Về phần cứng cho việc thực hiện đề tài, tôi sử dụng Robot SCARA YK400x của hãngYamaha (bộ điều khiển RCX142) và Camera Logitech Quickcam Pro 4000 để định vị và thao tácvới vật (có sẵn tại phòng thí nghiệm C6, bộ môn Cơ Điện Tử)
4
Trang 145
Trang 15Sau khi đã có tọa độ thực của vật ngoài không gian, ta đưa tọa độ này về tọa độ gốc củaRobot Lúc này nhiệm vụ của Robot là thao tác với vật tại vị trí được cung cấp Vấn đề điềukhiển này do bộ điều khiển RCX142 giải quyết
1.2.3 Phần mềm
Xây dựng một phần mềm thực hiện nhiệm vụ giao tiếp giữa máy tính, Robot và Camera,được viết bằng C# (Microsoft Visual Studio 2008) Với phần mềm này việc điều khiển RobotYK400x trở nên dễ dàng hơn, hơn nữa, Robot được trang bị thêm một Camera ra sẽ mở rộng khảnăng làm việc cho Robot
Tôi xác định rõ hai mục tiêu cần đạt được trong luận văn này là:
Ứng dụng giao tiếp Robot SCARA YK400x
Ứng dụng định vị và phân loại sản phẩm bằng Camera
6
Trang 16Chương 2: ROBOT SCARA YK_400X VÀ BỘ ĐIỀU KHIỂN RCX142
1.3 Giới thiệu Robot SCARA
1.3.1 Khái quát Robot SCARA
RobotSCARA (Selectively Compliant Articulated Robot Arm) ra đời năm 1979, đây làmột kiểu tay máy có cấu tạo đặc biệt, được sử dụng nhiều trong công việc lắp ráp các tải trọngnhỏ
Hình 2.1: Hình dáng động học của SCARA
Như tên gọi của nó Robot dạng này chỉ làm việc trong mặt phẳng Robot có 5 khâu, bốnbậc tự do (4 biến khớp) Sau đây ta sẽ gắn hệ tọa độ gốc và các biến khớp cho SCARA Từ đó,tìm hiểu động học cho Robot
Trang 17Hình 2.2: Hệ tọa độ gốc của SCARA và các biến khớp 1.3.2 Bài toán động học ngược vị trí
Theo quy ước Denavit-Hatenberg, các hệ tọa độ Decarters được gắn vào khâu chấp hànhnhư hình vẽ:
Hình 2.3 Các hệ tọa độ được gắn theo quy tắc Denavit-Hatenberg
Trang 18Nhiệm vụ của bài toán là từ vị trí của khâu cuối so với hệ tọa độ gốc Ox0y0z0, tìm giá trịcủa 4 biến khớp θ1, θ2, d3, θ4.
Tham số các khâu cho Robot SCARA:
Bảng 2.1: Các tham số cho Robot Scara
Ma trận Denavit-Hatenberg:
Quy ước: ci = cosθi và si = sinθi
Ma trận chuyển đổi giữa hệ trục tọa độ O0x0y0z0 và O1x1y1z1:
Trang 20Như vậy ta đã tìm được 4 thông số θ1, θ2, d3, θ4.
Bài toán động học ngược vị trí là đơn giản nhất, động học ngược vận tốc và gia tốc thìphức tạp hơn Tuy nhiên, ta không cần xem xét kỹ vấn đề này vì bộ điều khiển RCX 142 đãgiải quyết chuyện đó
Trang 211.4 Robot YK400X
1.4.1 Các thông số của YK400x
Robot SCARA YK400x là mẫu Robot loại nhỏ dùng để gắp các vật trong mặt phẳng cótải trọng không quá 3kg, chiều dài cánh tay (tầm vươn tới) là 400mm
Sau đây là các hình chiếu của YK400x:
Hình 2.5: Hình chiếu đứng YK400x
Trang 22Cài đặt giới hạn chuyển động Bằng phần mềm
Trang 23Với các thông số trên đây, Robot sẽ hoạt động một phạm vi giới hạn như sau:
Hình 2.7: Không gian làm việc YK400x
Khâu thứ nhất quay từ -1150 tới 1150 ứng với giá trị cảm biến xung J từ -261689J tới+261689J
Khâu thứ hai quay từ -1400 tới 1400 ứng với giá trị cảm biến xung J từ -318578J tới+318578J
Khâu thứ ba tịnh tiến từ -1mm tới 150mm ứng với giá trị cảm biến xung J từ -1366J tới+204800J
Khâu thứ tư quay từ -570 tới 3020 ứng với giá trị cảm biến xung J từ -409600J tới+409600J
Dung sai:
Khâu thứ nhất, thứ hai, thứ tư là 80J hay 0.040
Khâu thứ ba là 80J hay 0.06mm
Trang 241.4.2 Bộ điều khiển RCX142
Hình 2.8: Bộ điều khiển RCX 142
MPB(Manual Program Board)
MPB là một thiết bị cầm tay dùng để thực thi tất cả các chức năng của Robot: chức năngđiều khiển bằng tay, lập trình, cài đặt các thông số…
Trang 25Hình 2.9: Manual Program Board
MPB có thể giao tiếp một cách đầy đủ với YK400x, nhưng để tăng khả năng tự động và
xử lý linh hoạt cho Robot, ta quan tâm đến điều khiển Robot qua máy tính Các thông số giaotiếp giữa RCX142 và máy tính được cài đặt bằng MPB
Giao tiếp giữa máy tính và RCX142 qua cổng RS232
• Chế độ giao tiếp Online và Offline
Bộ điều khiển có thể giao tiếp với thiết bị ngoại vi theo hai chế độ qua cổng RS232:ONLINE/OFFLINE Hai chế độ này có thể sử dụng riêng lẻ hoặc kết hợp với nhau trongnhững ứng dụng khác nhau
Chế độ OFFLINE: Giao tiếp giữa Robot và thiết bị ngoại vi được thực thi bằng lệnhSEND viết trong chương trình
Lệnh gửi Offline từ Robot đến thiết bị ngoại vi:
SEND <Source File> TO CMU
Lệnh gửi Offline từ thiết bị ngoại vi đến Robot:
SEND CMU TO <Source File>
Trang 26Ví dụ:
SEND P1 TO CMU → gửi tọa độ điểm P1 ra thiết bị ngoại vi (đơn vị mm hay xungJ)
SEND CMU TO P1 → gửi từ máy tính tọa độ điểm P1
Chế độ ONLINE: Gửi lệnh trực tiếp từ thiết bị ngoại vi đến Robot Các lệnh gửi trựctiếp từ thiết bị ngoại vi gọi là lệnh online (được trình bày ở phần sau)
Định dạng:
@[_]<Online Command>[<_command option>]<termination code>
Mã kết thúc (termination code) là CR (0Dh) hay CRLF (0Dh+0Ah)
Ví dụ: @ MOVE P,P0<0Dh> → Robot di chuyển tới điểm P0
• Giao tiếp giữa Robot và RCX142
Sơ đồ chân của D-SUB 9 chân:
Bảng 2.3: Sơ đồ chân D-SUB 9
Chuẩn RS232 vàphương thức giao tiếpHandshaking:
Chuẩn RS232 chỉ có thểkết nối nhiều nhất hai thiết bị,với khoảng cách dài nhất từ12.7m đến 25.4m, tốc độ20kbit/s
Với phương thức Handshaking, máy phát có thể xác định khi nào nó truyền dữ liệu vàmáy nhận cho biết khi nào nó sẵn sàng nhận dữ liệu Tín hiệu có thể biến đổi qua RS232 theo
Trang 27giao thức chuẩn hoặc giao thức quy ước Có 2 kiểu bắt tay, đó là bắt tay phần cứng và bắt tayphần mềm:
Bắt tay phần cứng: Nơi nhận đưa ra dòng mức cao khi sẵn sàng nhận dữ liệu, nơitruyền chờ tín hiệu này trước khi truyền dữ liệu Nơi nhận có thể đưa ra dòng mức thấp trongmọi thời điểm, thậm chí cả trong quá trình chờ dòng phản hồi trước khi kết thúc quá trìnhtruyền nhận
Bắt tay phần mềm: Nơi nhận gửi một mã để báo nó sẵn sàng nhận dữ liệu hoặc một
mã khác để báo nơi truyền dừng quá trình gửi dữ liệu
Trang 28Hình 2.11: Bắt tay phần mềm
Ở đây tôi chọn phương thức bắt tay bằng phần cứng
Lập trình cho YK400x với bộ điều khiển RCX142
Các lệnh di chuyển cơ bản
ORIGIN: đưa Robot về vị trí gốc
DRIVE: điều khiển Robot di chuyển một trục duy nhất theo hệ tọa độ tuyệt đối
DRIVEI: điều khiển Robot di chuyển một trục duy nhất theo hệ tọa độ tương đối.
MOVE P: di chuyển tuyệt đối theo tất cả các trục
MOVE L: lệnh nội suy tuyến tính điểm tới điểm
MOVE C: lệnh nội suy đường tròn qua 3 điểm
MOVEI P: di chuyển tương đối theo tất cả các trục
PATH: đây là một bộ lệnh gồm: PATH SET…PATH END – dùng thiết lập quỹ đạochuyển động và PATH START – cho phép Robot chạy theo quỹ đạo vừa thiết lập LệnhPATH này sử dụng trong nhiệm vụ hàn rất hiệu quả
Các lệnh thay đổi thông số
SPEED: thay đổi thông số vận tốc
SHIFT: thay đổi hệ tọa độ
ACCEL, DECEL: thay đổi hệ số tăng tốc, giảm tốc cho các trục
Trang 29OUTPOS: thay đổi vị trí không hiệu lực của các trục.
ONLINE/OFFLINE: thay đổi chế độ giao tiếp với thiết bị ngoại vi
TORQUE: thay đổi moment cho các trục di chuyển
Các lệnh về lập trình
CALL: gọi chương trình con
GOSUB: nhảy đến nhãn, gặp lệnh RETURN thì nhảy về dòng lệnh sau nhãn
SUB: xác định chương trình con và EXIT SUB: thoát khỏi chương trình con
SHARED: xác định các biến chung trong các chương trình con
HALT: lệnh này sẽ dừng chương trình và reset chương trình
HOLD: tạm thời dừng chương trình đang thi hành, khi chương trình được thi hành lại,
nó sẽ tiếp tục tại điểm dừng tại lệnh HOLD
GOTO: lệnh này nhảy không điều kiện đến dòng lệnh đánh dấu bằng nhãn Tương ứngdùng lệnh LABEL để tạo nhãn
FOR…NEXT: vòng lặp và EXIT FOR
SELECT CASE và END SELECT: lệnh này tương tự như lệnh Switch trong C
IF…ELSE: lệnh điều kiện
SWI: thi hành một chương trình có trong bộ nhớ
Các lệnh về điểm
JTOXY: đổi dữ liệu điểm từ xung sang mm
XYTOJ: đổi dữ liệu điểm từ mm sang xung
WHERE: cho biết tọa độ hiện tại của khâu cuối Robot – đơn vị xung
WHRXY: cho biết tọa độ hiện tại của khâu cuối Robot – đơn vị mm
Các lệnh điều khiển MPB
PRINT: xuất dữ liệu ra màn hình MPB
INPUT: chờ phím trong MPB được nhấn
SEND: phím nhập của MPB của một file xác định
Các lệnh điều khiển vào ra
DELAY: đứng chờ
DO: Xuất giá trị ra cổng DO
MO: Xuất giá trị ra cổng MO
Trang 30TO: Xuất giá trị ra cổng TO.
SET/RESET: xác định bit xuất ra từ một chân trên các cổng DO, TO, MO (có thời gian).WAIT: chờ điều kiện vào hay ra (có thời gian)
Trên đây chỉ nêu lên các lệnh điều khiển cơ bản cho Robot và ý nghĩa của chúng Chitiết về các lệnh này và ví dụ cho từng lệnh được trình bày ở phụ lục B, có thể tham khảo thêmtrong hướng dẫn lập trình của nhà sản xuất
Trang 31Chương 3: HỆ THỐNG XỬ LÝ ẢNH VỚI CAMERA
3.1 Hệ thống xử lý ảnh
Một hệ thống xử lý ảnh bao gồm: nguồn sáng, hệ thống cảm biến (thường là CCDCamera hay CMOS Camera), một giao diện giữa hệ thống cảm biến và máy tính để chuyển tínhiệu tương tự ra tín hiệu số mà máy tính có thể hiểu được
3.2 Hệ thống cảm biến của Camera
Có hai loại cảm biến là CCD và CMOS, nhiệm vụ của chúng là hấp thụ ánh sáng vàchuyển sang dạng tín hiệu số
3.2.1 Cảm biến CCD (Charge-Coupled Device)
CCD bao gồm một mạng lưới như bàn cờ các điểm bắt sáng (pixel) Các điểm này được
phủ các lớp lọc màu (thường là một trong ba màu cơ bản: đỏ, xanh lá cây, xanh dương) để mỗiđiểm chỉ bắt một màu nhất định Do mỗi điểm ảnh được phủ các lớp lọc màu khác nhau vàđược đặt xen kẽ nhau nên màu nguyên thủy tại một điểm của hình ảnh thật sẽ được tái hiệnbằng màu từ một điểm ảnh chính kết hợp với các màu bù được bổ sung từ các điểm xungquanh bằng phương pháp nội suy
Hình 3.1: Nguyên tắc tạo ảnh với cảm biến CCD
Trang 32Ánh sáng qua ống kính sẽ được lưu lại tại bề mặt chip thông qua các điểm ảnh Thôngtin về số lượng ánh sáng lưu tại mỗi điểm (thể hiện bằng độ khác nhau về điện áp) sẽ đượcchuyển lần lượt theo từng hàng ra bộ phận đọc giá trị (Hình 3.1) Sau đó các giá trị này sẽđược chuyển qua bộ khuếch đại tín hiệu, rồi đến bộ chuyển đổi tín hiệu tương tự sang tín hiệu
số, rồi đến bộ xử lý để tái hiện hình ảnh vừa chụp được
Hình 3.2: Lưới lọc Bayer
Các camera kỹ thuật số thường sử dụng lưới Bayer trên CCD (Hình 3.2) Cứ mỗi 4 điểmảnh kề nhau sẽ có một bộ lọc đỏ, một cho xanh lam và hai cho xanh lá cây (vì mắt người nhạyvới màu xanh lá cây hơn đỏ và xanh lam) Với kỹ thuật này, thông tin sẽ được lưu trên mỗiđiểm ảnh nhưng độ phân giải màu thu được thấp hơn thông tin gốc
Hình 3.3: Cảm biến 3CCD
Một kỹ thuật tách màu tốt hơn, sử dụng 3 cảm biến CCD và một lăng kính (Hình 3.3),chia thông tin ảnh thành 3 phần: đỏ, xanh dương, xanh lá Mỗi CCD được sắp xếp để lấy dữ
Trang 33liệu cho từng màu Những máy ảnh số và máy quay số chuyên nghiệp sử dụng kỹ thuật này.Với cảm biến 3CCD, hầu hết ánh sáng qua ống kính được lưu lại, trong khi lưới Bayer chỉ hấpthụ khoảng 2/3 lượng ánh sáng trên mỗi điểm ảnh.
3.2.2 Cảm biến CMOS (Complementary Metal-Oxide-Semiconductor)
CMOS thì khác, cạnh mỗi điểm bắt sáng trên chip đều có một mạch bổ trợ, do đó ta có
thể tích hợp các quy trình xử lý ảnh như bộ chuyển đổi analog/digital, cân bằng trắng…vàomạch bổ trợ này, giúp cho quá trình xử lý bức ảnh được thực hiện rất nhanh nhờ được thựchiện ngay tại từng điểm ảnh đơn lẻ
Hình 3.4: Nguyên tắc tạo ảnh với cảm biến CMOS
Nhưng lợi thế này lại trở thành nhược điểm Do mỗi một điểm bắt ảnh trên CMOS lại cómột mạch riêng nên khó có thể đảm bảo tính đồng nhất của mỗi mạch khi khuyếch đại Điềunày làm cho bức ảnh xuất ra luôn có một độ nhiễu nhất định (không mịn) Nếu như ở CCD,mỗi một điểm ảnh là một mặt bắt sáng khiến cho độ nhạy sáng của CCD cao hơn, dải màu thểhiện được nhiều hơn, độ phân giải cao hơn, thì mỗi một điểm ảnh của CMOS (bao gồm hạt bắtsáng và mạch khuyếch đại) khi bắt sáng sẽ có những phần ánh sáng rơi vào vị trí của mạch vì
Trang 34thế sẽ không được tái hiện Điều này làm cho ảnh bị mất thông tin tại những vùng này dẫn đến
độ phân giải của CMOS không cao
3.3 Logitech Quickcam Pro 4000
Quickcam 4000 được chế tạo bởi Logitech với độ phân giải 640x480, cảm biến VGACCD 1.3 M Pixels
Để đưa Camera vào ứng dụng xử lý ảnh ta phải cài qcsdk.exe do nhà sản xuất cung cấp Sau đó, đưa thư viện Hportal.dll vào trong ứng dụng (viết bằng C# chẳng hạn).
Thông thường mỗi pixel mang thông tin của 256 mức xám Trong hầu hết quá trình xử
lý ảnh, chúng ta chủ yếu chỉ quan tâm đến cấu trúc của ảnh và bỏ qua ảnh hưởng của yếu tốmàu sắc Do đó, bước chuyển từ ảnh màu sang ảnh xám là một công đoạn phổ biến trong cácquá trình xử lý ảnh, vì nó làm tăng tốc độ xử lý, giảm mức độ phức tạp của các thuật toán trênảnh
Ảnh nhị phân khá đơn giản, các phần tử có thể coi như các phần tử logic nên ảnh nhịphân được ứng dụng trong các thuật toán phân biệt đối tượng ảnh với nền hay phân biệt điểmbiên với điểm khác (Bài toán xử lý ảnh – phát hiện đối tượng trong chương 4, ảnh luôn phảichuyển về dạng nhị phân hay còn được gọi là phân ngưỡng)
Trang 35 Ảnh màu
Ảnh màu là ảnh tổ hợp từ 3 màu cơ bản: Đỏ, Xanh lục, Xanh lam Mỗi màu cũng đượcphân thành L cấp khác nhau Do vậy để lưu trữ ảnh màu, người ta có thể lưu trữ từng mặt màuriêng biệt, mỗi màu lưu trữ như một ảnh đa cấp xám
Ngưỡng trên và ngưỡng dưới: Trong quá trình phân ngưỡng, giả sử đối tượng sánghơn nền, điểm ảnh được xem là thuộc đối tượng nếu giá trị của nó lớn hơn giá trị ngưỡng, vàngược lại Đây là khái niệm ngưỡng trên, tương tự cho ngưỡng dưới
Ngưỡng trong và ngưỡng ngoài: Một điểm ảnh được xem là thuộc đối tượng nếu giátrị của nó ỡ giữa hai ngưỡng, đây là ngưỡng trong, ngược lại, đó là ngưỡng ngoài
Trang 36Hình 3.6: Phân ngưỡng cho ảnh xám
Kết thúc quá trình phân ngưỡng, các điểm ảnh thuộc đối tượng sẽ được gán giá trị là 1trong khi các điểm ảnh thuộc nền được gán giá trị 0 Cuối cùng một bức ảnh nhị phân được tạo
ra bằng cách tô màu trắng hoặc đen cho từng điểm ảnh, phụ thuộc vào giá trị nhị phân của nó
3.4.4 Phân tích BLOBS (Binary Large Objects)
Quá trình phân tích một Blob – như tên gọi của nó phải được thực hiện trên một ảnh nhịphân (kết quả của quá trình phân ngưỡng ở trên) Với ảnh nhị phân vừa được tạo thành, vùngBlobs sẽ là vùng trắng nổi bật trên nền đen hoặc ngược lại Giả sử ta có một ảnh đã được phânngưỡng như sau, vùng cần tìm là vùng trắng
Hình 3.7: Ảnh phân ngưỡng cho thuật toán tìm Blob
Trang 37Thuật toán cho việc phát hiện Blobs này như sau:
Trước hết quét dòng đầu tiên và tìm ra các nhóm có 1 hay nhiều hơn các điểm ảnhtrắng Ta gọi các nhóm điểm ảnh trắng này là các lineblobs Ghi nhận các lineblobs này bằngmột số nhận dạng (ID)
Sau đó quét dòng kế tiếp, trong quá trình tìm các lineblobs trên dòng này, ta đối chiếuvới các lineblobs ở dòng liền trước nó Nếu các blobs này trùng nhau ở ít nhất một pixel, tahợp 2 lineblobs này thành một blobs và ghi nhận cùng một số nhận dạng
Lặp lại quá trình này cho từng dòng ta sẽ tìm được blobs của ảnh
Trên đây là ba kỹ thuật xử lý ảnh phổ biến, tôi đã dùng các kỹ thuật này cho bài toánđịnh vị bằng Camera và phân loại sản phẩm theo màu Chi tiết về lệnh thực hiện các thao tác
xử lý ảnh này trong thư viện Stockcar được trình bày ở phụ lục A