TỔNG QUAN
Đặt vấn đề
Trong thời đại ngày nay cùng với sự phát triển mạnh mẽ của Khoa học công nghệ nói riêng và tất cả các ngành, các lĩnh vực nói chung, các thiết bị điện tử thông minh đang ngày càng xuất hiện phổ biến Trong đó phải kể đến một vài ứng dụng của trí tuệ nhân tạo, như các ứng dụng của nó trong y tế, trong việc phát hiện các mầm mống bệnh từ những chiếc máy xử lý hình ảnh hiện đại để phát hiện bệnh một cách rõ rang, hoặc có thể được ứng dụng trong Smart City, giúp cuộc sống con người tốt đẹp hơn
Song song với sự phát triển đó thì vẫn đề rác thải vẫn đang là một điểm nhấn nguy hiểm cho môi trường sống của con người trên toàn thế giới Sự ô nhiễm cho đến thời điểm hiện tại thì không chỉ dừng lại cụ thể ở môi trường sống nào mà có thể nói là tất cả Chính vì vậy việc bảo vệ và cải thiện môi trường sống không chỉ đơn thuần là mọi người tự ý thức về cách sống về suy nghĩ mà cụ thể là những giải pháp, những gì mà thực tiễn để bắt tay vào làm sạch sự ô nhiễm đó Cho nên đề tài “XÂY DỰNG
MÔ HÌNH THÙNG RÁC DI CHUYỂN TỰ ĐỘNG VÀ THEO CỬ CHỈ TAY” của nhóm thực hiện là những sinh viên Trường Đại học Sư phạm Kỹ thuật Tp.HCM ngoài việc ý tưởng và mong muốn góp phần cải tạo môi trường ô nhiễm, đó còn là sự vận dụng trải nghiệm những gì đã học được vào đề tài nhằm đạt được mục đích đề ra sao cho hiệu quả nhất.
Tình hình nghiên cứu hiện nay
1.2.1 Tình hình nghiên cứu trong nước
Hơn nửa thể kỷ qua, robot đã có những bước phát triển và tiến hóa mạnh mẽ Các hướng nghiến cứu robot chuyển từ robot công nghiệp sang phát triển các robot dịch vụ vì nó đa dụng và đưa robot hòa nhập vào nhu cầu xã hội của loài người
Theo dự báo thì trong vòng 20 năm tới mỗi người sẽ có nhu cầu sử dụng một robot cá nhân như cần một máy tính PC hiện nay và robot sẽ là tâm điểm của một cuộc cách mạng công nghệ lớn sau Internet Với xu thế này, cùng với các ứng dụng truyền thống khác của robot trong công nghiệp, y tế, giáo dục đào tạo, giải trí và đặc biệt trong an ninh quốc phòng thì thị trường robot và các dịch vụ ăn theo robot sẽ vô cùng lớn Bài báo này điểm qua xu hướng phát triển của robot trên thế giới hơn nửa thế kỷ qua, tóm tắt tình hình nghiên cứu chế tạo robot ở Việt Nam thời gian qua và nêu một số ý kiến về phát triển robot ở Việt Nam thời gian tới
Robot đã có những tiến bộ đáng kể trong hơn nửa thế kỷ qua Robot đầu tiên được ứng dụng trong công nghiệp vào những năm 60 để thay thế con người làm các công việc nặng nhọc, nguy hiểm trong môi trường độc hại Do nhu cầu cần sử dụng ngày càng nhiều trong các quá trình sản xuất phức tạp nên rô bốt công nghiệp cần có những khả năng thích ứng linh họat và thông minh hơn Ngày nay, ngoài ứng dụng sơ khai ban đầu của rô bốt trong chế tạo máy thì các ứng dụng khác như trong y tế, chăm sóc sức khỏe, nông nghiệp, đóng tàu, xây dựng, an ninh quốc phòng và gia đình đang có nhu cầu gia tăng đang là động lực cho các rô bốt địa hình và rô bốt dịch vụ phát triển
1.2.2 Tình hình nghiên cứu ngoài nước
Sau đây là một số đề tài nghiên cứu, phát triển robot thùng rác ngoài nước: Các kỹ sư của Đại học Kỹ thuật Toyohashi (Nhật Bản) đã giới thiệu rô bốt thùng rác có tên viết tắt là STB, được trang bị bộ xử lý, máy quay video và loa, cũng như cảm biến hồng ngoại hỏa điện, cảm biến tia hồng ngoại và cảm biến khoảng cách Dưới dạng thùng rác di động, robot STB có thể xác định được nơi nào là khu vực công cộng, nhờ vào cảm biến phát hiện thân nhiệt của người đi đường và chạy đến nơi có nhiều người tụ tập Với sự hỗ trợ của cảm biến khoảng cách, rô bốt có thể tự động di chuyển một cách an toàn đến chỗ đông đúc người qua lại, và khi đến nơi, nó sẽ dùng camera kết hợp với thuật toán nhận dạng vật thể để tìm ra rác
Theo Đài phát thanh France Bleu, nhà ga của thành phố Orléans, miền trung Pháp vừa đưa vào sử dụng robot thùng rác mang tên Baryl Ban giám đốc ga cho biết đây là biện pháp làm tăng ý thức giữ gìn vệ sinh của hành khách vì “ngay cả khi quá lười biếng thì vẫn có thùng rác đi đến tận chỗ của bạn” Với thiết kế trông giống một chiếc giày, Baryl di chuyển tự động với đèn nhấp nháy rất vui mắt và được gắn bộ cảm ứng giúp nhận ra người để đến xin rác Sức chứa của Baryl vào khoảng 20 lít và khi thùng đầy, robot sẽ tự động gửi tin nhắn đến điện thoại của người quản lý.
Tính cấp thiết của đề tài
Ngày nay cùng với sự phát triển của các ngành khoa học và kỹ thuật, kỹ thuật điện - điện tử và điều khiển tự động kết hợp với trí tuệ nhân tạo (AI) đóng vai trò hết sức quan trọng trong mọi lĩnh vực khoa học, quản lý, công nghiệp tự động hóa cung cấp thông tin, …Do đó, chúng ta phải nắm bắt và vận dụng nó một cách có hiệu quả nhằm góp phần vào sự nghiệp phát triển nền khoa học kỹ thuật thế giới nói chung và trong sự phát triển kỹ thuật điều khiển tự động hóa nói riêng Với những kỹ thuật tiên tiến như vi xử lý, PLC, vi mạch số, … được ứng dụng rộng rãi vào các lĩnh vực điều khiển, thì các hệ thống điều khiển cơ khí thô sơ, với tốc độ xử lý chậm chạp ít chính xác được thay thế bằng các hệ thống điều khiển tự động
Song song với sự phát triển của khoa học kỹ thuật thì môi trường là vấn đề được quan tâm hàng đầu Ở các quốc gia tiên tiến, vấn đề giữ gìn vệ sinh môi trường rất được chú trọng nên việc xả rác và nước thải bừa bãi hầu như không còn nữa Người dân được giáo dục rất kỹ về ý thức bảo vệ môi trường sống xanh – sạch – đẹp Đáng buồn thay, ở nước ta, hiện tượng vứt rác ra đường hoặc những nơi công cộng, không giữ gìn vệ sinh đường phố rất phổ biến Hiện tượng không giữ gìn vệ sinh đường phố có rất nhiều biểu hiện nhưng phổ biến nhất là vứt rác ra đường hoặc nơi công cộng Vậy do đâu mà hiện tượng xả rác bừa bãi lại tràn làn như vậy? Nguyên nhân đầu tiên là do những thói quen xấu lười biếng và lối sống lạc hậu ích kỷ chỉ nghĩ đến quyền lợi cá nhân của một số người
Thông qua việc thực hiện đề tài “XÂY DỰNG MÔ HÌNH THÙNG RÁC DI
CHUYỂN TỰ ĐỘNG VÀ THEO CỬ CHỈ TAY“ này ngoài việc nhóm thực hiện có cơ hội vận dụng được những kiến thức mà đã được đào tạo trong suốt quá trình học tập tại trường, thì nhóm còn được trực tiếp làm ra một mô hình thực tế, trải nghiệm được rất nhiều điều thực tiễn mà một người kỹ sư tương lai rất cần khi ra trường Có cơ hội học tập và nghiên cứu thêm những kiến thức về lĩnh vực điện –điện tử, công nghệ tự động, lập trình
Bước đầu có được mô hình Robot thùng rác thực tế ở các nơi công cộng như trường học, công viên, trung tâm thương mai
Một phần ý tưởng thực hiện đề tài còn mới mẻ nên có thể làm cơ sở để kế thừa và cải tiến sau này nhằm hoàn thiện Mô hình Robot.
Mục đích của đề tài
Thiết kế và thi công một mô hình thùng rác di động có chức năng:
Robot thùng rác có thể tự di chuyển và né vật cản
Báo lượng rác cho người quản lý thông qua app
Điều khiển mô hình thùng rác bằng app
Nhận diện cử chỉ giơ bàn tay của người muốn bỏ rác
Phát ra âm thanh trong khi di chuyển.
Phương pháp nghiên cứu
Trong đề tài này, nhóm đã sử dụng các phương pháp nghiên cứu sau:
Phương pháp tham khảo tài liệu: bằng cách thu thập thông tin từ sách, tạp chí về điện tử, viễn thông, truy cập từ mạng Internet, các đồ án của khóa trước
Phương pháp quan sát: khảo sát một số mạch điện từ mạng Internet, khảo sát robot tránh vật cản hiện hành để chọn lựa phương án thiết kế sau này
Phương pháp khảo sát và thực nghiệm: từ những ý tưởng và kiến thức của nhóm, kết hơp sự hướng dẫn của giáo viên, nhóm đã lắp ráp thử nghiệm nhiều dạng mạch khác nhau để từ đó chọn lọc những mạch điện tối ưu.
Bố cục đồ án
Giới thiệu sơ lược về tình hình nghiên cứu hiện nay cũng như tính cấp thiết của đề tài
Chương 2: Cơ sở lý thuyết
Nêu các lý thuyết cần thiết sử dụng trong đề tài
Chương 3: Thiết kế và xây dựng hệ thống
Trình bày sơ đồ hệ thống và giải thích hoạt động của từng khối trong hệ thống Đưa ra các phương pháp lựa chọn phần cứng và xác định lựa chọn phù hợp với yêu cầu của đề tài
Chương 4: Kết quả thực hiện
Tính toán đưa ra giải thuật, thuật toán phần mềm Trình bày kết quả đã thực hiện về phần cứng và phần mềm
Chương 5: Kết quả so sánh, thực nghiệm, phân tích, tổng hợp Đưa ra các kết quả thực nghiệm và đánh giá, nhận xét hệ thống
Chương 6: Kết luận và hướng phát triển
Nêu các ưu điểm và các nhược điểm cần cải thiện của đề tài, hướng khắc phục và hướng phát triển trong tương lai.
CƠ SỞ LÝ THUYẾT LIÊN QUAN
Tổng quan về mạng nơ-ron
2.1.1 Giới thiệu về mạng nơ-ron Định nghĩa: Mạng nơ-ron nhân tạo, Artificial Neural Network (ANN) là một mô hình xử lý thông tin mô phỏng theo cách thức xử lý thông tin của các hệ nơ-ron sinh học Nó được tạo nên từ một số lượng lớn các phần tử (nơ-ron) kết nối lại với nhau thông qua các liên kết W (trọng số liên kết) làm việc như một thể thống nhất để giải quyết một vấn đề cụ thể nào đó Một mạng nơ-ron nhân tạo được cấu hình cho một ứng dụng cụ thể (nhận dạng mẫu, phân loại dữ liệu, ) thông qua một quá trình học từ tập các mẫu huấn luyện Về bản chất học đó chính là quá trình hiệu chỉnh trọng số liên kết giữa các nơron
Cấu trúc mạng nơ-ron:
Hình 2-1 Cấu trúc của một nơ–ron
Các thành phần cơ bản của một Nơ-ron nhân tạo bao gồm:
Tập các đầu vào: Là các tín hiệu vào (input signals) của các nơ-ron, các tín hiệu này thường được đưa vào dưới dạng vector một chiều N phần tử
Tập các liên kết: Mỗi liên kết thể hiện bởi một trọng số liên kết (Synaptic weight) Trọng số liên kết giữa tín hiệu vào thứ j với nơ-ron k thường được kí hiệu là Wkj Các trọng số này, được khởi tạo một cách ngẫu nhiên ở thời điểm khởi tạo mạng và được cập nhật liên tục trong quá trình học
Bộ tổng (Summing function): Thường được dùng đề tính tổng các đầu vào với trọng số liên kết của nó
Ngưỡng (còn gọi là một độ lệch - bias): Ngưỡng này thường được đưa vào như một thành phần của hàm truyền
Hàm truyền (Transfer function): Hàm này được dùng để giới hạn phạm vi đầu ra của mỗi nơ-ron Nó nhận đầu vào là kết quả của hàm tổng và ngưỡng
Đầu ra: Là tín hiệu đầu ra của một nơ-ron, với mỗi nơ-ron sẽ có tối đa là một đầu ra
Xét về mặt toán học, cấu trúc của một nơ-ron i, được mô tả bằng biểu thức:
X1, X2, Xm là các tín hiệu đầu vào, còn Wi1, Wi2, …Wim là các trọng số kết nối của nơ-ron thứ i, neti là hàm tổng, f là hàm truyền, θi là một ngưỡng, yi là tín hiệu đầu ra của nơ-ron
Như vậy, nơ-ron nhân tạo cũng nhận các tín hiệu đầu vào, xử lý (nhân các tín hiệu này với trọng số liên kết của nó, sau đó tính tổng các tích thu được, rồi gửi kết quả đến hàm truyền) và cho một tín hiệu đầu ra (là kết quả của hàm truyền)
Phương thức làm việc chung của mạng nơ-ron: Mạng nơ-ron là một cấu trúc mạng, được hình thành nên bởi số lượng các nơ-ron liên kết với nhau Mỗi nơ-ron có các đặc tính đầu vào, đầu ra và thực hiện một số chức năng tính toán cục bộ
Với việc giả lập các hệ thống sinh học, các cấu trúc tính toán, mạng nơ-ron có thể giải quyết được các lớp bài toán nhất định, ví dụ như: bài toán xếp loại, bài toán lập lịch, bài toán tìm kiếm, bài toán nhận dạng mẫu,…
Xét một cách tổng quát, mạng nơ-ron là một cấu trúc xử lý song song thông tin phân tán mang các đặc tính nổi bật sau:
Là một mô hình tính toán dựa trên bản chất của nơ-ron
Bao gồm một số lượng rất lớn các nơ-ron liên kết với nhau
Mạng nơ-ron có khả năng học, khái quát hóa tập dữ liệu học thông qua việc gán và hiệu chỉnh các trọng số liên kết
Tổ chức theo kiểu tập hợp, mang lại cho mạng nơ-ron khả năng tính toán rất lớn, trong đó không có nơ-ron nào mang thông tin riêng biệt.
Tổng quan về mạng nơ-ron tích chập
2.2.1 Định nghĩa mạng nơ-ron tích chập Định nghĩa:
Mạng nơ-ron tích chập có kiến trúc khác so với mạng nơ-ron thông thường Mạng nơ-ron thông thường chuyển đổi đầu vào thông qua hàng loạt các tầng ẩn Mỗi tầng là một tập các nơ-ron và các tầng được liên kết đầy đủ với các nơ-ron ở tầng trước đó Và ở tầng cuối cùng sẽ là tầng kết quả đại diện cho dự đoán của mạng Đầu tiên, mạng nơ-ron tích chập được chia thành 3 chiều: rộng, cao và sâu Kế đến, các nơ-ron trong mạng không liên kết hoàn toàn với toàn bộ nơ-ron kế đến nhưng chỉ liên kết tới một vùng nhỏ Cuối cùng, một tầng đầu ra được tối giản thành vector của giá trị xác suất
CNN gồm hai thành phần:
Phần tầng ẩn hay còn gọi là phần trích xuất đặc trưng: Trong phần này, mạng sẽ tiến hành tính toán hàng loạt các phép tích chập và phép hợp nhất (pooling) để phát hiện các đặc trưng Ví dụ như nếu có một bức hình ảnh con ngựa vằn, thì trong phần này mạng sẽ nhận diện các sọc vằn, hai tai, và bốn chân của nó
Phần phân lớp: Tại phần này, một lớp với các liên kết đầy đủ sẽ đóng vai trò như là một bộ phân lớp các đặc trưng đã rút trích được trước đó Tầng này sẽ đưa ra xác suất của một đối tượng trong hình
2.2.2 Cấu trúc mạng nơ-ron tích chập
Tích chập là một khối rất quan trọng trong CNN Thuật ngữ tích chập dựa trên một phép hợp nhất toán học của hai hàm tạo thành hàm thứ ba Phép toán này được kết hợp hai tập thông tin khác nhau
Trong trường hợp CNN, tích chập được thực hiện trên giá trị đầu vào của dữ liệu và kernel / filter (thuật ngữ này được sử dụng khác nhau tùy tình huống) để tạo ra một bản đồ đặc trưng (feature map) Ta thực hiện phép tích chập bằng cách trượt kernel / filter theo dữ liệu đầu vào Tại mỗi vị trí, ta tiến hành phép nhân ma trận và tính tổng các giá trị để đưa vào bản đồ đặc trưng
Trong hình dưới đây, thành phần kernel /filter (màu xanh lá) trượt trên đầu vào (màu xanh dương) và kết quả được trả về bản đồ đặc trưng (màu đỏ) Kernel / filter có kích thước là 3×3 trong ví dụ này
Hình 2-2 Ví dụ tính toán phép tích chập
Trong thực tế, tích chập được thực hiện trên không gian 3 chiều Vì mỗi hình ảnh được biểu diễn dưới dạng 3 chiều: rộng, cao và sâu Chiều sâu ở đây chính là giá trị màu sắc của hình (RGB) Ta thực hiện phép tích chập trên đầu vào nhiều lần khác nhau Mỗi lần sử dụng một kernel / filter khác nhau, kết quả ta sẽ thu được những bản đồ đặc trưng khác nhau Cuối cùng sẽ kết hợp toàn bộ bản đồ đặc trưng này thành kết quả cuối cùng của tầng tích chập
Tương tự như mạng nơ-ron thông thường, sử dụng một hàm kích hoạt (activate function) để có đầu ra dưới dạng phi tuyến.Trong trường hợp CNN, đầu ra phép tích chập đi qua hàm kích hoạt nào đó ví dụ như hàm ReLU (rectified linear units) Trong quá trình trượt kernel / filter trên dữ liệu đầu vào, sẽ quy định một bước nhảy (stride) với mỗi lần di chuyển Thông thường lựa chọn thường chọn bước nhảy là 1 Nếu kích thước bước nhảy tăng, kernel / filter sẽ có ít ô trùng lắp Số hàng / cột mà bộ lọc trượt qua trong một bước di chuyển ký hiệu là s Ma trận đầu vào có kích thước là n Kích thước của bộ lọc (filler) là f P (padding) là đường viền phụ Kích thước ma trận đầu ra lúc này được tính bởi:
Hình 2-3 Nhân chập với bước sải (trượt) s=2
Bởi vì kích thước đầu ra luôn nhỏ hơn đầu vào nên cần có một phép xử lí đầu vào để đầu ra không bị co giãn Đơn giản, ta chỉ cần thêm một lề nhỏ vào đầu vào Một lề với giá trị 0 sẽ được thêm vào xung quanh đầu vào trước khi thực hiện phép tích chập Thông thường, sau mỗi tầng tích chập, sẽ cho kết quả đi qua một tầng hợp nhất (pooling layer) Mục đích của tầng này là để nhanh chóng giảm số chiều
Việc này giúp giảm thời gian học và hạn chế việc overfitting Một phép hợp nhất đơn giản thường dùng đó là max pooling, phép này lấy giá trị lớn nhất của một vùng để đại diện cho vùng đó Kích thước của vùng sẽ được xác định trước để giảm kích thước của bản đồ đặc trưng nhanh chóng và giữ được thông tin cần thiết
Hình 2-4 Mô hình Poolling max Layer
Tổng kết lại khi sử dụng CNN, ta cần chú ý đến 4 siêu tham số quan trọng:
Kích thước bước nhảy (stride)
Trong phần phân lớp, sử dụng một vài tầng với kết nối đầy đủ để xử lý kết quả của phần tích chập Vì đầu vào của mạng liên kết đầy đủ là 1 chiều, cần làm phẳng đầu vào trước khi phân lớp Tầng cuối cùng trong mạng CNN là một tầng liên kết đầy đủ, phần này hoạt động tương tự như mạng nơ-ron thông thường Kết quả thu được cuối cùng cũng sẽ là một vector với các giá trị xác suất cho việc dự đoán như mạng nơ-ron thông thường
Mô hình mạng nơ-ron tích chập:
CNN chỉ đơn giản là gồm một vài layer của convolution kết hợp với các hàm kích hoạt phi tuyến (nonlinear activation function) như là ReLU để tạo ra thông tin trừu tượng hơn (abstract / higher - level) cho các layer tiếp theo
Trong mô hình Feedforward Neural Network (mạng nơ-ron truyền thẳng), các layer kết nối trực tiếp với nhau thông qua trọng số w (weighted vector) Các layer này còn được gọi là có kết nối đầy đủ (fully connected layer) Trong mô hình CNNs thì ngược lại Các layer liên kết được với nhau thông qua cơ chế convolution Layer tiếp theo là kết quả convolution từ layer trước đó, nhờ vậy mà ta có được các kết nối cục bộ Nghĩa là mỗi nơ-ron ở layer tiếp theo sinh ra từ filter áp đặt lên một vùng ảnh cục bộ của nơ-ron layer trước đó
Mỗi layer như vậy được áp đặt các filter khác nhau, thông thường có vài trăm đến vài nghìn filter như vậy Một số layer khác như pooling/subsampling layer dùng để chắt lọc lại các thông tin hữu ích hơn (loại bỏ các thông tin nhiễu)
Trong suốt quá trình huấn luyện, CNN sẽ tự động học được các thông số cho các filter Ví dụ trong tác vụ phân lớp ảnh, CNN sẽ cố gắng tìm ra thông số tối ưu cho các filter tương ứng theo thứ tự raw pixel > edges > shapes > facial > high-level features Layer cuối cùng được dùng để phân lớp ảnh
Tổng quan về kit Jetson Nano
NVIDIA Jetson Nano Developer Kit là một máy tính nhỏ nhưng rất mạnh mẽ cho phép bạn chạy song song nhiều mạng neural sử dụng cho các ứng dụng như phân loại hình ảnh, phát hiện đối tượng, phân đoạn và xử lý giọng nói
Jetson Nano cũng được hỗ trợ bởi NVIDIA JetPack Bao gồm các gói hỗ trợ board (BSP), CUDA, cuDNN và thư viện phần mềm TensorRT cho deep learning, computer vision, GPU computing, multimedia processing và nhiều ứng dụng khác SDK cũng bao gồm khả năng cài đặt frameworks Machine Learning (ML) mã nguồn mở như TensorFlow, PyTorch, Caffe / Caffe2, Keras và MXNet, cho phép các nhà phát triển tích hợp các model AI/ framework AI yêu tích của họ vào các sản phẩm một cách nhanh chóng và dễ dàng
Thông tin cấu hình Jetson Nano:
Bộ xử lí quad-core ARM® Cortex®-A57 CPU
Bộ nhớ Ram 4GB 64-bit LPDDR4
Hỗ trợ tất cả các bản phân phối ARM GNU/Linux mới nhất
Đầu nối microusb cho nguồn điện 2,5A 5VDC / Jack DC 4A 5VDC
Cổng mạng 10/100/1000BASE-T self-negotiation
Kết nối hiển thị HDMI 2.0, DP (DisplayPort)
Khe cắm thẻ nhớ microsd
Một số ưu nhược điểm của Jetson Nano Ưu điểm:
Phục vụ cho nhiều mục đích
Khả năng hoạt động liên tục 24/7
Chỉ có thể kết nối qua mạng Lan, không thể kết nối qua Wifi
Yêu cầu phải có kiến thức cơ bản về Linux, điện tử
Hình 2-11 Sơ đồ ra chân của Jetson Nano
Tổng quan về bo mạch phát triển Node MCU ESP32
Node MCU ESP32 được phát triển dựa trên SoC WiFi ESP32 tích hợp vi xử lý
32 bit mạnh mẽ, bộ nhớ SRAM, các ngoại vi mở rộng và khả năng kết nối WiFi, Bluetooth với các bộ lọc, bộ khuếch đại công suất và quản lý năng lượng,… Bo mạch phát triển mã nguồn mở Node MCU ESP32 còn tích hợp mạch chuyển đổi tín hiệu USB và tín hiệu UART giúp dễ dàng nạp chương trình, gỡ lỗi và phát triển các ứng dụng kết nối thiết bị nhúng với mạng Internet và rộng hơn là các ứng dụng IoT
Hình 2-12 Module Node MCU ESP32 Bảng 2-1 Thông số kỹ thuật Soc EspressIf WiFi ESP32
Chứng chỉ WiFi Alliance
802.11 b: +20 dBm 802.11 g: +17 dBm 802.11 n: +14 dBm Độ nhạy thu
802.11 b: -91 dBm (11 Mbps) 802.11 g: -75 dBm (54 Mbps) 802.11 n: -72 dBm (MCS7)
Anten Đường mạch in, Anten ngoài, kết nối
UART/SDIO/SPI/I2C/IR GPIO/ADC/PWM/LED/Nút nhấn Điện áp hoạt động 2.5 – 3.6V
Dòng điện hoạt động Trung bình 80mA Giới hạn nhiệt độ -40 °C - 125°C Kích thước đóng gói QFN32-pin (5mm x 5mm)
Chế độ WiFi Trạm phát/Điểm truy cập/ Trạm + Điểm truy cập
Mã hóa WEP/TKIP/AES
Nâng cấp Firmware Qua UART/OTA
Hỗ trợ phát triển máy chủ Cloud/
Firmware và SDK dành cho lập trình nhanh trên chip
Giao thức mạng Ipv4, TCP/UDP/HTTP Thiết lập người dùng Tập lệnh AT, Máy chủ Cloud, Ứng dụng
Hình 2-13 Sơ đồ chân Module NodeMCU ESP32
Tổng quan về cảm biến khoảng cách hồng ngoại Sharp
Cảm biến GP2Y0A02YK0F sản xuất bởi hãng SHARP, được sử dụng để đo khoảng cách bằng tia hồng ngoại với dạng tín hiệu trả về là Analog tương ứng theo khoảng cách nên có thể biết chính xác khoảng cách đến vật thể cần đo, kích thước nhỏ gọn, cho phản hồi nhanh chóng, ít bị nhiễu do sử dụng mắt nhận và phát tia hồng ngoại theo tần số riêng biệt
Hình 2-14 Cảm biến khoảng cách hồng ngoại Sharp
Sử dụng làm cảm biến khoảng cách
Làm mạch chống trộm hồng ngoại
Thông số kỹ thuật của cảm biến:
Bảng 2-2 Thông số kỹ thuật của cảm biến Điện áp hoạt động 4.5 ~ 5.5V DC
Khoảng cách tối đa ~ 80 cm
Dòng kích ngõ ra 300 mA
Khả năng phát hiện đối tượng Trong suốt hoặc đục
Chất liệu vỏ cảm biến Nhựa
Tổng quan về Camera Pi Noir v2
Mô tả: Camera module ra đời đã làm thoả lòng rất nhiều tín đồ yêu thích Jetson
Nano Trước khi xuất hiện camera, điều duy nhất bạn có thể làm để thêm khả năng nhận biết hình ảnh, quay phim, chụp hình cho Jetson Nano là sử dụng 1 webcam cắm vào cổng USB Với các webcam Logitech tích hợp sẵn định dạng xuất mjpeg sẽ giúp Jetson nano xử lý nhanh hơn Nhưng các webcam Logitech lại có giá thành khá cao, nhất là các webcam có độ phân giải lớn
Camera Pi Noir v2 được tích hợp camera 8 megapixel có độ nhạy sáng cao, có thể chụp tốt ở nhiều điều kiện ánh sáng khác nhau, cả trong nhà và ngoài trời Điểm đặc biệt mà camera mang lại đó là chụp hình độ nét cao trong lúc quay phim
Bạn không tốn thêm cổng USB nào cho Camera vì Camera được gắn chắc chắn vào socket CSI Điều này giúp hạn chế tình trạng nghẽn băng thông cho chip xử lý USB trên mạch Jetson Nano Chiều dài cáp nối camera đã được tính toán cẩn thận khi vừa đạt được độ dài cần thiết trong khi vẫn đảm bảo tốc độ truyền hình ảnh từ module về Jetson
Hình 2-16 Sơ đồ khối Camera Pi Noir v2
Bạn có thể dùng Camera Pi Noir v2 và Jetson Nano để thiết lập hệ thống phát hiện chuyển động Hệ thống này hoạt động bằng cách sử dụng hình ảnh từ Camera, kết hợp với chương trình xử lý hình ảnh và đưa ra lệnh điều khiển nếu phát hiện thấy có chuyển động Camera cũng đặc biệt hữu ích với các bạn yêu thích làm phim, bạn có thể sử dụng để quay những góc quay khó hoặc những cảnh quay độc mà chỉ với máy quay gọn nhẹ nhất mới làm được Ngoài ra, bạn có thể sử dụng camera để quay các đoạn phim (ghép nhiều hình lại với nhau) đang được nhiều người dùng trên thế giới thực hiện.
Tổng quan về module L298
Module L298 là chuyên dùng để giúp vi điều khiển có thể giao tiếp với động cơ
Nó có chức năng tạo ra 4 pha tín hiệu điều khiển tương ứng với 2 pha của động cơ bước lưỡng cực hoặc 4 pha của động cơ bước đơn cực
Các thông số: Điện áp điều khiển: 5 V ÷ 12 V
Dòng tối đa cho mỗi cầu H là: 2A (cho mỗi motor)
Điện áp của tín hiệu điều khiển: 5V ÷ 7 V
Dòng của tín hiệu điều khiển: 0 ÷ 36mA
Công suất hao phí: 20W (khi nhiệt độ T = 75 ℃)
Cấu tạo: Bên trong có IC L298 gồm các cổng logic và 2 cặp cầu H chuyên dùng để điều khiển động cơ.
Tổng quan về động cơ DC giảm tốc
Động cơ một chiều DC ( DC là từ viết tắt của "Direct Current Motors") là động cơ điều khiển trực tiếp DC motor giảm tốc là một động cơ một chiều với cơ năng quay liên tục và được thiết kế thêm bánh răng để giảm tốc độ quay của động cơ
Hình 2-18 Động cơ DC giảm tốc
Cấu tạo: Động cơ DC có cấu tạo gồm 2 dây: dây nguồn và dây tiếp đất
Tốc độ quay: tùy thuộc vào điện áp và dòng đi vào động cơ
Khi cấp điện vào chân nguồn, dây tiếp đất nối mass, động cơ sẽ quay theo chiều kim đồng hồ Ngược lại, khi cấp điện vào dây tiếp đất, dây nguồn nối mass, động cơ sẽ quay theo chiều ngược chiều kim đồng hồ.
Tổng quan mạch hiển thị NEOPixel
Mạch hiển thị NeoPixel RGB LED WS2812 bao gồm các Led RGB WS2812 giao tiếp nối tiếp qua chuẩn giao tiếp 1 wire (chỉ cần 1 chân data duy nhất), mạch rất dễ sử dụng với bộ thư viện hỗ trợ đi kèm với khả năng hiển thị của mỗi Led lên đến
16777216 màu và 256 cấp độ sáng khác nhau, phù hợp cho các ứng dụng trang trí, hiển thị: đồng hồ led, vòng đeo tay led,…
Hình 2-19 Mạch Hiển Thị NEOPixel WS2812 5050 RGB 4 LED
Mạch Hiển Thị NEOPixel gồm các chân:
DI: Data In, chân đầu vào dữ liệu kết nối với Vi điều khiển
5V: Chân nguồn 5VDC, có thể cấp 4~7VDC
DO: Data Out, dùng để nối tiếp tín hiệu đến các khối led khác
IC chính: LED RGB WS2812
Điện áp sử dụng: 4~7VDC (tốt nhất 5VDC)
XÂY DỰNG VÀ THIẾT KẾ HỆ THỐNG
Giới thiệu và tóm tắt
3.1.1 Yêu cầu chung của hệ thống
Với tiêu chí thiết kế, xây dựng một mô hình robot thùng rác di động thông minh, thu hút mọi người xung quanh và nâng cao ý thức không xả rác nơi công cộng của mọi người Hệ thống có các tính năng như sau:
Một một mô hình thùng rác di động có khả năng di chuyển tự động hoặc có thể điều khiển bằng tay qua app, có khả năng tránh né các vật cản, nhận diện được cử chỉ bàn tay người( bàn tay mở) và di chuyển về hướng người nào muốn kêu gọi nó để bỏ rác
Hiển thị dung lượng rác trên app, điều khiển di chuyển robot thông qua app
Hệ thống đảm bảo tốc độ xử lý nhanh và độ chính xác cao
3.1.2 Đặc tả của hệ thống
Với yêu cầu của hệ thống, xây dựng mô hình thùng rác di động có các tính năng sau:
Tự động tránh né vật cản ở phía trước,
Thu nhận hình ảnh qua camera, xử lý nhận diện cử chỉ bàn tay người (bàn tay mở)
Truyền nhận dữ liệu giữa các khối với nhau
Hiển thị dung lượng rác, thông báo khi rác đã đầy qua app
Với yêu cầu của hệ thống trên, nhóm đã tiến hành đề ra các phương án thiết kế cho phần cứng như sau:
Khối xử lý sẽ tận dụng các module có sẵn ngoài thị trường như: Kit Jetson nano, cảm biến khoảng cách, động cơ DC, Camera Pi, Led RGB …
Khối nguồn: sử dụng nguồn pin li-po để cấp nguồn cho các khối
Với yêu cầu của hệ thống trên, nhóm đã tiến hành đề ra các phương án thiết kế cho phần mềm như sau:
Sử dụng ngôn ngữ Python để viết chương trình cho khối xử lý ảnh, ngôn ngữ
C để viết chương trình điều khiển cho khối xử lý chính
Sử dụng một số thư viện hỗ trợ xử lý ảnh như: OpenCV, Tensorflow, …
Sơ đồ khối
Hình 3-1 Sơ đồ khối của hệ thống
Sơ đồ khối của hệ thống gồm 7 khối lần lượt là:
Khối xử lý trung tâm: Là bộ xử lý chính, nhận tín hiệu từ khối cảm biến và dữ liệu từ khối xử lý ảnh Sau đó xử lý để điều khiển khối động cơ Sử dụng kit Node MCU ESP32 làm bộ xử lý trung tâm
Khối xử lý ảnh: Có chức năng stream video, xử lý phát hiện bàn tay và truyền dữ liệu cho khối xử lý trung tâm Ở đây dùng Jetson nano và Camera Pi Noir v2 làm khối xử lý hình ảnh
Khối động cơ: Sau khi nhận được tín hiệu xử lý từ khối xử lý trung tâm, tiến hành điều khiển động cơ theo các hướng được chỉ định
Khối cảm biến: Khi khối cảm biến phát hiện được vật cản hay có người Gửi tín hiệu cho khối xử lý trung tâm để xử lý tình huống robot gặp phải Sử dụng các loại cảm biến khoảng cách thông dụng như: cảm biến khoảng cách hồng ngoại, cảm biến siêu âm HC-SR04
Khối Server: có chức năng giao tiếp truyền dữ liệu giữa khối xử lý chính và
Khối các ngoại vi khác: Bao gồm nút nhấn để điều khiển bật tắt mô hình, đèn led báo trạng thái on/off, loa để phát âm thanh
Khối nguồn: Sử dụng mạch nguồn 12V để cung cấp nguồn cho khối động cơ và nguồn 5V cung cấp cho khối xử lý trung tâm, khối xử lý ảnh
Nguyên lý hoạt động chung của hệ thống:
Dùng Kit Node MCU ESP32(khối điều khiển trung tâm) để điều khiển mọi hoạt động của hệ thống Hướng đi bắt đầu của robot sẽ là đi thẳng Khi robot di chuyển khối cảm biến sẽ đo các góc ở phía trước của robot Nếu có vật thể hoặc người phía trước, robot sẽ xử lý tránh né vật cản hoặc dừng lại một lúc để bỏ rác rồi tiếp tục di chuyển Trong khi di chuyển camera được gắn ở phía trước sẽ có nhiệm vụ stream video và gửi dữ liệu cho board Jetson nano để tiến hành nhận diện phát hiện được cử chỉ bàn tay người( bàn tay mở 5 ngón) Tùy theo vị trí trung tâm lòng tay phát hiện
31 được ở các vùng(trái, phải, giữa) trong khung hình của camera mà board Jetson nano sẽ truyền tín hiệu cho khối trung tâm để tiến hành di chuyển theo hướng đó Bên cạnh đó mô hình robot còn giao tiếp qua để người sử dụng có thể biết được dung lượng rác hoặc có điều khiển di chuyển của robot.
Thiết kế phần cứng
Theo sơ đồ khối nhóm thực hiện sẽ thiết kế phần cứng bao gồm 7 khối:
Khối xử lý ảnh: Sử dụng Kit Jetson nano và Camera Pi Noir v2
Khối xử lý trung tâm: Sử dụng Node MCU ESP32
Khối động cơ: Sử dụng động cơ DC giảm tốc
Khối cảm biến: Sử dụng cảm biến khoảng cách
Khối các ngoại vi khác: Sử dụng nút nhấn cảm ứng, loa, module led RGB
Khối Server: Sử dụng Server Blynk, App Blynk
Khối nguồn: Sử dụng nguồn pin 12V và 5V
Khối xử lý ảnh có nhiệm vụ quay video phía trước robot và xử lý phát hiện nhận diện cử chỉ bàn tay (bàn tay mở)
Nhóm thực hiện đã chọn Camera Pi Noir v2 hỗ trợ cho Jetson nano
Hình 3-2 Sơ đồ kết nối Camera Pi Noir v2 với Jetson nano
Hình 3-3 Sơ đồ kết nối ESP32 với Jetson nano
Camera có nhiệm vụ quay video ở phía trước mô hình Truyền hình ảnh cho Jetson nano để xử lý nhận dạng cử chỉ bàn tay Sau khi xử lý xong sẽ truyền dữ liệu cho khối xử lý trung tâm
3.3.2 Khối cảm biến khoảng cách
Trong đề tài này, nhóm thiết kế khối cảm biến để phát hiện vật cản ở xung quanh robot và một cảm biến để đo dung lượng rác, gửi tín hiệu về khối trung tâm ra lệnh làm cho robot di chuyển, gửi dữ liệu dung lượng rác cho khối server
Trong các ứng dụng phát hiện vật thể, phát hiện chuyển động, phát hiện vị trí người ta thường ưu tiên nghĩ đến việc dùng các cảm biến hồng ngoại Hiện nay trên thị trường có rất nhiều loại cảm biến hồng ngoại ngõ ra analog hoặc digital, với độ chính xác và khả năng chống nhiễu khác nhau tùy thuộc vào mức giá Bên cạnh cảm biến hồng ngoại, các cảm biến siêu âm cũng được ứng dụng rộng rãi trong việc phát hiện vị trí và dò đường với ưu điểm ít nhiễu và độ chính xác tương đối cao
Trong đề tài này nhóm chọn sử dụng module cảm biến khoảng cách hồng ngoại với ngõ ra analog vì:
Thuận tiện cho việc điều khiển
Tiết kiệm chân sử dụng cho khối xử lý chính
Hình 3-4 Sơ đồ kết nối module khoảng cách hồng ngoại
Khối cảm biến được kết nối với Node MCU Esp32 để đo khoảng cách xung quanh robot để phát hiện có vật cản hoặc người, từ đó xử lý hướng đi tiếp theo hợp lý Đồng thời một cảm biến khoảng cách khác sẽ được dùng để đo dung lượng trong thùng rác
Khối động cơ dùng để giúp cho robot di chuyển được
Phương án chọn phần cứng
Với mô hình đề tài, nhóm thực hiện đã thiết kế mô hình di chuyển bằng động cơ
DC giảm tốc, mục đích giúp có lực kéo mạnh và dễ dàng cho người dùng bỏ rác
Hình 3-5 Sơ đồ kết nối động cơ DC giảm tốc
Kết nối module L298 với khối điều khiển Hai chân IN1, IN2, IN3 và IN4 được nối lần lượt với các chân IO04, IO00, IO02, IO15 của ESP32 để nhận tín hiệu điều khiển Hai chân OUT1 và OUT2 được kết nối với hai chân của Motor left Hai chân OUT3, OUT4 được kết nối với hai chân của Motor right Kết nối L298 với nguồn 12V Điều khiển các chân IN1, IN2, IN3, IN4 để điều hướng quay của motor left và motor right
3.3.4 Khối xử lý trung tâm
Khối xử lý trung tâm được lập trình để:
Giao tiếp với cảm biến khoảng cách hồng ngoại phát hiện vật cản
Giao tiếp truyền dữ liệu với Jetson Nano tín hiệu sau khi xử lý nhận dạng
Giao tiếp với động cơ DC để điều khiển robot di chuyển
Giao tiếp qua App để có truyền nhận dữ liệu
Trong đề tài này chỉ là một hệ thống đơn giản, để thực hiện được những chức năng như trên ta có thể sử dụng Kit Node MCU ESP32 Vừa tiết kiệm chi phí, vừa dễ sử dụng
Trong đề tài này ta sử dụng Kit Node MCU ESP32 cho lập trình vì:
ESP32 hiện là đang được phát triển rộng rãi và dể sử dụng cho các mục đích chính
Giá thành phù hợp với sinh viên
Khối này có nhiệm cung cấp nguồn cho tất cả các khối hoạt động
Phương án Điện áp, dòng điện cung cấp cho các linh kiện hoạt động bình thường được liệt kê theo danh sách trong bảng
Bảng 3-1 Bảng tính toán điện áp 5V, dòng điện và công suất tiêu thụ của hệ thống
Linh kiện Điện áp tiêu thụ
Số lượng Tổng công suất
Bảng 3-2 Bảng tính toán điện áp 12V, dòng điện và công suất tiêu thụ của hệ thống
Linh kiện Điện áp tiêu thụ
Số lượng Tổng công suất Động cơ 12V 400mA 2 10W
3.3.8 Sơ đồ nguyên lý toàn hệ thống
Sau khi nghiên cứu và thiết kế và dưới đây là sơ đồ nguyên lý của hệ thống:
Hình 3-6 Sơ đồ nguyên lý của hệ thống
Thiết kế phần mềm
3.4.1 Thiết kế chương trình di chuyển tự động và giao diện trên App
Từ yêu cầu của hệ thống, tiến hành thiết kế giao diện bao gồm chức năng sau:
Robot di chuyển tránh né vật cản phía trước
Xử lý nhận dạng và di chuyển theo cử chỉ tay
Hiển thị thanh dung lượng rác trong thùng
Hiển thị các phím bấm có chức năng điều khiển di chuyển bằng tay cho robot
3.4.1.1 Lưu đồ giải thuật chương trình chính
Hình 3-7 Lưu đồ giải thuật chương trình chính
Giải thích lưu đồ: Đầu tiên, khởi tạo các thư viện như: Wifi, SharpDist, Blynk, HCSR04 Setup port chân cảm biến, động cơ, servo, led rgb, serial port Nếu Control_blynk = 1, tức là việc xử lý điều khiển robot được thực hiện Robot sẽ
39 dừng lại và chờ lệnh di chuyển các hướng đi thẳng, đi lùi, đi qua trái hoặc phải từ App người dùng Bên cạnh đó dữ liệu dung lượng rác sẽ được gửi lên App và thông báo khi rác đã đầy Ngược lại nếu Control_blynk = 0, robot sẽ bắt đầu đi thẳng tới và các cảm biến sẽ bắt đầu đo kết hợp với việc nhận dữ liệu từ khối xử lý ảnh để từ đó robot có thể di chuyển tự hành tránh né, hoặc có thể di chuyển tới theo vị trí bàn tay nhận diện được trong khung hình camera
Hình 3-8 Lưu đồ giải thuật chương trình điều khiển qua app
Hình 3.9 mô tả việc điều khiển di chuyển thông qua App của mô hình robot thùng rác di động, gồm các tác vụ như gửi dữ liệu dung lượng rác và thông báo khi
40 rác đã đầy, điều khiển việc di chuyển đi thẳng, lùi, quay trái, quay phải của robot thông qua App khi robot bị mắc kẹt không thể tự động xử lý di chuyển được
Hình 3-9 Lưu đồ giải thuật chương trình xử lý di chuyển tự động
Sau khi chương trình xử lý điều khiển qua App không còn tác dụng nữa thì robot sẽ bắt đầu chuyển sang di chuyển tự hành và di chuyển nhận diện bàn tay Nếu biến Control_move = 0 thì có nghĩa là chương trình sẽ cho robot di chuyển đi thẳng và tránh né vật cản phía trước, cùng với đó biến count_avoid sẽ tăng lên nếu robot liên tục đi thẳng và không bị cản, sau khi biến count_avoid > 150 thì biến Control_move
= 1 và chuyển sang di chuyển theo cử chỉ tay nhận diện
Hình 3-10 Lưu đồ giải thuật chương trình xử lý di chuyển theo nhận diện cử chỉ bàn tay
Sau khi di chuyển tránh né tự động được một khoảng thời gian thì biến control_move sẽ bằng 1 và Robot sẽ chuyển sang hoạt động di chuyển theo nhận diện cử chỉ bàn tay Robot bắt đầu chờ đọc dữ liệu, dừng lại và xoay vòng tại chổ theo hướng bên phải để camare quét được tầm quay sát linh hoạt hơn Dữ liệu Trong khi
42 chờ đọc, biến count_hand sẽ tăng đến khi lớn hơn 150 thì biến Control_move = 0 Và quay trở lại chương trình đi thẳng tránh vật cản Như vậy robot sẽ chạy 1 vòng lặp liên tục thay phiên với 1 khoảng thời gian nhất định giữ 2 chương trình
Hình 3-11 Lưu đồ giải thuật chương trình xử lý di chuyển tránh né vật cản
Hình 3-11 mô tả quá trình di chuyển tự động tránh né vật cản của robot Robot sẽ đọc giá trị đo được từ các cảm biến liên tục Nếu phát hiện gặp phải vật cản bị chặn là tường thì robot sẽ xử lý quay ngược đầu lại Tiếp theo sẽ là kiểm tra trường hợp gặp người dùng bỏ rác và thực hiện thao tác chờ 2 giây bỏ rác xong quay đi hướng khác Tiếp tục kiểm tra và tránh né các vật cản ở cạnh trái, cạnh phải của robot Nếu robot không bị chặn thì tiến hành đi thẳng
Hình 3-12 Lưu đồ giải thuật xử lý di chuyển nhận diện chỉ tay
Hình 3-12 mô tả quá trình xử lý di chuyển nhận diện cử chỉ bàn tay Đầu tiên biến data_read sẽ được khởi tạo Robot sẽ dừng lại, bắt đầu đọc dữ liệu được truyền từ khối xử lý ảnh Nếu kết quả là data_read = ‘1’ thì có nghĩa là đã nhận diện được cử chỉ tay mở ở bên phải robot và lúc đó robot sẽ tiến hành quay 45 độ sang phải và đi thẳng, chờ đến khi cảm biến phát hiện bị chặn là xem như đã tới vị trí người dùng kêu gọi nó để bỏ rác Tương tự như vậy với kết quả data_read = ‘2’ là phát hiện được ở phía trước robot và data_read = ‘3’ là ở phía bên trái robot
3.4.1.2 Sơ đồ cấu trúc mạng nơ-ron tích chập ứng dụng cho bài toán nhận dạng cử chỉ bàn tay
Hình 3-13 Lưu đồ mô hình mạng
Khối thứ nhất: Camera chụp được bức ảnh cử chỉ tay mở 5 ngón có dung lượng ảnh là 640 x 480 pixel
Khối thứ hai: ảnh cho qua các lớp tích chập có kernel là 3x3 với filter lượt là:
Khối thứ ba: Sau mỗi lớp tích chập thì ảnh được cho qua lớp maxpooling 2x2 Khối thứ tư: Sau đó ảnh được đưa qua lớp làm phẳng và cuối cùng là đưa qua lớp kết nối để kết nố các đặc trưng lại với nhau
Hình 3-14 Sơ đồ bức ảnh đầu vào qua lớp chập đầu tiên
32 filter sẽ cho ra output có size là: 16 x 16 x 32
Hình 3-15 Sơ đồ bức ảnh đầu vào qua lớp chập thứ 2
• 32 feature maps, trọng số trên mỗi filter: 3 x 3 x (3 x 32) +1 = 865
• 32 filter sẽ cho ra output có size là: 8 x 8 x 32
Hình 3-16 Sơ đồ bức ảnh đầu vào qua lớp chập thứ 3
• 32 feature maps, trọng số trên mỗi filter: 3 x 3 x (3 x 32) +1 = 865
• 64 filter sẽ cho ra output có size là: 4 x 4 x 64
Flatten and Full Connected Layer:
Hình 3-17 Sơ đồ bức ảnh đầu vào qua lớp phẳng và lớp kết nối
Số lượng weights lớp FC1 là: 768 x 128 + 128 = 98432
Số lượng weights lớp FC2 là: 128 x 2 + 2 = 258
Tổng số lượng weight của cả model là: 182626
Trong đề tài này, nhóm thực hiện chọn các lớp (gồm 3 lớp tích chập, 3 lớp Pooled maps, 1 lớp làm phẳng và 2 lớp Full – connect) vì: Trong quá trình nghiên cứu tài liệu về CNN, không có tài liệu nào cho biết cụ thể số lớp ẩn sử dụng là bao nhiêu mà tùy thuộc vào độ phức tạp của bài toán mà lựa chọn số lớp ẩn phù hợp Trong quá trình thực nghiệm, nhóm thực hiện đã thực nghiệm với nhiều hơn các lớp ẩn, nhưng mức độ chính xác tương đương với việc sử dụng như ban đầu và việc sử dụng nhiều lớp ẩn làm cho tốc độ của hệ thống chạy chậm hơn, còn sử dụng ít hơn thì độ chính xác không cao, nên nhóm quyết định chọn số lớp phù hợp cho model
Kernel nhóm thực hiện chọn 3 x 3 vì: Ảnh bản đầu đã được resize chỉ còn 16 x
16 pixel, nếu chọn Kernel 5 x 5 (tức là trong 25 điểm ảnh chỉ lấy đi 1 điểm) thì sẽ mất đi tính đặc trưng của ảnh
Hình 3-18 Sơ đồ phân tích các bước nhận diện ảnh
KẾT QUẢ THỰC NGHIỆM
Phần cứng
Để thể hiện tính ứng dụng một cách trực quan của hệ thống vào thực tế nhóm thực hiện đã tiến hành tiến hành thiết kế và thi công mô hình robot thùng rác di động như thực tế
Mô hình hệ thống được kết nối 6 khối: khối nguồn, khối động cơ, khối xử lý ảnh, khối cảm biến và khối xử lý trung tâm lại với nhau Các khối được kết nối với nhau qua dây tín hiệu
Hình 4-1 Mô hình thùng rác di động
Người thực hiện đã tiến hành thi công, lắp đặt mô hình thùng rác di động phù hợp với đề tài, mô hình chia thành 2 phần: Phần phía trên là nơi để thùng rác, cảm biến, nút nguồn và camera Phần dưới là nơi chứa khối động cơ, khối xử lý chính, khối xử lý ảnh, khối nguồn pin Hình 4.1 là ảnh chụp tổng thể toàn bộ mô hình thùng rác di động sau khi đã hoàn thành.
Phần mềm
Theo yêu cầu và phương án thiết kế đã đề ra, tiến hành thiết kế app, viết phần mềm xử lý cho khối trung tâm, phần mềm xử lý nhận diện cử chỉ tay cho khối xử lý ảnh
Phần mềm được lập trình có chức năng:
Giao tiếp với camera để xử lý nhận dạng cử chỉ bàn tay
Giao tiếp với cảm biến khoảng cách hồng ngoại để phát hiện vật cản, giao tiếp xử lý điều khiển động cơ hoạt động
Giao tiếp truyền nhận dữ liệu qua App
Các thư viện hỗ trợ trong quá trình lập trình:
Thư viện hỗ trợ thiết kế giao diện như: time, serial…
Thư viện hỗ trợ train ảnh như: cv2, Tensorflow, numpy, …
Thư viện hỗ trợ chụp ảnh từ Camera: Gstream
Hình 4-2 Giao diện App điều khiển robot
Khi mô hình robot thùng rác di động được khởi động bằng nút nhấn trên robot Đèn power trên App sẽ sáng báo hiệu robot đã khởi động Lúc đó dung lượng rác được đo từ cảm biến gán trong thùng sẽ gửi lên App và hiển thị qua thanh dung lượng Khi người dùng nhấn phím CONTROL trên app và phím chuyển sang trạng thái On, thì robot sẽ dừng lại, chờ việc điều khiển di chuyển theo các hướng tới, lui, quay trái, quay phải tương ứng với các phím UP, DOWN, LEFT, RIGHT ở trên giao diện App
KẾT QUẢ SO SÁNH, THỰC NGHIỆM, PHÂN TÍCH, TỔNG HỢP
Kết quả nhận dạng cử chỉ bàn tay
Mục tiêu ban đầu của đề tài “Xây dựng mô hình thùng rác di động di chuyển tự động và theo cử chỉ tay” mà nhóm thực hiện đã đặt ra là: một mô hình robot tự động di chuyển né vật cản di chuyển trong khu vực công cộng, phát hiện nhận dạng cử chỉ tay người (bàn tay mở) khi có người muốn kêu gọi để bỏ rác Sau khi hoàn thiện, nhóm thực hiện tiến hành chạy thử robot để kiểm tra độ ổn định, cũng như tính chính xác và độ trễ khi điều khiển Sau thực nghiệm, nhóm thực hiện thấy mạch hoạt động ổn định, độ chính xác khác cao, thỏa mãn với yêu cầu mà nhóm thực hiện đã đề ra Để đánh giá kết quả nhận diện cử chỉ tay một cách khách quan hơn, nhóm thực hiện tiến hành thực nghiệm 5 lần (lần lượt là 5 vị trí khoảng cách khác nhau kit nhận diện được) Đầu tiên, nhóm thực hiện khởi động kit jetson nano Khi camera phát hiện được cử chỉ bàn tay mở nằm trong phân vùng bên trái của khung hình thì lúc đó chương trình từ kit jetson nano sẽ gửi 1 byte dữ liệu sang ESP32 đọc Tương ứng đối với phát hiện được ở giửa và bên phải khung hình
Dưới đây là những hình ảnh mà nhóm thực hiện đã thu được trong quá trình tiến hành thực nghiệm:
Hình 5-1 Thực nghiệm đối với cử chỉ bàn tay mở ở bên trái khung hình
Khi Camera nhận diện được cử chỉ bàn tay mở nằm trong phân vùng được chia sẵn trong khung hình camera Khi nhận được cử chỉ tay và trọng tâm của bàn tay được đặt trong phân vùng màu vàng bên trái khung hình Sau đó robot sẽ quay 45 độ sang phải và đi thẳng, chờ đến khi cảm biến phát hiện bị chặn rồi kết thúc
Hình 5-2 Thực nghiệm đối với cử chỉ bàn tay mở ở bên phải khung hình
Khi Camera nhận diện được cử chỉ bàn tay mở nằm trong phân vùng được chia sẵn trong khung hình camera Khi nhận được cử chỉ tay và trọng tâm của bàn tay được đặt trong phân vùng màu tím bên phải khung hình Sau đó robot sẽ quay 45 độ sang trái và đi thẳng, chờ đến khi cảm biến phát hiện bị chặn rồi kết thúc
Hình 5-3 Thực nghiệm đối với cử chỉ bàn tay mở ở giữa khung hình
Bảng 5-1 Độ chính xác kết quả nhận diện cử chỉ bàn tay ở các khoảng cách
10cm 50cm 100cm 150cm 200cm Độ chính xác (%)
Nhận xét và đánh giá:
Sau 5 lần thực nghiệm, robot nhận biết được cử chỉ bàn tay mở tương đối tốt, với độ chính xác lên khoảng 100% và giảm dần ở khoảng cách xa Tuy nhiên, tốc độ stream camera nhận diện còn chậm Bên cạnh đó, việc nhận diện còn sai sót khi ánh nắng chiếu vào trực tiếp
Nhận xét và đánh giá mô hình hệ thống
Qua thời gian nghiên cứu và thực hiện đề tài, nhóm đã hoàn thành được mục tiêu đã đề ra ban đầu Mô hình phần cứng hoạt động ổn định, lắp đặt khá dễ dàng, có tính kinh tế Bên cạnh những mặt đạt được, cũng có những khó khăn cần khắc phục đó là thời gian xử lý nhận diện cử chỉ bàn tay còn chậm, hệ thống nhận diện còn sai sót với điều kiện ánh sáng kém làm robot nhận diện sai lệch kết quả bàn tay
Hình 5-4 Kết quả tránh né vật cản của robot
KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN
Kết luận
Sau khi tổng hợp các kết quả đạt được và đem so sánh với những yêu cầu và mục tiêu thiết kế cho thấy hệ thống đáp ứng tương đối đầy đủ, chính xác với những kết quả như sau:
Báo dung lượng rác cho người quản lý thông qua App
Hệ thống tự động thu nhận hình ảnh, xử lý nhận diện cử chỉ bàn tay với độ chính xác khá tốt
Tránh né được vật cản, xử lý di chuyển khá tốt
Bên cạnh đó do thời gian cũng như kiến thức còn hạn hẹp nên cũng không tránh khỏi một số điều cần cải thiện như:
Tối ưu về tốc độ xử lý
Độ chính xác chưa đạt ở mức tối đa bởi yếu tố ánh sáng.
Hướng phát triển
Qua các điểm cần cải thiện được nêu ra đề tài có thể được phát triển theo các hướng rộng hơn và hoàn thiện hơn như:
Tích hợp, thay thế thêm nhiều cảm biến để nâng tính ổn định, thông minh cho hệ thống
Thay thế Camera có độ phân giải cao để chụp ảnh rõ nét
Thay thế khối xử lý trung tâm để hệ thống xử lý nhanh hơn
Tích hợp thêm tính năng tự động di chuyển về vị trí được chỉ định khi thùng rác đã đầy
Nâng cấp thêm tính năng nhận diện người để robot có thể di chuyển đến khu vực có nhóm người và chờ bỏ rác giúp robot linh hoạt hơn.
Ứng dụng trong tương lai gần
Do được thiết kế dưới dạng mô hình, nên phần cứng robot cần được cải thiện nhiều để ứng dụng vào thực tế Tuy nhiên, về cơ bản robot đã vận hành được đúng các yêu cầu được đề ra có thể ứng dụng vào:
Làm giải pháp thu gom rác cho các khu vực công cộng như nhà ga, sân bay…
Làm phương thức xử lý tình trạng xả rác và bảo vệ môi trường cho những khu vực công cộng
Tạo tiền đề phát triển cho các robot xử rác công cộng thông minh sau này
Mô hình robot thùng rác di động nâng cấp cảm biến, có thể lập trình lại để di chuyển thông minh và linh hoạt hơn, ngoài ra có thể đưa dữ liệu dung lượng rác, vị trí robot lên Internet để dễ dàng quản lý và sau lưu thông tin