Cách đặt camera, nguồn sáng, mẫu

Một phần của tài liệu Thiết kế và chế tạo hệ thống nhận diện mối hàn cho robot tự động (Trang 77)

69

Hình 3.30: Ảnh mơ tả về độ tương phản

- Hình dạng của đối tượng: Hình dáng thực tế của đường hàn khơng có một quy luật cố định, có thể là một đường thẳng hoặc cũng có thể là một đường cong. Nhưng tại mỗi thời điểm, do vùng ảnh thu được có kích thước nhỏ, hình dạng của đối tượng là một đoạn thẳng dài khoảng 1cm trên ảnh. Điều này cũng giống như việc ta xấp xỉ đường cong thành nhiều đoạn thẳng nhỏ.

70

3.4.2. Xây dựng giải thuật cho xử lý ảnh

71 Sau khi hệ thống bắt đầu hoạt động, mẫu được chụp trực tiếp từ camera và lưu vào bộ nhớ hệ thống và xử lý ngay sau đó. Ở hệ thống này, ảnh được lưu trữ dưới dạng ảnh màu RGB với kích thước 640x480. Đồng thời với việc lưu trữ ảnh, hệ thống còn ghi nhận lại thời điểm ảnh được chụp, điều này có ý nghĩa rất quan trọng cho việc tái tạo lại biên dạng sau này. Tiếp đến, ảnh sẽ trải qua tiếp các quá trình xử lý:

Tiền xử lý ảnh: Đây là quá trình gồm các thao tác chuyển đổi ảnh xám, làm

mịn ảnh, tăng độ tương phản nhằm tăng chất lượng ảnh cho q trình nhận dạng được nhanh và chính xác hơn.

Hình 3.32: Giải thuật tiền xử lý ảnh

Lấy khung xương (Skeletonization): Quá trình này tập trung vào việc tái tạo

72

Hình 3.33: Giải thuật lấy khung xương

Xác định đường hàn: Phân tích hình dạng để nhận biết chính xác đường hàn

73

Hình 3.34: Giải thuật xác định đường hàn

Xác định vị trí điểm lấy mẫu trên đường hàn: Q trình này nhằm trích xuất tọa độ các điểm trên đường hàn, từ đó ta có sẽ tái tạo lại quỹ đạo của đường hàn phục vụ cho mục đích điều khiển đầu hàn.

74

Hình 3.35: Giải thuật xác định vị trí lấy mẫu

Tính tốn vị trí của điểm trong khơng gian thực: Tọa độ của điểm trích

xuất được trong không gian ảnh sẽ được chuyển về tọa độ trong không gian thực (không gian làm việc của máy).

75

Hình 3.36: Giải thuật xác định vị trí đường hàn

Tạo lệnh G-Code và lưu trữ: Dựa trên tọa độ tính tốn được, một lệnh G- Code tương ứng sẽ được tạo ra. Tất cả các lệnh G-Code được tạo ra trong suốt quá trình xử lý ảnh (mỗi lần thực thi chương trình) sẽ được lưu trữ vào một tập tin (riêng) trên máy tính để tiện cho việc kiểm tra và lưu trữ.

3.4.3. Giải pháp điều khiển hệ thống

Mach 3 là một phần mềm của hãng Airsoft USA, giúp biến một máy vi tính cơ bản thành một bộ điều khiển máy CNC. Mach 3 cung cấp nhiều tiện ích cần có cho một bộ điều khiển CNC hồn chỉnh.

Mach 3 hoạt động trên hầu hết các máy vi tính cá nhân sử dụng hệ điều hành Windows nhằm điều khiển chuyển động của động cơ bước và servo bằng cách xử lý các lệnh G-Code được người dùng đưa vào.

76 Với nhiều tính năng tiên tiến, đây là phần mềm điều khiển CNC trực quan nhất hiện có. Mach 3 có khả năng tùy biến cho nhiều loại ứng dụng với nhiều loại phần cứng khác nhau.

