2.1 Đối tượng nghiên cứu
Đề tài “Thiết kế và chế tạo Robot Scara phân loại sản phẩm theo màu sắc và
hình dạng” bao gồm các thành phần chính:
- Thiết kế mơ hình cho Robot Scara bằng phần mềm Inventor 3D. - Tìm hiểu cách liên kết Matlab với Inventor 3D.
- Xây dựng mơ hình Matlab Simulink và tiến hành mơ phỏng. - Thiết kế mạch điện điều khiển cho Robot.
- Xây dựng chương trình điều khiển cánh tay Robot. - Áp dụng giải thuật điều khiển PID cho động cơ DC. - Tìm hiểu giao tiếp I2C giữa các board mạch Arduino. - Thiết kế giao diện người dùng trên trên phần mềm Matlab.
- Tìm hiểu cách giao tiếp Matlab với Arduino thơng qua cổng COM. - Xây dựng phương trình động học thuận, động học ngược cho Robot.
- Ứng dụng công nghệ xử lý ảnh vào mơ hình Robot Scara để phân loại sản phẩm. - Chạy mơ hình thực tế.
Ý nghĩa thực tiễn
Đề tài luận văn hướng tới việc ứng dụng công nghệ xử lý ảnh cho Robot tạo tiền đề cho việc xây dựng một cánh tay Robot cơng nghiệp hồn chỉnh, có khả năng phục vụ cho ngành công nghiệp sản xuất. Ngồi ra, đề tài cịn có thể phục vụ mục đích học tập và nghiên cứu trong phịng thí nghiệm của các trường cao đẳng, đại học. Trong khuôn khổ luận văn, em sẽ tập trung xây dựng mơ hình Robot Scara có khả năng ứng dụng công nghệ xử lý ảnh vào để xác định màu sắc và hình dạng của đối tượng từ đó đưa ra quyết định cho cánh tay.
2.2 Phương pháp nghiêm cứu2.2.1 Phần mềmMatlab 2.2.1 Phần mềmMatlab
2.2.1.1 Matlab là gì?
Matlab là một chương trình phần mềm lớn dành cho máy tính PC nhằm hỗ trợ cho các tính tốn khoa học kỹ thuật với các phần tử cơ bản là các ma trận. Thuật ngữ
Matlab là chữ viết tắt của hai từ Matrix và Laboratory thể hiện định hướng chính của chương trình là các phép tốn vector và ma trận. Phần cót lõi của chương trình bao gồm các hàm tốn học, các chức năng xuất nhập cũng như các khả năng điều khiển chương trình.
Hình 2.1: Phần mềm Matlab
2.2.1.2 Hệ thống làm việc của Matlab
Hệ thống giao diện của Matlab được chia thành 5 phần:
- Môi trường phát triển: Đây là nơi đặt các thanh công cụ, các phương tiện
giúp chúng ta sử dụng các lệnh và các file, ta có thể liệt kê một số như sau: Desktop, Command Window, Command History, Browsers for viewinghelp.
- Thư viện: Các hàm toán học bao gồm các cấu trúc như tính tổng, sin, cos, atan,
atan2..., các phép tính đơn giản đến các phép tính phức tạp như tính ma trận nghịch đảo, trị riêng, chuyển đổi fourier, laplace, symbolic library.
- Ngôn ngữ Matlab: Đó là các ngơn ngữ cao về ma trận và mảng, với các dòng
lệnh, các hàm, cấu trúc dữ liệu vào, có thể lập trình hướng đối tượng.
- Đồ hoạ trong Matlab: Bao gồm các câu lệnh thể hiện đồ họa trong môi
trường 2D và 3D, tạo các hình ảnh chuyển động, cung cấp các giao diện tương tác giữa người sử dụng và máy tính.
- Giao tiếp với các ngôn ngữ khác: Matlab cho phép tương tác với các ngôn
2.2.1.3 Giao diện làm việc của Matlab
Hình 2.2; Giao diện làm việc của Matlab
- Cửa sổ Command Window: Là cửa sổ giao tiếp chính của Matlab bởi đây là
nơi nhập giá trị các biến, hiển thị giá trị, tính tốn giá trị của biểu thức, thực thi các hàm có sẵn trong thư viện (dạng lệnh), hoặc các hàm (dạng function) do người dùng lập trình ra trong M-file. Các lệnh được nhập sau dấu nhắc “>>”, và nếu có sai sót trong q trình gõ (nhập) lệnh thì hãy nhấn phím Enter cho đến khi nhận được dấu nhắc “>>”. Thực thi lệnh bằng nhấn phím Enter.
- Cửa sổ Command History: Các dòng mà bạn nhập vào trong cửa sổ Command
Window (các dịng này có thể là dịng nhập biến, hoặc có thể là dịng lệnh thực hiện
hàm nào đó) được giữ lại trong cửa sổ Command History, và cửa sổ này cho phép ta sử dụng lại những lệnh đó bằng cách click chuột lên các lệnh đó hoặc các biến, nếu như bạn muốn sử dụng lại biến đó.
- Cửa sổ Workspace: Là cửa sổ thể hiện tên các biến bạn sử dụng cùng với kích thước vùng nhớ (số bytes), kiểu dữ liệu (lớp), các biến được giải phóng sau mỗi lần tắt chương trình. Ngồi ra nó cho phép thay đổi giá trị, cũng như kích thước của biến bằng cách click chuột lên các biến. Hoặc click vào nút bên trái ngay cạnh nút save. Ví dụ khi chọn biến (giả sử là biến b) rồi click (hoặc click chuột vào nút cạnh nút save) ta được cửa sổ sau gọi là Variable Editor. Tiêu đề là tên biến b, định dạng dữ liệu ở ơ có tên là: Numeric format, mặc định là dạng short, kích thước size là 1 by 3
(tức là một hàng và 3 cột) ta có thể thay đổi kích thước này bằng cách thay đổi giá trị có trong ơ kích thước size. Dùng cửa sổ này để lưu các biến ở dưới là dữ liệu của biến b, ta có thể thay đổi chúng bằng cách thay đổi giá trị trong các ơ đó. Tất cả các biến đều được lưu trong Workspace trong đó thể hiện cả kích thước (size), số Bytes và kiểu dữ liệu (class) (8 bytes cho mỗi phần tử dữ liệu kiểu double cụ thể là 24 bytes dành cho b và 8 bytes dành cho a).
- Cửa sổ M-file: Là cửa sổ dùng để soạn thảo chương trình ứng dụng, để thực thi
chương trình viết trong M-file bằng cách gõ tên của file chứa chương trình đó trong cửa sổ Commandwindow. Khi một chương trình viết trong M-file, thì tuỳ theo ứng dụng cụ thể, tuỳ theo người lập trình mà chương trình có thể viết dưới dạng sau: + Dạng Script file: Tức là chương trình gồm tập hợp các câu lệnh viết dưới dạng liệt kê, khơng có biến dữ liệu vào và biến lấy giá trị ra.
+ Dạng hàm function: Có biến dữ liệu vào và biến ra.
2.2.2 Matlab GUI
2.2.2.1 Matlab GUI là gì?
GUI (Graphical User Interface) là giao diện đồ họa có điều khiển bởi nhiều thanh cơng cụ được người lập trình tạo sẵn, cho tương tác giữa người dùng là giao diện chương trình, Mỗi chương trình được người lập trình tạo sẵn giao diện thực hiện một vài chức năng được người lập tình tạo sẵn và giao tiếp với người sử dụng.
Ứng dụng của Matlab lập trình giao diện rất mạnh và dễ thực hiện, nó có thể tạo ra giao diện người dùng tương tự VBB, C++…
GUI bao gồm đầy đủ các chương trình hỗ trợ như thực hiện phép tốn LOGIC, mơ phỏng khơng gian 2D,3D, đọc hiển thị dữ liệu, liên kết đa phương tiện.Giao tiếp với người dùng thơng qua hình ảnh, các nút nhấn thực thi ...
Hầu hết GUI chỉ thực hiện (trả lời) lệnh người dùng thông qua các tác động của người dùng lên giao diện, người sử dụng khơng cần biết cấu trúc chương trình vẫn có thể thực hiện được. GUI được thực hiện thông qua các hàm CALLBACK. Khi người dùng tác động lên giao diện bằng các cách khác nhau, hàm CALLBACK sẽ được gọi để thực thi.
2.2.2.2 Khởi động GUI
Để khởi động GUI tại cửa sổ Command Window gõ lệnh “guide” và nhấn enter, lập tức cửa sổ GUIDE Quick Start xuất hiện.
Hình 2.3: Cửa sổ GUIDE Quick Start
Tại tab Create New GUI ta chọn “Blank GUI (Default)” để tạo một GUI bắt đầu với giao diện trống. Các dòng còn lại để khởi động GUI với một giao diện được tạo sẵn.
Tại tab Open Existing GUI là nơi bạn có thể mở các GUI mà bạn đã làm và lưu trước đó, file này có đi là .fig.
Nhấp chọn “OK” để tạo một GUI bắt đầu với giao diện trống. Ta được giao diện Blank GUI mặc định như sau:
2.2.2.3 Chức năng của các công cụ trong GUI
Chức năng các công cụ cơ bản
1. Nhấp chuột vào để thay đổi độ rộng của giao diện 2. Là nơi để cân chỉnh các nút, biểu tượng trên giao diện. 3. Là nơi để tạo giao diện con liên kết với giao diện chính. 4. Nút Play (Run) để thực thi chương trình.
Chức năng nhóm các cơng cụ bên trái
- Push Button: Là nút nhấn, khi nhấn vào sẽ thực thi lệnh.
- Slider: Là thanh trượt cho phép người dùng di chuyển thanh trượt để thực thi
lệnh.
- Check box: Sử dụng để đánh dấu tích (thực thi) vào và có thể check nhiều ơ để
thực thi.
- Radio Button: Nó giống như Check Box nhưng thường được sử dụng để tạo sự
lựa chọn duy nhất, tức là 1 lần chỉ được chọn 1 trong số các nhóm nhiều nút. Khi một ơ được chọn thì các ơ cịn lại trong nhóm bị bỏ chọn.
- Edit Text: Là nơi các kí tự được nhập vào từ người dùng, người dùng có thể
thay đổi nội dung được.
- Static Text: Là các kí tự được hiển thị thông qua các callback, hoặc thông
thường để viết nhãn cho các biểu tượng, người dùng không thể thay đổi nội dung. - Pop-up Menu: Mở ra danh sách các lựa chọn khi người dùng nhấp chuột vào.
Chỉ chọn được 1 mục trong danh sách các mục.
- List Box: Hộp thoại danh sách các mục, cho phép người dùng chọn một hoặc
nhiều mục cùng một lúc.
- Toggle Button: Là nút nhấn có 2 điều khiển, khi nhấp chuột và nhả ra, nút nhấn
được giữ và lệnh thực thi, khi nhấp chuột vào lần thứ 2, nút nhấn nhả ra, hủy bỏ lệnh vừa thực thi.
- Table: Tạo ra một bảng tương tự trong Excel.
- Axes: Đây là giao diện đồ họa hiển thị hình ảnh, nó có nhiều thuộc tính bao
- Panel: Tạo ra một mảng nhóm các biểu tượng lại với nhau giúp ta dễ kiểm
soát và thao tác khi di chuyển.
- Button Group: Quản lí sự lựa chọn của nút Radio Button.
- Active Control: Quản lí một nhóm các bút hoặc các chương trình liên quan
với nhau trong Active.
2.2.2.3.1 Hộp thoại Inspector
Tất cả các hộp thoại bên trái vừa nêu trên để sử dụng, chúng ta nhấp chọn và kéo thả vào vùng cần thiết kế, mỗi hộp thoại có các thơng số chỉnh riêng, để chỉnh các thông số liên quan đến hộp thoại nào ta nhấp đơi vào hộp thoại đó (hoặc click chuột phải chọn Property Inspector) hộp thoại Inspector hiện ra, dùng thanh trượt kéo xuống để xem hết chức năng:
- Phía bên trái của Menu Inspector là tên thuộc tính, có thể gọi thực thi các thuộc tính này bằng các lệnh.
- Phía bên trái là giá trị của thuộc tính, giá trị này do người dùng đặt, có thể thay đổi thơng qua các lệnh gọi (callback), hoặc được thiết lập trước.
2.2.2.4 Một số hàm trong GUI
- Hàm callback được lập trình cho các button, checkbox, edit text,… nhưng
static text và axes thì khơng có hàm callback.
- Mỗi một callback được viết với cấu trúc như sau:
function Tag_Callback(hObject, eventdata, handles)
- Với Tag chính là giá trị của Tag mà ta đã đặt khi tạo giao diện. Các hàm chứa bên trong callback bao gồm hObject, evendata,handles.
+ hObject là hàm truy cập nội bộ của mỗi function riêng lẽ. + Evendata là hàm xác định thuộc tính của function.
+ Handles là hàm truy cập liên kết giữa các function, nó bao gồm tất cả các cấu trúc của người dùng, được sử dụng để truy xuất qua các điều khiển khác.
- Hàm Get cho phép ta gọi thuộc tính của đối tượng.
- Hàm Set cho phép ta đặt giá trị cho thuộc tính của đối tượng.
2.2.3 Xử lý ảnh trên Matlab
2.2.3.1 Những khái niệm cơ bản trong xử lý ảnh
Điểm ảnh (Picture Element)
Gốc của ảnh (ảnh tự nhiên) là ảnh liên tục về không gian và độ sáng. Để xử lý bằng máy tính (số), ảnh cần phải được số hóa. Số hóa ảnh là sự biến đổi gần đúng một ảnh liên tục thành một tập điểm phù hợp với ảnh thật về vị trí (khơng gian) và độ sáng (mức xám). Khoảng cách giữa các điểm ảnh đó được thiết lập sao cho mắt người không phân biệt được ranh giới giữa chúng. Mỗi một điểm như vậy gọi là điểm ảnh (PEL: Picture Element) hay gọi tắt là Pixel. Trong khuôn khổ ảnh hai chiều, mỗi pixel ứng với một cặp tọa độ (x,y).
Định nghĩa: Điểm ảnh (Pixel) là một phần tử của ảnh số tại tọa độ (x,y) với
độ xám hoặc màu nhất định. Kích thước và khoản cách giữa các điểm ảnh đó được chọn thích hợp sau cho mắt người cảm nhận sự liên tục về không gian và mức xám (hoặc màu) của ảnh số gần như ảnh thật. Mỗi phần tử trong ma trận được gọi là một phần tử ảnh.
Định nghĩa: Độ phân giải (Resolution) của ảnh là một mật độ điểm ảnh được
ấn định trên một ảnh số được hiển thị.
Theo định nghĩa thì khoảng cách giữa các điểm ảnh phải được chọn sau cho mắt người vẫn thấy được sự liên tục của ảnh. Việc lựa chọn khoảng cách thích hợp tạo nên một mật độ phân bố, đó chính là độ phân giải và được phân bố theo trục x và y trong không gian hai chiều.
Mức xám (Gray level)
Mức xám là kết quả sự mã hóa tương ứng một cường độ ánh sáng ở mỗi điểm ảnh với một giá trị số - kết quả của q trình lượng hóa. Cách mã hóa kinh điển thường dùng là 16, 32, 64 mức. Phổ dụng nhất là mã hóa ở 256 mức, ở mức này mỗi pixel sẽ được mã hóa bởi 8 bit.
2.2.3.2 Các kiểu ảnh trong Matlab
Ảnh Index
Ảnh được biểu diễn bởi hai ma trận, một ma trận dữ liệu ảnh X và một ma trận màu (còn gọi là bản đồ màu) map. Ma trận dữ liệu có thể thuộc kiểu uint8, uint16 hoặc double. Ma trận màu là một ma trận kích thước m x 3 gồm các thành phần thuộc kiểu double có giá trị trong khoảng [0 1]. Mỗi hàng của ma trận xác định thành phần red, green, blue của một màu trong tổng số m màu được sử dụng trong ảnh. Giá trị của một phần tử trong ma trận dữ liệu ảnh cho biết màu của điểm ảnh đó nằm ở hàng nào trong ma trận màu.
Ảnh grayscale
Mỗi ảnh được biểu diễn bởi một ma trận hai chiều, trong đó giá trị của mỗi phần tử cho biết độ sáng (hay mức xám) của điểm ảnh đó. Ma trận này có thể có một trong các kiểu dữ liệu uint8, uint16 hoặc double. Ảnh biểu diễn theo kiểu này còn gọi là ảnh “trắng đen”.
Hình 2.7: Ảnh xám
Ảnh nhị phân:
Ảnh được biểu diễn bởi một ma trận hai chiều thuộc kiểu logical. Mỗi điểm ảnh chỉ có thể nhận một trong hai giá trị là 0 (đen) hoặc 1 (trắng).
Ảnh RGB
Cịn gọi là ảnh “truecolor” do tính trung thực của nó. Ảnh này được biểu diễn bởi một ma trận ba chiều kích thước m x n x 3, với m x n là kích thước ảnh theo pixels. Ma trận này định nghĩa các thành phần màu red, green, blue cho mỗi điểm ảnh, các phần tử của nó có thể thuộc kiểu uint8, uint16 hoặc double.
Hình 2.9: Ảnh RGB
2.2.3.2.1 Các hàm xử lý cơ bản
- Hàm imread đọc các file ảnh với bất kỳ các định dạng ảnh đã biết hiện nay và lưu lại dưới dạng một ma trận biểu diễn ảnh trong Matlab.
Cú pháp: A=imread(filename,fmt).
- Hàm imwrite cho phép lưu một ảnh biểu diễn bằng một ma trận trong Matlab thành một file ảnh dưới một trong các định dạng đã biết.
Cú pháp: imwrite(A,filename,fmt).
- Hàm imfinfo dùng để xem các thơng số của một file ảnh nào đó. Cú pháp :
imfinfo(filename,fmt).
Các thông tin được cung cấp bởi hàm imfinfo là : filename, filemoddate, filesize, format, formatversion, width, height, bitdepth, colortype.
2.2.3.2.2 Chuyển đổi giữa các kiểu dữ liệu, kiểu ảnh
Matlab cung cấp sẵn các hàm thực hiện chuyển kiểu cho các ma trận biểu diễn ảnh, bao gồm : im2double, im2uint8 và im2uint16. Tuy nhiên, khi thực hiện chuyển kiểu giữa các dữ liệu ảnh cần lưu ý một số điều sau:
- Khi chuyển từ một kiểu dữ liệu dùng nhiều bit sang một kiểu dữ liệu dùng ít bit hơn thì một số thơng tin chi tiết về bức ảnh ban đầu sẽ bị mất.