Đồ án tốt nghiệp Điện tử viễn thông Hệ thống thông minh.Nhận dạng, phân biệt cỏ dại với hoa màu sử dụng cánh tay robot để phun thuốc trừ sâu.Đại học Công nghiệp Thành phố Hồ Chí Minh. GVHD. Phan Vinh Hiếu. Sinh viên thực hiện: Nguyễn Quốc Tưởng Trần Hải Long.
CƠ SỞ LÝ THUYẾT
Tổng quan về XLA
XLA là một hệ thống nhân tạo được thiết kế để tiếp nhận thông tin từ hình ảnh và dữ liệu đa chiều Kỹ thuật này chủ yếu được sử dụng để tăng cường và xử lý hình ảnh từ các thiết bị như camera và webcam Nhờ vào tính ứng dụng cao, XLA đã được phát triển rộng rãi trong nhiều lĩnh vực quan trọng.
Trong quá trình XLA, các bước quan trọng bao gồm thu thập ảnh từ bên ngoài, xử lý ảnh, và cuối cùng là đưa ra ảnh mới cùng với kết luận sau khi hoàn tất quá trình.
Hình 2.1 Sơ đồ khối mô tả quá trình XLA
Sơ đồ chi tiết của một quá trình XLA:
Hình 2.2 Sơ đồ khối chi tiết quá trình XLA
Môi trường Pycharm IDE
Hình 2.3 Phần mềm Pycharm IDE
Là môi trường IDE lập trình tích hợp để thể hiện các chương trình được viết bằng ngôn ngữ Python Các tính năng cơ bản của Pycharm:
• Hỗ trợ đa nền tảng
• Trình sửa code thông minh
Ngôn ngữ Python
Là ngôn ngữ lập trình đa dụng, dễ dàng tìm hiểu, phổ biến và dễ tiếp cận với người mới nhập môn Các đặc tính cơ bản:
• Cú pháp rất đơn giản
• Tương thích với mọi nền tảng như Windows, MacOS, Linux
• Khả năng mở rộng và ứng dụng lên hệ thống nhúng
• Thư viện chuẩn (có sẵn) để giải quyết những bài toán phổ biến hiện nay
Thư viện OpenCV
OpenCV (OpenSource Computer Vision) là thư viện mã nguồn mở nổi bật, cung cấp các mô hình và thuật toán cho XLA, video thời gian thực và học máy Thư viện này hỗ trợ đa ngôn ngữ và tương thích với nhiều nền tảng khác nhau.
Hình 2.4: Python và thư viện OpenCV
Mạng MobileNet
2.5.1 Mạng nơron tích chập - CNN
Mạng CNN là một thuật toán học sâu sử dụng bộ lọc để xử lý ảnh trước khi huấn luyện mạng nơ ron Qua quá trình này, các đặc trưng của ảnh được làm nổi bật, giúp nhận diện và phân loại hình ảnh hiệu quả hơn.
Các thành phần cấu thành nên mô hình CNN bao gồm:
• Lớp tích chập - Convolotion layer (Conv layer)
• Lớp kích hoạt phi tuyến - ReLU layer
• Lớp lấy mẫu - Pooling layer
• Lớp kết nối đầy đủ - Full connected layer (FC layer)
Hình 2.5: Mô hình mạng CNN
Mô hình mạng CNN như hình 2.5 được chia thành 2 phần: Trích chọn đặc trưng từ ảnh gõ vào và phân loại:
• Phần rút trích đặc trưng của mạng CNN sử dụng các lớp tích chập và lớp gộp để tìm ra các đặc trưng quan trọng để phân loại ảnh
Phần phân loại áp dụng các lớp kết nối đầy đủ, sử dụng các đặc trưng đã được rút trích từ ảnh đầu vào Kết quả đầu ra sẽ xác định lớp mà ảnh đầu vào thuộc về.
Mạng CNN hoạt động bằng cách sử dụng các lớp liên kết thông qua cơ chế tích chập, với mỗi lớp tiếp theo là kết quả của quá trình tích chập từ lớp trước Điều này tạo ra kết nối cục bộ giữa các lớp Với N lớp trong mạng, sẽ có N bộ lọc khác nhau, và số lượng bộ lọc thường có thể đạt tới hàng trăm hoặc hàng ngàn.
Hình 2.6: Tính tích chập với các bộ lọc
Tích chập trên ma trận ảnh đen trắng được thực hiện bằng cách sử dụng một ma trận 3x3 làm bộ lọc, trong đó mỗi ô của ma trận ảnh đại diện cho một điểm ảnh với giá trị 1 cho màu đen và 0 cho màu trắng Quá trình này bao gồm việc nhân từng thành phần của bộ lọc với ma trận ảnh và cộng lại các giá trị để tạo ra một ma trận mới Kết quả của tích chập sẽ là một ma trận mới được hình thành từ việc trượt bộ lọc qua tất cả các vùng của ảnh.
ReLU sử dụng hàm kích hoạt: 𝑓(𝑥) = max(0, x)
Hình 2.7: Đồ thị hàm ReLU
Hàm ReLU có nhiệm vụ biến đổi tất cả các giá trị âm thành 0, và được ưa chuộng hơn so với hàm sigmoid hoặc tanh Sự phổ biến của ReLU đến từ việc nó không gặp phải hiện tượng bão hòa ở cả hai đầu như sigmoid và tanh, đồng thời có tốc độ xử lý vượt trội hơn.
2.5.1.3 Pooling layer Được đặt sau lớp Conv layer và ReLU layer là Pooling layer Pooling layer có nhiệm vụ giảm kích thích của ảnh đầu vào mà vẫn đảm bảo được phần thông tin quan trọng
Hình 2.8: Minh họa Pooling layer
Pooling layer hoạt động bằng cách sử dụng một cửa sổ trượt để quét toàn bộ các vùng trong ảnh và chọn một giá trị đại diện cho thông tin của vùng đó Có hai loại pooling phổ biến: Max Pooling, nơi giá trị cực đại trong vùng ảnh được chọn, và Average Pooling, trả về giá trị trung bình của các giá trị trong vùng ảnh.
FC layer tổng hợp các thông tin đã được chắt lọc và dùng softmax để đưa ra dự đoán cuối cùng
Hình 2.9: Mô hình liên kết nơ ron của FC layer
Để ngăn chặn hiện tượng overfitting thường gặp ở lớp FC, người ta sử dụng thêm lớp Dropout Lớp Dropout có chức năng loại bỏ ngẫu nhiên một số nút trong mạng, giúp cải thiện độ chính xác và khả năng tổng quát của mô hình.
Hình 2.10: So sánh một FC layer không và có áp dụng Dropout
Sau khi áp dụng Dropout, mô hình FC layer trở nên gọn gàng hơn, giúp các nơ-ron không còn phụ thuộc lẫn nhau trong việc học các đặc trưng của ảnh Điều này góp phần nâng cao độ chính xác trong việc dự đoán kết quả.
Kiến trúc MobileNet là mạng nơron tối ưu cho thiết bị di động và nhúng, cho phép ứng dụng XLA Nó sử dụng lớp tích chập phân tách theo chiều sâu (Depthwise Separable Convolution - DSC) để giảm số lượng trọng số và độ phức tạp, mang lại hiệu suất cao trong các tác vụ học máy.
2.5.2.1 Xét độ phức tạp của một phép tích chập ảnh:
Hình 2.11: Mô tả phép tích chập 3D
Khi làm việc với ảnh 3 chiều, chúng ta có các thông số chiều rộng (W), chiều cao (H) và chiều sâu (M) Kernel thông thường có kích thước (K, K, N), trong đó K đại diện cho kích thước và N là chiều sâu của ảnh Để đánh giá độ phức tạp của lớp chập, ta sử dụng công thức: DG*DG*DK*DK*N, với DG là bản đồ đặc trưng sau khi áp dụng bộ lọc lên tất cả các kernel của ảnh có kích thước W*H Thực tế, với M kernel, độ phức tạp của tích chập sẽ được tính toán dựa trên các thông số này.
DG DG DK DK N M =DG DK N M (2 1)
2.5.2.2 Xét từ khía cạnh độ phức tạp tính toán của một DSC Ý tưởng của DSC là tách phép tích chập làm 2 phần:
• Tích chập theo chiều sâu (TCTCS)
• Tích chập theo điểm (TCTĐ)
TCTCS: là phép tích chập áp dụng một bộ lọc tích chập cho mỗi kênh dầu vào
Hình 2.12: Mô hình TCTCS Độ phức tạp của TCTCS là:
• 1 kênh: DG*DG*DK*DK
• M kênh: DG*DG*DK*DK*M
TCTĐ: là kiểu tích chập sử dụng bộ lọc 1x1, bộ lọc trượt các điểm đơn lẻ của đầu vào và có độ sâu bằng nhiều kênh
Như vậy, độ phúc tạp của TCTĐ là:
• N kênh: DG*DG*N*M Độ phức tạp của DSC:
DG DG DK DK M DG DG N M
So sánh tích chập thông thường và DSC: Độ 𝑝ℎứ𝑐 𝑡ạ𝑝 𝑐ủ𝑎 𝐷𝐶𝑆 Độ 𝑝ℎứ𝑐 𝑡ạ𝑝 𝑡í𝑐ℎ 𝑐ℎậ𝑝 𝑡ℎườ𝑛𝑔 = 𝐷𝐺 2 ∗𝑀(𝐷𝐾 2 +𝑁)
Như vậy, phương pháp tích chập DSC có độ phức tạp thấp hơn tích chấp thông thường
𝐷𝐾 2 lần Qua đó cho thấy MobileNet sử dụng DSC để giảm đáng kể chi phí tính toán, giảm số lượng params, đồng thời có thể thực hiện trích xuất đặc trưng một cách tách biệt trên các kênh khác nhau
MobileNetV2 là phiên bản nâng cấp của mạng MobileNet, tiếp tục áp dụng kỹ thuật DSC mà không cần thêm các toán tử phức tạp Mạng này tối ưu hóa việc sử dụng tài nguyên phần cứng, giảm thiểu số lượng phép toán và độ phức tạp, trong khi vẫn duy trì độ chính xác cao.
Bài viết đề xuất bổ sung hai khối Linear bottlenecks và Inverted Residual Block nhằm giảm thiểu mất mát thông tin do các lớp kích hoạt phi tuyến khi dữ liệu được xử lý.
Hình 2.14: Residual learning: a building block
Residual Block cơ bản sử sụng kết nối tắt Biểu thức output của một residual block cơ bản có biểu thức: x+F(x)
Hình 2.15: Tổng quan về Kiến trúc MobileNetV2
Mạng MobileNetV2 được tối ưu hóa với các lớp bottlenecks, giúp giảm số kênh đầu vào và đầu ra Các lớp trung gian trong mỗi block thực hiện biến đổi phi tuyến, tạo ra nhiều phép biến đổi hơn nhờ vào cấu trúc dày đặc Để mở rộng lớp bottlenecks đầu vào, chúng ta áp dụng chập theo điểm, tiếp theo là sử dụng tích chập theo chiều sâu để rút trích đặc trưng hiệu quả.
25 cùng vẫn là tích chập điểm Linear được sử dụng thay vì ReLu như bình thường để đưa về lớp bottlenecks output
Hình 2.16: Kiến trúc residual truyền thống & Residual block của MobileNet v2
Môi trường Arduino IDE
Arduino IDE là phần mềm lập trình miễn phí, được phát hành chính hãng và thường xuyên cập nhật Phần mềm này tương thích với các hệ điều hành Windows, MAC OS và Linux.
Hình 2.18: Logo Arduino IDE Giao diện Arduino IDE:
Hình 2.19: Cửa sổ làm việc Arduino IDE
Arduino Nano Atemega328P-AU
Chân Digital I/O 14 (với 6 chân PWM output)
Chân đầu vào Analog 8 (thêm A6, A7)
Dòng sử dụng I/O Pin 20 mA (tối đa 40 mA)
Bộ nhớ Flash 32 KB (ATmega328) với 2KB dung cho bootloader
• Thiết kế gọn nhẹ, linh hoạt và tiện sử dụng
• Sử dụng chip ATmega328 – AU nên có thêm 2 chân analog A6, A7
• Sử dụng Opamp tự động chuyển đổi nguồn
Hình 2.20: Sơ đồ chức năng chân Arduino nano Arduino Nano có tổng cộng 36 chân:
• SPI (Apart from Digital I/O Section): 3 chân
Vi điều khiển ATmega328P-AU
Sơ đồ chức năng chân ATmega328P-AU:
Hình 2.22: Sơ đồ chân của ATmega328P-AU
• Bộ nhớ chương trình: 32 Kb
• Độ phân giải ADC: 10 bit
• Giới hạn nhiệt độ: -40 đến 85 độ C
• Loại RAM dữ liệu: SRAM
• Loại giao diện: I2C, UART, SPI
• Sử dụng để lập trình cho các mục đích trong cuộc sống
• Lập trình cho các thiết bị ngoại vi
• Sử dụng trong công nghiệp, mô phỏng các mạch cảnh báo, nhận tín hiệu,…
• Phổ biến trong công nghiệp: sản xuất, tự động hóa.
Cánh tay Robot
Robot là thiết bị được chế tạo nhằm thay thế con người trong việc thực hiện các công việc tự động, dưới sự điều khiển của máy tính hoặc vi mạch điện tử đã được lập trình Nó bao gồm các bộ phận cơ khí, hệ thống điện - điện tử và phần mềm, cho phép thực hiện các hoạt động tương tự như con người.
Hình 2.23: Một số mẫu Robot
Robot thường được phân loại thành 5 loại chính sau:
• Phân loại theo ứng dụng
• Phân loại theo chuyển động
• Phân loại theo truyền động
• Phân loại dạng điều khiển
• Một số kiểu phân loại khác
2.9.2.1 Phân loại theo ứng dụng
Robot được phân loại chủ yếu thành hai nhóm: robot công nghiệp và robot xã hội Robot công nghiệp thường được sử dụng trong sản xuất, trong khi robot xã hội phục vụ cho các mục đích hỗ trợ con người Mỗi loại robot này có những đặc điểm và ứng dụng riêng, đáp ứng nhu cầu khác nhau trong các lĩnh vực khác nhau.
Hình 2.24: Minh họa các mẫu robot công nghiệp & robot xã hội
2.9.2.2 Phân loại theo chuyển động
Robots can be categorized based on their kinematic structure and movement types, including series robots or manipulators, parallel robots, and mobile robots.
Hình 2.25: Minh họa các mẫu Robot nối tiếp/tay máy; Robot song song; Robot di động
2.9.2.3 Phân loại theo truyền động
• Robot dùng hệ thống truyền động điện
• Robot dùng hệ truyền động thủy lực
• Robot dùng hệ truyền động khí nén
Hình 2.26: Minh họa các mẫu Các mẫu Robot Phân loại theo chuyển động
2.9.2.4 Phân loại theo điều khiển
• Robot điều khiển vòng hở
• Robot điều khiển vòng kín
Hình 2.27: Minh họa các mẫu phân loại the điều khiển
2.9.2.5 Một số kiểu phân loại khác
Một số kiểu phân loại robot khác – theo công tác ( của khâu chấp hành cuối):
Hình 2.28: Minh họa các mẫu Robot phân loại theo công tác (của khâu chấp hành cuối)
2.9.3 Các thành phần cấu thành nên robot
Một bộ máy được xem là robot khi nó đáp ứng đủ đủ cách thành phần như hình 2.29
Hình 2.29: Sơ đồ tổng quát một Robot công nghiệp chuyên dụng
Là bộ phận cơ khí được lập trình để thực hiện các hoạt động tương tự như cánh tay người bình thường
Hình 2.30: Mẫu cánh tay Robot
Các bộ phận của một cánh tay máy được liên kết với nhau thông qua các khâu, khớp nối cho phép chuyển động quay hoặc chuyển dịch bao gồm:
• Khớp – thanh nối: Joint – link
• Bàn tay – hand, end effector (Khâu chấp hành cuối)
Cánh tay robot cần một nguồn động lực bao gồm hai thành phần chính: cơ cấu chấp hành và công suất Cơ cấu chấp hành luôn đi kèm với thành phần công suất tương ứng để đảm bảo hoạt động hiệu quả.
• Các cơ cấu chấp hành: các thiết bị cơ- điện, khí nén, thủy lực
• Thành phần công suất: motor step, motor servo
Hình 2.31: Minh họa 2 loại động cơ các motor step, các motor servo
Hình 2.32: Các thiết bị khí nén trong robot
Để cánh robot có thể hoạt động hiệu quả trong môi trường cụ thể, nó cần thu thập và đo đạt thông tin, nhiệm vụ này được thực hiện bởi các cảm biến.
Các tín hiệu từ cảm biến sẽ được gửi về bộ điều khiển và máy tính, thường là máy tính, để giám sát và điều khiển hoạt động của robot Ngoài ra, cũng có thể sử dụng vi xử lý, VĐK hoặc PLC trong quá trình này.
Bộ điều khiển sẽ nhận tri thức (thuật toán) hoặc cách giải quyết vấn đề của robot từ các chương trình
Các chương trình lập trình robot tương thích với nhiều bộ điều khiển, bao gồm ngôn ngữ cho vi xử lý (ngôn ngữ máy), ngôn ngữ lập trình PLC và các ngôn ngữ máy tính khác như Pascal, C, C++, Visual Basic, và Matlab.
Hình 2.34: Các chương trình lập trình cho robot
2.9.4 Khái niệm bậc tự do - DOF
Bậc tự do của cơ hệ là số các thông số độc lập cần biết để xác định trạng thái hay cấu hình của hệ cơ đó
Hình 2.35: Bậc tự do trong mặt phẳng 2D & 3D
Một số khái niệm khâu; khớp – khớp động; phân loại khớp:
Khâu là các bộ phận của máy có chuyển động riêng biệt và tương đối với nhau Ví dụ, trong máy 4 khâu, các bộ phận bao gồm: (1) xy lanh đứng yên, (2) trục khủy quay tròn, (3) thanh truyền quay tròn, và (4) pittong chuyển động tịnh tiến.
Hình 2.36: Ví dụ một bộ phận máy 4 khâu
• Khớp – khớp động: Các khâu nối với nhau bởi các khớp Thông thường các khớp được sử dụng ở các kết cấu máy là các khớp động
• Phân loại khớp động theo số bậc tự do bị hạn chế của khâu chuyển động: Khớp loại
1, 2, 3, 4, 5 là khớp bị khống chế 1, 2, 3, 4, 5 bậc tự do
• W: Số bậc tự do của robot
• Trong đó, khớp loại i là khớp khống chế i bậc tự do
2.9.5 Hệ tọa độ trong tay máy Để tính toán động học cho robot ta phải gắn trên các khâu của robot một hệ tọa độ
Hình 2.37: Các khâu robot SCARA được gắn hệ trục tọa độ
Hệ tọa độ của robot phải tuân theo quy tắc bàn tay phải, trong đó ngón cái chỉ hướng trục z, ngón trỏ chỉ hướng trục x và ngón giữa chỉ hướng trục y.
Hình 2.38: Minh họa qui tắc bàn tay phải
Robot SCARA được ra đời đầu tiên vào năm 1979 tại trường đại học Yamanashi (Nhật Bản)
Hình 2.37: SCARA robot của hãng EPSON
Cấu hình thường thấy ở loại robot Scara là RRT (R: Rotation = quay; T: Translation = tịnh tiến)
Robot SCARA với 4 bậc tự do, như hình 2.38, có cấu hình bao gồm 3 khâu đầu tiên với 2 khớp quay và 1 khớp trượt, tất cả đều có trục song song Khâu nối giá cũng được trang bị 1 khớp quay.
Với yêu cầu xử lý ảnh kết hợp cánh tay robot Chúng em chọn mô hình robot SCARA làm cánh tay robot cho đề tài lần này
Hình 2.39: Bản vẽ 3D robot SCARA
Hình trên là mẫu robot SCARA mà chúng em dùng cho mô hình phun thuốc diệt cỏ của đề tài Đặc tính kỹ thuật:
Hình 2.40: Hệ tọa độ các khâu của robot SCARA
• Nguồn động lực: Sử dụng động cơ bước tương ứng với module driver a4988
• Camera robot có nhiệm vụ thu thập thông tin cụ thể là tọa độ của cỏ và hoa
• Bộ điều khiển: Broad CNC shield V4 tích hợp mạch Arduino nano v3
• Chương trình: Lập trình chuyển động của Robot SCARA qua chương trình Arduino
• Giao diện: Nhận hình ảnh - tọa độ được camera gửi về đồng thời điều khiển robot đến vị trí cỏ
Bảng thông số Denevit - Hasternberg:
Broad arduino CNC shield V4
Broad CNC Shield V4 là một mạch mở rộng cho Arduino Nano, được thiết kế đặc biệt cho các dự án chế tạo máy CNC mini, máy khắc laser và máy viết chữ.
Arduino Nano và Driver tương thích cho phép điều khiển được tối đa 3 ĐCB (3 trục X, Y, Z)
2.10.2 Cấu hình Arduino CNC shield V4
Hình 2.42: Sơ đồ Arduino CNC shield V4
Thông tin cấu hình Arduino CNC shield V4:
• Điện áp DC5V qua các chân hỗ trợ
• Tương thích với Arduino Nano
• Tương thích với Motor Driver: A4988 và DRV8825 hoặc các Driver tương tự
• Điều khiển 3 động cơ bước (3 trục X, Y, Z)
• Dòng điện tương thích 2A (A4988) và 2.5A (DRV8825)
• Hỗ trợ ngõ ra giao tiếp IO, I2C
• Hỗ trợ chọn các tỷ lệ xung thông qua việc cắm chân jumper: full step, haft step, 1/4, 1/8, 1/16
Bảng 2.3: Bảng sự thật chọn tỷ lệ xung
MS1 MS2 MS3 Microstep Resolution
• Ứng dụng trong điều khiển các loại máy CNC hoặc máy khắc laser mini vv
• Dùng để điều khiển motor step,
Động cơ bước – Motor step
2.11.1 Tổng quan: Động cơ bước (ĐCB) là một thiết bị chuyển đồi năng lượng điện thành chuyển động cơ học Nó cung cấp dòng điện một chiều theo một trình tự được kiểm soát nhất định để tạo ra chuyển động quay, vòng quay có thể liên tục theo chiều thuận hoặc ngược lại hoặc chúng ta có thể điều khiển vòng quay theo từng bước nhỏ để kiểm soát độ chính xác cao hơn Động cơ thậm chí có thể dừng tại 1 điểm mong muốn và giữ vị trí này
Hình 2.43 Minh họa 1 motor step
Động cơ bước là công nghệ tiên tiến hơn so với động cơ một chiều thông thường, cho phép quay liên tục theo cả chiều thuận và ngược Nhờ vào khả năng điều khiển chính xác, động cơ bước trở thành lựa chọn ưu việt trong các dây chuyền tự động hóa và sản xuất Chính vì vậy, chúng được ứng dụng rộng rãi trong nhiều lĩnh vực, từ máy in 3D, máy CNC cho đến van tiết lưu điện tử trong các hệ thống lạnh chính xác.
Về cấu tạo bên trong ĐCB bao gồm: Ổ bạc đạn, Rotor, Stator
Hình 2.44 Cấu tạo bên trong ĐCB
• Ổ bạc đạn: chúng có nhiệm vụ giữ trục đúng vị trí và đảm bảo quay trơn tru
Rotor là một nam châm vĩnh cửu bao gồm hai phần: cực bắc và cực nam, với các răng khắc trên bề mặt bên ngoài của mỗi phần Các răng này không thẳng hàng mà được bố trí bù trừ, giúp cho các răng của phần này thẳng hàng với các khe hở của phần kia.
• Bao quanh rotor là stator: được cấu tạo từ sắt từ, đứng yên và không quay Stator được chia thành các rãnh để đặt cuộn dây
Hình 2.45 Sơ đồ điều khiển motor step
Động cơ bước (ĐCB) không thể hoạt động độc lập, do đó thường được kết hợp với một Motor Driver như A4988 hoặc DRV8825, cùng với một bộ điều khiển như PLC hoặc Arduino Bộ điều khiển này có nhiệm vụ điều chỉnh dòng điện đưa vào stato theo thứ tự và tần số nhất định.
Motor bước hoạt động dựa trên nguyên lý từ trường, trong đó các cực cùng dấu đẩy nhau và các cực trái dấu hút nhau Khi cuộn dây được cấp điện, nó tạo ra một trường điện từ với cực bắc và cực nam Rotor, là một nam châm vĩnh cửu, tương tác với trường điện từ của stator, dẫn đến việc rotor quay Các cuộn dây sẽ được bật và tắt, làm thay đổi cực tính của trường điện từ, từ đó tạo ra lực hút và đẩy giữa stator và rotor, khiến rotor tiếp tục quay.
Hình 2.47 Motor Step KV24-F2B009 ĐCB mã hiệu KV24 là loại động cơ bước điển hình được thiết kế để có 200 bước tương đương với 1 bước quay được 1.8°
Hình 2.48 Sơ đồ dây ĐCB KV24
• Kích thước bao: 42mm x 42mm x 32mm
• Động cơ bước bước loại 2 pha 4 dây.
Module Driver A4988
Module driver A4988 là driver điều khiển ĐCB lưỡng cực có dòng tối là 2A Một số đặc tính cơ bản của module A4988:
• Dễ dàng điều khiển số bước quay và hướng quay của động cơ
• Cung cấp năm độ phõn giải bước: Full step, Hafl step, ẳ step, 1/8 step, 1/16 step
• Điều chỉnh được dòng ra cho động cơ
• Ngắt bảo vệ khi quá nhiệt, áp hoặc dòng Bảo vệ ngắn mạch tải
• Nguồn cấp cho động cơ: 8V~35V
• Dòng: 1A (Không cần tản nhiệt, làm mát) ~ 2A (khí có làm mát, tản nhiệt)
• Hiệu chỉnh dòng ra bằng chiết áp, nằm bên trên Current Limit = VREF x 2.5
Hình 2.50 Sơ đồ chân module driver A4988
Webcam PC HD
2.13.1 Thông tin của Webcam PC HD sắc nét-Có Mic
• Webcam có thiết kế nhỏ gọn: Có thể xoay lên xuống 30 độ, bạn có thể điều chỉnh góc xoay theo ý muốn
• Thiết kế tinh tế: Ống kính quang học có độ chính xác cao và hình ảnh không bị vỡ
• Lấy nét tự động, không cần điều chỉnh ống kính
• Webcam PC HD H2Pro có micro được thiết kế nằm trên mặt webcam
2.13.2 Cấu hình Webcam PC HD sắc nét-Có Mic
• Webcam có Micro trên mặt
• Màu sắc: đen - Chất liệus: ABS
• Điểm ảnh cảm biến: 12 triệu
• Driver: không cần cài driver
• Độ phân giải cao nhất: 720x480
• Kiểu lấy nét: tiêu điểm cố định
• Tốc độ khung hình: 30FPS
• Kích thước sản phẩm (D x R x C): 33 x 80 (mm)
• Kích thước đóng hộp (D x R x C): 110 x 70 x 90 (mm)
PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG
Giới thiệu
Ngày nay, Internet of Things (IoT) đang cách mạng hóa cuộc sống và công việc của chúng ta Công nghệ này đóng vai trò then chốt trong quá trình chuyển đổi công nghiệp mới, mang lại những thay đổi sâu sắc trong mọi hoạt động hàng ngày.
Công nghiệp 4.0 là chìa khóa cho quá trình chuyển đổi kỹ thuật số của tổ chức và xã hội Trong đó, công nghệ IoT và AI, đặc biệt là ứng dụng nhận dạng hình ảnh AI, đóng vai trò quan trọng trong việc phân tích dữ liệu và cung cấp kết quả chính xác Đề tài “Nhận diện và phân biệt cỏ dại với hoa màu, sử dụng cánh tay Robot để phun thuốc trừ sâu” được lập trình bằng Python với thư viện OpenCV, thực hiện trên Arduino Nano và sử dụng camera để thu tín hiệu Mô hình nhỏ này hoạt động trong phạm vi 40x40 cm, với thời gian và tốc độ xử lý ổn định, mặc dù camera vẫn bị ảnh hưởng bởi ánh sáng tự nhiên.
Hình 3.1 Sơ đồ tổng quát hệ thống
Tính toán và thiết kế hệ thống
3.2.1 Thiết kế sơ đồ khối hệ thống
Mô hình bao gồm một bộ điều khiển trung tâm là PC kết hợp với vi xử lý Arduino Nano Hệ thống thu tín hiệu từ Camera và điều khiển khối động cơ, cụ thể là cánh tay Robot, thực hiện các nhiệm vụ chấp hành cuối cùng.
Hình 3.2 Sơ đồ khối toàn hệ thống
Khối xử lý bao gồm: máy chủ chứa chương trình (PC) và Arduino
• PC: Chứa thuật toán XLA làm nhiệm vụ xử lý phân tích nhận dạng hình ảnh và gửi các thông tin đó tới Arduino
• Arduino: Tiếp nhận, xử lý thông tin từ PC Điều khiển khối động cơ bằng cách cấp xung cho nó
Arduino CNC shield V4 được thiết kế để tích hợp Arduino Nano và 3 module driver 4988 điều khiển 3 trục XYZ
Hình 3.3 Arduino CNC & phương thức kết nối
Arduino CNC Shield V4 kết nối với Arduino Nano 3.0 qua cáp USB sang mini USB dài 30cm Chúng giao tiếp thông qua cổng COM ảo, tạo điều kiện thuận lợi cho việc điều khiển và lập trình máy CNC.
Hình 3.4 PC kết nối với Kit Arduino qua dây cáp USB
Khối động cơ: ĐCB quay dưới sự điều khiển của motor driver a4988 tiếp nhận xung từ Arduino
Khối động cơ bao gồm 3 động cơ bước (step motor) hoạt động được nhờ module driver a4988
Hình 3.5 Sơ đồ nối dây A4988 với động cơ bước
Arduino CNC shield V4 hỗ trợ chọn các tỷ lệ xung thông qua việc cắm chân jumper: full step, haft step, ẳ step, 1/8 step, 1/16 step
Hình 3.6 Chọn tỷ lệ xung 1/16 qua cắm chân jumper
Để điều khiển động cơ bước (ĐCB) hoạt động chính xác, người dùng thường thiết lập cấu hình 1.8°/bước Để giảm góc quay trên mỗi bước, cần cắm chân jumper và chọn tỷ lệ xung 1/16 step Hình 3.6 minh họa cách cắm chân jumper để thực hiện điều này.
Hình 3.7 Sơ đồ nguyên lý kết nối khối xử lý với khối động cơ
Khối camera có nhiệm vụ thu thập hình ảnh thực tế và truyền tải chúng để xử lý Sử dụng Camera Webcam PC 1080P HD, hệ thống cung cấp ảnh thời gian thực với chất lượng cao đạt chuẩn 1080P HD.
Hình 3.8 Ảnh thực tế thu về từ Camera chất lượng 1080P FHD
Sử dụng Adapter chuyển đổi AC/DC với thông số đầu vào là 100:240V – 50/60Hz – 1.8A và thông số đầu ra là 12V – 2A
Hình 3.9 Adapter sử dụng trong hệ thống
3.2.6 Thiết kế và tính toán cho cánh tay Robot Scara
Lựa chọn và triển khai mô hình cánh tay Robot Scara theo mẫu có sẵn trên internet, bao gồm các thông số kỹ thuật và bản vẽ 3D chi tiết.
• Chốt M3 8mm 10x cho động cơ
• Bu lông M8 40mm 1x + đai ốc 1x
• Khớp nối 5 đến 8 1x o Các bản vẽ 3D:
• Tính toán động học cho bài toán:
Hình 3.16 Hệ tọa độ của Robot Scara
Bảng thông số Denevit – Hartenberg:
Từ hệ phương trình trên ta có:
2 tan 2( , 2 2 ) ce gb as bc c s ae fb ec fs g cf ga c bf ea a s c
• Chuyển đổi tọa độ Camera về tọa độ Robot
Hình 3.17 Đổi tọa độ Camera về tọa độ Robot
X w , Y w , Z w : tọa độ vật trong không gian , : u v tọa độ điểm ảnh trên camera ij : r phần tử ma trận xoay
, : x y f f tiêu cự camera theo phương x,y
0, 0: u v tịnh tiến tiêu điểm chính của camera Trong đó ma trận xoay có dạng:
Trong thực tế, tọa độ của ảnh trên camera là 2D, trong khi hệ trục chứa tọa độ điểm trong không gian lại là 3D Do đó, theo lý thuyết, một điểm trong tọa độ camera có thể tương ứng với vô số điểm trong không gian.
Từ đó ta sẽ đặt tọa độ Oxy (hệ world) song song với Ouv (camera) và chọn độ cao của tọa độ trong không gian cố định
Để xác định ma trận chuyển đổi từ tọa độ điểm ảnh (OcXcYc) sang tọa độ 2D (OwXwYw), cần thu thập một số điểm trong hai hệ trục và tiến hành hiệu chỉnh.
Khi xác định được vector x, chúng ta có thể tìm tọa độ điểm trong hệ trục (OwXwYw) dựa trên tọa độ điểm ảnh từ camera, với điều kiện hai mặt phẳng phải song song Đề tài này sử dụng các thư viện tính toán có sẵn trên Pycharm để hỗ trợ quá trình tính toán cho cánh tay Robot Scara, với ý tưởng tính toán rõ ràng và hiệu quả.
Đầu tiên, chúng ta xác định mối quan hệ giữa tọa độ Pixel được trích xuất từ quá trình XLA và tọa độ thực tế trong không gian thế giới bằng cách lựa chọn 6 điểm ngẫu nhiên.
Hình 3 19 Tìm ma trận "Rt" qua 6 điểm bất kỳ
Với 6 điểm này ta thu thập được các cặp tọa độ Picxel và tọa độ World tương ứng như trên hình Từ đó ta tìm được ma trận “Rt” – là ma trận chuyển đổi Calibration
Hình 3 20 Tính toán ma trận với sự hỗ trợ từ Pycharm
Sau khi xác định ma trận "Rt", chúng ta sẽ áp dụng kết quả của ma trận này vào các trường hợp thực nghiệm trong quá trình hệ thống hoạt động Việc thực nghiệm với các vật thể sẽ giúp đánh giá hiệu quả hoạt động của hệ thống.
“Cỏ - Hoa” ta sẽ thu được một list các tọa độ Picxel tương ứng, kết hợp với ma trận
“Rt” vừa thu được ta sẽ tìm được các vị trí “X,Y” là tọa độ của từng vật thể Cỏ ( tọa độ Robot)
Tọa độ Cỏ (X,Y) được gửi đến Arduino, từ đó Arduino kích hoạt các động cơ để điều khiển cánh tay Robot, giúp nó hướng tới vị trí của vật thể Cỏ tương ứng.
Hình 3 21 Tính toán ma trận với sự hỗ trợ từ Pycharm
THI CÔNG HỆ THỐNG
Chuẩn bị phần cứng
Dưới đây là những linh kiện, phần cứng cần thiết cho hệ thống
Bảng 4 1 Danh sách linh kiện
STT Tên Loại Ghi chú
3 Đế ra chân Arduino CNC V4
4 Mạch điều khiển động cơ bước Driver A4988 3
6 Các khớp cánh tay Robot In 3D
9 Adapter Nhựa cứng Điện áp vào 100 -
240V AC Điện áp ra 12VDC Dòng ra 2A
Chuẩn bị dữ liệu Datashet để làm Model
Hình ảnh Cỏ - Hoa tự chuẩn bị để hoàn thành bộ dữ liệu cho Model để thực hiện quá trình Train
Hình 4 2 Cỏ - Hoa sử dụng
Hình 4.3 Dữ liệu Hoa Huấn luyện mạng MobileNetV2:
Hình 4.4 Sơ đồ khối các bước huấn luyện model
Các bước huấn luyện bao gồm:
• Thu thập dữ liệu (Collect data): Ở bước này ta cần thu thập các hình ảnh cỏ và hoa và gán nhãn cho chúng
Tiền xử lý ảnh bao gồm việc thay đổi kích thước ảnh và chuyển đổi dữ liệu ảnh thành dạng ma trận Sau đó, dữ liệu ảnh đầu vào được xử lý bằng thư viện mobilenet_v2 từ Keras, và cuối cùng, thực hiện mã hóa nóng trên nhãn để chuẩn bị cho các bước tiếp theo trong quá trình phân tích.
• Split data (Phân chia dữ liệu): Chia dữ liêu thành tập train và tập test
Xây dựng mô hình hiệu quả bằng cách tăng cường dữ liệu ảnh train, trong đó mỗi ảnh sẽ được tạo ra nhiều phiên bản khác nhau thông qua các thao tác như xoay, lật, dịch trái và dịch phải Phương pháp này giúp cải thiện hiệu suất của mô hình trong các ứng dụng thực tế.
• Testing Model (Đánh giá Model): Kiểm tra và đánh giá độ chính xác của model
• Implement Model (Ứng dụng Model): Và cuối là ứng dụng model vừa xây dụng được vào bài toán nhận diện phân loại cỏ và hoa
Kết quả train với epoch = 50, batch size = 2, từ biểu đồ có thể thấy với tập dataset có thể set epoch = 30 để tiết kiệm thời gian train
Mô hình áp dụng xử lý ảnh để trích xuất vùng nghi vấn là cỏ hoặc hoa trong khung hình, sử dụng phương pháp candy để xác định biên của cỏ và hoa Tuy nhiên, kết quả có thể bị ảnh hưởng bởi ánh sáng môi trường.
Hình 4.6 trình bày quá trình trích xuất vùng nghi vấn là cỏ hoặc hoa trong khung hình bằng công nghệ Candy Sau khi áp dụng mô hình đã được huấn luyện với hình ảnh cỏ, kết quả đạt được cho thấy độ chính xác ấn tượng trên 99%.
68 Hình 4.7 Áp dụng model vừa train với hình cỏ
Hình 4.8 Áp dụng model vừa train với hình hoa
Hình 4.9 Áp dụng model vừa train với hình cỏ và hoa
Hình 4.10 Trích xuất tọa độ tâm của Hoa và Cỏ trong khung hình.
Lắp ráp và kiểm tra
Là phần kết nối giữa các linh kiện và các module để tạo thành một mô hình thống nhất
4.3.1 Chi tiết lắp ráp Robot
Các chi tiết của cánh tay Robot sau khi in 3D theo bản vẽ có sẵn
Hình 4.11 Chi tiết Robot Scara
4.3.2 Kit Arduino và Module Driver A4988 lên đế ra chân Arduino CNC V3
Hình 4.12 Kết nối các Module
Gắn Camera cố định lên mô hình:
Hình 4.13 Lắp Camera lên mô hình
• Kết nối Camera và Arduino với máy tính
• Kết nối Arduino với máy tính điều khiển thông qua giao tiếp cổng COM
• Kết nối Camera với máy tính điều khiển thông qua cổng USB của máy tính
• Kết nối 3 động cơ bước với module điều khiển Driver A4988
• Nguồn Adapter với module Arduino CNC Shield V4.0
Sau khi kiểm tra các mối nôi của toàn hệ thống, ta kiểm tra tổng thể toàn hệ thống gồm có:
✓ Đông cơ bước và công tắc hành trình đã được kết nối và đã hoạt động
✓ Kit Arduino đã được cấp nguồn Nếu chưa thì kiểm tra lại Adapter
✓ Xem nguồn đã kết nối với Arduino được chưa?
✓ Nối chính xác 2 dây: nguồn và GND được nối giữa công tắc hành trình và Arduino CNC Shield V4.0
Để đảm bảo hoạt động hiệu quả của động cơ bước, cần kiểm tra chính xác các dây nguồn, GND và tín hiệu Động cơ bước được kết nối với Driver A4988 thông qua đế chân của Arduino CNC Shield V4.0, bao gồm 4 dây kết nối: 1 dây nguồn, 1 dây GND và 2 dây tín hiệu.
Lập trình hệ thống
Lưu đồ quá trình XLA:
Hình 4.14 Lưu đồ giải thuật quá trình XLA
Giải thích lưu đồ quá trình xử lý ảnh:
Khi nhận tín hiệu từ máy chủ, camera sẽ chụp ảnh khu vực vườn, sau đó hình ảnh được thay đổi kích thước về 400x400 pixel Tiếp theo, hình ảnh sẽ được xử lý và chuyển đổi sang định dạng GRAY.
- Sử dụng phương pháp Candy để tìm viền cho đối tượng có trên ảnh vừa thu được
- Từ đường viền vừa xác định được ta vẽ bounding box cho vật thể và trích xuất tọa độ tâm của vật thể dựa trên diện tích của box
- Gán nhã “Cỏ”, “Hoa” sau khi xác định được lên vật thể
- Lưu tọa độ của “Cỏ - Hoa”
Lưu đồ điều khiển cánh tay Robot:
- Bắt đầu Kiểm tra nút nhấn trên giao diện điều khiển
- Nếu giá trị nút nhấn bằng 0, cánh tay Robot đưa về vị trí Home
Khi giá trị nút nhấn bằng 1, hệ thống sẽ bắt đầu đọc ảnh từ Camera và xử lý hình ảnh nhận được Sau đó, tọa độ của ảnh sẽ được chuyển đổi về tọa độ của Robot Tiếp theo, chúng ta tiến hành xử lý động học nghịch của bài toán Khi có kết quả từ bài toán động học nghịch, các thông số của các khớp sẽ được gửi về Arduino để Robot thực hiện nhiệm vụ.
- Cánh tay Robot sau khi trỏ tới các vị trí của “Cỏ” xong sẽ delay 2 giấy và quay về vị trí Home
Hình 4.15 Quá trình điều khiển trên giao diện
Lưu đồ huấn luyện dữ liệu:
Hình 4.16 Huấn luyện dữ liệu Giao diện điều khiển hệ thống:
Hình 4.17 Giao diện điều khiển hệ thống Bảng 4.2: Chức năng thành phần trên giao diện điều khiển hệ thống
Thanh slider điều chỉnh ngưỡng sáng tùy biến theo cường độ ánh sáng môi trường thực để quá trình nhận dạng đạ hiệu quá tới đa
Nút nhấn Home: Điều khiển đưa các khớp robot về vị trí tọa độ đặt ban đầu
Nút nhấn Run: Mô hình hoạt động Bắt đầu quá trình đọc và XLA từ camera Cuối cùng là điều khiển robot làm nhiệm vụ được lập trình
Cửa sổ hiển thị ảnh realtime được gửi về từ camera khi chương trình hoạt động
Cửa sổ ảnh được trích xuất vùng nghi vấn cỏ và hoa trong khung hình bằng phương pháp candy
Hình 4 18 Sơ đồ toàn hệ thống
ĐÁNH GIÁ VÀ KẾT QUẢ
Kết quả đạt được khá tốt
• Hệ thống nhận diện và phân biệt được chính xác “cỏ - hoa” theo yêu cầu đặt ra
• Giao tiếp được giữa máy tính với Arduino
• Điều khiển được cánh tay Robot, trỏ tới đúng vị trí tọa độ của “Cỏ”
• Thiết kế thành công mô hình gồm có: cánh tay Robot và vị trí vườn cỏ
Mô hình hoạt động tương đối ổn định với độ chính xác cao.
Những hình ảnh của mô hình
Dưới đây là một số hình ảnh hoàn chỉnh của mô hình:
Hình 4 19 Mô hình chụp từ trên xuống
77 Hình 4 20 Mô hình chụp mặt bên trái
Hình 4 21 Mô hình chụp mặt bên phải