TỔNG QUAN
ĐẶT VẤN ĐỀ
Hiện nay, với sự phát triển chóng mặt của khoa học và công nghệ, việc áp dụng các giải pháp tự động hóa trong quá trình sản xuất, vận hành, vận chuyển, trở nên cực kỳ quan trọng Đối với môi trường làm việc độc hại, những công việc đòi hỏi tính chính xác cao, có mức độ nguy hiểm cao như các ngành công nghiệp hóa chất, khai thác dầu mỏ, môi trường, sự thay thế con người bằng robot giúp giảm thiểu tai nạn lao động, bệnh nghề nghiệp hay các nguy cơ liên quan đến sức khỏe khác trong quá trình làm việc Đặc biệt, trong thời buổi Covid, việc sử dụng robot để tránh việc tiếp xúc giữa người với người đã trở thành một giải pháp để giảm thiểu sự lây lan.
Chính vì thế, việc lập trình để giúp Robotino tự hành theo đường đi được định sẵn, đồng thời có khả năng tránh vật cản sẽ mang lại rất nhiều lợi ích trong nhiều lĩnh vực khác nhau Chẳng hạn, trong lĩnh vực xây dựng, robot có thể được sử dụng để di chuyển các vật liệu xây dựng và tiến hành các tác vụ trong công trình Trong lĩnh vực y tế, robot có thể được sử dụng để vận chuyển các vật dụng y tế Ngoài ra, việc ứng dụng công nghệ vào điều khiển robot cũng sẽ mang lại nhiều lợi ích cho các lĩnh vực công nghiệp, quân đội và đặc biệt là công tác nghiên cứu và giáo dục.
Cùng với sự bùng nổ về trí tuệ nhân tạo và xử lý ảnh, việc áp dụng công nghệ Deep Learning – Học sâu sẽ giúp cho robot hoạt động dựa trên dữ liệu thu thập được từ môi trường, từ đó giúp nâng cao tính hiệu quả và độ chính xác của hệ thống Đồng thời, việc này giúp giảm tải công việc và nâng cao hiệu suất làm việc của con người.
Có thể thấy ngày nay các ứng dụng về robot nói chung và Robotino nói riêng đang trở nên phổ biến và được nghiên cứu rộng rãi Đã có một số nghiên cứu được thực hiện trong những năm gần đây, cụ thể như những Đồ Án Tốt Nghiệp đã được nghiên cứu và thực hiện vào năm 2022, Trần Thanh Bảo và Trần Chí Việt với đề tài: “Xây dựng Website giám sát và điều khiển Robotino” [1], đề tài đã thiết kế ra một Website dùng để điều khiển các hướng đi, góc xoay của Robotino và sử dụng camera để quan sát, giúp thuận lợi cho việc theo dõi, giám sát và điều khiển từ xa Cũng trong năm 2022, đề tài: “Lập trình RobotRobotino thực hiện mô hình nhận dạng và vận chuyển thuốc trong khu cách ly bệnh truyền nhiễm” [2] của Chung Thị Diệu Hiền và Phạm Thị Thanh Thư đã cho ta thấy được tầm quan trọng của robot trong các ứng dụng thực tế, đề tài mang lại rất nhiều lợi ích cho các nhân viên y tế và cả các bệnh nhân, góp phần hạn chế tiếp xúc để tăng tính an toàn cho mọi người thông qua việc sử dụng Robotino Đây là một đề tài rất có tiềm năng để phát triển trong tương lai Thế nhưng, trong thực tế việc điều khiển Robotino vẫn còn gặp nhiều khó khăn và hạn chế do việc sử dụng cảm biến dò line vẫn tồn tại một số vấn đề như sự cố gián đoạn kết nối, độ chính xác thấp trong môi trường có nhiều nhiễu, độ mờ của đường line hoặc đường line bị đứt, gây ra khó khăn trong việc điều khiển robot di chuyển trên đường đi.
Với việc lấy cảm hứng từ những nghiên cứu trước đó cũng như vấn đề còn tồn động trong việc điều khiển robot, nhóm đã quyết định nghiên cứu và triển khai đề tài:
“Ứng dụng học sâu điều khiển robot Robotino” Đề tài sẽ tập trung nghiên cứu về việc áp dụng công nghệ Deep Learning để giúp robot tự hành trên kiểu đường đi được định sẵn trong tập dữ liệu và tránh vật cản dựa vào dữ liệu từ camera và các cảm biến của Robotino [3].
MỤC TIÊU
Mục tiêu chính của đề tài là sẽ ứng dụng công nghệ Deep Learning để cung cấp một giải pháp AI giúp cho Robotino có thể tự hành, né vật cản Có thể sử dụng được trong các ứng dụng Robot vận chuyển hàng hóa kho bãi.
NỘI DUNG NGHIÊN CỨU
Trong quá trình thực hiện Đồ án tốt nghiệp với đề tài “Ứng dụng học sâu điều khiển robot Robotino” nhóm tập trung giải quyết những nội dung sau:
-Nghiên cứu, tìm hiểu nguyên lý hoạt động các cảm biến, camera và hệ thống lái
- Tìm hiểu về Deep Learning, PyTorch,
- Tìm hiểu về ngrok và Webinterface (website điều khiển Robotino).
- Dùng ngrok tạo một đường hầm kết nối điều khiển từ máy tính cá nhân đến
- Áp dụng lập trình API với Python để tương tác với Robotino.
- Xây dựng mã nguồn (source code) để điều khiển, thu thập và xử lý dữ liệu.
- Xây dựng một cơ sở dữ liệu để phục vụ việc huấn luyện Robotino.
- Đào tạo ra một Deep Learning Model tốt nhất.
- Thiết kế chương trình, mã nguồn (source code) để triển khai Model.
- Chạy thử nghiệm hệ thống, đánh giá và hiệu chỉnh.
- Viết báo cáo luận văn.
- Bảo vệ đề tài tốt nghiệp.
GIỚI HẠN
Một số giới hạn của đề tài như sau:
- Việc đường line xuất hiện trong đề tài chỉ là một cách thể hiện đường đi của Robotino, nhấn mạnh rằng mục tiêu của đề tài không phải là tạo ra Robot dò line.
- Đề tài không chú trọng vào tốc độ, do Server (Model) và Robotino đang giao tiếp thông qua API nên sẽ bị ảnh hưởng bởi giới hạn của tốc độ internet.
-Robotino không thể hoạt động ở điều kiện thời tiết khắc nghiệt như mưa, bão,…
BỐ CỤC
Chương 1: Tổng Quan Đặt vấn đề, dẫn nhập lý do chọn đề tài, mục tiêu và những giới hạn của đề tài,các nội dung nghiên cứu để hoàn thành đề tài và bố cục của đồ án.
CƠ SỞ LÝ THUYẾT
NGÔN NGỮ LẬP TRÌNH PYTHON
- Thiết kế chương trình, mã nguồn (source code) để triển khai Model.
- Chạy thử nghiệm hệ thống, đánh giá và hiệu chỉnh.
- Viết báo cáo luận văn.
- Bảo vệ đề tài tốt nghiệp.
Một số giới hạn của đề tài như sau:
- Việc đường line xuất hiện trong đề tài chỉ là một cách thể hiện đường đi của Robotino, nhấn mạnh rằng mục tiêu của đề tài không phải là tạo ra Robot dò line.
- Đề tài không chú trọng vào tốc độ, do Server (Model) và Robotino đang giao tiếp thông qua API nên sẽ bị ảnh hưởng bởi giới hạn của tốc độ internet.
-Robotino không thể hoạt động ở điều kiện thời tiết khắc nghiệt như mưa, bão,…
Chương 1: Tổng Quan Đặt vấn đề, dẫn nhập lý do chọn đề tài, mục tiêu và những giới hạn của đề tài, các nội dung nghiên cứu để hoàn thành đề tài và bố cục của đồ án.
Chương 2: Cơ Sở Lý Thuyết
Giới thiệt về Robotino, trình bày những kiến thức cơ bản về Deep Learning, Python, API, ngrok, Giới thiệu về các thuật toán và các phương pháp được sử dụng. Cung cấp các kiến thức lý thuyết cần thiết để hiểu rõ hơn về cách thức hoạt động của Robotino trong đề tài.
Chương 3: Tính Toán Và Thiết Kế
Trình bày chi tiết việc tính toán và thiết kế toàn bộ hệ thống từ phần cứng đến phần mềm Trình bày các sơ đồ khối của hệ thống, mô hình thiết kế cho từng khối, nguyên lý hoạt động.
Chương 4: Thi Công Hệ Thống
Trình bày chi tiết các lưu đồ giải thuật và lập trình đều khiển Robotino thu thập dữ liệu, xây dựng một Deep Learning Model, đào tạo Model và áp dụng Model vào thực tế Thể hiện quy trình thực hiện một dự án AI – Deep Learning.
Viết tài liệu hướng dẫn sử dụng hệ thống.
Chương 5: Kết Quả - Nhận Xét - Đánh Giá
Trình bày kết quả đạt được thông qua các bài kiểm tra, thử nghiệm, xác minh, để đưa ra những nhận xét và đánh giá hiệu suất, độ chính xác và tính ổn định của hệ thống, những vấn đề còn tồn đọng trong suốt quá trình nghiên cứu và triển khai hệ thống.
Chương 6: Kết Luận - Hướng Phát Triển Đưa ra các kết luận cũng như đề xuất các hướng phát triển của đề tài.
CHƯƠNG 2 CƠ SỞ LÝ THUYẾT
2.1.1 Robotino – Robot di động dành cho nghiên cứu và đào tạo
Festo Robotino 4.0 hay Robotino 4.0 là một hệ thống robot tự động được giới thiệu bởi Festo Didactic (Đức) vào năm 2019 để thay thế cho phiên bản 3.0 trước đó (ra mắt năm 2014) Nó được cung cấp đầy đủ các cảm biến, cơ cấu chấp hành và giao diện Website điều khiển - Webinterface (nằm trên server của nhà sản xuất) mà khách hàng mong chờ về một thứ gọi là hệ thống robot hiện đại “Hệ thống robot của chúng tôi phù hợp cho cả việc giảng dạy các chủ đề cơ bản về cơ điện tử và công nghệ thông tin, cũng như để sử dụng trong các ứng dụng nâng cao trong lĩnh vực Robot tự hành.” [3].
Robotino có thể được điều hành bởi các phần mềm mà nhà sản xuất cung cấp theo bao gồm Robotino View, Robotino Factory và Webinterface Ngoài ra, việc vận hành Robotino cũng có thể thông qua các nền tảng phần mềm được hỗ trợ khác nhưLabVIEW Programming, MATLAB, REST-API, Trong luận văn này, việc điều khiển và tương tác với Robotino cũng như mọi hoạt động của nó được chủ yếu thông qua Webinterface nhờ vào việc sử dụng API, ngrok và ngôn ngữ lập trình Python.
Bảng 2.1 Thông số kỹ thuật cơ bản Robotino 4.0
STT Thông số Giá trị
1 Vi điều khiển Intel i5 8th generation
2 Hệ điều hành Linux Ubuntu 18.04 LTS
8 Khối lượng (có gắn pin và camera) 22.8kg
2.1.2.1 Bộ xử lý trung tâm
Bộ xử lý trung tâm là một hệ thống máy tính (PC) công nghiệp tiêu chuẩn, cấu hình mạnh mẽ cùng với bộ vi xử lý Intel core i5 thế hệ thứ 8 giúp việc hoạt động của Robotino trên mọi tác vụ đều mượt mà và linh hoạt, độ trễ thấp và tiết kiệm năng lượng.
2.1.2.2 Cảm biến quang GP2Y0A41SK0F
GP2Y0A41SK0F là một loại cảm biến khoảng cách hồng ngoại sản xuất bởi Sharp vào năm 2001.
Hình 2-3 Cảm biến GP2Y0A41SK0F
Trên Robotino 4.0, có tổng cộng 9 cảm biến được trang bị xung quanh đế của
Robotino, mỗi cảm biến cách nhau 40 o (cảm biến 1 đặt ở vị trí 0 o ) và khoảng cách mà cảm biến có thể đo đạt chính xác là trong khoảng từ 40mm đến 400mm.
Các cảm biến này cung cấp một giá trị điện áp tính theo vôn, có nghĩa rằng ngõ ra của nó là ngõ ra analog và có độ lớn phụ thuộc vào khoảng cách từ nó đến vật.
Hình 2-4 Bố trí các cảm biến GP2Y0A41SK0F ở đến của Robotino
Camera Intel Realsense D435 là dòng camera được sản xuất bởi Intel Nó không đơn thuần chỉ là camera, nó được Intel gọi là một “hệ thống độ sâu thị giác” Bởi vì một mặt, nó có một webcam thông thường có chức năng cung cấp hình ảnh trực tiếp. Mặt còn lại, nó có một máy chiếu hồng ngoại và 2 bộ tạo ảnh hồng ngoại, ghi lại độ sâu cho từng pixel trong ảnh Điều này vô cùng tiện lợi trong việc xử lý độ sâu của ảnh trong các lĩnh vực xử lý ảnh, thực tế ảo, học sâu hay trí tuệ nhân tạo.
Hình 2-5 Camera RGBD Intel Realsense D345
Một số tính năng nổi bật của camera RGBD Intel Realsense D345:
+Thế hệ thứ 2 của công nghệ Stereo Depth Camera System.
+Vi điều khiển Intel® RealSense™ Vision Processor D4 thế hệ thứ 2 cũng cung cấp những thuật toán mới cho một tốc độ xử lý tốt hơn và tiết kiệm điện năng + Ảnh RGB chất lượng Full HD
Bảng 2.2 Thông số kỹ thuật của camera RGBD Intel Realsense D345
STT Thông số Giá trị
1 Vi điều khiển Intel® RealSense™ Vision
2 Độ phân giải (RGB) 1920x1280 (Full HD)
3 Độ phân giải (Độ sâu) 1280x720 (HD)
4 Tốc độ khung hình (RGB) 30 FPS
5 Tốc độ khung hình (Độ sâu) 90 FPS
7 Khoảng cách Từ 0.2 đến 10m (điều kiện ánh sáng tốt)
9 Hỗ trợ Hệ điều hành Ubuntu 16.xx
Hệ thống lái của Robotino cực kì đặc biệt, nó được trang bị 3 bánh xe Omnidrive đặt biệt, mỗi bánh xe sẽ có một động cơ truyền động riêng biệt cũng như một bộ mã hóa gia tăng để điều chỉnh tốc độ các bánh xe Nhờ vào các bánh xe đặc biệt này, Robotino có thể di chuyển mọi hướng.
DEEP LEARNING
Như tiêu đề của luận văn – “Ứng dụng học sâu điều khiển robot Robotino”, trong đề tài này chúng ta sẽ có 2 nhân vật chính đó là Robotino và Học sâu – Deep Learning Về Robotino thì đề tài đã giới thiệu ở phần 2.1, cho nên ở phần này bọn em sẽ đi sâu vào phân tích về Deep Learning.
2.3.1 Khái niệm về AI – Machine Learning – Deep Learing
Hình 2-11 AI vs Machine Learning vs Deep Learning
Artificial Intelligence (AI – Trí thông minh nhân tạo), là một tập hợp rộng lớn mà theo đó, Machine Learning (ML – Học máy) và Deep Learning (DL – Học sâu) được ra đời Và như chúng ta cũng có thể thấy ở Hình 2-11, Deep Learning cũng là một tập hợp con của Machine Learning.
Artificial Intelligence - AI - Trí thông minh nhân tạo, là một kỹ thuật truyền dữ liệu, thông tin và trí thông minh của con người cho máy tính với mục tiêu là phát triển những cỗ máy có thể suy nghĩ và hành động như con người Những cỗ máy này có thể bắt chước hành vi của con người, thực hiện nhiệm vụ bằng cách học hỏi và giải quyết vấn đề.
Một số loại AI thường thấy như Reactive Machine, Limited Memory, Theory of Mind và Self-Awareness.
Trí thông minh nhân tạo thường được ứng dụng trong các lĩnh vực như phát triển xe tự lái, robot, trợ lý ảo,
Machine Learning – ML hay Học máy, là một ngành khoa học máy tính sử dụng các thuật toán và phân tích máy tính để xây dựng các mô hình dự đoán có thể giải quyết các vấn đề chuyên biệt.
Machine Learning truy cập một lượng dữ liệu khổng lồ và học hỏi từ khối dữ liệu đó để dự đoán tương lai Nó học từ dữ liệu bằng cách sử dụng nhiều thuật toán và kỹ thuật khác nhau.
Hình 2-12 Cách máy học tập từ dữ liệu
Một số loại Machine Learning thường gặp như Supervised Learning (học có giám sát), Unsupervised Learning (học không giám sát), Reinforcement Learning (học tăng cường),
Machine Learning thường được ứng dụng nhiều trong các lĩnh vực liên quan đến doanh nghiệp, kinh doanh, Một số ứng dụng nổi bật của Machine Learning như dự báo bán hàng cho các sản phẩm khác nhau, khuyến nghị sản phẩm, dự đoán giá cổ phiếu,
Deep Learning – DL hay Học sâu, là một tập hợp con của Machine Learning, liên
Các thuật toán Deep Learning có thể hoạt động với một lượng lớn dữ liệu, bất chấp dữ liệu ở dạng có cấu trúc hay phi cấu trúc Cốt lõi của Deep Learning nằm ở mạng lưới thần kinh nhân tạo (Artificial Neural Network), cho phép máy móc đưa ra quyết định như con người. Điểm khác biệt của Deep Learning và Machine Learning nằm ở cách mà máy tiếp cận với dữ liệu Các thuật toán của Machine Learning thường yêu cầu dữ liệu ở một cấu trúc nhất định, trong khi đó thì Deep Learning lại hoạt động dựa trên nhiều lớp Neural Network.
Hình 2-13 Cấu trúc cơ bản của mạng Neural Network
Mỗi Neural Network chỉ có một lớp input (ngõ vào) và một lớp output (ngõ ra), còn các lớp hidden (lớp ẩn) thì có thể nhiều hoặc ít tùy theo người phát triển.
Deep Learning hoạt động theo cách như sau:
+Dữ liệu ban đầu sẽ được đưa vào lớp ngõ vào, các dữ liệu sẽ đi qua các lớp ẩn như mạng tích chập, mạng tuyến tính, có các thuật toán chuyên biệt, sau khi đi qua các lớp ẩn, kết hợp cùng những hàm đặc trưng như activation, softmax, máy sẽ có thể “khám phá” ra được những đặt trưng (feature) của dữ liệu ngõ vào và tiến hành dự đoán ởlớp ngõ ra.
+Lớp ngõ ra sau đó sẽ được so sánh với ngõ ra thực tế và dựa trên các thông số Loss để xem xét độ hiểu quả của Model.
+Model sau đó sẽ được áp dụng phương thức lan truyền ngược để cải thiện hiệu suất của Model sau, để sau khi kết thúc quá trình đào tạo, máy sẽ cho ra một Model với thông số Loss thấp nhất.
Về mặt ứng dụng, tuy là tập hợp con của AI và Machine Learning, nhưng về độ phủ trong đời sống, Deep Learning tỏ ra không hề thua kém trong các lĩnh vực như Y tế (phát hiện tế bào ung thư), Captionbot tạo chú thích cho hình ảnh, âm nhạc, Object Detected (phát hiện đối tượng),
Như đã trình bày ở trên, việc hoạt động chủ yếu của kỹ thuật Deep Learning phụ thuộc vào các lớp mạng Neural Network, vậy thì mạng Neural Network là gì?
Mạng Neural Network, còn được gọi là Mạng Neural nhân tạo (Artificial Neural Networks - ANN) hoặc mạng Neural mô phỏng (Simulated Neural Networks - SNN), là một tập hợp con của Machine Learning và là trung tâm của các thuật toán Deep Learning Tên và cấu trúc của chúng được lấy cảm hứng từ bộ não con người, bắt chước cách các tế bào thần kinh sinh học truyền tín hiệu cho nhau.
Mạng Neural Network bao gồm các lớp nút (như mô tả ở Hình 2-13), chứa lớp ngõ vào, một hoặc nhiều lớp ẩn và lớp ngõ ra Mỗi nút, hoặc nơ-ron nhân tạo, kết nối với nút khác có trọng số và ngưỡng liên quan với nhau Nếu ngõ ra của bất kỳ nút riêng lẻ nào cao hơn giá trị ngưỡng đã chỉ định, nút đó sẽ được kích hoạt, gửi dữ liệu đến lớp tiếp theo của mạng.
Một số mạng Neural Network phổ biến hiện tại như mạng Perceptron, mạng Perceptron đa lớp (Multilayer Perceptron – MLPs), mạng tích chập (Convolutional Neural Network – CNN), mạng định kỳ (Recurrent Neural Network - RNN),
GIỚI THIỆU VỀ API
API là viết tắt của Application Programming Interface (giao diện lập trình ứng dụng) API là cơ chế cho phép hai thành phần phần mềm giao tiếp với nhau bằng cách sử dụng một tập hợp các định nghĩa và giao thức Một ví dụ đơn giản, chúng ta có một hệ thống phần mềm của cục thời tiết chứa dữ về liệu thời tiết Ứng dụng dự báo thời tiết trên điện thoại hoặc máy tính của chúng ta sẽ thực hiện “giao tiếp” với hệ thống này thông qua API, sau đó sẽ hiển thị cho chúng ta các thông tin về thời tiết ngay trên điện thoại.
Kiến trúc của API thường được triển khai dưới dạng client và server (máy khách và máy chủ) Ứng dụng gửi yêu cầu (request) sẽ được gọi là máy khách và ngược lại, ứng dụng gửi phản hồi (response) sẽ được gọi là máy chủ.
API có 4 cách hoạt động khác nhau, nó đựa dựa trên thời điểm API được tạo ra và mục đích hoạt động của API.
+ API SOAP: các API này chỉ cho phép client và server trao đổi thông qua XML.Đây là một API ít linh hoạt hơn, và lỗi thời dù nó đã từng rất phổ biến trong quá khứ.
+API RPC: các API này được gọi là Remote Procedure Calls (cuộc gọi thủ tục từ xa) Client sẽ hoàn thành một chức năng mong muốn trực tiếp trên server và server sẽ gửi kết quả lại cho client.
+ Websocket API: API Websocket là một loại API web hiện đại, sử dụng các đối tượng JSON để truyền dữ liệu Các API WebSocket hỗ trợ giao tiếp hai chiều giữa client vả server Một điểm đặc biệt của API WebSocket là các server có thể gửi tin nhắn đến client được kết nối, làm cho nó hiệu quả hơn so với REST API.
+REST API: đây là những API linh hoạt và phổ biến nhất hiện nay Client gửi yêu cầu đến server dưới dạng dữ liệu Server sẽ sử dụng đầu này để khởi động các chức năng bên trong, sau đó trả dữ liệu ngõ ra về cho client.
TÍNH TOÁN VÀ THIẾT KẾ
GIỚI THIỆU
Trường này sẽ trình bày chi tiết về sơ đồ khối hệ thống, ý tưởng thiết kế phần mềm, giải quyết các vấn đề kỹ thuật cần thiết để thiết kế một Deep Learning Model điều khiển Robotino Những yêu cầu sẽ bao gồm việc lấy dữ liệu từ cảm biến và camera, xử lý dữ liệu để xây dựng một cơ sở dữ liệu dùng cho việc đào tạo Model, thiết kế kiến trúc các Neural Network cho Model và lựa chọn các thuật toán cần thiết cho việc đào tạo Model.
THI CÔNG HỆ THỐNG
GIỚI THIỆU
Đồ án “Ứng dụng học sâu điều khiển robot Robotino” mang cốt lõi là một Deep Learning Model có thể giúp Robotino tự hành Vì vậy, việc làm chủ yếu sẽ liên quan đến việc thiết kế, đào tạo kiểm định độ thông minh của Model Chương này sẽ tập trung trình bày chủ yếu vào các vấn đề liên quan đến phần mềm bao gồm việc lập trình đào tạo Deep Learning Model, lập trình triển khai Model đã đào tạo lên Robotino và viết hướng dẫn sử dụng.
TẠO ĐƯỜNG HẦM NGROK CHO ROBOTINO
Trong quá trình nghiên cứu và phát triển hệ thống điều khiển Robotino từ xa, việc thiết lập một kết nối an toàn và hiệu quả giữa máy tính và Robotino là một yếu tố quan trọng Trong mục này, nhóm sẽ trình bày quá trình tạo đường hầm kết nối từ PC đến Robotino thông qua ngrok, một công cụ mạnh mẽ cho việc tạo ra các đường hầm (tunnel) giữa localhost của bạn và internet Giúp người khác mạng có thể truy cập được localhost thông qua custom domain của ngrok, tạo ra một kết nối công khai và an toàn qua mạng Internet.
Bước 1: Truy cập và đăng nhập vào trang chủ ngrok dashboard.ngrok.com. Bước 2: Truy cập vào mục Getting Started -> Your Authtoken.
Hình 4-1 Authtoken ngrok của nhóm
Bước 3: Sau khi đã có Authtoken, tiến hành gõ lệnh ngrok authtoken
vào Terminal của Robotino với Authtoken là Authtoken của bạn trên ngrok.
Bước 4: Tạo subdomain (Lưu ý: bước này chỉ có thể thực hiện với các phiên bản ngrok nâng cấp)
+Truy cập vào mục Cloud Edge -> Domains Chọn Create Domain.
Hình 4-2 Mục Domain của ngrok
+Nhập Domain (tương ứng với URL sẽ sử dụng) vào ô Domain và nhập mô tả vào ô Description (không bắt buộc) trong hộp thoại New Domain, sau đó nhấn Continue để hoàn thành tạo Subdomain.
Hình 4-3 Hộp thoại New Domain
Hình 4-4 Thông tin chi tiết về subdomain vừa tạo
Bước 5: Chạy lệnh ngrok http subdomain= 80 trên Terminal của
Robotino với Subdomain là Domain vừa được tạo ở trên (Lưu ý: nếu bạn sử dụng phiên bản miễn phí, hãy nhập: ngrok http 80 )
Hình 4-5 Thông tin về đường hầm ngrok vừa tạo
QUÁ TRÌNH THU THẬP DỮ LIỆU
4.3.1 Quá trình thu thập dữ liệu
(File location: /OOP_source/main.py)
Quá trình thu thập dữ liệu từ Robotino nhằm tạo ra một tệp dữ liệu phục vụ cho quá trình huấn luyện, nó được thực hiện thông qua việc đọc tín hiệu từ cảm biến và camera của Robotino Các tín hiệu này được gửi về máy chủ thông qua API và Webinterface, người dùng sẽ quan sát những thông tin đó và gửi lệnh điều khiển Robotino để di chuyển “mẫu”.
Dữ liệu như hình ảnh, giá trị của các cảm biến, hướng di chuyển sẽ được lưu trữ vào một tệp dữ liệu riêng biệt Mỗi lần Robotino di chuyển, dữ liệu mới sẽ được thêm trong tệp dữ liệu này, tạo ra một bộ dữ liệu mang tính đồng bộ cao.
Trong quá trình thu thập dữ liệu, nhóm đã thiết lập một quy trình chặt chẽ và hiệu quả để đảm bảo khả năng học tập của Model khi huấn luyện Quy trình này nhằm đảm bảo bộ dữ liệu sẽ giúp Model “suy nghĩ giống con người” nhất có thể.
Hình 4-6 Dữ liệu cảm biến và ảnh khi Robotino đi thẳng Đầu tiên, nhìn vào Hình 4-6, khi ta quan sát được đường đi nằm trong tầm nhìn của camera và giá trị của các cảm biến đều bình thường ở mức 0.41 (tức là không có vật cản nằm trong phạm vi hoạt động của cảm biến) thì sẽ điều khiển Robotino thẳng Nếu nhận thấy đường đi đang có dấu hiệu lệch khỏi khung hình của camera thì sẽ tiến hành xoay phải hoặc xoay trái để đưa đường đi về lại khung hình.
Robotino sẽ tiếp tục di chuyển thẳng đến khi có sự thay đổi đường đi (khi gặp khúc cua) Thay vì chờ đến khi Robotino không còn quan sát được đường đi, ta phải chủ động thực hiện hành động xoay và di chuyển trước để đảm bảo hình ảnh của đường đi luôn nằm trong tầm quan sát của camera và cũng đảm bảo sau này Model sẽ hoạt động theo logic của con người Khi đó, ta sẽ xác định hướng xoay tiếp theo mà Robotino cần xoay để nhận thấy được đường line dựa trên hình ảnh của camera Sau đó, gửi liên tục các lệnh điều khiển đến Robotino để thực hiện hành động vượt qua khúc cua, các lệnh điều khiển này bao gồm tổ hợp các hướng đi thẳng và xoay (trái hoặc phải) Cứ di chuyển như thế cho đến khi về lại đường thẳng.
Hình 4-7 Dữ liệu cảm biến và ảnh khi Robotino rẽ Trường hợp 3
Khi Robotino gặp vật cản trong quá trình di chuyển, nhóm đã đưa ra một phương pháp di chuyển để tránh vật cản và quay trở lại đường đi.
Khi cảm biến 1 hoặc 2 bắt đầu nhận tín hiệu từ vật cản, Robotino sẽ thực hiện một hành động xoay phải Robotino sẽ tiếp tục xoay phải cho đến khi cảm biến 1 và 2 không còn nhận tín hiệu từ vật cản và trở về trạng thái bình thường, lúc này camera đã không còn nhìn thấy được đường đi
Hình 4-8 Dữ liệu cảm biến và ảnh khi Robotino gặp vật cản
Sau khi Robotino đã xoay phải và cảm biến 1 và 2 về trạng thái bình thường, lúc này cảm biến 3 hoặc 4 sẽ bắt đầu nhận tín hiệu từ vật cản, Robotino di chuyển thẳng cho đến khi cảm biến 3 và 4 không bị ảnh hưởng từ vật cản nữa.
Hình 4-9 Dữ liệu cảm biến và ảnh khi Robotino đang né vật cản
Khi đó, Robotino sẽ dừng lại và tiến hành một hành động xoay trái cho đến khi cảm biến 3 hoặc 4 lại nhận được tín hiệu từ vật cản thì Robotino sẽ tiếp tục di chuyển thẳng cho đến khi vượt qua được vật cản Lúc này, khi đã vượt qua được vật cản thành công, cảm biến 3 và 4 cũng không còn nhận được tín hiệu từ vật cản thì Robotino sẽ thực hiện hành động xoay trái và quay trở lại di chuyển theo đường đi ban đầu.
4.3.2 Kết quả thu thập dữ liệu
Bảng 4.1 Số mẫu trong tập dữ liệu
Số mẫu dữ liệu cho các hướng đi
Số mẫu dữ liệu Đi thẳng Xoay phải Xoay trái
Sau khi quá trình thu thập dữ liệu được hoàn thành, nhóm thu được kết quả như sau: Tổng số mãu dữ liệu là 4738, số mẫu đi thẳng/rẽ trái/rẽ phải lần lượt là 3615/549/574 Những con số này sẽ góp phần trong việc xác định các Parameter, Weight, khi đào tạo Model.
Các mẫu dữ liệu sẽ được lưu trũ vào một file csv với mỗi mẫu dữ lệu là một dòng có các cột tương ứng:
+Cột 0: thời gian mẫu dữ liệu được thu thập.
+Cột 1 đến cột 9: giá trị của các cảm biến.
+Cột 10 đến cột 12: hướng đi thẳng/trái/phải.
+Cột 13: dữ liệu hình ảnh đã được chuyển đổi về string.
Hình 4-10 Các mẫu trong file csv
LẬP TRÌNH HỆ THỐNG - CÁC BƯỚC XÂY DỰNG MODEL
(File location: /Training_Deep_Learning_Model/trainingModel.py)
Trong quá trình xây dựng một Deep Learning Model, tiền xử lý dữ liệu ảnh là một bước bắt buộc để đưa dữ liệu về dạng phù hợp cho quá trình huấn luyện Quá trình tiền xử lý ảnh cũng góp phần cải thiện hiệu suất và độ chính xác của Model Đoạn code ởHình 4-10 bên dưới là cách thực hiện các phép biến đổi dữ liệu ảnh trước khi đưa vào đào tạo Model. Ởphần khai báo này, nhóm sử dụng hàm transforms của thư viện torchvision để thực hiện các phép biến đổi dữ liệu trước khi đưa sử dụng. Đầu tiên, nhóm đã định nghĩa biến “data_transforms” để lưu trữ các phép biến đổi dữ liệu ảnh cho từng loại dữ liệu, bao gồm “train” (tập đào tạo), “val” (tập thẩm định) và “verification” (tập kiểm định).
Hình 4-11 Quá trình tiền xử lý ảnh
Dữ liệu ảnh được thay đổi kích thước bằng phép biến đổi transforms.Resize(). Điều này giúp đảm bảo kích thước của ảnh ngõ vào phù hợp Tiếp theo, dữ liệu được chuyển đổi về dạng tensor bằng phép biến đổi transforms.ToTensor() Đây là bước quan trọng để có thể đưa dữ liệu vào sử dụng vì khi sử dụng các mạng Neural Network của PyTorch, input lẫn output luôn luôn ở dạng tensor Cuối cùng, dữ liệu được chuẩn hóa bằng phép biến đổi transforms.Normalize() Chuẩn hóa dữ liệu ảnh giúp đưa các giá trị về khoảng giá trị phù hợp để có thể huấn luyện Model một cách hiệu quả hơn. Trong đoạn code này, nhóm sử dụng các giá trị trung bình và độ lệch chuẩn của tập dữ liệu ImageNet để chuẩn hóa dữ liệu ảnh.
(File location: /Training_Deep_Learning_Model/myDataset.py)
Trong ứng dụng Deep Learning, việc tạo Dataset là một bước quan trọng và không thể thiếu Bằng cách tạo Dataset, ta có thể cung cấp cho mô hình những dữ liệu ngõ vào chính xác và đầy đủ để nó có thể học và phân loại đối tượng một cách chính xác Việc tạo Dataset còn giúp ta hiểu rõ hơn về dữ liệu mà ta đang làm việc và phát hiện ra những đặc trưng quan trọng để đào tạo Trong mục này, nhóm sẽ giải thích chi tiết về cách tạo ra Dataset mà nhóm sử dụng cho việc đào tạo Model.
Trong những đoạn code bên dưới, nhóm đã định nghĩa một Class
CustomDataset bằng cách kế thừa class Dataset của thư viện torch để đọc dữ liệu từ các file csv và chuyển đổi chúng thành dữ liệu đào tạo/thẩm định/kiểm định Đầu tiên, phương thức init trong lớp CustomDataset được sử dụng để khởi tạo đối tượng.
Hình 4-12 Khởi tạo Class CustomDataset và phương thức init
Ta khởi tạo dataset với các thông số ngõ vào như data_dir (thư mục dữ liệu) là đường, phase là giai đoạn của tập dữ liệu (có thể là “train”, “val” hoặc “verification”). và transform (phép biến đổi dữ liệu) là thuộc tính chuyển đổi dữ liệu hình ảnh.
Tiếp theo, phương thức len trong lớp CustomDataset được sử dụng để trả về số lượng mẫu dữ liệu trong tập dữ liệu.
Hình 4-13 Phuong thức len trả về số lượng mẫu của tập dữ liệu
Trong phương thức len , đầu tiên ta mở file csv chứa dữ liệu bằng cách sử dụng hàm open trong Python với parameter là đường dẫn đến tập dữ liệu Sau đó, ta sử dụng thư viện csv để đọc các file csv này bằng hàm csv.reader() Sau đó lưu dữ liệu tùng dòng vào biến data dưới dạng list Cuối cùng, đếm và trả về kết quả là số lượng mẫu dữ liệu có trong tập dữ liệu.
Việc xác định số lượng mẫu trong tập dữ liệu rất quan trọng đối với việc đánh giá mô hình học sâu Ta sẽ dựa vào số dự đoán đúng của mô hình so với số lượng mẫu trong tệp dữ liệu để đánh giá chỉ số Accuracy của mô hình.
Cuối cùng, phương thức getitem là phương thức chính của lớpCustomDataset Nó được sử dụng để tải và trả về các mẫu từ tập dữ liệu vào mô hình. Đầu tiên mở các tập dữ liệu tại địa chỉ được cung cấp và đọc dữ liệu Sau đó, sử dụng giá trị của idx để lấy ra dòng dữ liệu tương ứng (0 đến len ()) Cụ thể, phương thức này sẽ đọc tập dữ liệu được chỉ định bởi self.location, lấy dòng thứ idx trong tập dữ liệu, sau đó ánh xạ qua các cột tương ứng để lấy dữ liệu:
+Cột 0: là thời gian dữ liệu được thu thập (cột này không sử dụng trong Model). +Cột 1 đến 9: giá trị của các cảm biến.
+Cột 10 đến 12: các hướng đi lúc dữ liệu được lấy, di chuyển theo hướng nào, giá trị cột đó sẽ là 1.
+ Cột 13: dữ liệu ảnh được chuyển về kiểu string.
Sau khi lấy các dữ liệu thì sẽ thực hiện các phép biến đổi tương ứng và trả về: +image_transformed: dữ liệu ảnh.
+sensor_data: dữ liệu từ các cảm biến (chuyển về dạng tensor và đã được chuẩn hóa).
+ label: label tương ứng với hương đi, 0 là đi thẳng, 1 là rẽ trái, 2 là rẽ phải.
Sau khi đã tạo được Class CustomDataset, ta sẽ tiến hành sử dụng bằng cách gọi ra và khai báo các đối tượng tệp dữ liệu tương ứng (“train”/“val”/“verification”) với đường dẫn, kiểu transform và phase để phục vụ cho việc đưa vào Data Loader và load vào huấn luyện Model.
Hình 4-15 Khai báo các đối tượng tập dữ liệu
(File location: /Training_Deep_Learning_Model/trainingModel.py) Đã có Dataset thì không thể không có Data Loader Data Loader là một phần quan trọng trong việc quản lý cách load dữ liệu để đào tào một Model, ta có thể dễ dàng tùy chỉnh các tham số của nó để phù hợp với các nhu cầu khác nhau trong quá trình huấn luyện.
Hình 4-16 Khởi tạo Data Loader
Trong đoạn code trên, nhóm đã sử dụng class DataLoader của thư viện torch để tạo các bộ dữ liệu train, validation và verification từ các đối tượng tập dữ liệu vừa khai báo bên trên với các parameter:
+batch_size để đảm bảo mỗi lần lấy mẫu từ tập dữ liệu sẽ trả về một mini- batch với kích thước duy nhất, Data Loader sẽ load từng bộ dữ liệu đơn lẻ trong quá trình huấn luyện, giúp tiết kiệm bộ nhớ và tăng hiệu suất huấn luyện.
+shuffle dùng để xóa trộn các dữ liệu khi sử dụng Shuffle = True được sử dụng để trộn các mẫu dữ liệu, đảm bảo rằng các mẫu được lấy ra ngẫu nhiên và giảm thiểu sự ảnh hưởng của thứ tự của các mẫu đến quá trình huấn luyện, giúp mô hình học được các mẫu đa dạng hơn và tránh tình trạng overfitting.
Cuối cùng, nhóm đã định nghĩa một dictionary cho các Data Loader bao gồm
“train”, “val” và “verification” và trả về từ điển này cho việc sử dụng tiếp trong quá trình huấn luyện Bằng cách này, có thể dễ dàng truy cập đến Data Loader của mỗi tập dữ liệu trong suốt quá trình đào tạo hay kiểm tra.
(File location: /Training_Deep_Learning_Model/allNetwork.py)
Các mạng Neural Network sẽ được xây dựng dựa theo kiến trúc đã thiết kế ở chương 3 Bao gồm mạng LINEAR NETWORK, VGG16 và CONCATENATE NETWORK.
Với mạng LINEAR NETWORK, nó được khai báo dưới dạng một class có tên SensorProcessingModel(), dùng để xử lý dữ liệu của 9 cảm biến hồng ngoại Như đã nói ởphần thiết kế, đề tài sử dụng 3 lớp mạng Linear xen kẻ với 3 lớp mạng activation Các mạng activation gồm có mạng ReLU và Softmax Nhóm để mạng Softmax ở cuối Network Ngõ vào của mạng là một tensor 1 có kích thước [1x9] và ngõ ra là một tensor có kích thước [1x8].
KẾT QUẢ - NHẬN XÉT – ĐÁNH GIÁ
GIỚI THIỆU
Đây là chương trình bày và đánh giá những kết quả đề tài đã đạt được trong toàn bộ quá trình nghiên cứu và thực hiện Kết quả của đề tài sẽ bao gồm kết quả đào tạo Deep Learning Model và kết quả các thử nghiệm trên Robotino Tiếp sau những kết quả, chương này sẽ nhận xét và đánh giá tổng quan về đề tài.
KẾT QUẢ
5.2.1 Kết quả đào tạo Model
Bảng 5.1 Kết quả đào tạo Deep Leaning Model
Epoch Train loss Validate loss Train Validate accuracy accuracy
Bảng 5.1 thể hiện quá trình đào tạo Model để Robotino nhận diện được đường đi với tập dữ liệu train và val được thu thập bởi nhóm Do là một kiểu dữ liệu đặt biệt do chính bản thân nhóm tự thu thập, không dựa dẫm vào tập ImageNet cho nên kết quả đào tạo sẽ không thể cho ra những con số tối ưu nhất và đẹp mắt, ít nhất là trong khoảng thời gian nghiên cứu ngắn ngủi cho khóa luận.
Nhìn vào Bảng 5.1, chúng ta có thể thấy qua từng epoch, giá trị Loss sẽ dần giảm xuống ở cả phase đào tạo lẫn xác nhận, còn giá trị Acc sẽ tăng dần, nhưng đến epoch thứ
26 trở đi, có thể thấy Model không còn học được thêm gì và có thể đã chạm đến điểm cực tiểu của hàm Loss cho nên các giá trị Loss lẫn Acc lúc này không còn thay đổi nữa Chúng
Hình 5-1 Giá trị Train Loss và Validate Loss
Hình 5-2 Giá trị Train Accuracy và Validate Accuracy
Nhìn vào Hình 5-1 và 5-2, chúng ta có thể thấy được quá trình học tập của Model là tích cực khi mà các giá trị Loss liên tục giảm còn giá trị Acc liên tục tăng Ngoài ra giá trị Loss và Acc cũng nằm trong mức tốt đối với một Deep Learning Model.
5.2.2 Testing Để các kết quả test mang tính khách quan và chính xác nhất có thể, đề tài đã thiết lập một hệ thống các Testcase (bài kiểm tra) và các Requirement để có thể đánh giá chính xác về khả năng hoạt động của hệ thống.
Các Requirement sẽ có tên, nội dung và các testcase dùng để test tương ứng được trình bày ở bảng bên dưới.
STT Tên Requirement Nội dung Requirement
1 Req-01 Robotino nhận diện và di chuyển theo đường đi.
2 Req-02 Không di chuyển lệch khỏi đường đi.
3 Req-03 Rẽ theo các góc cua, không rẽ lung tung.
Nếu có 2 đường đi trở lên, luôn rẽ vào đường
4 Req-04 có góc rẽ nhỏ hơn.
Ví dụ: giữa đi thẳng và rẽ 90 độ, chọn rẽ 90 độ.
5 Req-05 Nếu có 3 đường đi trở lên, luôn ưu tiên rẽ phải. Đối với vật cản đã được đào tạo có trong tập
6 Req-06 + Né và không chạm vật cản
+ Quay lại được đường đi Đối với vật cản không được đào tạo có trong tập
7 Req-07 + Né và không chạm vật cản
+ Quay lại được đường đi Đối với vật cản đặt ở góc cua của đường đi:
8 Req-08 + Né và không chạm vật cản
+ Quay lại được đường đi
9 Req-09 Tốc độ của Robotino đạt từ 4-7cm/s Khi di chuyển không xảy ra tình trạng nghẽn mạng.
Bảng 5.3 Danh sách các Testcase
STT Tên Testcase Nội dung Requirement
- Không có vật cản và đi thuận Req-01
1 Testcase 01 chiều kim đồng hồ Req-02
- Không có vật cản và đi thuận Req-01
2 Testcase 02 chiều nghịch đồng hồ Req-02
- Đặt các loại vật cản có trong
3 Testcase 03 tập dữ liệu đào tạo Req-06
- Đặt các loại vật cản không có
4 Testcase 04 trong tập dữ liệu đào tạo Req-07
- Không có vật cản, đường đi
- Thực hiện 20 lần cho 2 đoạn rẽ khác nhau.
- Không có vật cản, đường đi
- Vật cản nằm ở góc cua của
- Giảm dần thời gian delay
(sleep) sau mỗi lần gửi lệnh yêu cầu Robotino di chuyển từ 1 giây đến 0 giây.
Lưu ý: Nhóm sẽ không sử dụng đường đi dùng để thu thập dữ liệu cho việc thực hiện các testcase để đảm bảo độ chính xác và tính minh bạch.
5.2.2.1 Testcase 01 - Không có vật cản, đi thuận chiều kim đồng hồ
Bảng 5.4 Mục đích và bố trí củ a Testcase 01
Mục đích Bố trí Đánh giá chính xác khả năng nhận Không sử dụng bất kì vật cản nào, diện đường đi, khả năng rẽ ở các khúc cua Robotino đi theo chiều kim đồng hồ. của Model.
Tỉ lệ đi thẳng Tỉ lệ rẽ cua
Kết luận: Sau khi hoàn thành Testcase 01, có thể thấy Robotino đi thẳng và rẽ cua rất chuẩn, như cách một con người thực hiện, không xảy ra bất kỳ sai sót nào, Robotino không bị lêch khỏi đường đi và khả năng nhận diện được khúc cua là 100%.
5.2.2.2 Testcase 02 - Không có vật cản, đi nghịch chiều kim đồng hồ
Bảng 5.6 Mục đích và bố trí củ a Testcase 02
Mục đích Bố trí Đánh giá chính xác tính linh hoạt, Không sử dụng bất kì vật cản nào, khả năng nhận diện đường đi, khả năng rẽ Robotino đi nghịch chiều kim đồng hồ. ở các khúc cua của Model.
Tỉ lệ đi thẳng Tỉ lệ rẽ cua
Kết luận: Sau khi hoàn thành Testcase 02, nhóm rất tự hào bởi vì gần như
Robotino đi thẳng và rẽ cua rất chuẩn, như cách một con người thực hiện, không xảy ra bất kỳ sai sót nào, Robotino không bị lêch khỏi đường đi và khả năng nhận diện được khúc cua là 100%.
5.2.2.3 Testcase 03 - Thêm các loại vật cản có trong tập dữ liệu đào tạo
Bảng 5.8 Mục đích và bố trí củ a Testcase 03
Mục đích của Testcase Bố trí Testcase Đánh giá chính xác khả năng nhận Sử dụng 2 vật cản là các tủ chuyên diện vật cản, di chuyển né tránh vật cản và dụng (có kích thước khoảng 45x50cm) quay trở lại đường đi của Model vào đường đi, loại vật cản này đã được thu thập dữ liệu trong quá trình thu thập dữ liệu để đào tạo Model.
Tỉ lệ vượt qua Tỉ lệ quay lại Tỉ lệ né sang thực hiện vật cản đường đi phải vật cản
Kết luận: Sau khi hoàn thành Testcase 03, thu được kết quả như sau:
+ Trong 20 vòng di chuyển, Robotino nhận ra vật cản 1 rất tốt, chỉ có một lần được vật cản Sau đó Robotino thực hiện đi qua vật cản và quay lại đường đi rất tốt, chỉ có 2 lần là Robotino bị mất phương hướng sau khi vượt qua vật cản 1 dẫn đến không quay về được đường đi (2 trên tổng số 20 lần, tương đương 10%).
+ Robotino nhận diện rất tốt vật cản 2, trong tổng cố 20 lần gặp vật cản 2, Robotino có thể nhận diện được cả 20 lần, sau đó đi qua vật cản 2 và quay về đường đi cực kỳ tốt mà không lần nào gặp lỗi.
5.2.2.4 Testcase 04- Thêm các vật cản không có trong tập dữ liệu đào tạo Bảng 5.10 Mục đích và bố trí củ a Testcase 04
Mục đích của Testcase Bố trí Testcase
Kiểm tra khả năng thích ứng của Sử dụng các vật cản mới chưa được Model đối với các ngoại lệ (những loại vật thu thập dữ liệu cũng như chưa dùng để cản mới) đào tạo Model.
+ Vật cản 3 là tổ hợp ghép 4 tủ chuyên dụng (kích thước lớn hơn 60x60cm).
+ Vật cản 4 là bình chữa cháy (kích thước nhỏ hơn 40x40cm).
Tỉ lệ vượt qua Tỉ lệ quay lại Tỉ lệ né sang thực hiện vật cản đường đi phải vật cản
Kết luận: Sau khi thực hiện Testcase 04, thu được kết quả như sau:
+Đối với vật cản 3, Robotino đã làm nhóm bất ngờ với chỉ có 4 lần Robotino không vượt qua được vật cản và đứng im xoay qua xoay lại (như kiểu con người bị mất phương hướng) đạt tỷ lệ 80% là vượt qua được vật cản Sau khi vượt qua được vật cản, Robotino chỉ có thể quay lại đường đi được 15 lần (75%).
NHẬN XÉT VÀ ĐÁNH GIÁ
Đầu tiên, về khả năng đào tạo Model, kết quả của đào tạo được thể hiện ở Bảng
5.1, cũng như các Hình 5-1, 5-2 đều thể hiện rất tốt và cho thấy được sự tin cậy, mặc dù các con số vẫn chưa đẹp mắt, chưa tối ưu nhất nhưng vẫn nằm trong khoảng chấp nhận được về kết quả đào tạo và mức độ thông minh của một Deep Learning Model.
Thứ hai, thông qua các Testcase đã thực hiện, có thể thấy về khả năng hoạt động, Model hoạt động cực tốt trong quá trình đi theo đường đi không có vật cản, có khả năng rẽ ở các khúc cua rất mượt mà, lựa chọn đường đi đúng theo yêu cầu đặt ra rất tốt Ngoài ra cũng đạt tốc độ yêu cầu và không xảy ra tình trạng nghẽn mạng khi thời gian delay lớn hơn 0.2 giây.
Thứ 3, về khả năng né vật cản, Model cho thấy khả năng hoạt động rất tốt với các vật cản đặt ở vị trí bình thường, không những nhận diện được các vật cản đã được đào tạo, còn có thể hoạt động ở mức độ khá với các vật cản có kích thước lớn hay nhỏ hơn Tuy nhiên, vẫn xảy ra các sai sót làm cho Robotino đâm vào vật cản hay mất phương hướng làm dẫn đến không thể đi tiếp hoặc không hoàn thành đường đi Đặc biệt trong trường hợp vật cản nằm ở góc rẽ, Model vẫn không thể xử lý được trường hợp này Điều này xảy ra có thể do trong quá trình thu thập dữ liệu, người thu thập dữ liệu đã để sót trường hợp này cũng như chú trọng hơn về giá trị các cảm biến, chỉ khi các giá trị cảm biến không còn thì Model mới xử lý hình ảnh và tìm đường đi.
Tổng quan lại có thể thấy, đề tài là một bước tiến của nhóm với khả năng tạo ra một Deep Learing Model giúp cho Robotino có thể tự hành Tuy nhiên, khả năng né vật cản của Robotino đôi khi vẫn hoạt động chưa ổn định, đặc biệt đối với các vật cản lạ và vật cản nằm ở vị trí khó Điều này xảy ra có thể do số lượng dữ liệu của các tệp dữ liệu đào tạo vẫn chưa đủ nhiều, có những xung đột bên trong dữ liệu ảnh và dữ liệu các cảm biến, kiểu dữ liệu mang tính đặc trưng cao,