3.4.4. Giao tiếp điều khiển giữa phần mềm Mach 3 và xử lý ảnh

Vì Mach 3 là một phần mềm được đóng gói một cách hồn chỉnh, nên việc can thiệp và chỉnh sửa phần mềm để có thể tương tác với xử lý ảnh là vơ cùng khó khăn. Nhóm sử dụng giải pháp sẽ thực hiện việc điều khiển Mach 3 kết hợp với xử lý ảnh thơng qua việc viết một chương trình con tự động thực hiện các tương tác “click” chuột và thao tác phím lên giao diện của phần mềm Mach 3. Chương trình con này cũng được viết bằng python với một mô-đun được gọi là pywinauto. Pywinauto là một tập hợp các mô-đun python để tự động hóa Microsoft Windows GUI. Ở mức đơn giản nhất, nó cho phép bạn gửi các hành động chuột và bàn phím tới các hộp thoại và điều khiển của Windows, nó cũng hỗ trợ cho các hành động phức tạp hơn như lấy dữ liệu văn bản. Các công nghệ được hỗ trợ: Win32 API (backend="win32"; được sử dụng theo mặc định), MS UI Automation (backend="uia"). Mô-đun hoạt động trên cả Windows và Linux.

77

Hình 3.37: Lưu đồ tương tác giữa xử lý ảnh và điều khiển

Ngay khi người dùng thực thi chương trình, một loạt câu lệnh sẽ được thực thi theo cấu trúc như lưu đồ 3.38 bên dưới. Mục đích của việc này là giảm thiểu tối đa thao tác của người sử dụng cũng như đảm bảo tối đa yêu cầu về đồng bộ thời gian khi xử lý ảnh.

Để thực thi các thao tác như trong lưu đồ 3.38 cần sử dụng các hàm của mô- đun Pywinauto. Cấu trúc của các hàm trong mô-đun Pywinauto được quy định như sau:

App.<DialogName>.<ControlName>.<method>(<params>) Trong đó:

78 App: được xác định bằng cơng nghệ hỗ trợ của chương trình cần tương tác (UIA hay WIN32) và tên của chương trình.

DialogName: xác định vùng cửa sổ chính của chương trình và một vài các thành phần khác như nút nhấn, hộp thoại.

ControlName: là một lớp nhỏ hơn DialogName, lớp này sẽ xác định cụ thể vị trí, nút nhấn, edit box,… cần tương tác đến.

Method: là thao tác muốn thực thi lên đối tượng.

Trong lưu đồ 3.38 các lệnh “click chọn” sẽ có method là click, “gõ” sẽ có thao tác là type_keys và “gửi phím” sẽ được thực thi bằng hàm send_keys().

Yêu cầu quan trọng để các thao tác này được thực thi đúng là khi phần mềm “Mach3 CNC Controller” phải được mở sẵn và đang trong trạng thái sẵn sàng (đã nhấn Reset và đang trong cửa sổ Program Run Alt-1) trước khi thực thi XuLyAnh.py.

79

80

Chương 4: THI CÔNG VÀ THỰC NGHIỆM 4.1. Thi cơng mơ hình 4.1. Thi cơng mơ hình

Mơ hình có khung được làm bằng nhơm định hình 20x20 mm và 20x40 mm, đây là vật liệu dễ mua, dễ gia cơng và có độ bền cao.

Cụm vít me sử dụng trục vít me - đai ốc bi. Các gối đỡ vít me, gối đỡ ổ lăn và gối đỡ động cơ được thực hiện gia công CNC trên nhôm nguyên khối.

Cụm bàn máy của mơ hình được làm bằng mica hai lớp có độ dày tổng 13 mm, sử dụng bánh xe trượt V-slot và bộ truyền đai giúp bàn máy vận hành trơn tru và ổn định hơn.

Trước khi gia cơng, tồn bộ thiết kế của mơ hình được vẽ và mô phỏng trên phần mềm Autodesk Inventor.

