TỔNG QUAN
Đặt vấn đề
Robot ngày nay đang trở nên phổ biến và được ứng dụng rộng rãi trong các ngành công nghiệp Hệ thống robot rất đa dạng, với nhiều loại khác nhau về kết cấu cơ khí, khả năng tự hành, độ thông minh và khả năng di chuyển Tùy thuộc vào từng loại, robot có thể thu thập dữ liệu, xử lý thông tin, thực hiện chuyển động và phản ứng với môi trường xung quanh.
Ngày nay hệ thống Robot được phân loại và tổng quát thành 2 nhóm chính:
Robot có gốc ở 1 vị trí cố định (Manipulation robotics)
Robot di động (Mobile robotics)
Robot di động có khả năng di chuyển linh hoạt, tạo ra không gian hoạt động rộng lớn và ngày càng khẳng định vai trò quan trọng trong nhiều lĩnh vực, thu hút đầu tư và nghiên cứu Các loại robot di động bao gồm robot dò đường line, robot tránh vật cản, và robot tìm đường cho mê cung Trong số đó, robot lau nhà là một trong những loại dễ dàng ứng dụng trong cuộc sống hàng ngày.
Robot lau nhà đóng vai trò quan trọng trong ngành Robot học, với sự phát triển của hệ thống tự động hóa, chúng ngày càng hoàn thiện và mang lại nhiều lợi ích trong công nghiệp và sinh hoạt Một trong những thách thức lớn là làm sao để robot nhận diện vết bẩn trên sàn, di chuyển để lau hoặc hút, rồi quay lại vị trí ban đầu Nhóm nghiên cứu đã quyết định ứng dụng xử lý ảnh nhằm tối ưu hóa khả năng làm việc của robot và giảm thiểu tối đa việc bỏ sót lỗi.
Nhóm nghiên cứu đã tìm hiểu về cách thức hoạt động của robot và kết hợp kiến thức học tập với tài liệu trực tuyến Qua đó, nhóm đã thu thập đủ thông tin để thực hiện báo cáo tốt nghiệp với đề tài “thiết kế robot lau nhà ứng dụng xử lý ảnh”.
Nhiệm vụ đồ án
1.2.1 Lý do hình thành đề tài
Tính cấp thiết và ứng dụng của xử lý ảnh vào đởi sống, công nghiệp và nghiên cứu khoa học bây giờ rất quan trọng
Công nghệ này được ứng dụng rộng rãi trong các thiết bị di động và các hệ thống bảo vệ con người trong các tình huống khẩn cấp như động đất và tai nạn giao thông Ngoài ra, nó còn được sử dụng trong ngành công nghiệp, bao gồm máy bay, tàu biển và các nhà máy Đây là một lĩnh vực công nghệ thiết yếu trong tự động hóa, đang phát triển mạnh mẽ trong những năm gần đây với ứng dụng đa dạng trong đời sống xã hội, công nghiệp và quân sự.
Ngành xử lý ảnh có nhiều ứng dụng quan trọng, bao gồm dây chuyền lắp ráp, phân loại và kiểm tra sản phẩm tự động trong nhà máy, cũng như camera quan sát để phát hiện trộm và các vật thể lạ.
Chúng em quyết định nghiên cứu xử lý ảnh trên máy tính nhúng để phát triển đề tài “Thiết kế robot lau nhà ứng dụng xử lý ảnh” nhằm ứng dụng công nghệ vào các giải pháp thực tiễn.
1.2.2 Ý nghĩa khoa học và thực tiễn
Với sự tiến bộ của khoa học và công nghệ, robot ngày càng có khả năng thay thế con người trong các công việc nguy hiểm, trong sản xuất và phục vụ nhu cầu giải trí Sự phát triển không ngừng của công nghệ đã dẫn đến việc chế tạo robot phục vụ cho nhiều mục đích đa dạng.
Robot lau nhà đang được ứng dụng rất nhiều vào đời sống sinh hoạt của con người 1.2.3 Mục tiêu nghiên cứu
Nghiên cứu lý thuyết xử lý ảnh để áp dụng cho thiết kế mô hình và xây dung thuật toán cho robot lau nhà
Khi lựa chọn phần cứng cho mô hình robot, cần xem xét các thành phần như cảm biến, vi điều khiển, động cơ, driver, nguồn và module giao tiếp Việc ứng dụng bộ điều khiển PID sẽ giúp tối ưu hóa hiệu suất hoạt động của robot.
Nghiên cứu các thuật toán xử lý ảnh sử dụng open CV vào hệ thống đo khoảng cách và tìm điểm đến
Hiện nay, có nhiều nghiên cứu về robot lau nhà, và đề tài của chúng tôi tập trung vào việc ứng dụng hiệu quả công nghệ xử lý ảnh trong việc điều khiển robot.
1.2.5 Giới hạn của đề tài
Đây là lần đầu tiên chúng tôi thiết kế robot lau nhà và áp dụng công nghệ xử lý ảnh vào thực tế, vì vậy chúng tôi gặp một số hạn chế trong quá trình thực hiện.
Thời gian cho phép chỉ có một học kì
Thiếu kinh nghiệm và trải nghiệm thực tế
Chính vì những hạn chế trên nên robot có thể không thực hiện được những yêu cầu đề ra ban đầu.
Cấu trúc đồ án
Đồ án “Thiết kế robot lau nhà ứng dụng xử lý ảnh” bao gồm các chương như sau: Chương 1: Tổng quan
Chương này trình bày các vấn đề thực tế và lĩnh vực quan tâm, đồng thời tóm tắt những nghiên cứu liên quan đến đồ án trong đời sống.
Chương 1 trình bày tính cấp thiết và lý do hình thành đề tài, đồng thời nêu rõ ý nghĩa khoa học và thực tiễn của nghiên cứu Ngoài ra, chương này cũng xác định mục tiêu nghiên cứu, đối tượng và phạm vi giới hạn, cùng với tóm tắt cấu trúc của đồ án.
Chương 2: Cơ sở lý thuyết
Chương này trình bày các khái niệm và phương pháp giải quyết vấn đề trong đồ án, bao gồm lý thuyết và ứng dụng thực tiễn Nó cũng đề cập đến các giải thuật xử lý ảnh được sử dụng và cách áp dụng những giải thuật này vào mô hình robot.
Chương 3: Lựa chọn các thiết bị phần cứng
Chương này tổng hợp danh sách các thiết bị cần thiết để xây dựng robot, bao gồm thông số kỹ thuật cơ bản, cấu tạo và hướng dẫn sử dụng Bên cạnh đó, nó cũng nêu rõ lý do tại sao các thiết bị này được lựa chọn cho quá trình xây dựng robot.
Chương 4: Xây dựng và áp dụng thuật toán xử lý ảnh vào robot
Chương này mô tả quy trình áp dụng các kỹ thuật xử lý ảnh vào robot nhằm xác định và định vị các đối tượng trong hình ảnh.
Chương 5: Kết quả thực nghiệm
Chương 6: Kết luận và hướng phát triển
Các kết luận về các kết quả, hoạt động của robot
Hướng phát triển của robot trong tương lai.
CƠ SỞ LÝ THUYẾT
Xử lý ảnh là gì ?
Hình ảnh là hình thức thông tin hiệu quả nhất mà con người tiếp nhận Nhờ vào hình ảnh, con người có khả năng nhận biết và hiểu thông tin một cách nhanh chóng và chính xác trong hầu hết các sự kiện xảy ra.
Hình 1.1 Xử lý ảnh là gì
Xử lý ảnh là một khái niệm quan trọng trong việc tiếp nhận và xử lý thông tin qua hình ảnh trên máy tính Nó bao gồm các kỹ thuật như nâng cao chất lượng ảnh, nhận dạng ảnh, nén ảnh và truy vấn ảnh, thường được thực hiện bằng các phần mềm như Photoshop hoặc các sản phẩm của Adobe Trong lĩnh vực công nghệ trí tuệ nhân tạo (AI), xử lý ảnh đóng vai trò hỗ trợ đáng kể cho Robotics và Computer Vision.
Các khái niệm cơ bản trong xử lý ảnh
Pixel là đơn vị cơ bản cấu thành nên hình ảnh, có thể hình dung như một ma trận các ô vuông, mỗi ô đại diện cho một pixel Khi các mức màu hoặc mức xám được điền vào từng pixel, chúng ta tạo ra hình ảnh Số lượng pixel càng nhiều, hình ảnh sẽ càng chi tiết và rõ nét hơn.
Độ phân giải ảnh là chỉ số đo lường lượng thông tin hay số lượng pixel có trong một bức ảnh; độ phân giải càng cao thì chất lượng hình ảnh càng tốt Ví dụ, mắt người có độ phân giải lên đến 576 Megapixel, một con số vượt trội mà hiện nay chưa có camera nào có thể đạt được.
Độ phân giải cao có nghĩa là số lượng pixel nhiều và kích thước từng pixel nhỏ hơn, trong khi độ phân giải thấp có ít pixel hơn và kích thước lớn hơn Mặc dù pixel ở độ phân giải cao nhỏ hơn, nhưng sự phong phú về số lượng giúp tạo ra chất lượng bản in mượt mà hơn Ngược lại, ảnh in với độ phân giải thấp, mặc dù có pixel lớn hơn, sẽ dễ bị vỡ nát.
2.2.2 Thành phần màu trong ảnh Điều gì tạo nên màu sắc trong bức ảnh Ta có thể hiểu một bức ảnh màu gồm 3 lớp: màu lục (Green), màu đỏ (Red), màu lam (Blue) Cũng chính là là 3 thành phần màu cơ bản trong một bức ảnh Mỗi màu hiển thị trên bức ảnh được cấu thành từ 3 thành phần màu này Ví dụ: màu trắng = 255(R) + 225 (G) + 255 (B), màu đen = 0(R) + 0 (G) + 0 (B), màu hồng = 251(R) + 19 (G) + 245 (B),…
Hình 1.4 Các Thành phần màu
Mức xám được tạo ra bằng cách mã hóa cường độ sáng của mỗi điểm ảnh thành giá trị số, thường sử dụng 8 bit để tạo ra 256 mức xám khác nhau.
Hình 1.5 Các mức xám Để chuyển ảnh màu RGB sang ảnh xám, áp dụng công thức cho mỗi Pixel:
Công thức trên dựa trên sự nhạy cảm của mắt người với 3 màu RGB
Hình 1.6 Hình ảnh bàn tay được đưa về hệ màu HSV
HSV và HSL là không gian màu phổ biến trong chỉnh sửa ảnh, phân tích ảnh và thị giác máy tính Không gian màu này dựa trên ba thông số chính: H (Hue) đại diện cho màu sắc, S (Saturation) thể hiện độ đậm đặc và V (Value) chỉ giá trị cường độ sáng Thông thường, HSV được biểu diễn dưới dạng hình trụ hoặc hình nón.
Hình 1.7 Không gian màu HSV
Hình 1.8 Hình tròn biểu diễn màu sắc (Hue)
Trường biểu diễn màu sắc (Hue) được thể hiện qua vòng tròn từ 0 đến 360 độ, bắt đầu từ màu đỏ (red primary) ở 0 độ, tiếp theo là màu xanh lục (green primary) trong khoảng 0-120 độ Từ 120 đến 240 độ, màu sắc chuyển từ xanh lục sang xanh lơ (green primary - blue primary) Cuối cùng, từ 240 đến 360 độ, màu sắc chuyển từ màu xanh lơ về màu đen và quay lại màu đỏ.
Trong mô hình không gian màu hình trụ, giá trị độ sáng (V) được thể hiện bằng cách di chuyển từ đáy hình trụ lên đỉnh, với khoảng giá trị từ 0 đến 1 Ở đáy hình trụ, giá trị V là 0, biểu thị mức độ tối nhất, trong khi ở đỉnh hình trụ, độ sáng đạt giá trị cao nhất.
Giá trị bão hòa của màu sắc (S) được xác định từ tâm hình trụ ra đến mặt trụ, với S có giá trị từ 0 đến 1 Tâm hình trụ là nơi màu sắc nhạt nhất, trong khi S = 1 tại mặt trụ là nơi màu sắc đậm đặc nhất.
Mỗi giá trị (H, S, V) cung cấp thông tin chi tiết về màu sắc, bao gồm sắc độ, độ bão hòa và độ sáng của màu đó.
Chọn một kênh ảnh đa mức, histogram là biểu đồ thể hiện số lượng điểm ảnh tương ứng với từng mức độ Thông thường, chúng ta sử dụng ảnh đa mức xám để xây dựng biểu đồ histogram.
(a) Hình ảnh khi chuyển sang gray (b)Kết quả histogram
Hình 1.9 Ảnh trước cân bằng Histogram
Histogram là công cụ thể hiện độ tương phản sáng tối của hình ảnh Trong trường hợp ảnh trên, các điểm ảnh chủ yếu tập trung vào một vùng xám, dẫn đến việc ảnh trở nên tối Để cải thiện tình trạng này, có thể áp dụng thuật toán cân bằng Histogram nhằm tăng cường độ tương phản.
Thuật toán Histogram xử lý ảnh có L mức xám từ 0 đến L-1, trong đó mỗi điểm ảnh có mức xám i Tổng số điểm ảnh được tính bằng n = n0 + n1 + + nL-1 Quá trình này liên quan đến việc thay đổi giá trị của các điểm ảnh với mức xám i thành giá trị mức xám nguyên gần nhất.
Kết quả ảnh thu được có độ tương phản tốt hơn, giá trị các điểm ảnh trải đều trên các mức
(b) Hình ảnh khi chuyển sang gray (b)Kết quả histogram
Hình 1.10 Kết quả cân bằng Histogram
2.2.6 Xử lý theo ngưỡng (Thresholding)
Xử lý ngưỡng sử dụng một giá trị ngưỡng trong khoảng 0 đến 255 để xử lý một kênh màu hoặc ảnh đa mức xám, cho ra kết quả là ảnh nhị phân, trong đó mỗi pixel được biểu diễn bằng 1 bit.
Ngưỡng đơn là phương pháp chuyển đổi ảnh đa mức xám thành ảnh nhị phân (đen trắng) bằng cách so sánh giá trị điểm ảnh với một ngưỡng T cố định Nếu giá trị điểm ảnh vượt quá ngưỡng T, điểm ảnh sẽ được gán màu trắng; ngược lại, nếu thấp hơn, điểm ảnh sẽ được gán màu đen.
(a) Xử lý ngưỡng ảnh xám (b)Kết quả Hình 1.11 Xử lý ngưỡng ảnh xám (trái) và kết quả (phải)
Ngưỡng kép: sử dụng 2 ngưỡng T 1 và T 2 như sau:
(a) Xử lý ngưỡng kép (b)Kết quả
Hình 1.12 Xử lý ngưỡng kép ảnh xám (trái) và kết quả (phải) Ứng dụng của thresholding:
Tách vật thể khỏi nền
Loại bỏ các chi tiết không cần thiết
2.2.7 Lọc không gian (Spatial filter)
Lọc không gian là cách xử lý một điểm ảnh có sự ảnh hưởng của các điểm ảnh xung quanh nó
Bộ điều khiển pid
Bộ điều khiển PID (Proportional Integral Derivative) là một thiết bị điều khiển vi tích phân tỉ lệ có hồi tiếp, được ứng dụng phổ biến trong các hệ thống điều khiển công nghiệp Nó hoạt động bằng cách tính toán sai số, tức là chênh lệch giữa giá trị đo và giá trị đặt mong muốn, từ đó điều chỉnh giá trị điều khiển đầu vào để giảm thiểu sai số Bộ điều khiển PID có thể được áp dụng mà không cần mô hình toán học của hệ thống, làm cho nó trở thành lựa chọn lý tưởng cho những hệ thống không có mô hình rõ ràng hoặc quá phức tạp Để đạt hiệu quả tối ưu, các thông số PID cần được điều chỉnh phù hợp với đặc tính của từng hệ thống, mặc dù kiểu điều khiển vẫn giữ nguyên.
2.3.1 Lý thuyết về bộ điều khiển PID
Bộ điều khiển PID sử dụng một thuật toán tính toán bao gồm ba thông số riêng biệt, thường được gọi là điều khiển ba khâu, bao gồm các giá trị tỉ lệ (P), tích phân (I) và vi phân (D).
I, và D Giá trị tỉ lệ xác định tác động của sai số hiện tại, giá trị tích phân xác định tác động của tổng các sai số quá khứ, và giá trị vi phân xác định tác động của tốc độ biến đổi sai số Tổng chập của ba tác động này dùng để điều chỉnh quá trình thông qua một phần tử điều khiển như vị trí của van điều khiển hay bộ nguồn của phần tử gia nhiệt, cụ thể về robot cân bằng trong bài là 2 bánh xe Nhờ vậy, những giá trị này có thể làm sáng tỏ về quan hệ thời gian: P phụ thuộc vào sai số hiện tại, I phụ thuộc vào tích lũy các sai số quá khứ, và D dự đoán các sai số tương lai dựa vào tốc độ thay đổi hiện tại Bằng cách điều chỉnh 3 hằng số trong giải thuật của bộ điều khiển PID, bộ điều khiển có thể dùng trong những thiết kế có yêu cầu đặc biệt Đáp ứng của bộ điều khiển có thể được mô tả dưới dạng độ nhạy sai số của bộ điều khiển, giá trị mà bộ điều khiển vọt lố, điểm đặt và giá trị dao động của hệ thống Lưu ý là công dụng của giải thuật PID trong điều khiển không đảm bảo tính tối ưu hoặc ổn định cho hệ thống
Phương trình của bộ điều khiển PID:
Khâu tỉ lệ, hay còn gọi là độ lợi, ảnh hưởng đến giá trị đầu ra theo tỷ lệ với giá trị sai số hiện tại Để điều chỉnh đáp ứng tỉ lệ, sai số này được nhân với một hằng số Kp, được gọi là độ lợi tỉ lệ.
Khâu tỉ lệ được cho bởi:
Pout: thừa số tỉ lệ đầu ra
Kp: độ lợi tỉ lệ, thông số điều chỉnh e: sai số t: thời gian tức thời
Khâu tỉ lệ ảnh hưởng đến giá trị sai số nhiều nhất, đây là khâu chính giúp giảm sao số của hệ thống
Hình 1.23 Thể hiện tác động của khâu tỉ lệ trong hệ thống
Phân phối của khâu tích phân, hay còn gọi là reset, tỉ lệ thuận với biên độ sai số và khoảng thời gian xảy ra sai số Tổng sai số tức thời theo thời gian (tích phân sai số) giúp ta có được tích lũy bù đã được hiệu chỉnh Sai số tích lũy sau đó được nhân với độ lợi tích phân và cộng với tín hiệu đầu ra của bộ điều khiển.
Thừa số tích phân được cho bởi:
Iout: thừa số tích phân của đầu ra
Ki: độ lợi tích phân, thông số điều chỉnh e: sai số t: thời gian tức thời
Khâu tích phân, khi kết hợp với khâu tỉ lệ, giúp tăng tốc độ chuyển động đến điểm đặt và loại bỏ sai số ổn định với tỷ lệ phụ thuộc vào bộ điều khiển Tuy nhiên, do khâu tích phân phản ánh sai số tích lũy trong quá khứ, nó có thể dẫn đến tình trạng giá trị hiện tại vượt quá giá trị đặt, gây ra độ lệch và chuyển động qua điểm đặt theo các hướng khác nhau.
Hình 1.24 Ảnh hưởng của khâu tích phân trong hệ thống
Tốc độ thay đổi của sai số trong quá trình được xác định thông qua độ dốc của sai số theo thời gian, tức là đạo hàm bậc một theo thời gian, và được nhân với độ lợi tỉ lệ Kd Biên độ phân phối khâu vi phân, hay còn gọi là tốc độ, trên tất cả các hành vi điều khiển bị giới hạn bởi độ lợi vi phân Kd.
Thừa số vi phân được cho bởi:
Dout: thừa số vi phân của đầu ra
Kd: độ lợi vi phân, một thông số điều chỉnh e: sai số t: thời gian tức thời
Khâu vi phân trong bộ điều khiển giúp làm chậm tốc độ thay đổi của đầu ra, đóng vai trò quan trọng trong việc đạt được điểm đặt Nó được áp dụng để giảm biên độ vọt lố do thành phần tích phân gây ra và tăng cường độ ổn định cho bộ điều khiển hỗn hợp Tuy nhiên, việc vi phân tín hiệu có thể khuếch đại nhiễu, làm cho khâu này nhạy cảm hơn với nhiễu trong sai số, và nếu nhiễu cùng với độ lợi vi phân quá lớn, có thể dẫn đến sự không ổn định trong quá trình điều khiển.
Hình 1.25 Ảnh hưởng của khâu vi phân trong hệ thống
2.3.5 Tác động độc lập của các khâu trong bộ điều khiển PID
Thông số Thời gian khởi động Độ vọt lố Thời gian xác lập
Sai số ổn định Độ ổn định
Kp Giảm Tăng Thay đổi nhỏ Giảm Giảm cấp
Ki Giảm Tăng Tăng Giảm đáng kể Giảm cấp
Kd Giảm ít Giảm ít Giảm ít
Về lý thuyết không tác đông
Cải thiện nếu Kd nhỏ
Thư viện OpenCV
OpenCV (Open Computer Vision) là thư viện mã nguồn mở hàng đầu cho xử lý thị giác máy tính, machine learning và xử lý ảnh Được viết bằng C/C++, OpenCV có tốc độ tính toán nhanh, phù hợp cho các ứng dụng thời gian thực Thư viện này hỗ trợ nhiều ngôn ngữ lập trình như C/C++, Python và Java, cho phép sử dụng trên các hệ điều hành Windows, Linux, MacOS, Android và iOS Hiện tại, OpenCV có hơn 47 nghìn người dùng trong cộng đồng và đã được tải xuống hơn 6 triệu lần.
Dự án OpenCV bắt đầu từ năm 1999 và được giới thiệu tại hội nghị IEEE về thị giác máy và nhận dạng vào năm 2000 Tuy nhiên, phiên bản chính thức OpenCV 1.0 chỉ được công bố vào năm 2006.
Vào tháng 10 năm 2009, phiên bản OpenCV thế hệ thứ hai (phiên bản 2.x) đã được phát hành, đánh dấu sự ra đời của giao diện C++ thay vì giao diện C như phiên bản đầu tiên (bản 1.1 pre-release ra mắt năm 2008) Phiên bản mới này có nhiều điểm khác biệt quan trọng so với phiên bản trước, mang lại cải tiến và tính năng mới cho người dùng.
Thư viện OpenCV, ban đầu được Intel hỗ trợ và sau đó được Willow Garage, một phòng thí nghiệm nghiên cứu công nghệ robot, tiếp tục phát triển, hiện nay vẫn là một thư viện mã nguồn mở OpenCV được phát triển bởi một quỹ phi lợi nhuận và nhận được sự ủng hộ mạnh mẽ từ cộng đồng.
OpenCV hỗ trợ đa nền tảng Nó hỗ trợ cả Windows và Linux, và gần đây hơn là MacOSX Với giao diện của nó là nền tảng độc lập.
LỰA CHỌN CÁC THIẾT BỊ PHẦN CỨNG
Sơ đồ chung kết nối phần cứng
Hình 2.1 Sơ đồ kết nối phần cứng của robot
Lựa chọn các thiết bị phần cứng
Hình 2.2 Board Raspberry Pi 3 Model B
Raspberry Pi là một máy tính nhỏ gọn, mạnh mẽ, có khả năng chạy các hệ điều hành như Linux và Windows 10, đồng thời hỗ trợ nhiều ứng dụng Với 40 chân GPIO, thiết bị này cho phép giao tiếp và điều khiển các board mạch và thiết bị ngoại vi, mở ra nhiều ứng dụng thú vị Được phát triển bởi tổ chức Raspberry Pi Foundation với mục tiêu giảng dạy máy tính cho trẻ em và cung cấp công cụ học tập giá rẻ, Raspberry Pi đã nhanh chóng được cộng đồng đón nhận nhờ tính ứng dụng cao và phần cứng được hỗ trợ tốt Thiết bị này lý tưởng cho các ứng dụng yêu cầu xử lý mạnh mẽ, đa nhiệm và chi phí thấp, với hàng ngàn ứng dụng đa dạng đã được cài đặt trên Raspberry Pi.
Raspberry Pi Foundation được thành lập vào năm 2009, với sự hỗ trợ từ ba nhà cung cấp linh kiện điện tử lớn là EGOMAN, QSIDA và SONY, đã phát triển sản phẩm Raspberry Pi Trên toàn cầu, người dùng có thể mua Raspberry Pi thông qua các nhà phân phối như EGOMAN, ELEMENT14 và RS Component.
Raspberry Pi, ra mắt lần đầu vào tháng 2 năm 2012, đã trải qua nhiều phiên bản nâng cấp phần cứng và hướng đến các mục tiêu khác nhau Các phiên bản theo thứ tự phát hành bao gồm: Pi A, Pi A+, Pi 1 B, Pi 1 B+, Pi 2 B, Pi Zero và Pi 3 B.
Bảng 2 Thông số kỹ thuật phần cứng dòng Raspberry Pi 3 Model B:
Vi xử lý Broadcom BCM2837, ARMv8 (64bit) quad-core
GPU Broadcom VideoCore IV, OpenGL ES 2.0,OpenVG 1080p60 ,
Tốc độ xử lý 1.2 Ghz
4xUSB 2.0 10/100mb Ethernet wifi 802.11 n Bluetooth 4.1 CSI, DSI Video & audio 1080p HDMI, stero audio 3.5mm jack
Hình 2.3 Camera Raspberry Pi V2 8MP
Camera Raspberry Pi V2 8MP là phiên bản mới nhất của Camera Module dành cho Raspberry Pi, sử dụng cảm biến ảnh IMX219 8-megapixel từ Sony, thay thế cho cảm biến OV5647 cũ Với cảm biến IMX219, Camera Module mang đến chất lượng hình ảnh vượt trội cho các dự án của bạn.
Camera Raspberry Pi V2 8MP mang đến sự nâng cấp vượt trội về chất lượng hình ảnh và video, cho phép chụp ảnh và quay phim với độ phân giải HD 1080p30, 720p60 hoặc VGA90 Việc sử dụng và lập trình với Camera Module trên Raspberry Pi rất đơn giản; chỉ cần cắm vào cổng Camera và cấu hình một chút là bạn có thể bắt đầu sử dụng ngay.
Camera Raspberry Pi V2 8MP tương thích với tất cả các dòng Raspberry Pi 1, 2 và 3, cho phép điều khiển qua MMAL và V4L APIs Nhiều thư viện phát triển trên Python từ cộng đồng Raspberry Pi giúp người dùng dễ dàng tìm hiểu và sử dụng camera này.
Lens Fixed focus Độ phân giải của camera 3280 x 2464 pixel stills Độ phân giải video HD 1080p30, 720p60 và 640 x 480p90
Kết nối picamera với raspberry pi
Hình 2.4 Kết nối picamera với raspberry pi
Ta dùng cáp FFC/FPC 15 pin ngược chiều để kết nối picamera với raspberry pi qua khe cắm cáp camera được thiết kế sẵn trên board raspberry pi
Sau khi kết nối picamera vào raspberry pi, bước tiếp theo là chúng ta phải thiết lập kết nối camera phần mềm trong raspberry pi
Ta chọn mở (Enabled) các chế độ Camera và SSH trong cửa số thiết lập thông số raspberry pi để có thể sử dụng picamera
Nếu bạn vẫn chưa thấy camera hoạt động, chúng ta phải enable camera lại và khởi động lại raspberry pi
Động cơ bước 5V là một loại động cơ cho phép điều chỉnh chính xác số góc quay theo ý muốn, với mỗi lần quay tương ứng với 1 bước (step) Số bước này phụ thuộc vào loại động cơ bước mà bạn sử dụng; ví dụ, nếu động cơ có 72 bước, nó sẽ cần quay 72 bước để hoàn thành một vòng quay Mặc dù số bước là hằng số, bạn có thể áp dụng công nghệ micro step để cải thiện khả năng quay của động cơ bước.
3.2.4 Driver điều khiển động cơ bước A4988
Hình 2.8 Sơ đồ kết nố với động cơ
A4988 là một driver điều khiển động cơ bước nhỏ gọn, hỗ trợ nhiều chế độ hoạt động như Full, 1/2, 1/4, 1/8 và 1/16 Thiết bị cho phép điều chỉnh dòng ra cho động cơ và tự động ngắt điện khi quá nhiệt, đảm bảo hiệu suất và an toàn cho động cơ bước lưỡng cực.
Công suất ngõ ra lên tới 35V, dòng đỉnh 2A
Có 5 chế độ: full bước, 1/2 bước, 1/4 bước, 1/8 bước, 1/16 bước Điểu chỉnh dòng ra bằng triết áp, nằm bên trên Current Limit = VREF × 2.5
Tự động ngắt điện khi quá nhiệt
Khi lựa chọn chế độ hoạt động full, 1/2 hay 1/4, bạn cần sử dụng 3 pin MS1, MS2 và MS3 Thông thường, tôi kết nối trực tiếp 3 pin này với công tắc bit 3p để dễ dàng thiết lập từ phần cứng Lưu ý rằng nếu 3 pin này được thả nổi, chế độ sẽ mặc định là full step.
Để điều khiển động cơ, sử dụng pin ENABLE để bật hoặc tắt module, với mức LOW là bật và mức HIGH là tắt Chiều quay của động cơ được điều khiển qua pin DIR, trong khi pin STEP điều khiển bước của động cơ, với mỗi xung tương ứng với một bước hoặc vi bước.
Mạch giảm áp DC (hình 3.12) có dải điện áp vào từ 4.5 – 30V và dòng ra lên tới 12A, rất phù hợp để cung cấp nguồn cho các động cơ trên robot Thiết kế của mạch đơn giản, với một đầu vào điện áp và một ngõ ra có thể điều chỉnh điện áp thông qua biến trở tinh gắn trực tiếp trên board Ngoài ra, board còn được trang bị 2 miếng nhôm tản nhiệt, giúp cải thiện hiệu quả tản nhiệt và nâng cao công suất hoạt động.
Hình 2.11 Mạch giảm áp Điện áp cung cấp 4.5 -30V DC Điện áp ngõ ra 1.25 – 30V DC
Công suất 100W ( lên đến 200W nếu tản nhiệt tốt )
Tần số hoạt động 300KHz
Bảng 4 Thông số kỹ thuật của mạch giảm áp
Trong robot chúng em sử dụng nguồn là pin Lipo 3S 2200mAh
Pin có điện áp 11.1V, đạt tối đa 12.6V khi sạc đầy và tiêu thụ dòng 220mA trong 1 giờ Ưu điểm của pin này là dung lượng lớn so với kích thước, có thể chế tạo dưới nhiều hình dạng và kích thước khác nhau Ngoài ra, pin nhẹ và mỏng hơn so với pin Li-Ion, đồng thời có dòng xả mạnh, phù hợp cho nhiều thiết bị như smartphone, máy bay và xe mô hình.
Nhược điểm của loại pin này là giá cả vẫn còn cao so với các loại pin sạc khác Tuổi thọ của pin khoảng 1000 vòng sạc xả, nhưng sau khoảng 300 vòng, dung lượng pin sẽ giảm 20% so với lúc mới Tuổi thọ này chịu ảnh hưởng đáng kể từ cách sạc và xả pin Để đảm bảo nguồn cấp cho board Arduino ổn định, chúng tôi đã sử dụng mạch ổn áp DC-DC mini.
3.2.7 Mạch ổn áp LM2596 DC-DC
Mạch ổn áp LM2596 DC-DC có khả năng cung cấp điện áp ổn định cho các board mạch, với dòng ra tối đa lên đến 3A Ưu điểm nổi bật của mạch này là kích thước nhỏ gọn, rất phù hợp cho các ứng dụng trong robot nhỏ.
Thông số: Điện áp đầu vào: 4V-35V điện áp đầu ra: 1.23V-30V
Hiệu suất chuyển đổi: 92% (tối đa)
Tần số hoạt động: 150kHz
Nhiệt độ hoạt động: -40 ℃ đến + 85 ℃
3.2.8 Relay 5VDC 1 cặp tiếp điểm
Module 1 relay 5V gồm 1 rơ le hoạt động tại điện áp 5VDC, chịu được hiệu điện thế lên đến 250VAC 10A Module relay 1 kênh được thiết kế chắc chắn, khả năng cách điện tốt Trên module đã có sẵn mạch kích relay sử dụng transistor và IC cách ly quang giúp cách ly hoàn toàn mạch điều khiển (vi điều khiển) với rơ le bảo đảm vi điều khiển hoạt động ổn định Có sẵn header rất tiện dụng khi kết nối với vi điều khiển
XÂY DỰNG VÀ ÁP DỤNG THUẬT TOÁN XỬ LÝ ẢNH VÀO
Khái quát về nguyên lý hoạt động của robot
Picamera có nhiệm vụ lấy hình ảnh về để xử lý Ảnh của picamera có dạng ảnh màu 3 lớp RGB
Raspberry Pi đảm nhận nhiệm vụ xử lý hình ảnh từ camera picamera, giúp xác định đối tượng trong hình và vị trí của chúng Qua đó, hệ thống sẽ tính toán tọa độ của đối tượng và thực hiện các xử lý cần thiết.
Lưu đồ giải thuật của robot
Hình 3.2 Lưu đồ giải thuật của robot
Theo lưu đồ giải thuật, robot thực hiện các bước như sau: sau khi khởi tạo, camera sẽ thu nhận hình ảnh và xử lý để xác định có vết bẩn hay không Nếu phát hiện vết bẩn, robot sẽ sử dụng thuật toán để tìm đường đi thông qua xử lý ảnh Nếu không có vết bẩn, robot sẽ tiếp tục thu nhận hình ảnh Khi đến vị trí có vết bẩn, các thuật toán sẽ điều khiển động cơ để lau sạch Sau đó, camera sẽ tiếp tục thu nhận hình ảnh xung quanh để tìm đường trở về Khi về đến vị trí cũ, nếu người dùng nhấn dừng, robot sẽ dừng lại, còn nếu không, camera sẽ tiếp tục thu nhận hình ảnh và lặp lại quy trình.
Các bước xử lý ảnh trong raspberry
Hình 3.3 Các bước cơ bản xử lý hình ảnh trong raspberry pi
Picamera thu hình ảnh dưới dạng RGB ba lớp, với chất lượng hình ảnh phụ thuộc vào camera, độ phân giải và số khung hình mỗi giây (fps) Chúng tôi sử dụng camera 8MP, cho ra hình ảnh kích thước 320x320 nhằm tăng tốc độ xử lý cho Raspberry Pi, với tốc độ khung hình đạt 40 fps.
Tiền xử lý hình ảnh là bước quan trọng sau khi thu thập dữ liệu từ picamera, nhằm nâng cao chất lượng hình ảnh Quá trình này sử dụng bộ lọc Gaussian để làm mượt hình ảnh và loại bỏ nhiễu từ môi trường, giúp cải thiện khả năng xử lý ảnh.
Trong quá trình xử lý hình ảnh, đối tượng được chuyển đổi không gian màu và sử dụng ngưỡng để xác định đối tượng cần tìm Các thuật toán hình thái học sẽ được áp dụng nhằm lọc nhiễu và nâng cao độ chính xác trong nhận dạng Đầu tiên, hình ảnh từ camera sẽ được đưa vào lọc Gaussian để làm mịn trước khi tiến hành xử lý chính, sử dụng hàm cv2.GaussianBlur(img, (5, 5), 0).
Img: đầu vào là hình ảnh từ camera
(5,5) là cấu trúc phần tử (kernel) có kích thước 5x5
Ta đưa ảnh sau khi lọc chuyển đổi từ không gian màu RGB sang không gian màu HSV bằng hàm cv2.cvtColor(blurred, cv2.COLOR_BGR2HSV)
Blurred: là hình ảnh sau khi lọc Gaussian
cv2.COLOR_BGR2HSV: là chuyển từ không gian màu RGB sang HSV
Sau khi chuyển đổi không gian màu sang HSV, chúng ta xác định ngưỡng màu cho đối tượng cần tìm trong hình ảnh OpenCV cung cấp hàm cv2.inRange(hsv, greenLower, greenUpper) để thực hiện việc này.
hsv: là hình ảnh trong không gian màu HSV
greenLower: ngưỡng dưới của màu của đối tượng
greenUpper : ngưỡng trên của màu của đối tượng
I utilize morphological transformations to process noise signals from the environment present in images This involves using Erosion and Dilation techniques, specifically the functions cv2.erode(mask, None, iterations=2) and cv2.dilate(mask, None, iterations=2).
Mask: ảnh sau khi lấy ngưỡng
None: cấu trúc phần tử mặc định
Iterations: độ lớn của cấu trúc phần tử (2x2)
Sau khi xử lý xong đối tượng và nền, hình ảnh sẽ chuyển sang dạng ảnh nhị phân, trong đó đối tượng hiển thị bằng màu trắng và nền sẽ là màu đen.
Chúng ta sử dụng hàm cv2.findContours(thresh,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE ) để xác định xem có đối tượng trong hình không
Thresh: ảnh nhị phân sau khi đã tách đối tượng ra khỏi nền
cv2.RETR_TREE : chế độ đi tìm đường viền
cv2.CHAIN_APPROX_SIMPLE: phương pháp xấp xỉ đường viền
Nếu hình ảnh chứa đối tượng, hàm findContours sẽ trả về giá trị lớn hơn 0 Để xác định các đặc tính của đối tượng, ta sử dụng hàm M = cv2.moments(img) Điểm trung tâm của đối tượng trong hình được tính theo công thức cụ thể.
00Sau khi xác định được tọa độ, ta gửi tọa độ này về cho arduino để arduino điều khiển các cơ cấu chấp hành.
Giải thuật điều khiển động cơ
Hình 3.4 Giải thuật tìm đường về điểm xuất phát
Sau khi khởi tạo, hai động cơ chính sẽ được điều khiển bằng PWM để tìm đường đến vị trí vết bẩn.
Giải thuật tìm đường về vị trí xuất phát
Hình 3.5 Giải thuật tìm đường về điểm xuất phát
Để tìm đường về điểm xuất phát, robot sẽ so sánh hình ảnh thu được với hình ảnh lưu trữ của điểm xuất phát Dựa vào các đặc trưng của ảnh, robot có thể xác định và tìm ra lộ trình trở về vị trí ban đầu.
KẾT QUẢ THỰC NGHIỆM
Hình 4.1 Robot nhận thấy rác ở phía trước camera
Hình ảnh mô tả hai trục tọa độ màu đỏ và xanh, với tâm trục tọa độ là tâm của camera và vật thể Sau khi chuyển đổi sang hệ màu và áp dụng ngưỡng, chúng ta đã tách biệt được vật thể và nền Vật thể nằm phía trước camera, với sai số so với tâm màn hình là 30 theo trục x và -2 theo trục y.
Robot phát hiện rác ở phía trên camera, với sai số so với tâm màn hình là 10 trên trục x và 109 trên trục y.
Hình 4.3 Robot nhận thấy rác phía dưới bên trái của camera
Tiếp theo, ta thấy vật lúc này ở bên trái phía dưới của vật Sai số so với tâm theo trục x là 142, trục y là -146
Robot phát hiện rác ở phía dưới bên phải của camera, với sai số so với tâm lần lượt là -106 trên trục x và -123 trên trục y.
Robot phát hiện rác ở góc trên bên trái của camera, với sai số so với tâm màn hình là 143 theo trục x và 126 theo trục y.
5.2 Kết quả chạy thử mô hình
Nhóm chúng em đã tiến hành thực nghiệm với robot trên nền nhà màu trắng, đặt hai điểm dơ với màu sắc khác nhau: điểm dơ thứ nhất màu xanh dương và điểm dơ thứ hai màu xanh lá Sau khi hoàn tất việc đặt điểm dơ, chúng em bắt đầu cho robot chạy thử nghiệm.
Sau khi thu nhận hình ảnh, robot phát hiện rác và bắt đầu điều khiển PID để giữ rác ở trung tâm màn hình camera thông qua xuất xung PWM Robot tiếp tục di chuyển và xử lý hình ảnh cho đến khi không còn thấy vật thể nào, sau đó tiến lên và bắt đầu quét dọn Mặc dù robot chưa hoàn toàn ổn định trong việc bám vật, nhưng nó đã đến vị trí cần thiết để lau dọn Sau khi hoàn thành nhiệm vụ, robot quay trở về vị trí ban đầu Các hình ảnh dưới đây minh họa quy trình lau dọn của robot.
Hình 4.6 Robot phát hiện vật dơ và bắt đầu xử lý ảnh
Hình 4.7 Robot đã đến điểm dơ đầu tiên và bắt đầu hút
Hình 4.8 Robot đến điểm dơ thứ hai và hút
Hình 4.9 Robot đã thực hiện hút
Hình 4.10 Sau khi hút xong, robot trở về chỗ cũ