Yêu cầu điều khiển

Một phần của tài liệu Ứng dụng dobot magician trong hệ thống phân loại sản phẩm (Trang 48)

Trong quá trình hệ thống hoạt động, ta cần phải đảm bảo tốc độ băng chuyền ở mức tối ưu nhất để vừa đảm bảo năng suất làm việc, vừa đảm bảo tính chính xác khi phân loại màu sắc vì nếu cho băng chuyền hoạt động quá nhanh, Camera sẽ không thể bắt kịp và phân tích được từng khung hình của các khối vật thể khi chúng đi vào vùng quan sát của nó, gây ra tình trạng phân loại sai màu sắc, còn nếu băng chuyền hoạt động quá chậm thì sẽ không đảm bảo năng suất hệ thống.

Vật thể dù có được đặt như thế nào trên băng chuyền thì sau khi qua xử lý, chúng phải được cánh tay Robot xoay theo đúng hướng ta mong muốn trước khi được xếp vào kho, trong đề tài này ta sẽ xếp các vật thể vuông góc với kho. Ngoài ra, các vật thể có thể xếp chồng lên nhau theo từng khối màu, kích thước 1*3*4 viên (hàng * cột * độ cao). Sau khi gắp thả một vật thể, bộ điều khiển sẽ xóa ô nhớ tại vị trí đó đi và điều khiển cánh tay Robot tới vị trí kế tiếp tránh trường hợp xếp trùng vật thể tại cùng 1 vị trí.

32 Khoa ĐT CLC – ĐHSPKT TP.HCM 3.3 Linh kiện phần cứng 3.3.1 Camera Hình 3. 2 Webcam Logitech C920 Nhà sản xuất Logitech Độ phân giải - Video: FullHD 1080p/30fps, HD 720p/30fps - Photo: 3 MP Góc quay 780 Công nghệ - Auto low-light correction - Auto noise elimination - Auto Focus

Giao tiếp USB 2.0

Bảng 3. 1 Thông số kỹ thuật Camera

3.3.2 Băng tải

Hình 3. 3 Băng tải

Khối lượng tải 500g

Chiều dài băng tải 600mm

Tốc độ tối đa 120mm/s

Gia tốc tối đa 1100𝑚𝑚/𝑠2

Khối lượng 4.2kg

Kích thước 700mm x 215mm x 60mm

33

Khoa ĐT CLC – ĐHSPKT TP.HCM

3.3.3 Cánh tay Dobot Magician

Hình 3. 4 Quy cách thiết kế Dobot Magician