81 Nhơm định hình được cắt theo các kích thước trên bản vẽ bởi một bên xưởng gia cơng cơ khí bên ngồi. Khung mơ hình đa phần sử dụng nhơm 20x40 mm để có cấu trúc gọn và chịu lực ổn định. Các thanh nhôm được ghép nối với nhau bởi các nối góc chữ T, chữ L và các bu lơng. Bốn chân đế cao su được sử dụng giúp bảo vệ mơ hình, giảm chấn, giảm rung lắc trong quá trình vận hành.

Hình 4.2: Lắp ráp khung của mơ hình

Đối với cụm bàn máy, sử dụng bộ truyền đai để truyền chuyển động. Do không đặt yêu cầu về vận hành thực tế với công tác hàn, bàn máy sử dụng mica giúp giảm bớt khối lượng và tiết kiệm chi phí. Bộ truyền đai có tỉ số truyền 1:1 với hai pulley GT2 20 răng cùng với đai GT2 kèm bộ căng đai giúp bàn máy vận hành ổn định và lâu dài.

82

Hình 4.3: Bộ bàn máy của mơ hình

Cụm vít me – đai ốc được đặt chế tạo theo các thơng số nhóm đã tính tốn

Hình 4.4: Cụm vít me-đai ốc được sử dụng trong mơ hình

Tồn bộ các thiết bị điện – điện tử được đặt trong tủ điện nhằm bảo vệ các thiết bị và cách ly các thiết bị mang điện với người sử dụng. Tủ điện được làm bằng thép cán mỏng có độ dày 0,7 mm và được sơn tĩnh điện.

83

Hình 4.5: Lắp ráp tủ điện cho mơ hình

Sau khi gia cơng, lắp ráp và kết nối các phần của mơ hình với nhau, mơ hình được hồn thiện như hình 4.6 bên dưới.

84

4.2. Lập trình hệ thống

Hình 4.7: Các bước chính trong q trình xử lý ảnh 4.2.1. Tiền xử lý ảnh

Sau khi thu nhận được ảnh từ camera, ảnh cần được nâng cao chất lượng để quá trình nhận dạng được tốt nhất. Quá trình này bao gồm hai bước là chuyển đổi ảnh xám, tăng độ tương phản và làm mịn ảnh.

85

Chuyển đổi ảnh xám là q trình chuyển đổi hình ảnh từ khơng gian màu

RGB (Red – Green – Blue) sang không gian xám. Bản chất của việc này là tổng hợp 3 ma trận màu R-G-B thành một ma trận duy nhất, điều đó sẽ giúp cho việc tính tốn với các giá trị màu trong ảnh được nhanh chóng hơn. Trong thư viện OpenCV, q trình này được thực hiện bằng cách sử dụng hàm cv::cvtColor().

Hình 4.9: Ảnh đã chuyển sang khơng gian xám

Tăng độ tương phản mục đích nhầm làm nổi bật phần cần nhận diện so với

màu nền. Cụ thể trong trường hợp này, phần bề mặt kim loại ta dùng để hàn (phần nền) có tính chất phản xạ ánh sáng khiến chúng “trắng” hơn so với phần đường hàn. Do vậy ta sẽ nhân toàn bộ các điểm ảnh với một hệ số alpha, điều này sẽ làm cho

phần nền được đẩy lên mức sáng thuần (255) cịn phần đường hàn (gần bằng 0) nên sẽ ít bị ảnh hưởng hơn (vẫn giữ được mức “đen” cần thiết). Quá trình này được thực hiện bằng hàm cv::addWeight().

86

Hình 4.10: Ảnh đã được tăng độ tương phản

Làm mịn ảnh là công việc quen thuộc trong xử lý ảnh. Nó giúp loại bỏ các

dữ liệu khơng cần thiết như hạt nhiễu (noise). Ta sử dụng hàm cv::Blur() để thực hiện thao tác này.

87

4.2.2. Lấy khung xương

Q trình lấy khung xương nhằm mục đích tái cấu trúc là hình dáng các chi tiết có trong ảnh. Đây là q trình quan trọng để có thể xác định được đường hàn dựa trên dạng hình học của nó. Q trình này được thực hiện thơng qua 2 bước: Nhị phân hóa và làm mỏng hóa.

Nhị phân hóa là q trình biến một ảnh xám thành ảnh nhị phân. Ảnh nhị

phân chỉ chứa hai giá trị 0 và 255. Theo đó, giá trị 0 sẽ là giá trị ứng với những điểm đen trên ảnh và giá trị 255 sẽ là giá trị ứng với những điểm trắng. Công thức để nhị phân ảnh là đặt tất cả các giá trị của ảnh xám về 0 nếu chúng bé hơn một ngưỡng T cho trước và về 255 nếu chúng lớn hơn ngưỡng T đó. Vấn để ở đây là với ngưỡng T như thế nào thì cho ta được tấm ảnh nhị phân như ý muốn, nghĩa là ảnh làm nổi các vùng đối tượng và nền. Việc xác định giá trị T là rất khó vì chúng phụ thuộc vào từng điều kiện chiếu sáng khác nhau của môi trường. Với môi trường này T nhận một giá trị, môi trường khác lại một giá trị khác. Để tránh khó khăn trong việc chọn ngưỡng T như đã nói ở trên ta có thêm một sự lựa chọn là dùng phương pháp lấy ngưỡng động.

Thuật toán nhị phân hóa với ngưỡng động hay cịn gọi là nhị phân hóa với ngưỡng thích nghi là cách ta nhị phân một ảnh xám với những ngưỡng khác nhau trên từng vùng ảnh khác nhau của một tấm ảnh. Trong OpenCV, để nhị phân hóa với ngưỡng động ta có thể sử dụng hàm cv::AdaptiveThreshold().

88

Hình 4.12: Ảnh sau khi nhị phân hóa

Làm mỏng hóa là thao tác tập trung vào việc loại bỏ các điểm ảnh thừa trong

các cụm điểm ảnh sao cho vẫn bảo toàn được sự liên kết giữa các điểm ảnh đóng vai trị tạo thành hình dạng cho chi tiết. Làm mỏng hóa chủ yếu được sử dụng để tạo khung xương, giảm đầu ra trong các thuật toán nhận diện cạnh với các đường có độ rộng 1 pixel. Thư viện OpenCV hỗ trợ hàm cv::ximgproc::thinning() để làm cơng

việc này.

Hình 4.13: Ảnh sau khi mỏng hóa 4.2.3. Xác định đường hàn 4.2.3. Xác định đường hàn

Trong phạm vi nghiên cứu của mình, nhóm tập trung vào việc phát hiện các đường hàn có sự thay đổi quỹ đạo không quá đột ngột. Những đường này khi chia thành các khoảng nhỏ sẽ có hình dạng như những đường thẳng. Dựa trên đặc điểm

89 này nhóm thiết kế giải thuật dựa trên việc tìm kiếm đường thẳng trong ảnh. Một trong những phương pháp kinh điển trong việc phát hiện đường thẳng trong xử lý ảnh là phương pháp biến đổi Hough.

Biến đổi Hough: Trên mỗi điểm ảnh biên, ta lần lượt thử các phương trình

đường thẳng đi qua điểm ảnh đó. Số phương trình đường thẳng ta thử càng nhiều thì sẽ cho ra kết quả phát hiện đường thẳng càng tốt (ít bỏ lỡ đường thẳng có trong ảnh hơn). Điểm ảnh biên đó sẽ tăng thêm 1 giá trị vào ma trận thống kê. Sau khi duyệt hết tất cả các điểm ảnh cạnh, ta sẽ lọc theo một giá trị ngưỡng (xác định trước) trên ma trận thống kê để giữ lại các phương trình đường thẳng có trong ảnh. Hàm được sử dụng trong trường hợp này là cv::HoughLine().

Dựng lại đường thẳng: Dựa trên các giá trị trả về từ hàm cv::HoughLine() ta