Dobot Magician là một cánh tay Robot đa chức năng với 4 bậc tự do (Base, Rear Arm, Fore Arm, End-effector) mô tả như hình 3.4, được phát triển để phục vụ trong môi trường giáo dục, hỗ trợ cho việc giảng dạy thực tế hơn. Nó có thể được lập trình trên nhiều dạng ngôn ngữ khác nhau (Java, C#, Python, Qt, VB, blockly graphic,…) hay phục vụ trong hệ thống nhúng kết hợp với STM32, Arduino, iOS, Android. Với nhiều cơ cấu chấp hành đa dạng, Dobot Magician có thể được tùy biến là máy in 3D, máy khắc laser, máy viết – vẽ chữ, máy gắp vật thể,… Ngoài ra, nó cũng được hỗ trợ phát triển bằng nhiều giao diện I/O khác nhau, điều này giúp cho khả năng sáng tạo của người dùng là không giới hạn.

34

Khoa ĐT CLC – ĐHSPKT TP.HCM Hệ tọa độ Đề-các: các tọa độ được xác định bởi trục đế.

Tọa độ gốc là tâm của 3 động cơ (Base, Rear Arm, Fore Arm).

Hướng của trục X vuông góc với đế về phía trước, hướng của trục Y vuông góc với đế về phía bên trái và hướng của trục Z là hướng thẳng đứng lên trên dựa vào quy tắc bàn tay phải.

Trục R là tâm của động cơ Servo so với tọa độ gốc của cánh tay Robot trong đó chiều dương của nó ngược chiều kim đồng hồ. Trục R chỉ tồn tại khi cơ cấu chấp hành là động cơ Servo được lắp đặt.

Hình 3. 6 Hệ tọa độ khớp xoay

Hệ tọa độ khớp xoay: các tọa độ được xác định bởi các khớp chuyển động. Nếu cơ cấu chấp hành không được lắp ráp vào hệ thống thì Dobot Magician chỉ chứa 3 khớp: J1, J2 và J3 (tất cả đều là các khớp xoay). Chiều dương của những khớp này ngược chiều kim đồng hồ.

Nếu động cơ Servo được lắp đặt ở cơ cấu chấp hành (Suction Cup Kit, Gripper Kit) thì lúc này Dobot Magician sẽ chứa 4 khớp: J1, J2, J3 và J4 (tất cả đều là các khớp xoay). Chiều dương của các khớp này ngược chiều kim đồng hồ.

35

Khoa ĐT CLC – ĐHSPKT TP.HCM

Hình 3. 7 Thông số kích thước Hình 3. 8 Tầm hoạt động (1)

Số bậc tự do 4

Khối lượng tải 500g

Tầm hoạt động 320mm

Độ lặp vị trí 0.2mm

Giao tiếp truyền thông USB/Wifi/Bluetooth

Nguồn cung cấp 100 - 240V, 50/60Hz

Nguồn đầu vào 12V/7A DC

Công suất tối đa 60W

Tầm nhiệt -100𝐶 ÷ 600𝐶

Khối lượng 3.4kg

Kích thước đế 158mm x 158mm

36

Khoa ĐT CLC – ĐHSPKT TP.HCM

Hình 3. 9 Tầm hoạt động (2) Hình 3. 10 Tầm hoạt động (3)

Trục Tầm hoạt động Tốc độ

Khớp xoay chân đế (Base) −900 ÷ 900 3200/𝑠 Khớp xoay tay đòn 1 (Rear Arm) 00 ÷ 850 3200/𝑠 Khớp xoay tay đòn 2 (Fore Arm) −100 ÷ 950 3200/𝑠 Khớp xoay cơ cấu chấp hành (Servo) 900 ÷ −900 4800/𝑠

Bảng 3. 4 Thông số các góc khớp

Phần mềm điều khiển DobotStudio, Repetier, GrblController3.6

SDK (Bộ phát triển phần mềm) Communication Protocool, Dobot Program Library

Giao tiếp Input/Output mở rộng 1. I/O x 10 (có thể cấu hình ngõ vào Analog hoặc ngõ ra PWM)

2. Nguồn điều khiển 12V x 4

3. Giao tiếp truyền thông (UART, Reset, Stop, 12V, 5V)

4. Stepper x 2

Bảng 3. 5 Ứng dụng

37

Khoa ĐT CLC – ĐHSPKT TP.HCM 3.3.4 Bộ bơm khí nén và đầu hút

Hình 3. 11 Bộ bơm khí nén và đầu hút

Phạm vi tác dụng của đầu hút 27.5mm

Loại điều khiển Khí nén

Lực tác dụng 8N

Nguồn cung cấp cho bộ hút 12V

38

Khoa ĐT CLC – ĐHSPKT TP.HCM

3.4 Sơ đồ kết nối phần cứng

Các thiết bị phần cứng được lắp ráp là dạng Module đi cùng với nhau do khoa Điện – Điện tử cung cấp nên nhóm chỉ có nhiệm vụ kết nối chúng lại thành một hệ thống hoàn chỉnh thông qua các giao thức có sẵn dựa trên sơ đồ kết nối phần cứng như trong hình 3.12. Tín hiệu từ Camera sẽ được nhận vào máy tính thông qua cổng kết nối USB. Tương tự, cánh tay Dobot Magician và máy tính cũng sẽ giao tiếp tín hiệu với nhau thông qua cổng USB. Từ các chân kết nối ở phần đế của cánh tay Robot, ta kết nối chúng đến các cơ cấu chấp hành tương ứng dựa trên tài liệu hướng dẫn của nhà sản xuất được mô tả như trong hình 3.13 và hình 3.14

Hình 3. 12 Sơ đồ kết nối phần cứng

Hình 3. 13 Các giao thức kết nối ở chân đế của Dobot Magician

- GP1: điều khiển bơm khí, cảm biến màu sắc, cảm biến hồng ngoại - GP2: tương tự như GP1, các chức năng do người dùng tự định nghĩa - Stepper1: điều khiển động cơ băng tải, động cơ đùn nhựa (chế độ in 3D)

- Stepper2: tương tự như Stepper1, các chức năng do người dùng tự định nghĩa

- SW1: nguồn cấp cho bơm khí, nguồn ra 12V

- SW2: nguồn ra 12V

- USB: giao thức kết nối với máy tính

- Reset: reset lại hệ thống, khi reset đèn báo sẽ chuyển sang màu vàng, sau 5 giây nếu đèn chuyển sang màu xanh lá thì cánh tay đã được reset thành công.

39

Khoa ĐT CLC – ĐHSPKT TP.HCM

- Key: nếu bấm nhanh sẽ chạy chương trình ngoại tuyến, nếu bấm giữ trong 2 giây

Robot sẽ tiến hành lấy vị trí Home

- Communication Interface: giao tiếp UART, kết nối Bluetooth, Wifi

- Power: nguồn cấp đầu vào

Hình 3. 14 Các giao thức kết nối trên cánh tay

- GP3: điều khiển tín hiệu động cơ Servo ở cơ cấu chấp hành cuối

- GP4: điều khiểntín hiệu tự động cân bằng

- GP5: điều khiểntín hiệu đầu laser

- SW3: điều khiển tín hiệu đầu nung nhựa (chế độ in 3D)

- SW4: quạt gió (chế độ in 3D), nguồn cấp đầu laser

40

Khoa ĐT CLC – ĐHSPKT TP.HCM

CHƯƠNG 4. THI CÔNG HỆ THỐNG 4.1 Lắp ráp phần cứng

Hình 4. 1 Lắp đặt Camera Hình 4. 2 Các chân kết nối ở đế Robot

Hình 4. 3 Lắp đặt đầu hút Hình 4. 4 Kết nối dây tín hiệu cho bộ hút

41

Khoa ĐT CLC – ĐHSPKT TP.HCM

4.2 Lập trình điều khiển

4.2.1 Thuật toán xử lý ảnh

Hình 4. 7 Thuật toán xử lý ảnh

Dựa vào thuật toán đã đề ra, ta thiết lập nên hai luồng xử lý cho hệ thống. Luồng 1 xử lý ảnh bao gồm các thuật toán nhận diện biên Canny; lấy đường thẳng HoughLine; nhận diện vật thể hình vuông; nhận diện vị trí & hướng vật thể trên băng chuyền; và phân biệt màu sắc vật thể. Luồng 2 điều khiển cánh tay Robot gắp thả vật thể vào kho chứa.

Ở luồng điều khiển 1, ảnh màu nhận được từ Camera sẽ được truyền vào hàm Detector, hàm này sẽ phát hiện vật thể theo từng khung ảnh, xử lý tín hiệu và trả ra một danh sách các vật thể hình vuông mà nó phát hiện được gọi là List of rects (danh sách các hình vuông) với cấu trúc dạng [rect1,

42

Khoa ĐT CLC – ĐHSPKT TP.HCM

Với từng thành phần con, cấu trúc sẽ có dạng rect = [[x, y], hướng, màu], trong đó: [x, y] (theo pixel) là tọa độ khối vật thể trên ảnh được lưu theo dạng danh sách. Hướng là góc của vật so với trục Ox do ta quy ước, tính theo đơn vị độ, giới hạn trong khoảng (−900, 900). Như trong hình 4.9, ta có thể thấy vật thể hợp với trục Ox góc 0 độ, trong hình 4.10 vật thể hợp với trục Ox góc θ độ.

Hình 4. 9 Vật thể lệch góc 0 độ Hình 4. 10 Vật thể lệch góc θ độ

Màu được xác định theo quy tắc Red = 0, Green = 1, Blue = 2, Yellow = 3 Sau khi có được danh sách các hình vuông, ta biết được hệ tọa độ các vật thể trong ảnh. Từ đây, sẽ trả ngược kết quả về hàm Main để tiếp tục xử lý luồng điều khiển hai. Ở luồng điều khiển thứ hai, ngõ vào là danh sách các hình vuông được lấy từ luồng điều khiển thứ nhất, hàm Main sẽ lấy từng phần tử của danh sách này tức rect1, rect2,… để điều khiển vị trí cánh tay Robot. Tuy nhiên, để làm được điều này ta cần phải quay trở lại hàm Detector, hàm này sẽ phát hiện hình vuông theo từng khung hình. Giả sử trong một giây ta chạy được một khung hình, sau khung hình thứ nhất camera thu được [rect1, rect2], sau khung hình thứ hai camera thu được [rect3, rect4].

Hình 4. 11 Vị trí vật thể trong hai khung hình

Trên thực tế, ta có thể thấy hình vuông 1 và hình vuông 3 cùng là một hình vuông, hình vuông 2 và hình vuông 4 cùng là một hình vuông khi băng chuyền hoạt động. Tuy nhiên với máy móc, chúng lại hiểu hai hình vuông ở hai khung hình là khác nhau, vì vậy ta cần phải gom chúng lại thành một. Dựa vào hình 4.11, có thể thấy X1 < X3,

0 0

43

Khoa ĐT CLC – ĐHSPKT TP.HCM

lý do là vì X1 ở gần gốc tọa độ 0 hơn. Ta thiết lập giá trị Δ = 10 pixel là giới hạn nhỏ nhất giữa hai hình vuông, giá trị Δ này sẽ phụ thuộc vào tốc độ của băng chuyền và tốc độ lấy ảnh của Camera, từ đây ta có được điều kiện ràng buộc là: X3 – X1 ≤ Δ. Nếu điều kiện này thỏa mãn, ta kết luận được hình vuông 3 và hình vuông 4 trong khung hình thứ hai chính là hình vuông 1 và hình vuông 2 trong khung hình thứ nhất, ngược lại nếu điều kiện không thỏa thì chúng không phải cùng là một hình vuông. Sau khi xác định được các hình vuông trong từng khung hình là cùng một hình, ta lưu chúng vào một danh sách các vật thể List of Objects = [object1, object2,…]. Các vật thể (object) con có cấu trúc tương tự như hình vuông (rect) con. Ta có: object = [[x,y], hướng, màu], trong đó:

[x, y] (theo pixel) là tọa độ của vật thể trên ảnh được lưu theo dạng danh sách. Hướng là góc của vật thể so với trục Ox, được xác định theo đơn vị là độ, giới hạn trong khoảng (−900, 900).

Màu sắc xác định theo quy tắc Red = 0, Green = 1, Blue = 2, Yellow = 3. Để Robot xác định được đúng vị trí vật thể trên băng chuyền, ta cần phải chuyển đổi hệ tọa độ của vật trên ảnh sang hệ tọa độ của Robot với tỷ lệ đo được trên thực tế là 25mm tương ứng 30 pixel (25mm là độ dài cạnh vật thể). Sau khi quy đổi, ta có được một danh sách các vật thể đã được xác định [vật thể gần Robot nhất, vật thể gần Robot thứ hai, vật thể gần Robot thứ ba,...].

Ngoài ra, ta cần phải xác định thêm khoảng cách từ tâm Camera đến tâm của Robot (hình chiếu của chúng trên băng chuyền) và vận tốc băng chuyền (cấp xung vào để tìm được tốc độ động cơ). Khi đã có đầy đủ những dữ kiện, ta sẽ tính được chính xác thời gian vật đi từ hình chiếu tâm Camera đến hình chiếu tâm Robot trên băng chuyền, lúc đó băng chuyền sẽ dừng lại và Robot sẽ gắp vật thể xếp vào kho. Gắp đến đâu ta lần lượt xóa các biến vật thể đã xác định đến đó theo thứ tự vật thể gần Robot nhất, vật thể gần Robot thứ hai, vật thể gần Robot thứ ba,… liên tục như vậy cho đến khi kho được chứa đầy.

Cuối cùng, ta thiết lập một cấu trúc lưu vào biến “kích cỡ của kho” là một danh sách gồm ba phần tử size = [size x, size y, size z] tương ứng [1, 3, 4], với bốn màu kích thước sẽ là [4, 3, 4] (bốn hàng tương ứng với bốn màu, ba cột tương ứng mỗi màu sẽ có ba vật thể và mỗi màu trên mỗi cột sẽ xếp lên bốn vật thể).

Giả sử, cánh tay Robot đã xếp một vật thể vào vị trí đầu tiên, làm sao để nó biết được vật thể tiếp theo sẽ được xếp vào vị trí nào? Giải quyết điều này, ta tiếp tục tạo ra một biến để lưu được vị trí trống của từng màu có cấu trúc [x, y, z] với giá trị x chạy từ 0 đến 1; giá trị y chạy từ 0 đến 2; giá trị z chạy từ 0 đến 3. Tương ứng với bốn màu, danh sách chung sẽ là [Red [x, y, z], Green [x, y, z], Blue [x, y, z], Yellow [x, y, z]]. Vị trí [x, y, z] của từng màu sẽ liên tục thay đổi qua vị trí trống tiếp theo nếu vị trí hiện tại đã được lấp đầy, tương tự với ba màu còn lại cho đến khi toàn bộ vị trí của bốn màu được lấp đầy thì kho sẽ không nhận thêm vật thể nữa.

44

Khoa ĐT CLC – ĐHSPKT TP.HCM Hàm Detector

Ảnh được truyền vào là ảnh màu BGR (Blue, Green, Red), trước khi xử lý, ta phải chuyển nó sang dạng ảnh xám Gray. Sau đó, tách biên vật thể dùng giải thuật Canny. Tuy nhiên, mọi thứ sẽ không bao giờ hoàn hảo như ta kì vọng, hàm Canny không mạnh đến mức để có thể tách biên vật thể một cách hoàn toàn chính xác để cho ra các cạnh hình vuông như ta mong muốn. Nguyên nhân do ảnh hưởng bởi ánh sáng môi trường, bởi màu vật thể không đồng đều,… mà Canny chỉ cho ta được các

cạnh được mô tả như hình 4.12 Hình 4. 12 Cạnh xác định bởi Canny

Với trực giác của con người khi nhìn vào hình ta có thể xác định được ngay nó là một hình vuông, nhưng với máy móc chúng không thể làm được điều đó. Khắc phục nhược điểm này, thuật toán Houghline được sinh ra để xác định tập hợp các cạnh có thể là cạnh của một hình vuông, giả sử có 5 cạnh như hình 4.12 [0, 1, 2, 3, 4].

Chạy vòng lặp for cho từng cạnh, giả sử xét cạnh 0, nhờ Houghline trả ra tọa độ điểm đầu và cuối, ta tính được trung bình cạnh và xác định được tâm của cạnh. Ngoài ra, nó cũng giúp ta xác định được hướng vật thể so với trục Ox. Từ tâm cạnh 0, xét một đường tròn bán kính Δ, lấy toàn bộ các cạnh nằm trong phạm vi đường tròn này như hình 4.13, kết quả ta sẽ nhận được một danh

sách các cạnh gồm [1, 2, 3, 4]. Hình 4. 13 Các cạnh cần tìm Trường hợp không chỉ một mà có nhiều vật

thể, đường tròn của vật đang xét sẽ lấy thêm được nhiều cạnh của các vật thể khác trong phạm vi của nó. Giả sử trường hợp như hình 4.14, danh sách cạnh lúc này sẽ là [1, 2, 3, 4, 5, 6, 7]. Lúc này, ta cần phải loại đi cạnh [5, 6, 7] vì chúng không thuộc vật thể đang xét. Hướng giải quyết là lấy cạnh 0 làm gốc, giả sử góc cạnh 0 đang là 90 độ so với trục Ox, để tạo thành hình vuông thì những cạnh cần xác định phải tạo với cạnh 0 góc

Một phần của tài liệu Ứng dụng dobot magician trong hệ thống phân loại sản phẩm (Trang 48)