tiến hành vẽ lại biên dạng của đường hàn như một đường thẳng bằng hàm cv::Line(). Việc này khơng chỉ có ý nghĩa trong việc làm nổi bật đối tượng cần phát hiện mà còn dùng làm cơ sở cho việc xác định vị trí của từng điểm ảnh tthuộc đường. Đường thẳng được vẽ sử dụng mã màu (255,0,0) theo thang RGB với độ dày của nét là 1 pixel.

Hình 4.14: Ảnh sau quá trình xác định đường hàn 4.2.4. Xác định vị trí điểm lấy mẫu trên đường hàn 4.2.4. Xác định vị trí điểm lấy mẫu trên đường hàn

Q trình này trích xuất các điểm thuộc đường thẳng tại thời gian t. Dựa trên kết quả trả về từ khâu xác định đường hàn, chương trình sẽ tìm kiếm điểm thuộc đường thẳng y = 240 có mã màu là (R = 255, G = 0, B = 0) và trả về tọa độ (x, y) của

90 điểm đó. Tọa độ (x, y) của điểm sẽ giúp xác định vị trí của điểm trong khơng gian ảnh và sẽ được chuyển đổi thành vị trí của điểm trong khơng gian thực ở bước tiếp theo.

4.2.5. Tính tốn vị trí của điểm trong khơng gian thực

Để có thể chuyển đổi vị trí của điểm trong khơng gian thực, nhóm sử dụng phương pháp gần giống với phương pháp đo kích thước của vật thể trong ảnh. Theo đó để có thể biết được kích thước thực của một vật thể trong ảnh hay cụ thể trong trường hợp này là một khoảng cách trong ảnh, nhóm cần xác định một hệ số tỉ lệ gọi là ppm (pixels per metric). Cụ thể về cách xác định hệ số tỉ lệ ppm và phương thức chuyển đổi nhóm xin phép trình bày ngay sau đây.

Hệ số tỉ lệ ppm

Để xác định được hệ số tỉ lệ ppm (hệ số ppm), nhóm cần một đối tượng tham chiếu với hai tiêu chí quan trọng:

- Đối tượng tham chiếu cần phải được xác định rõ kích thước theo một đơn vị đo lường (millimeter, inch).

- Đối tượng tham chiếu có thể dễ dàng tìm thấy trong ảnh, dựa trên vị trí, hình dạng, màu sắc. Hay nói cách khác, đối tượng tham chiếu nên là duy nhất, nổi bật và dễ dàng nhận diện trên ảnh.

Để đảm bảo hai tiêu chí như trên, nhóm sử dụng đối tượng tham chiếu là các hình trịn có đường kính là 10mm. Đối tượng tham chiếu được in kỹ thuật số trên giấy decal với độ chính xác tốt nhất có thể.

91 Nhằm thuận tiện cho việc xác định hệ số ppm, nhóm có viết một chương trình đơn giản với mục tiêu là nhận diện đối tượng dựa trên màu sắc và tính diện tích đối tượng.

Hệ số ppm sẽ được tính theo cơng thức:

𝒑𝒑𝒎 = √𝒐𝒃𝒋𝒆𝒄𝒕 𝒂𝒓𝒆𝒂

𝒌𝒏𝒐𝒘 𝒂𝒓𝒆𝒂 (4.1)

Trong đó:

 Object area: là diện tích của đối tượng trong hình ảnh (pixel x pixel).  Know area: là diện tích thực tế của đối tượng (mm2). Ở đây diện tích

thực tế của đối tượng là 25π (với π = 3,141592654).

92

Phương thức chuyển đổi

Gọi (i, j) là tọa độ của một điểm trong khơng gian ảnh, (i, j) được tính bằng pixel. (xdis, ydis) là tọa độ của một điểm trong khơng gian thực, cũng chính là tham số

Một phần của tài liệu Thiết kế và chế tạo hệ thống nhận diện mối hàn cho robot tự động (Trang 77)

Tải bản đầy đủ (PDF)

(120 trang)