THIẾT KẾ VÀ CHẾ TẠO ROBOT CHECK-IN TỰ ĐỘNG CHO CÁC SỰ KIỆN Trong thời đại ngày nay, khi công nghệ liên tục phát triển, việc áp dụng các giải pháp tự động hóa trở nên ngày càng quan trọn
GIỚI THIỆU
Lý do chọn đề tài
Trong bối cảnh tổ chức sự kiện hiện đại, từ hội nghị quốc tế đến triển lãm nghệ thuật, việc quản lý đám đông và nâng cao trải nghiệm người tham gia trở thành thách thức lớn Để giải quyết vấn đề này, việc thiết kế robot có khả năng thay thế con người trong các công việc như check-in là rất cần thiết Đặc biệt, việc phát triển robot di chuyển hiệu quả trong môi trường đông người nhằm tối ưu hóa quy trình check-in sẽ góp phần cải thiện trải nghiệm cho người tham dự Do đó, nhóm đã chọn đề tài “Thiết kế và chế tạo robot check-in tự động cho các sự kiện” cho đồ án của mình.
Tính cấp thiết của đề tài
Kinh tế xã hội ngày càng phát triển, nhu cầu hòa nhập cộng đồng của con người cũng tăng cao, đòi hỏi mối liên kết chặt chẽ giữa các cá nhân và quốc gia Để trao đổi và học hỏi hiệu quả, việc tổ chức các chương trình, sự kiện là cần thiết, đặc biệt tại Việt Nam với nhiều hoạt động diễn ra trong năm An ninh tại các sự kiện lớn như “Hawa expo 2024” rất quan trọng, yêu cầu người tham gia phải hoàn thành thủ tục check in để vào tham quan Tuy nhiên, vào giờ cao điểm, tình trạng ùn tắc xảy ra khi lượng khách đông, gây ảnh hưởng đến thời gian và cảm xúc của người tham gia Để khắc phục, ngoài việc tăng cường nhân viên hỗ trợ check in, việc áp dụng công nghệ như robot hỗ trợ check in sẽ là giải pháp đột phá, giúp nâng cao hiệu quả và trải nghiệm cho khách tham quan.
Ý nghĩa của đề tài
Nhóm nghiên cứu đề tài “Thiết kế và chế tạo robot check-in tự động cho các sự kiện” mong muốn phát triển một robot tự động hoạt động tại khu vực check-in, thay thế con người trong quy trình này Robot sẽ giúp tiết kiệm thời gian và nhân sự, nâng cao trải nghiệm cho người tham gia, quản lý dữ liệu hiệu quả và góp phần vào xu hướng tự động hóa trong thời đại mới.
Mục tiêu nghiên cứu của đề tài
Nghiên cứu, thiết kế Robot có ngoại hình gần gũi phú hợp với các ứng dụng của doanh nghiệp, dễ dàng tương tác
Giao diện được thiết kế đơn giản và thân thiện, đáp ứng đầy đủ nhu cầu cơ bản cho nhiệm vụ check-in Hệ thống đảm bảo lưu trữ dữ liệu chính xác và đầy đủ thông tin cần thiết, đồng thời bảo vệ an toàn thông tin của người tham gia sự kiện.
Thực nghiệm và đưa ra kết quả, định hướng phát triển cho đề tài.
Đối tượng và phạm vi nghiên cứu của đề tài
1.5.1 Đối tượng nghiên cứu Đối tượng nghiên cứu của đề tài là các công ty, doanh nghiệp và trường học có nhu cầu thường xuyền tổ chức các sự kiện Nhóm tập trung vào việc hiểu và đáp ứng tốt nhất các nhu cầu của đối tượng này để phát triển robot tự di chuyển trong môi trường đông người, giúp họ check in tại các sự kiện dễ dàng hơn
Nhóm nghiên cứu đang phát triển robot hoạt động chủ yếu trên nền gạch phẳng, trong môi trường đông người và dễ sử dụng Robot này được thiết kế để di chuyển trong không gian đã được cài đặt trước, không tích hợp tính năng quay về vị trí cũ và sạc pin tự động, mà tập trung vào các tính năng cơ bản.
Nghiên cứu và thử nghiệm sẽ tập trung vào việc tạo ra một môi trường mô phỏng khu vực check-in tại các sự kiện, với điều kiện và địa hình đơn giản nhằm đảm bảo tính thực tiễn và khả thi.
Phương pháp nghiên cứu
Để thực hiện đề tài này, phương pháp sử dụng cho nghiên cứu này chủ yếu là kết hợp giữa nghiên cứu lý thuyết và thực nghiệm
• Tham khảo các kết quả nghiên cứu đã có trước đó để kế thừa
• Khảo sát chế độ điều khiển và cơ cấu của các robot tự hành để thu thập dữ liệu về thông số và các tiêu chuẩn kỹ thuật
• Tìm hiểu khả năng, điều kiện công nghệ chế tạo, đề ra phương án thiết kế phù hợp
Tiến hành thử nghiệm thực tế hoặc mô phỏng các giải pháp thiết kế là bước quan trọng để đánh giá hiệu quả, tính khả thi và sự thích hợp của chúng, dựa trên các tiêu chí đã được xác định trước đó.
Kết cấu đồ án
Nội dung nghiên cứu ĐATN của nhóm bao gồm 6 chương, trong đó:
- Chương 2: Tổng quan đề tài
- Chương 3: Cơ sở lý thuyết
- Chương 4: Phương hướng thực hiện đề tài
- Chương 5: Tính toán và thiết kế hệ thống
- Chương 6: Chế tạo, thực nghiệm và kết quả
CƠ SỞ LÝ THUYẾT
Cơ cấu di chuyển của robot
Trong đồ án này, chúng em nghiên cứu cấu hình của Robot di động với hai bánh chủ động, được mô tả như hình dưới Robot di chuyển nhờ hai động cơ độc lập, cung cấp moment cho từng bánh Việc sử dụng hai bánh chủ động với động cơ riêng biệt giúp robot linh hoạt di chuyển trong không gian hẹp và thực hiện các thao tác phức tạp dễ dàng Vận tốc của robot được xác định dựa trên vận tốc của bánh xe.
Hình 3.1 Mô hình động học của cơ cấu di chuyển
Trong đó: v: Vận tốc tuyến tính của robot (m/s) v R : Vận tốc tuyến tính của bánh xe bên phải (m/s) v L : Vận tốc tuyến tính của bánh xe bên trái (m/s)
Hệ điều hành Robot Operating System
3.2.1 Giới thiệu Robot Operating System
Robot Operating System (ROS) là hệ điều hành mã nguồn mở cho robot, được sử dụng phổ biến trong lĩnh vực robotics ROS cung cấp một tập hợp công cụ, thư viện và quy ước giúp đơn giản hóa việc phát triển hành vi robot phức tạp trên nhiều nền tảng khác nhau mà không cần thay đổi lớn trong phần mềm.
Hình 3.2 Tổng quan hệ điều hành Robot Operating System (Nguồn: Tự động nhận diện cổng cảm biến robot – BK-SIMOTEC (bksimotec.com))
ROS được phát triển nhằm tạo điều kiện thuận lợi cho việc chia sẻ và tái sử dụng trên nhiều phần cứng robot mà không cần xây dựng lại từ đầu, giúp tiết kiệm thời gian và công sức Việc áp dụng thành quả nghiên cứu trước đó để phát triển các thuật toán mới cũng trở nên dễ dàng hơn Nhờ vào những lợi ích mà ROS mang lại, nhiều tổ chức nghiên cứu trên toàn cầu đã cung cấp nguồn thông tin phong phú về phần cứng và phần mềm Nhiều công ty và tổ chức đã ứng dụng nền tảng này vào sản phẩm của họ, từ đó nâng cao chất lượng thiết bị Hiện nay, có rất nhiều thiết bị trên thế giới được hỗ trợ bởi framework này.
ROS là một hệ điều hành mã nguồn mở thu hút sự quan tâm của cộng đồng, dẫn đến việc phát triển phong phú các công cụ và thư viện Hiện tại, ROS chỉ hoạt động trên nền tảng Unix, chủ yếu được thử nghiệm trên hệ điều hành Ubuntu và Mac OS X Chương trình cốt lõi của ROS cùng với các công cụ tiện ích và thư viện được phát hành dưới dạng các phiên bản mới gọi là ROS Distribution, tương tự như các bản phân phối Linux, cung cấp chuỗi phần mềm tương thích.
Khi ứng dụng ROS vào robot, khối lượng công việc kỹ thuật cơ bản giảm, trong khi công việc xây dựng hệ thống tăng lên đáng kể Điều này cho phép chúng ta có thêm thời gian để nghiên cứu các ứng dụng chuyên sâu, nâng cao hàm lượng khoa học trong dự án.
Kiến trúc ROS có ba cấp khái niệm: Filesystem, Computation Graph và Community
Hình 3.3 Cấu trúc ROS Filesystem Lever (Nguồn: Robot Operating System Cookbook (packtpub.com))
ROS Filesystem Lever chủ yếu là các nguồn tài nguyên ROS được thực thi trên bộ nhớ lưu trữ hệ thống, bao gồm:
Các gói (packages) trong ROS bao gồm các lệnh thực thi (nodes), thư viện phụ thuộc, tập dữ liệu, file cấu hình và các dữ liệu cần thiết khác cho hệ thống.
- Manifests (manifests.xml): cung cấp cơ sở dữ liệu về một package, bao gồm license, cờ biên dịch,
- Stacks: là tập hợp các packages phối hợp với nhau để thực hiện một chức năng (vd: Navigation stack)
- Stack Manifests (stack.xml): cung cấp cơ sở dữ liệu về một stack, bao gồm license và các thông số phụ thuộc vào những stack khác
- Message(msg): là cấu trúc dữ liệu cho việc truyền nhận trong ROS
- Service (srv): định nghĩa cấu trúc dữ liệu cho các lệnh truy cập (request) và các phản hồi (response) của các services trong ROS
Hình 3.4 Cấu trúc ROS Computation Graph Lever (Nguồn: Mastering ROS for Robotics Programming - Second Edition (packtpub.com))
Computation Graph là một mạng nơi các quy trình trong ROS được kết nối với nhau
Any node within the system can access this network, interact with other nodes, and exchange data contained within it The fundamental concepts of a Computation Graph include nodes, Master, Parameter Server, messages, services, topics, and bags.
Node là một quy trình quan trọng trong việc tính toán và điều khiển, có thể được tạo ra khi biên dịch thành công một package Trong cùng một package, nhiều node có thể được tạo ra, mỗi node đảm nhận một chức năng khác nhau Để giao tiếp và tương tác với các node khác, mỗi node cần được kết nối với mạng ROS.
- Master: ROS Master cung cấp một tên đăng ký và tra cứu phần còn lại của
Computation Graph Nếu không có ROS Master thì các node không thể tìm thấy nhau, trao đổi các message hay gọi các service
Parameter Server là một hệ thống cho phép lưu trữ dữ liệu theo từ khóa tại một vị trí trung tâm, đóng vai trò quan trọng trong kiến trúc Master Nhờ vào các biến này, người dùng có thể cấu hình các node trong quá trình hoạt động hoặc điều chỉnh chức năng của chúng một cách linh hoạt.
Các node giao tiếp thông qua messages, là các cấu trúc dữ liệu bao gồm các trường như integer, floating point, và boolean Messages có thể chứa các kiểu cấu trúc và mảng lồng nhau, tương tự như kiểu struct trong C Ngoài ra, người dùng cũng có thể phát triển các kiểu message tùy chỉnh dựa trên các message chuẩn.
Trong hệ thống vận chuyển, các tin nhắn được định tuyến và phân loại thành hai loại chính: publish và subscribe Một node gửi tin nhắn bằng cách publish lên một topic đã được xác định, trong đó topic chỉ là tên để nhận diện nội dung của tin nhắn Mỗi node chỉ có thể subscribe vào một topic với tên và kiểu dữ liệu đã được khai báo Nhiều publishers và subscribers có thể cùng truy cập vào một topic đồng thời, và một node có thể vừa publish vừa subscribe nhiều topic khác nhau Quan trọng là publishers và subscribers không nhận thức được sự tồn tại của nhau, điều này giúp tách rời nguồn tạo thông tin và nơi sử dụng thông tin trong ROS.
Mô hình publish/subscribe mang lại sự linh hoạt trong giao tiếp với khả năng truyền tải đa đối tượng và theo một chiều Tuy nhiên, nó không phải lúc nào cũng phù hợp cho việc truyền tải theo dạng request/reply, thường được sử dụng trong các hệ thống phân bổ Do đó, việc truyền nhận theo dạng request/reply được thực hiện thông qua services, được định nghĩa bởi một cặp cấu trúc dữ liệu cho request và reply Một node cung cấp service thông qua thuộc tính name, trong khi client sử dụng service bằng cách gửi một message request và chờ phản hồi.
Bags là định dạng lưu trữ và phát lại dữ liệu tin nhắn ROS, đóng vai trò quan trọng trong việc lưu trữ dữ liệu như dữ liệu cảm biến Việc thu thập dữ liệu này thường khó khăn nhưng cần thiết cho việc phát triển và thử nghiệm các thuật toán robot Tính năng Bags rất hữu ích khi làm việc với các cơ chế phức tạp của robot.
Hình 3.5 Mô hình giao tiếp giữa các Node (Nguồn: 6: Role of Master in ROS communication | Download Scientific Diagram
Cộng đồng ROS Level là khái niệm về việc trao đổi các nguồn tài nguyên liên quan đến phần mềm và kiến thức giữa người dùng trong cộng đồng ROS Các nguồn tài nguyên này bao gồm tài liệu, mã nguồn, và kinh nghiệm thực tiễn, giúp nâng cao hiệu quả sử dụng và phát triển các ứng dụng trên nền tảng ROS.
- Distributions: là tổng hợp các phiên bản của stack mà chúng ta có thể cài đặt
ROS Distributions có vai trò tương tự như Linux Distributions
- Respositories : là nguồn tài nguyên dựa trên cộng đồng mạng lưới các tổ chức khác nhau phát triển và phát hành những mô hình riêng của họ
ROS Wiki là một kho tài liệu phong phú về Robot Operating System (ROS), nơi mọi người có thể chia sẻ thông tin, cập nhật nội dung và viết hướng dẫn Người dùng chỉ cần đăng ký tài khoản để tham gia đóng góp cho cộng đồng.
3.2.3 Giới thiệu phiên bản ROS Noetic
Trong đồ án này, chúng tôi sẽ sử dụng phiên bản ROS Noetic, phiên bản thứ 12 và mới nhất của Hệ điều hành Robot (ROS), được phát hành vào tháng 5 năm 2020 ROS Noetic Ninjemys là một trong những phiên bản được phát triển và hỗ trợ chính thức bởi Open Robotics.
Hình 3.6 Phiên bản ROS Noetic (Nguồn: The State of Robotics – May 2020 | Ubuntu)
Dưới đây là một số thông tin về ROS Noetic :
- Noetic được phát triển dựa trên ngôn ngữ lập trình Python 3, đồng thời vẫn hỗ trợ Python 2
- Hỗ trợ chạy trên các hệ điều hành Ubuntu 20.04 LTS (Focal Fossa) và các phiên bản mới hơn
- Noetic giới thiệu các cải tiến về tích hợp và ổn định hơn so với phiên bản trước đó là ROS Melodic
- Cung cấp sự hỗ trợ cho các gói phần mềm và thư viện mới, cũng như các công nghệ mới như TensorFlow 2.0 và PyTorch
➢ Hỗ trợ công cụ và thư viện:
- Noetic hỗ trợ sử dụng các công cụ như Gazebo, Rviz và MoveIt! để mô phỏng, hiển thị và điều khiển robot
YOLOv8
YOLOv8 là mô hình nhận diện và phát hiện đối tượng tiên tiến do nhóm Ultralytics phát triển Lịch sử của các mô hình YOLO bắt đầu từ Joseph Redmon, nhà khoa học máy tính đã sáng tạo ra các phiên bản đầu tiên Trong số đó, YOLOv3, phiên bản thứ ba, được xây dựng dựa trên kiến trúc Darknet.
Glenn Jocher đã phát triển YOLOv3 trong PyTorch và thực hiện các cải tiến nhỏ để nâng cao hiệu suất, từ đó ra đời YOLOv5 Kiến trúc YOLOv5 tiếp tục được điều chỉnh và nâng cấp, dẫn đến sự phát triển của YOLOv8.
YOLOv8 cung cấp các kích thước mô hình khác nhau để phù hợp với các nhu cầu và tài nguyên tính toán khác nhau, bao gồm:
Hình 3.7 Các loại model YOLOv8
(Nguồn:https://docs.ultralytics.com/ )
• YOLOv8-n (nano): Phiên bản nhỏ nhất, tối ưu cho các ứng dụng yêu cầu tốc độ và tài nguyên tính toán thấp
• YOLOv8-s (small): Phiên bản nhỏ, cân bằng giữa tốc độ và độ chính xác
• YOLOv8-m (medium): Phiên bản trung bình, cung cấp độ chính xác cao hơn so với phiên bản nhỏ nhưng vẫn giữ được hiệu suất tốt
• YOLOv8-l (large): Phiên bản lớn, tối ưu cho các ứng dụng đòi hỏi độ chính xác cao và có tài nguyên tính toán đủ mạnh
• YOLOv8-x (extra large): Phiên bản lớn nhất, cung cấp độ chính xác tối đa cho các ứng dụng phức tạp và yêu cầu tính toán cao
Với sự linh hoạt và hiệu suất cao, YOLOv8 tiếp tục là một lựa chọn hàng đầu trong lĩnh vực nhận diện và phát hiện đối tượng.
Thuật toán Dijkstra
Lập kế hoạch đường đi là quá trình tìm ra lộ trình ngắn nhất và tối ưu cho phương tiện tự hành, giúp xe di chuyển từ điểm nguồn đến điểm đích Quá trình này bao gồm việc xác định quỹ đạo để robot có thể đạt được mục tiêu khi thực hiện Kết quả từ thuật toán lập kế hoạch đường đi sẽ được áp dụng cho chuyển động vật lý của robot trong môi trường, có thể là trong nhà hoặc ngoài trời Môi trường trong nhà thường có các chướng ngại vật cố định như tường, cửa ra vào, và đồ đạc, trong khi giả định rằng robot sẽ không bị cản trở bởi các vật thể di chuyển khác Thuật toán Dijkstra được biết đến như một trong những giải pháp hiệu quả nhất cho việc lập kế hoạch đường đi.
Thuật toán Dijkstra được sử dụng để tìm đường đi từ một đỉnh đến tất cả các đỉnh còn lại trong đồ thị có trọng số không âm, với độ phức tạp là 𝑂(𝑛2 + 𝑚), trong đó m là số cạnh và n là số đỉnh Thuật toán này thường được ứng dụng trong định tuyến và các chương trình con trong các thuật toán đồ thị, cũng như trong công nghệ hệ thống định vị toàn cầu (GPS).
Hình 3.8 Hệ thống tìm đường đi trên bản đồ sử dụng thuật toán Dijkstra
(Nguồn: Bài Toán Tìm đường đi Ngắn Nhất Với Giải Thuật Dijkstra - Viblo
Thuật toán Dijkstra được sử dụng để xác định đường đi ngắn nhất giữa hai điểm trên dữ liệu từ điển nhiều lớp Kết quả của thuật toán này được áp dụng cho bộ điều khiển robot, giúp robot di chuyển giữa hai điểm Kết quả của thuật toán bao gồm các lệnh như TRÁI, PHẢI, THẲNG hoặc QUAY, hướng dẫn robot di chuyển tại mỗi nút để đến đích từ điểm xuất phát Đường dẫn được xác định là một chuỗi các cạnh kết nối.
Con đường tối ưu nhất từ điểm x đến y được xác định bởi path (x, y), trong khi w (d) đại diện cho trọng lượng khoảng cách Thêm vào đó, w (DoD) là hàm trọng số thể hiện mức độ khó khăn khi vượt qua một cạnh giữa hai nút lân cận.
Giả sử ta có một đồ thị (graph) gồm các node và các trọng số đường đi đến các node như sau:
Bài toán đặt ra là dùng thuật toán Dijkstra để tìm đường đi ngắn nhất từ node A đến tất cả các node còn lại
• Bước 1: Chọn node A là source node, tính khoảng cách từ node A đến các node liền kề
Hình 3.10 Chọn node A là source node
• Bước 2: Khoảng cách A-C là ngắn nhất Xét node C, tính tổng khoảng cách từ node C đến các node liền kề
Hình 3.11 Chọn node C là source node
• Bước 3: Khoảng cách từ A đến D là nhỏ nhất Xét node D và tính khoảng cách từ node D đến các node liền kề Ta tính được, đường đi từ node (A–D- F) = 7+14 = 21
> (A-C-F) = 16 Nên vẫn giữ nguyên đường đi ngắn nhất từ A-F là (A-C-F)
Hình 3.12 Chọn node D là source node
• Bước 4: Ở node B, ta thấy khoảng cách từ A đến E có hai đường đi Khoảng cách đường đi từ (A-C-E) = 4 +17 = 21 > (A-B-E) = 9 + 11 = 20 Nên ta chọn đường đi ngắn nhất từ A-E là (A-B-E)
Hình 3.13 Chọn node B là source node
• Bước 5: Sau đó, ta xét tiếp node F tương tự như quá trình trên
Hình 3.14 Chọn node F là source node
• Bước 6: Ở node E, quãng đường từ A-Z là (A-C-E-Z) = 4+17+5 = 26 > (A- C-F-Z)
= 4+12+9 = 25 Nên ta chọn đường đi nhỏ nhất từ A-Z là (A-C-F-Z)
Hình 3.15 Chọn node E là source node
Sau khi tính toán ta có bảng kết quả:
Bảng 3.1 Bảng kết quả thuật toán Dijkstra
Thuật toán Dynamic Window Approach
Mục tiêu cuối cùng của nghiên cứu robot di động là phát triển những thiết bị có khả năng thực hiện nhiệm vụ an toàn trong môi trường nguy hiểm hoặc đông người Chẳng hạn, robot dịch vụ trong văn phòng cần phản ứng nhanh với các thay đổi bất ngờ và thực hiện nhiệm vụ trong nhiều tình huống khác nhau Tuy nhiên, hầu hết robot di động thương mại hiện nay thường phản ứng chậm và thiếu linh hoạt khi gặp phải môi trường phức tạp Chúng lập kế hoạch chuyển động dựa trên các mô hình tĩnh và chính xác, dẫn đến hiệu suất kém khi gặp người hoặc chướng ngại vật không lường trước Để phát triển robot di động tự động, cần xây dựng hệ thống có khả năng nhận thức môi trường, phản ứng với tình huống bất ngờ và lập lại kế hoạch để hoàn thành nhiệm vụ.
The Dynamic Window Approach (DWA) is a local pathfinding algorithm introduced by D Fox, W Burgard, and S Thrun in their 1997 paper "The Dynamic Window Approach to Collision Avoidance" published in Robotics and Automation Magazine This widely used algorithm for navigating robots directly integrates with the robot's dynamics, taking into account the constraints of velocity and acceleration.
Hình 3.16 Cách thức chuyển động tránh vật cản của robot
Phương thức mã hóa thông tin
Nhóm đã quyết định chọn giải pháp sử dụng QR Code cho Robot thông minh tự hoạt động, vì đây là công nghệ đang được ứng dụng rộng rãi hiện nay.
Mã QR code (Quick Response Code) là công nghệ mã hóa thông tin hai chiều (2D) giúp lưu trữ và truyền dữ liệu hiệu quả Được thiết kế để dễ dàng quét và đọc bằng các thiết bị di động, máy tính hoặc máy quét mã QR, mã QR mang lại sự tiện lợi trong việc truy cập thông tin nhanh chóng.
Hình 3.17 QR Code (Quick Response Code)
(Nguồn: https://icheck.com.vn/ma-qr-code-la-gi/)
QR code có rất nhiều ứng dụng trên nhiều lĩnh vực khác nhau, bao gồm:
Mã QR là một công cụ hữu ích trong truyền thông sản phẩm, giúp cung cấp thông tin chi tiết như giá cả, địa điểm mua hàng, hướng dẫn sử dụng và thông số kỹ thuật của sản phẩm.
Mã QR là một công cụ truyền thông hiệu quả trên mạng, cho phép chứa đựng các thông tin như đường dẫn URL, thông tin liên hệ, số điện thoại và tin nhắn văn bản Người dùng chỉ cần quét mã QR để nhanh chóng truy cập các trang web, lưu lại thông tin liên hệ hoặc gửi tin nhắn một cách thuận tiện.
Thanh toán di động ngày càng phổ biến, với QR code là một trong những công nghệ chủ chốt Người dùng có thể quét mã QR để thực hiện giao dịch một cách nhanh chóng và tiện lợi, mang lại trải nghiệm thanh toán dễ dàng và hiệu quả.
Mã QR là một công cụ hữu ích để lưu trữ thông tin vé máy bay, vé sự kiện và thẻ thành viên, đồng thời có khả năng mã hóa để xác thực và bảo mật thông tin cá nhân.
QR code là công cụ hữu ích trong quảng cáo và marketing, thường được áp dụng để cung cấp thông tin bổ sung, khuyến mãi đặc biệt và chương trình giảm giá, giúp thu hút sự chú ý của khách hàng và tăng cường hiệu quả chiến dịch.
Ngoài ra, QR Code còn nhiều công dụng khác tùy vào nhu cầu sử dụng
Mã QR code có nhiều ưu điểm nổi bật:
Dễ sử dụng: Mã QR code có thể được tạo ra và quét thông qua các thiết bị di động
Người dùng chỉ cần sử dụng một ứng dụng quét mã QR để đọc và truy cập thông tin
QR code có dung lượng lớn, cho phép lưu trữ nhiều loại dữ liệu như văn bản, số điện thoại, URL, hình ảnh và hướng dẫn sử dụng Nhờ đó, việc truyền tải thông tin trở nên nhanh chóng và tiện lợi hơn.
QR code được thiết kế để đọc nhanh chóng chỉ trong vài giây, giúp tiết kiệm thời gian và đảm bảo hiệu suất cao trong việc truyền tải thông tin.
QR code có khả năng tương thích cao, có thể được tạo ra và quét trên nhiều thiết bị như điện thoại di động, máy tính bảng và máy tính Điều này mang lại sự linh hoạt và thuận tiện trong việc sử dụng và chia sẻ thông tin qua mã QR.
Mã QR thường được áp dụng trong các chiến dịch quảng cáo và marketing nhằm tăng cường sự tương tác với khách hàng Bằng cách quét mã QR, người dùng có thể nhận thêm thông tin, truy cập vào trang web, tham gia các chương trình khuyến mãi và thực hiện thanh toán một cách dễ dàng.
Mã QR code cũng có một số nhược điểm:
Mã QR code dễ dàng được đọc bằng thiết bị di động, nhưng có thể gặp khó khăn trong một số tình huống như khi mã bị làm mờ, bị méo hoặc thiếu ánh sáng Những yếu tố này có thể khiến việc quét mã QR trở nên khó khăn hoặc thậm chí không thể thực hiện được.
Để sử dụng mã QR code, người dùng cần một thiết bị di động hoặc máy tính có khả năng quét mã và ứng dụng hỗ trợ Yêu cầu này có thể gây khó khăn và tạo sự phụ thuộc vào công nghệ.
Ngôn ngữ lập trình giao diện
Python là ngôn ngữ lập trình hướng đối tượng, cấp cao do Guido van Rossum phát triển, nổi bật với tính dễ học, trở thành lựa chọn hàng đầu cho người mới bắt đầu Ngôn ngữ này có kiểu dữ liệu động và sử dụng cơ chế cấp phát bộ nhớ tự động, cùng với cấu trúc dữ liệu mạnh mẽ và phương pháp lập trình hướng đối tượng đơn giản nhưng hiệu quả.
Hình 3.18 Logo ngôn ngữ Python
(Nguồn: https://www.python.org/)
Python ngày càng khẳng định vị thế của mình nhờ vào những ưu điểm nổi bật, cho phép phục vụ đa dạng công việc và ngành nghề Những lợi ích mà ngôn ngữ Python mang lại cho hệ thống bao gồm khả năng linh hoạt, dễ học, và cộng đồng hỗ trợ mạnh mẽ.
Là 1 ngôn ngữ mạnh mẽ và đa dạng phù hợp cho việc phát triển các chức năng và tính năng liên quan đến Robot Check-in
Nó cung cấp nhiều công cụ và thư viện cho việc phát triển giao diện người dùng đa dạng và trực quan, giúp tạo ra một giao diện Robot Check-in thân thiện và dễ sử dụng cho người dùng.
Robot Check-in sử dụng các cảm biến như máy quét mã QR, camera và microphone để tương tác hiệu quả với người dùng Việc lập trình và quản lý các thiết bị này có thể được thực hiện bằng Python thông qua các thư viện và API phù hợp, giúp tối ưu hóa quy trình check-in.
Xử lý hình ảnh và nhận diện khuôn mặt bằng Python là một lĩnh vực mạnh mẽ nhờ vào thư viện OpenCV Thư viện này cho phép phát triển các tính năng nhận diện khuôn mặt, giúp xác định và đăng ký khách hàng một cách hiệu quả.
Tích hợp trí tuệ nhân tạo (AI) vào robot check-in là yếu tố then chốt để nâng cao trải nghiệm người dùng Sử dụng Python, các nhà phát triển có thể áp dụng các thư viện và framework như TensorFlow.NET và CNTK (Microsoft Cognitive Toolkit) nhằm tích hợp AI vào ứng dụng của mình.
Phần mềm robot check-in cần kết nối với các hệ thống back-end để lưu trữ thông tin khách hàng và quản lý dữ liệu hiệu quả.
Robot check-in cần tích hợp với các thiết bị di động để gửi thông báo và tương tác hiệu quả với người dùng thông qua ứng dụng di động.
PHƯƠNG HƯỚNG THỰC HIỆN ĐỀ TÀI
Phương hướng thực hiện
Hình 4.2 Tổng quan phần cứng phương án 1
Robot có chiều cao từ 0,8 m đến 0,9 m và có khả năng chịu tải tối đa 20kg Để đảm bảo độ bền vững, phần đế được làm từ nhôm A6061 và trục bằng thép S400, trong khi khung xe sử dụng thanh nhôm định hình kích thước 30x30 Hệ thống truyền động được thiết kế với hai bánh dẫn động độc lập, sử dụng động cơ hành tinh planet 12-24VDC với công suất tối đa 60W.
Robot được trang bị camera Raspberry Pi để nhận dạng con người và camera Alhua để quét mã QR Nó sử dụng cảm biến chuyển động như máy quét LiDAR hoặc cảm biến hồng ngoại để phát hiện vật cản và xác định vị trí Vi xử lý Arduino được dùng để điều khiển tốc độ của động cơ, trong khi Raspberry Pi 4 Model B xử lý dữ liệu hình ảnh và cảm biến từ camera.
Hình 4.3 Tổng quan phần mềm phương án 1
Xe cần có khả năng phản ứng nhanh với sự thay đổi của người di chuyển, vì vậy nhóm đã quyết định sử dụng mô hình YOLOv8 để nhận diện người trên tập dữ liệu COCO Mô hình này nổi bật với độ chính xác cao và tốc độ xử lý nhanh, mang lại kết quả tốt nhất trong các phương pháp nhận diện hiện có.
Xây dựng thuật toán điều khiển cho robot nhằm đảm bảo sự di chuyển ổn định Thiết lập bộ điều khiển PID và thực hiện tính toán cùng thí nghiệm để xác định các thông số PID phù hợp cho hệ thống.
Xây dựng thuật toán điều khiển cho robot sử dụng cảm biến lidar giúp quét bản đồ siêu thị, xác định vị trí chính xác của robot trên bản đồ và thực hiện các biện pháp né tránh vật cản hiệu quả.
Xây dựng giao diện phần mềm check-in phù hợp, ổn định và độ bảo mật thông tin cao
Hình 4.4 Tổng quan phần cứng phương án 2
Phần thiết kế cơ khí vẫn giữ nguyên
Robot được trang bị camera Raspberry Pi để nhận diện con người và camera Alhua để quét mã QR Nó sử dụng cảm biến đo khoảng cách nhằm phát hiện vật cản phía trước.
Sử dụng vi xử lý STM32 để điều khiển tốc độ động cơ, trong khi board Jetson Nano xử lý dữ liệu hình ảnh và cảm biến thu được từ camera.
Hình 4.5 Tổng quan phần mềm phương án 2
Sử dụng thuật toán nhận diện và xây dựng bộ điều khiển PID như phương án 1
Xây dựng thuật toán điều khiển sử dụng cảm biến đo khoảng cánh để robot thực hiện né vật cản.
Lựa chọn phương án
Sau khi đánh giá các phương án và yếu tố liên quan, nhóm quyết định chọn phương án 1 để thực hiện đề tài Dưới đây là một số lý do chính cho sự lựa chọn này.
Nhóm đã phát triển một robot kích thước 430x480x480mm để di chuyển trong khu vực sảnh check-in, sử dụng vật liệu nhôm A6061 cho phần đế nhằm đảm bảo độ bền và khả năng chịu tải trọng lên đến 20kg Khung robot được làm từ các thanh nhôm định hình 30x30, giúp giảm trọng lượng nhưng vẫn giữ được sự linh hoạt và chắc chắn Robot được trang bị hệ thống truyền động với hai bánh xe độc lập, cho phép di chuyển dễ dàng trong không gian chật hẹp Động cơ hành tinh với điện áp 12-24VDC và công suất tối đa 60W được chọn để đảm bảo hiệu suất hoạt động hiệu quả cho robot.
Robot sử dụng camera Raspberry Pi để nhận dạng và xử lý hình ảnh, giúp định vị người dùng một cách hiệu quả Để phát hiện và tránh các vật cản phía trước, robot được trang bị cảm biến LiDAR.
Hệ thống điều khiển của robot sử dụng vi xử lý Arduino kết hợp với máy tính đơn bo Raspberry Pi 4 Model B, chịu trách nhiệm quản lý và xử lý dữ liệu từ các cảm biến Các thiết bị này thực hiện các thuật toán và tính toán cần thiết, đảm bảo robot hoạt động hiệu quả.
• Phần mềm: Để nhận dạng và xác định người dùng, nhóm áp dụng các thuật toán nhận dạng người
Mô hình YOLOv8 đã được đào tạo lại trên tập dữ liệu COCO để nhận dạng và xác định vị trí người trong khung hình
Chúng tôi phát triển các thuật toán và bộ điều khiển PID để đảm bảo robot di chuyển ổn định và chính xác Hệ thống sử dụng thông tin từ cảm biến và camera Raspberry Pi để tính toán và điều chỉnh tốc độ, hướng di chuyển của robot, đồng thời duy trì khoảng cách an toàn với người dùng.
Phương án 1 được chọn do hạn chế về kinh phí và thời gian, đáp ứng yêu cầu cơ bản với chi phí và thời gian thực hiện thấp hơn so với Phương án 2 Nhóm tin rằng việc sử dụng camera Raspberry Pi, cảm biến LiDAR và các thuật toán phù hợp sẽ giúp đạt được mục tiêu của đề tài.
Việc lựa chọn phương án phụ thuộc vào nhiều yếu tố khác nhau, nhưng nhóm tin rằng Phương án 1 sẽ đảm bảo thực hiện mục tiêu check-in một cách an toàn và hiệu quả.
Trình tự công việc tiến hành
• Nghiên cứu và thu thập thông tin:
- Xác định yêu cầu và mục tiêu: Tìm hiểu kỹ lưỡng về các yêu cầu và mục tiêu của đề tài
- Nghiên cứu công nghệ hiện có: Khám phá các công nghệ, phương pháp và giải pháp hiện tại liên quan đến robot check-in
Để triển khai robot trong không gian sảnh check-in, cần thu thập thông tin về cấu trúc và kích thước của sảnh, cũng như các quy định và ràng buộc liên quan.
Để bắt đầu dự án, trước tiên bạn cần xác định yêu cầu phần cứng, bao gồm việc lựa chọn các thành phần thiết yếu như camera Raspberry Pi, Arduino, Raspberry Pi 4 Model B, cảm biến, hệ thống di chuyển và nguồn điện.
- Lựa chọn mạch vi xử lý: Chọn mạch vi xử lý để điều khiển và tương tác với các thành phần phần cứng khác
- Tích hợp các cảm biến và hệ thống di chuyển: Xác định và tích hợp các cảm biến và hệ thống di chuyển vào robot
- Lắp ráp và kiểm tra phần cứng: Lắp ráp các thành phần phần cứng và kiểm tra để đảm bảo hoạt động ổn định và tương thích
- Triển khai các thuật toán: Xác định và triển khai các thuật toán nhận dạng người và điều khiển
- Tối ưu hóa phần mềm: Đảm bảo hiệu suất tính toán và thời gian phản hồi nhanh
• Kiểm tra và hiệu chỉnh:
- Thực hiện kiểm tra thực tế: Kiểm tra và hiệu chỉnh robot trong điều kiện thực tế
Đảm bảo an toàn và linh hoạt cho robot là yếu tố quan trọng, giúp robot nhận diện con người, di chuyển và tránh vật cản một cách hiệu quả Sự tương tác tốt với môi trường xung quanh sẽ nâng cao khả năng hoạt động của robot.
- Điều chỉnh thiết đặt và thông số: Điều chỉnh các thiết đặt và thông số để cải thiện hiệu suất và độ tin cậy của robot
• Triển khai và vận hành:
- Triển khai robot: Đưa robot vào hoạt động trong sảnh check-in
Đảm bảo an toàn và tuân thủ quy định là yếu tố quan trọng trong quá trình vận hành trung tâm tổ chức sự kiện Việc tuân thủ các quy định và ràng buộc giúp bảo vệ sự an toàn cho tất cả mọi người tham gia và nâng cao chất lượng dịch vụ của sự kiện.
Theo dõi và bảo trì robot là quá trình quan trọng, bao gồm việc kiểm tra và bảo dưỡng phần cứng, cập nhật phần mềm định kỳ và xử lý sự cố khi cần thiết.
Nhóm đặt mục tiêu phát triển và triển khai thành công robot di chuyển trong sảnh check-in, nhằm đáp ứng đầy đủ các yêu cầu và mục tiêu đã đề ra trong kế hoạch.
TÍNH TOÁN VÀ THIẾT KẾ HỆ THỐNG
Tính toán thiết kế cơ khí
Hệ thống cơ khí của robot được xây dựng gồm:
Đế dưới cùng của robot được làm từ vật liệu nhôm 6061, đảm bảo khả năng chịu lực tốt và đóng vai trò quan trọng trong việc hỗ trợ toàn bộ cấu trúc của robot, đồng thời giúp robot di chuyển hiệu quả.
Robot được trang bị 2 servo gắn vào gá đỡ trên đế và 4 bánh xe dẫn đa hướng dưới đế, tạo sự linh hoạt trong di chuyển Hai nguồn ác-quy 12V mắc nối tiếp không chỉ cung cấp năng lượng mà còn tăng trọng lượng cho phần thân dưới, giúp nâng cao độ vững chắc cho robot Đế dưới cùng được liên kết với phần thân của robot thông qua 6 thanh nhôm định hình, đảm bảo cấu trúc của robot luôn ổn định.
Hình 5.1 Cấu trúc phần đế dưới cùng Phần thân trên:
Tấm mica đỡ khung Robot là một yếu tố quan trọng, đóng vai trò kết nối giữa phần dưới và thân robot Nó giúp cố định các thanh khung nhôm định hình và là nơi lắp đặt các thiết bị điện cũng như mạch điều khiển.
Hình 5.2 Tấm đỡ mica khung Robot
- Hộp đựng thiết bị điện đảm nhận vai trò bảo vệ các thiết bị, tránh tiếp xúc với môi trường bên ngoài
- Khung nhôm định hình 3030 đảm nhận vai trò làm trục để gắn các thiết bị phần trên bao gồm: máy in, màn hình cảm ứng, camera
Hình 5.3 Khung nhôm định hình
- Tấm mica lót máy in là nơi để thiết bị máy in được gắn cố định lên khung nhôm định hình
Hình 5.4 Tấm mica đỡ máy in
- Cảm biến Lidar đảm nhận vai trò quét không gian và lưu môi trường đó lại, phát hiện vật cản và tránh né vật cản
- Máy in dảm nhận vai trò in phiếu dán cho khách hàng
- Camera đảm nhận vai trò quét mã QR từ khách hàng
- Camera của Raspberry đảm nhận vai trò nhận diện con người, hỗ trợ cho việc di chuyển của Robot
- Màn hình cảm ứng: đảm nhận vai trò tương tác với khách hàng thông qua giao diện với các chức năng đã được thiết lập sẵn
5.1.1 Tính toán lựa chọn động cơ
Tính công suất yêu cầu cực đại của từng động cơ
- Tổng trọng lượng của robot và tải trọng tối đa: m = 20 kg
- Tốc độ tối đa của robot: v = 1 m/s = 3.6km/h
- Lựa chọn đường kính bánh dẫn động dw= 145 mm = 0,145 m (bán kính rw 0,0725 m)
Công thức tính công suất của động cơ:
P lv : công suất làm việc của động cơ
P mm : tổn thất điện năng qua hệ thống truyền tải
Hình 5.5 Các lực chính tác dụng lên robot trong quá trình chuyển động
Theo định luật II Newton, ta có: F k − F ms = ma (5.2)
F k : tổng lực kéo cần thiết để robot chuyển động à: hệ số ma sỏt lăn Dựa vào bảng dưới đõy, ta chọn à = 0,01
Bảng 5.1 Bảng hệ số ma sát lăn
Hệ số ma sát lăn c 0.001 – 0.002 Railroad steel wheels on steel rails
0.001 Bicycle tire on wooden track
0.004 Bicycle tire on asphalt road
0.008 Bicycle tire on rough paved road
0.01 – 0.015 Ordinary car tires on concerte, new asphalt, cobbles small new
0.02 Car tires on tar or asphalt
0.02 Car tires on gravel – rolled new 0.03 Car tires on cobbles – large worn
0.04 – 0.08 Car tire on solid sand, gravel loose worn, soil medium hard
0.2 – 0.4 Car tire on loose sand
Tính gia tốc a cực đại khi tăng tốc từ v 0 = 0 m/s đến v = 1 m/s trong t =1,5 giây v = v 0 + at (5.4) a = v−v 0 t = 1−0
Công suất cần thiết để cung cấp đủ lực kéo cho robot:
Công suất làm việc của mỗi động cơ: P lv = P k
Công thức tính tổn thất điện năng: P mm = ( 1 η− 1) × P lv Trong đó: η: hiệu suất của cặp con lăn η = 0,98
Từ công suất làm việc và tổn thất điện năng ta có thể suy ra công suất cần thiết của mỗi động cơ:
Tính tốc độ quay cực đại của động cơ n dc
Ta có: v = rω (5.7) Tốc độ quay tối đa của bánh xe: ω w = v r w = 1
2π= 13,79 × 9,55 = 131,7 (RPM) Tốc độ quay tối đa của động cơ: n dc = u n w (5.8) u=1 do nối thẳng trục động cơ vào bánh xe
• Tính mô men xoắn cực đại của động cơ và trục bánh xe (trục công tác):
Căn cứ vào các thông số đầu vào đưa ra:
- Công suất yêu cầu của động cơ : P dc = 7,816(W) = 0,007816(kW)
- Tốc độ quay tối đa của động cơ : n dc = 131,7(RPM)
- Tổng lực kéo cần thiết để robot chuyển động : F k = 15,302 (N)
Momen xoắn cực đại của động cơ: T dc = 9,55 × 10 6 P dc n dc
Momen xoắn cực đại của mỗi trục bánh xe: T w = F k
2 × 0,0725 = 0,555 (Nm) Vậy ta có bảng sau:
Bảng 5.2 Thông số tính toán chọn động cơ
Dựa vào thông số động cơ tính toán được, động cơ được chọn là: Động cơ Planet 320rpm 24V 60w
Hình 5.6 Động cơ Planet 320rpm 24V 60w (Nguồn: https://robotstore.vn/dong-co-planet-24v-60w-320rpm-encoder-13ppr)
- Trục động cơ: 10mm ( có rảnh then)
- Tốc độ động cơ: 6000 vòng/phút
- Tốc độ qua giảm tốc: 320 vòng/phút
Trục Trục động cơ Trục công tác
Hình 5.7 Kích thước động cơ (Nguồn: https://robotstore.vn/dong-co-planet-24v-60w-320rpm-encoder-13ppr)
5.1.2 Thiết kế hình dạng robot
• Thiết kế mặt đế, nắp đế, tấm đỡ máy in
Bảng 5.3 Thông số các chi tiết gia công
Hình 5.9 Đế bánh đa hướng robot
Tên chi tiết Kích thước Vật liệu Phương pháp gia công Đế robot 500x500x5 Nhôm 6061 Cắt CNC Đế bánh đa hướng 150×100×33.5 Mica Cắt CNC
- Thông số nhôm định hình:
+ Vật liệu: hợp kim nhôm
Sử dụng máy cắt để cắt thành những thanh đúng kích thước thiết kế, sau đó lắp ghép chúng với nhau bằng pad chữ T và L Cuối cùng, sử dụng bulong chữ T để cố định các thanh này.
Hình 5.10 Hình khung nhôm định hình
Bánh xe đa hướng là giải pháp lý tưởng để nâng cao tính linh hoạt trong di chuyển ở nhiều môi trường khác nhau Với khả năng chịu tải lớn, nhóm đã quyết định lựa chọn bánh xe đa hướng loại nhỏ, giúp tối ưu hóa hiệu suất và độ bền trong quá trình sử dụng.
Hình 5.11 Bánh xe đa hướng
(Nguồn: https://dientunhatrang.com/vi/p/banh-xe-da-huong-duong-kinh-40mm -day-
- Chất liệu: Nhựa PU, thép
- Đường kính bánh xe: 25mm
- Độ dày bánh xe 14mm
Trên bánh xe đã có sẵn vị trí các lỗ để định vị và gắn ốc vít cố định với các chi tiết khác
Sử dụng ổ bi mang lại chuyển động mượt mà và êm ái, rất phù hợp cho các loại máy móc nhẹ cần di chuyển thường xuyên, như xe đẩy hàng mini với tải trọng thấp.
• Bánh xe dẫn hướng ( chủ động )
Bánh xe hoạt động hiệu quả trong môi trường có ma sát thấp, vì vậy việc có độ bám cao là rất cần thiết Hai bánh dẫn động phải chịu lực lớn, do đó chúng cần có khả năng chịu tải trọng cao.
Thông số bánh xe như sau:
Bánh xe có đường kính ngoài 145 mm và bề rộng 40 mm, có khả năng lắp trực tiếp với các loại động cơ giảm tốc với đường kính trục từ 8 đến 24 mm.
- Vật liệu: Bánh xe được đúc bằng nhôm có độ bền cao, vỏ được bọc cao su mềm có nhiều rảnh nên có độ bám cao
Hình 5.12 Bánh xe dẫn hướng
5.1.5 Lựa chọn vật liệu cho trục bánh xe
Inox 304 tròn đặc nổi bật với khả năng chống ăn mòn và oxi hóa hiệu quả, đồng thời chịu được tải trọng lớn và va đập mạnh Với tính đàn hồi tốt nhờ vào độ bền kéo và giới hạn chảy cao, inox 304 tròn đặc đã được nhóm lựa chọn làm trục nối giữa puly và bánh xe, với chiều dài được xác định cụ thể.
Hình 5.13 Nối trục bánh xe (Nguồn: Linear Motion Shafts Guide Bearing Steel Cylinder Rail Linear Shaft Straight
Round Rod Linear Motion Shafts - China Round Linear Shaft and CNC Round Linear
Shaft (made-in-china.com))
5.1.6 Thiết kế 3D hệ thống cơ khí
Sau khi lên ý tưởng và thiết kế 3D thì đây là mô hình 3D và kích thước của robot 500x500x900 mm:
Robot được thiết kế với chiều cao tối ưu, giúp người dùng dễ dàng thực hiện check-in mà không gặp khó khăn Kích thước chiều dài và rộng của robot cũng được điều chỉnh hợp lý, đảm bảo khả năng di chuyển linh hoạt trong các sảnh sự kiện.
• Mô hình có kết cấu chắn nhờ các thanh nhôm định hình được gắn với nhau tạo thành một khối cứng cáp
Trong đó mô hình được chia làm 2 phần:
- Phần thân dưới: gồm các khung nhôm định hình, bộ truyền động và mạch điều khiển, camera cũng như nguồn cấp cho các thiết bị điện
- Phần thân trên: Sử dụng mica để đỡ máy in, webcam quét Qr Code, màn hình
Bề mặt đế được chế tạo từ nhôm A6061, một hợp kim nhôm có thành phần chính là nhôm, kẽm và magiê Nhôm A6061 nổi bật với đặc tính cơ học vượt trội, bao gồm độ cứng cao và khả năng chịu tải tốt, đồng thời dễ gia công và chống mài mòn hiệu quả Với tổng tải trọng của robot là 20kg, quá trình mô phỏng độ bền bề mặt đế sẽ được thực hiện bằng phần mềm chuyên dụng, trong đó chỉ tính toán bề mặt đế và loại bỏ các bánh xe khỏi mô phỏng chịu tải.
Hình 5.15 Hệ số an toàn
- Ứng suất tác dụng lên mặt phẳng
Hình 5.17 Ứng suất lớn nhất tác dụng lên mặt phẳng
Dựa vào các kết quả mô phỏng trên ta có thể kết luận được độ bền đạt yêu cầu chịu tải đề ra cho robot
Hình 5.18 Phân tích lực tác dụng lên bu lông
Theo hình vẽ phân tích lực ở trên, ta có các bu lông tại vị trí số 2, 3 chịu tải lớn nhất (a 2 = a 3 = 45 0 ):
1 ∗ 0.15 * 48.75 = 487.5 (N) Với i = 1 Đường kính bu lông (đường kính chân ren): d1 ≥ √ 1.3 ∗ 4 ∗𝑉
𝜋∗110 = 2.7 (mm) Theo bảng tiêu chuẩn bulong suy ra chọn M4 trên hệ thống là thỏa mãn yêu cầu
Bảng 5.4 Bảng ký hiệu các thông số động học dùng để tính toán
• Xét trường hợp robot chuyển động thẳng (tiến hoặc lùi):
Hình 5.19 Mô hình động học mô tả robot di chuyển theo đường thẳng
Robot có 2 bánh dẫn động chính Cấu trúc cơ bản của robot được minh họa trên hình 5.19
Theo cơ học lý thuyết, ta có thể tính vận tốc tuyến tính của hai bánh xe bằng công thức: v R = Rω R = Rn RM ∗ 2 ∗ π
Vận tốc tuyến tính của robot (m/s) v
Vận tốc góc của robot được ký hiệu là ω (rad/s), trong khi vận tốc góc của bánh xe bên phải và bên trái lần lượt là ω R và ω L (rad/s) Tốc độ của động cơ bên phải và bên trái được biểu thị bằng n RM và n LM (RPM) Vận tốc tuyến tính của bánh xe bên phải và bên trái được ký hiệu là v R và v L (m/s) Ngoài ra, góc định hướng của robot khi thực hiện các thao tác rẽ phải hoặc trái cũng cần được xem xét.
Bán kính bánh lái chính (m) R = 0,0725 Khoảng cách giữa tâm hai bánh xe (m) L = 0,54 Bán kính cung tròn khi robot quay một góc R T
Vận tốc chuyển động của robot được xác định bằng trung bình tổng vận tốc tuyến tính của bánh xe bên trái và bên phải, được biểu diễn bằng công thức: v = v R + v L.
Để robot di chuyển theo đường thẳng, vận tốc tuyến tính của bánh xe bên trái phải bằng với vận tốc tuyến tính của bánh xe bên phải, tức là v = v R = v L.
Từ các phương trình (3.13), (3.14) và (3.16), chúng ta có thể thiết lập mối quan hệ giữa vận tốc tuyến tính của robot và tốc độ quay của hai động cơ trong quá trình robot di chuyển thẳng Cụ thể, vận tốc tuyến tính được tính bằng công thức: v = Rn RM ∗ 2 ∗ π.
• Xét trường hợp robot chuyển động theo cung tròn:
Hình 5.20 Mô tả robot khi di chuyển theo đường vòng cung Độ dài đường cong quỹ đạo của robot L T là trung bình cộng của các cung tròn L L và L R
Góc định hướng θ của robot được tính như sau: θ = L T
Cả L R và L L đều có thể được tính dựa trên bán kính chuyển động R T ,, khoảng cách giữa hai tâm bánh xe L và góc định hướng θ chuyển động của robot:
Từ đó có thể tính được góc định hướng của robot dựa vào độ dài L R và L L ,, cũng như khoảng cách giữa hai tâm bánh xe L: θ = L R − L L
L (5.20) Để vận tốc góc của robot khác 0 thì vận tốc tuyến tính của bánh xe bên phải v R và bánh xe bên trái v L phải khác nhau: θ̇ = L R ̇ − L L ̇
L Vận tốc góc của robot: ω =R(ω R − ω L )
Từ (3.13), (3.14), (3.25), ta có hệ phương trình sau:
Giải hệ phương trình ta thu được nghiệm như sau:
Do đó, chúng ta có thể thiết lập mối quan hệ giữa tốc độ của hai động cơ, vận tốc tuyến tính và vận tốc góc của robot:
Hệ thống điện điều khiển
5.2.1 Tổng quan sơ đồ điện
Động cơ robot hoạt động với nguồn điện 24VDC, cung cấp năng lượng cho các thiết bị như máy in, camera và màn hình Điện áp này được hạ xuống 5V qua mạch hạ áp để cấp điện cho vi điều khiển và các thiết bị ngoại vi như cảm biến và module giao tiếp Để điều khiển động cơ DC servo, hệ thống sử dụng mạch cầu BTS7960, đảm bảo việc điều khiển chính xác và hiệu quả cho động cơ.
5.2.2 An toàn điện Để đảm bảo rằng tất cả các mạch bảo vệ được tích hợp đều tuân theo các tiêu chuẩn an toàn, nhóm đã áp dụng nhiều biện pháp bảo vệ khác nhau Đầu tiên, nhóm sử dụng ổn áp để đảm bảo rằng nguồn điện đầu vào cho hệ thống robot luôn ổn định và nằm trong phạm vi an toàn Điều này rất quan trọng vì một nguồn điện không ổn định có thể gây ra hỏng hóc hoặc làm giảm tuổi thọ của các thiết bị điện tử bên trong hệ thống
Cảm biến dòng điện được tích hợp vào hệ thống để giám sát liên tục dòng điện trong các mạch Khi phát hiện dòng điện vượt quá mức an toàn, cảm biến sẽ kích hoạt mạch ngắt điện, ngắt nguồn cung cấp ngay lập tức Điều này giúp bảo vệ thiết bị khỏi hư hỏng do quá tải và ngăn ngừa nguy cơ cháy nổ.
Khi xảy ra sự cố như quá dòng hoặc quá áp, mạch bảo vệ sẽ tự động ngắt nguồn điện một cách nhanh chóng và chính xác, giúp ngăn chặn thiệt hại cho hệ thống Các biện pháp bảo vệ này đảm bảo rằng hệ thống robot hoạt động trong môi trường an toàn và ổn định, giảm thiểu rủi ro hỏng hóc và kéo dài tuổi thọ cho các thành phần của hệ thống.
Bình ắc-quy GS GTZ5S, sản phẩm của tập đoàn GS Nhật Bản nổi tiếng toàn cầu, là loại bình VRLA siêu kín, siêu bền và miễn bảo dưỡng, mang lại sự an tâm cho người sử dụng trong mọi hành trình Thương hiệu ắc-quy GS được sản xuất tại Việt Nam, đảm bảo chất lượng và độ tin cậy cao.
Hình 5.22 Ắc-quy GS GTZ5S
(Nguồn: GS GTZ5S (YTZ4V / YTZ5S) VRLA (Fully Sealed / Non-Spillable)
Maintenance Free Motorcycle Battery | Lazada PH)
- Kiểu cọc bình: Cọc bắt ốc
- Vị trí cọc bình: Cọc nghịch L
Ngoài ra, nhóm còn dùng thêm nguồn sạc dự phòng để cấp nguồn riêng cho Drive điều khiển và Encoder của động cơ
Hình 5.23 Nguồn sạc dự phòng
(Nguồn: Pin sạc dự phòng Xiaomi Redmi 20000mAh | Chính hãng, giá tốt
Hình 5.24 Mạch giảm áp LM2596 có hiển thị
(Nguồn: Mạch Giảm Áp DC LM2596 có hiển thị - Nshop (nshopvn.com))
Mạch giảm áp LM2596 có khả năng hiển thị với dải điện áp đầu vào rộng và tích hợp nút nhấn để chuyển đổi giữa việc đo áp ngõ vào và ngõ ra, với độ sai số cực thấp chỉ ± 0,1V Mạch này được ứng dụng rộng rãi trong việc giảm áp cho sạc pin, máy biến áp và bộ nguồn điều chỉnh DIY.
- Điện áp đầu vào : 2.5~36VDC
- Điện áp đầu ra : 1.25~35VDC
- Có nút nhấn chuyển chế độ hiển thị ngõ ra/vào
• Module điều khiển động cơ BTS7960 43A
Hình 5.25 Module điều khiển động cơ BTS7960 43A (Nguồn: https://icdayroi.com/module-dieu-khien-dong-co-bts7960-43a)
BTS7960 là mô-đun điều khiển động cơ DC tích hợp cầu H, được thiết kế cho các ứng dụng truyền động yêu cầu dòng cao Mô-đun này phù hợp cho việc điều khiển động cơ trong các tình huống cần hiệu suất cao và độ bền tốt.
Mạch này bao gồm một MOSFET kênh p và một MOSFET kênh n, cùng với một vi mạch trình điều khiển tích hợp trong một gói Việc kết nối với vi điều khiển trở nên dễ dàng nhờ vào vi mạch điều khiển tích hợp, có các đầu vào mức logic và tính năng bảo vệ chống quá nhiệt, quá áp, quá dòng và ngắn mạch.
Thông số kỹ thuật của Module điều khiển động cơ BTS7960 43A:
- Dòng điện tải mach: 43A (Tải trở) hoặc 15A (Tải cảm)
- Tín hiệu logic điều khiển: 3.3 ~ 5VDC
- Tần số điều khiển tối đa: 25KHz
Thiết bị sẽ tự động ngắt khi điện áp xuống dưới 5.5VDC để bảo vệ động cơ khỏi hoạt động ở mức điện áp thấp Khi điện áp thấp hơn 5.5VDC, driver sẽ ngắt nguồn điện và sẽ tự động khôi phục khi điện áp trở lại trên 5.5VDC.
- Bảo vệ quá nhiệt: BTS7960 bảo vệ chống quá nhiệt bằng cảm biến nhiệt tích hợp bên trong Đầu ra sẽ bị ngắt khi có hiện tượng quá nhiệt
- VCC : Nguồn tạo mức logic điều khiển (3.3~5VDC)
- R_EN = 0 Disable nửa cầu H phải R_EN = 1 : Enable nửa cầu H phải
- L_EN = 0 Disable nửa cầu H trái L_EN = 1 : Enable nửa cầu H trái
- RPWM và LPWM : chân điều khiển đảo chiều và tốc độ động cơ
- RPWM = 1 và LPWM = 0 : Mô tơ quay thuận
- RPWM = 0 và LPWM = 1 : Mô tơ quay nghịch
- RPWM = 1 và LPWM = 1 hoặc RPWM = 0 và LPWM = 0 : Dừng
- R_IS và L_IS : kết hợp với điện trở để giới hạn dòng qua cầu H
Với ứng dụng bình thường RPWM,LPWM nối với GPIO (VD : chân digital 2,3) để điều khiển chiều quay của động cơ
Chân R_EN , L_EN nối chung lại rồi nối với PWM (VD chân digital 5) để điều khiển tốc độ động cơ
Camera Module 65 độ FoV với cảm biến OV5647 5MP cho Raspberry Pi mang lại chất lượng hình ảnh vượt trội, tương tự như Module Camera Raspberry Pi V1 Với ống kính tiêu cự cố định 65 độ, sản phẩm này lý tưởng cho các ứng dụng xử lý ảnh và truyền hình ảnh trên Raspberry Pi cũng như các bo mạch tương thích khác như Jetson Nano.
Dưới đây là một số thông số kỹ thuật:
- Angle of View (diagonal): 65 degree
- Connector: CSI FPC 15 Pin 1.0mm Ribon conector
Hình 5.26 Camera Module 65 Degree FoV Fixed Focus OV5647 5MP for Raspberry Pi
(Nguồn: Camera Module 65 Degree FoV Fixed Focus OV5647 5MP for Raspberry Pi –
• Single board computer Raspberry Pi 4 Model B
Hình 5.27 Single board computer Raspberry Pi (Nguồn: https://www.raspberrypi.com/products/raspberry-pi-4-model-b/)
Máy tính nhúng Raspberry Pi là một trong những lựa chọn giá rẻ và nhỏ gọn trên thị trường hiện nay, chạy hệ điều hành mã nguồn mở Thiết bị này cho phép người dùng sử dụng như một máy tính thông thường và tùy biến theo nhu cầu cá nhân Raspberry Pi được trang bị bộ xử lý Broadcom BCM2711, 64-bit ARM Cortex-A72 (ARMv8) với bốn lõi, hoạt động ở xung nhịp 1.8GHz, đi kèm với tản nhiệt kim loại giúp phân tán nhiệt hiệu quả Ngoài ra, nó còn tích hợp nhiều tính năng ngoại vi mạnh mẽ, đáp ứng đa dạng nhu cầu cho các dự án.
- Hỗ trợ ngoại vi rộng rãi
- Hỗ trợ nhiều ngôn ngữ lập trình
- Bộ xử lý nhanh hơn
- Nhỏ gọn được sử dụng như một máy tính di động
- Thiếu bộ xử lý đồ họa
- Không thực tế như máy tính để bàn
- Quá nhiệt nếu xử lý nhiều tác vụ cùng lúc
• Cấu hình chi tiết Single board computer Raspberry Pi 4 Model B
- Broadcom BCM2711, 64-bit ARM Cortex-A72 (ARMv8), Lõi tứ, 28nm Processor SoC hoạt động ở xung nhịp @ 1.8GHz, với tản nhiệt kim loại giúp cho việc phân tán nhiệt tốt hơn
- Video/Audio Out: o Kết nối 3.5mm 4-cực o 2 x cổng micro HDMI, hỗ trợ video 4Kp60, hai màn hình o Raw LCD (DSI)
- Hỗ trợ Power-over-Ethernet (PoE)
- 2.4GHz và 5GHz IEEE 802.11.b/g/n/ac wireless LAN, Bluetooth 5.0 và BLE (Bluetooth Low Energy)
- Thiết bị ngoại vi Low-Level: o 27 x GPIO o UART o I2C bus o SPI bus với 2 chip o +3.3V o +5V o Ground
• Yêu cầu nguồn điện: 5V/3.0A qua kết nối USB type C
• 40-chân GPIO có thể mở rộng
• Kích thước: 85mm x 56mm x 17mm
Hình 5.28 Sơ đồ chân Single board computer Raspberry Pi 4 Model B (Nguồn: https://www.raspberrypi.com/products/raspberry-pi-4-model-b/)
Hình 5.29 Bản vẽ kỹ thuật Single board computer Raspberry Pi (Nguồn: https://www.raspberrypi.com/products/raspberry-pi-4-model-b/)
Cảm biến LiDAR (Light Detection and Ranging) là công nghệ sử dụng tia laser để đo khoảng cách và tạo mô hình không gian ba chiều của môi trường xung quanh Bằng cách gửi tia laser và đo thời gian phản xạ, cảm biến LiDAR xác định khoảng cách cùng với thông tin về hình dạng và cấu trúc của các vật thể Để xây dựng bản đồ và điều hướng, cần một cảm biến laser quét không gian 2D hoặc 3D Trong dự án này, chúng tôi sử dụng RPLIDAR A1M8 360 độ của Slamtec, thiết bị phổ biến trong các ứng dụng robotica, tự động hóa và thị giác máy tính.
Dưới đây là một số thông số kỹ thuật chính của RPLIDAR A1M8:
- Phạm vi hoạt động: RPLIDAR A1M8 có khả năng quét trong phạm vi 360 độ, đo khoảng cách từ 0,15 đến 12 mét
- Góc quét: Nó quét trong góc rộng 360 độ, cho phép thu thập dữ liệu từ môi trường xung quanh
- Độ chính xác: Độ chính xác của RPLIDAR A1M8 là ±1 cm, cho phép đo khoảng cách và xác định vị trí các vật thể với độ chính xác cao
- Tần số quét: RPLIDAR A1M8 có tần số quét 10HZ và tốc độ lấy mẫu lên đến
8000 lần quét mỗi giây, cho phép thu thập dữ liệu nhanh chóng và liên tục
- Giao tiếp: RPLIDAR A1M8 hỗ trợ giao tiếp UART thông qua giao diện USB
Nó có thể được kết nối trực tiếp với các thiết bị như máy tính, Raspberry Pi hoặc các hệ thống nhúng khác
- Độ phân giải: Độ phân giải góc của RPLIDAR A1M8 là 1 độ, cho phép thu thập dữ liệu chi tiết về môi trường xung quanh
- Kích thước 71 x 97mm rất nhỏ gọn: RPLIDAR A1M8 có kích thước nhỏ gọn và dễ dàng tích hợp vào các ứng dụng robotica và nhúng
Hình 5.30 Cảm biến LiDAR (Nguồn: Mua RPLIDAR A1M8 2D 360 Degree 12 Meters Scanning Radius LIDAR
Sensor Scanner for Obstacle Avoidance and Navigation of Robots trên Amazon Mỹ chính hãng 2024 | Giaonhan247)
• Vi điều khiển Arduino Uno R3
Arduino Uno là một bộ vi điều khiển phổ biến và mạnh mẽ Trong dự án này, Arduino được cung cấp nguồn 5VDC thông qua cổng USB của Raspberry Pi để thực hiện các nhiệm vụ cụ thể.
- Nhận tín hiệu từ encoder rồi truyền lên board Raspberry Pi thông qua giao tiếp UART
- Nhận tín hiệu điều khiển từ Raspberry Pi và đưa ra xung PWM đến mô đun điều khiển động cơ để điều khiển động cơ
To enable data transmission between Arduino and ROS, it is essential to install the rosserial_Arduino package on the Raspberry Pi, and the Arduino must be programmed with code that facilitates communication with the ROS nodes.
Hình 5.31 Arduino Uno R3 (Nguồn: http://arduino.vn/bai-viet/42-arduino-uno-r3-la-gi)
The Arduino Uno R3 features a total of 20 GPIO (General Purpose Input/Output) pins, including 14 digital I/O pins and 6 analog input pins, along with additional power supply pins.
- D0 - D13: Chân I/O số từ 0 đến 13 Chú ý rằng chân D0 (RX) và D1 (TX) được sử dụng cho giao tiếp UART (Serial communication)
- Ngoài ra, Arduino Uno R3 còn có các chân dùng để giao tiếp ngoại vi khác như:
- SPI :chân 10 - SS, chân 11 - MOSI, chân 12 - MISO, chân 13 - SCK
Hình 5.32 Sơ đồ chân vi điều khiển Arduino Uno R3 (Nguồn: http://arduino.vn/bai-viet/42-arduino-uno-r3-la-gi)
Thiết kế bộ PID cho động cơ
Hình 5.33 Sơ đồ bộ điều khiển PID
Cấu trúc bộ điều khiển PI điều khiển tốc độ động cơ được xây dựng như sơ đồ bên trên Trong đó:
▪ SP: tốc độ đặt hay tốc độ động cơ mong muốn
▪ MV: điện áp cấp cho động cơ, cụ thể là giá trị PWM
▪ PV: tốc độ thực tế của động cơ được tính từ giá trị encoder trả về
▪ e = SP – PV: sai số giữa tốc độ mong muốn và tốc độ thực tế
Để xác định hàm truyền tương đối của động cơ DC Servo 60W 320 (vòng/phút) với hộp giảm tốc hệ số 19,2 và encoder 13ppr, thực nghiệm cho thấy tốc độ lớn nhất của động cơ đạt khoảng 322 vòng/phút.
Công thức tính tốc độ động cơ ndc từ giá tị xung encoder: n dc = M × 60 ppr × u × N × T (5.24)
▪ T = 10ms là thời gian lấy mẫu, tức thời gian mỗi lần đọc giá trị xung encoder
▪ ndc là tốc độ động cơ trong khoảng thời gian T
▪ M là là số xung encoder trong khoảng thời gian T
▪ ppr = 13 là số xung encoder mỗi vòng chưa qua hộp giảm tốc của động cơ
▪ u = 19,2 là hệ số hộp giảm tốc
Chế độ đọc encoder X4 với N = 4 xét trạng thái của cả hai kênh A và B Để tìm hàm truyền tương đối của động cơ, bạn có thể sử dụng công cụ System Identification Tool trong Matlab.
Chuẩn bị dữ liệu đầu vào bằng bảng ghi nhận sự thay đổi tốc độ của động cơ từ 0 đến tốc độ tối đa khi áp dụng điện áp 24VDC từ nguồn tổ ong Tiến hành cấp điện áp 24.3 VDC và ghi nhận sự biến đổi tốc độ của động cơ.
58 bằng 0 cho đến lúc đạt được tốc độ lớn nhất với thời gian lấy mẫu T = 10ms Dữ liệu thu thập khoảng 124 giá trị
Bảng 5.5 Dữ liệu thu thập được về sự thay đổi tốc độ động cơ phải
Bước 2: Lưu dữ liệu thu thập vào file Excel và sử dụng công cụ System Identification Tool của Matlab để xác định hàm truyền tương đối Nhập dữ liệu đo được từ file Excel vào Matlab.
• Nhập cột điện áp bằng lệnh: u1 = xlsread('PID.xlsx',1,'C2:C140')
• Nhập cột tốc độ bằng lệnh: y1 = xlsread('PID.xlsx',1,'A2:A140')
• Lưu 2 file dữ liệu vừa nhập vào matlab thành một file thống nhất bằng lệnh: save ident u1 y1
• Mở giao diện System Identification Tool bằng lệnh: ident
Hình 5.34 Giao diện System Identification Tool
Hình 5.35 Dữ liệu đã được nhập vào System Identification Tool
Nhập dữ liệu là quá trình ghi nhận sự thay đổi tốc độ động cơ từ 0 đến tốc độ tối đa Khi dữ liệu được nhập vào Công cụ Nhận dạng Hệ thống, đồ thị thể hiện mối quan hệ giữa điện áp (volt) ở đầu vào và tốc độ động cơ theo thời gian sẽ được hiển thị dưới đây.
Hình 5.36 Đồ thì biểu diễn sự thay đổi tốc độ động cơ phải (RPM) ứng với điện áp 24VDC theo thời gian (s)
Chọn hàm truyền của động cơ phải (Right Motor) có dạng bậc nhất không trễ:
s + 1 (5.25) Nhóm tìm được các thông số hàm truyền của động cơ phải:
Hình 5.37 Các thông số hàm truyền tương đối động cơ phải tìm được
Hàm truyền động cơ trái có dạng: 𝐹 𝑅𝑀 = 𝐾 s+1
Vậy hàm truyền tương đối của động cơ phải là: 𝐺 (𝑠) = 13.939
Tương tự tìm được hàm truyền động cơ trái là: 𝐺 (𝑠) = 13.695
• Tìm thông số của bộ điều khiển PID (Kp, Ki, Kd) điều khiển tốc độ động cơ
Sử dụng Matlab để thử nghiệm với động cơ thực tế, chúng tôi đã thực hiện nhiều lần điều chỉnh các giá trị Kp, Ki, Kd nhằm tìm ra ba thông số tối ưu cho bộ điều khiển PID phù hợp với từng loại động cơ.
Thông số bộ điều khiển PID của động phải:
Thông số bộ điều khiển PI của động cơ trái:
Với 3 thông số Kp, Ki và Kd như trên thì tốc độ của xe được chạy ổn định với dao động khá nhỏ.
Xây dựng thuật toán điều khiển và xử lý ảnh
Hình 5.38 Lưu đồ giải thuật tổng quan hoạt động của robot
5.3.1 Thiết lập chương trình điều khiển và phần mềm
Hình 5.39 Lưu đồ giải thuật điều khiển robot
5.3.1.1 Thiết lập điều khiển tương tác robot
Chương trình điều khiển hệ thống được triển khai trên Raspberry Pi, cho phép người dùng giao tiếp với robot qua giao thức SSH với địa chỉ IP cố định Raspberry Pi phát wifi, giúp máy tính kết nối và tạo thành một mạng nội bộ cùng với Raspi.
Hình 5.40 Mô hình hoạt động của robot
5.3.1.2 Định vị (navigation) và xây dựng bản đồ (mapping)
ROS hỗ trợ đa dạng trong bài toán định vị, bao gồm định vị cục bộ (Simultaneous localization) và định vị toàn cục (Simultaneous globalization) thông qua các gói hàm thư viện Hàm thư viện Global_planner giúp giải quyết bài toán toàn cục bằng cách sử dụng thuật toán Dijkstra để tìm đường Trong khi đó, Dwa_local_planner (Dynamic Window Approach - DWA) cung cấp bộ điều khiển cho robot di chuyển trong mặt phẳng.
Bộ điều khiển kết nối kết quả từ bài toán tìm đường đến robot, giúp tạo quỹ đạo động học từ vị trí ban đầu đến đích khi có bản đồ Trong quá trình di chuyển, bộ tìm đường xây dựng một bản đồ lưới nhỏ xung quanh robot và điều khiển robot di chuyển theo các ô lưới này Nhiệm vụ của bộ điều khiển là xác định vận tốc dài và vận tốc góc để gửi tới robot.
Sau khi tinh chỉnh các thông số cho hai hàm thư viện toàn cục và cục bộ, quá trình SLAM của robot bắt đầu, trong đó robot di chuyển và tính toán vận tốc, định vị và xây dựng bản đồ Robot thu thập môi trường chưa xác định qua cảm biến Lidar và sử dụng phương pháp Gmapping để vẽ bản đồ hiện tại Những vị trí còn thiếu trên bản đồ sẽ là điểm mà robot cần di chuyển đến để hoàn thiện bản đồ Dữ liệu được cập nhật thời gian thực về máy tính, cho phép người quan sát theo dõi tình hình robot Khi đến vị trí mới, robot sẽ thu thập dữ liệu mới cho đến khi Lidar không thể thu thập thêm thông tin, đánh dấu sự hoàn thiện của bản đồ Khi quá trình SLAM kết thúc, người điều khiển có thể điều khiển robot đến bất kỳ vị trí nào trong bản đồ theo yêu cầu.
Hình 5.41 Quy trình xây dựng bản đồ
5.3.1.3 Sử dụng giải thuật Dijkstra cho robot
Thuật toán Dijkstra là một trong những phương pháp tối ưu để tìm đường đi ngắn nhất cho robot dựa trên bản đồ môi trường đã được thiết lập Trong đó, bản đồ được mô phỏng dưới dạng đồ thị, với các node là các pixel Những pixel đại diện cho vật cản, như tường, sẽ có khoảng cách từ các pixel lân cận là vô hạn Thuật toán sẽ sử dụng giá trị của các pixel để tính toán khoảng cách từ vị trí ban đầu đến mọi pixel trên bản đồ, từ đó xác định lộ trình ngắn nhất đến đích.
Hình 5.42 Quá trình tìm đường đi bằng thuật toán Dijkstra trên bản đồ lưới
(Nguồn: [PDF] A Comparison of BFS , Dijkstra ’ s and A * Algorithm for Grid-Based
PathFinding in Mobile Robots | Semantic Scholar)
Thuật toán bắt đầu từ vị trí ban đầu để tính toán và cập nhật khoảng cách ngắn nhất đến vị trí đích, như thể hiện trong hình (a) Quá trình này diễn ra trên toàn bộ bản đồ, như hình (b) và (c), nên sẽ tốn thời gian trong quá trình tính toán Tuy nhiên, kết quả cuối cùng sẽ cho phép chúng ta tìm được đường đi tối ưu và ngắn nhất đến đích, như hình (d).
5.3.1.4 Sử dụng giải thuật Dynamic Window Approach cho robot
Phương pháp Dynamic Window Approach được thiết kế để vượt qua các hạn chế về vận tốc và gia tốc của hệ thống truyền động đồng bộ trong robot Thuật toán này chỉ xem xét một khoảng thời gian ngắn để tính toán lệnh điều khiển tiếp theo, giúp giảm thiểu độ phức tạp trong việc lập kế hoạch chuyển động Quỹ đạo di chuyển của robot trong khoảng thời gian ngắn được xấp xỉ bằng các đường cong tròn, dẫn đến việc tạo ra một không gian tìm kiếm hai chiều cho vận tốc tịnh tiến và quay Không gian này được giới hạn bởi các vận tốc an toàn, cho phép robot dừng lại một cách an toàn Do hạn chế về gia tốc của động cơ, robot chỉ xem xét các vận tốc có thể đạt được trong khoảng thời gian tiếp theo, tạo thành một cửa sổ động xoay quanh vận tốc hiện tại trong không gian vận tốc.
Thuật toán được chia thành hai thành phần chính:
Trong bước đầu tiên, thuật toán xây dựng không gian tìm kiếm bằng cách lấy mẫu từ không gian vectơ vận tốc của robot, sau đó mô phỏng chuyển động tiếp theo dựa trên mô hình chuyển động của robot, tạo ra quỹ đạo tương ứng với các mẫu đã lấy.
• Trong phần thứ hai, mỗi quỹ đạo được đánh giá theo hàm đánh giá và một quỹ đạo tối ưu được chọn từ không gian tìm kiếm
Hình 5.43 Quá trình tránh vật cản xuất hiện ngẫu nhiên
Xung quanh robot sẽ được chia làm ba vùng :
Vùng thứ nhất, hay còn gọi là base_footprint, là hình chữ nhật bao phủ kích thước của robot, cho phép robot xoay tự do trong khu vực này Khi robot di chuyển, vùng này sẽ di chuyển theo và thể hiện diện tích mà robot chiếm dụng trên bản đồ.
• Vùng thứ hai là hình chữ nhật lớn hơn do người dùng quy định kích thước để cảnh báo nguy cơ va chạm
• Vùng thứ ba là vùng ngoài vùng có nguy cơ va chạm nhưng vẫn trong tầm quan sát của cảm biến Lidar
Hình 5.45 Ý tưởng cơ bản sử dụng thuật toán Dynamic Window Approach
Khi vật cản xuất hiện trong vùng thứ ba, robot sẽ chờ một thời gian để loại bỏ vật cản khỏi bản đồ Hành động này đặc biệt quan trọng khi có người di chuyển nhanh qua tầm nhìn của robot; nếu người đó dừng lại, robot sẽ xoay tại chỗ để thay đổi hướng cho đến khi không còn vật cản Nếu robot vẫn bị mắc kẹt, nó sẽ xóa vật cản trong vùng thứ hai và quét lại bản đồ, kết hợp với việc xoay tại chỗ Nếu không tìm được đường tránh, robot sẽ báo lỗi không thể đến đích Khi di chuyển gần chướng ngại vật, robot sẽ áp dụng các hạn chế về vận tốc tịnh tiến 𝑣 và vận tốc quay 𝑤, trong đó tốc độ tối đa tại một vị trí trên quỹ đạo phụ thuộc vào khoảng cách đến chướng ngại vật.
5.3.1.5 Các gói chương trình điều khiển Navigation
ROS Navigation là một gói điều hướng tự động dành cho robot, bao gồm nhiều thư viện sử dụng dữ liệu từ cảm biến và thông tin vị trí Gói này cung cấp giá trị vận tốc an toàn cho robot, giúp nó di chuyển đến vị trí cuối cùng đã được xác định.
Hình 5.46 Mối quan hệ giữa khung base_link và base_laser bằng tf
ROS Navigation yêu cầu cây chuyển đổi từ gói tf để mô tả robot như một hệ thống bao gồm nhiều thành phần Mỗi thành phần được biểu diễn bằng một khung tọa độ kết nối với các thành phần khác, xác định vị trí và hướng trong không gian Việc thiết lập một hệ thống tham chiếu chung với các phép biến đổi giữa các khung và mối quan hệ của chúng là rất quan trọng.
Các thành phần chuyển đổi quan trọng nhất được sử dụng trong gói Navigation là:
- Odom đại diện cho hệ quy chiếu đo lường
- Base_link đại diện cho phần đế của robot
- Base_laser đại diện cho phần đế của cảm biến
- Base_footprint thể hiện hình chiếu của base_link lên mặt đất
Bản đồ thể hiện môi trường cho robot là yếu tố quan trọng trong điều hướng tự động 2D trong không gian nội thất, thường sử dụng gói Navigation Gói này bao gồm move_base, chịu trách nhiệm tính toán lệnh vận tốc để đạt được mục tiêu, cùng với Global_planner và local_planner cho việc hoạch định toàn cục và cục bộ Nó cũng tích hợp Global_costmap và local_costmap để quản lý bản đồ chi phí, amcl cho việc định vị robot, và map_server cung cấp bản đồ tham chiếu Hệ thống Navigation tổng thể được mô tả trong hình dưới đây.
Hình 5.47 Mối quan hệ giữa các gói thành phần trong Navigation (Nguồn: https://wiki.ros.org/navigation/Tutorials/RobotSetup)
5.3.1.6 Thông tin đo lường Odometry
Hệ thống ROS Navigation sử dụng chức năng tf để xác định vị trí của robot trong không gian và kết nối dữ liệu cảm biến với bản đồ tĩnh Tuy nhiên, chức năng tf không cung cấp thông tin chi tiết về vận tốc của robot.
ROS Navigation cần thông tin về quãng đường và góc di chuyển của robot thông qua tin nhắn nav_msgs/Odometry Tư thế ước tính của robot trong quá trình di chuyển được thể hiện trong nội dung của tin nhắn này.
5.3.1.7 Thông tin từ cảm biến
Xây dựng phần mềm check-in
Dữ liệu trong hệ thống check-in đóng vai trò quan trọng trong việc cung cấp thông tin chính xác về sự có mặt của người dùng tại một địa điểm cụ thể Một hệ thống check-in cần có các loại dữ liệu quan trọng như thời gian check-in, vị trí địa lý, thông tin người dùng và trạng thái hiện tại để đảm bảo tính chính xác và đầy đủ của thông tin.
Thông tin cá nhân của người dùng, bao gồm tên, ảnh đại diện, địa chỉ email và số điện thoại, được thu thập nhằm xác thực danh tính và mang đến trải nghiệm cá nhân hóa.
Dữ liệu thống kê và phân tích cung cấp thông tin quan trọng như số lượt check-in, thời điểm check-in và thời gian lưu trú tại địa điểm Những thông số này có thể được phân tích để hiểu rõ hơn về mô hình sử dụng, xu hướng người dùng và cách họ tương tác với các địa điểm cụ thể.
Dữ liệu tương tác người dùng, bao gồm bình luận, đánh giá và chia sẻ thông tin về địa điểm trên mạng xã hội hoặc ứng dụng, đóng vai trò quan trọng trong việc đánh giá sự quan tâm và phản hồi của người dùng đối với các địa điểm.
Hệ thống có khả năng thu thập dữ liệu định vị (GPS) để xác định chính xác vị trí của người dùng trong quá trình check-in, nếu được người dùng cho phép.
Tất cả dữ liệu này giúp hệ thống check-in hiểu rõ hoạt động của người dùng tại các địa điểm, từ đó nâng cao khả năng quản lý và cải thiện trải nghiệm người dùng.
5.4.2 Công cụ lưu trữ dữ liệu Đối với đồ án này nhóm em lựa chọn sử dụng công cụ lưu trữ dữ liệu là Firebase một nền tảng lưu trữ dự liệu trực tuyến được phát triển bởi Google
Firebase là một nền tảng giúp phát triển các ứng dụng di động trong web Bên cạnh đó,
Firebase còn được hiểu là một dịch vụ cơ sở dữ liệu hoạt động trên nền tảng đám mây cloud với hệ thống máy chủ mạnh mẽ của Google
Hình 5.54 Công cụ lưu trữ dữ liệu Firebase (Nguồn: Firebase | Google's Mobile and Web App Development Platform)
Firebase cung cấp một cơ sở dữ liệu giúp lập trình viên phát triển ứng dụng nhanh chóng và thuận tiện hơn Nhờ vào việc đơn giản hóa các thao tác với cơ sở dữ liệu, việc lập trình trở nên dễ dàng hơn bao giờ hết.
• Giới thiệu Firebase Realtime Database
Firebase Realtime Database là một dịch vụ lưu trữ trên mây, cho phép đồng bộ hóa dữ liệu theo thời gian thực giữa các client kết nối Khi phát triển ứng dụng đa nền tảng trên iOS, Android và JavaScript SDK, tất cả client sẽ chia sẻ một phiên bản Realtime Database, tự động nhận cập nhật dữ liệu mới nhất Điều này đảm bảo mọi thay đổi dữ liệu được cập nhật ngay lập tức trên tất cả thiết bị, mang lại trải nghiệm người dùng liền mạch và nhất quán.
Firebase Realtime Database là giải pháp lý tưởng cho các ứng dụng cần dữ liệu thời gian thực, như ứng dụng chat và theo dõi vị trí, nơi mà việc đồng bộ hóa dữ liệu đóng vai trò quan trọng.
Hình 5.55 Công cụ Firebase Realtime Database (Nguồn: Project Mechatronics - Realtime Database - Firebase console (google.com)) Các khả năng chính của Realtime Database:
Firebase Realtime Database cho phép đồng bộ hóa dữ liệu ngay lập tức khi có sự thay đổi, đảm bảo rằng mọi thiết bị được kết nối nhận được cập nhật trong vòng vài mili giây.
Khi người dùng ở chế độ ngoại tuyến, dữ liệu sẽ được lưu trữ trên bộ nhớ cache của thiết bị và sẽ tự động đồng bộ hóa khi kết nối trực tuyến trở lại Tất cả quá trình này diễn ra một cách tự động.
The Firebase Realtime Database is accessible from mobile devices and web browsers without the need for a server application Data security and authentication are managed through Firebase's security rules, which are enforced during data read and write operations.
5.4.3 Xây dựng giao diện giao tiếp Để đảm bảo sự tương thích cao với hệ điều hành của Raspberry Pi, giao diện người dùng được xây dựng bằng ngôn ngữ lập trình Python Giao diện này phải đáp ứng một số chức năng cơ bản sau:
1 Check-in bằng mã QR-Code qua webcam: Giao diện cần tích hợp chức năng quét mã QR sử dụng webcam Điều này cho phép người tham dự sự kiện có thể dễ dàng check-in bằng cách sử dụng mã QR được cung cấp trên thư mời hoặc vé điện tử
CHẾ TẠO, THỰC NGHIỆM VÀ KẾT QUẢ
Chế tạo
Sau quá trình thiết kế và chế tạo cho ra được kết quả:
Hình 6.1 Hình ảnh thực tế mặt trước và sau của robot
Thực nghiệm
Quá trình thực nghiệm được thực hiện tại trường Đại học Sư phạm Kỹ thuật Thành phố
Hồ Chí Minh Việc thực nghiệm được thực hiện qua nhiều lần chạy thử nghiệm nhằm thu thập và so sánh các thông số, giúp phát hiện sớm các vấn đề có thể xảy ra để kịp thời sửa chữa và hiệu chỉnh Theo dõi và so sánh các thông số qua nhiều lần chạy giúp xác định các yếu tố ảnh hưởng đến hiệu suất và độ tin cậy của hệ thống, đảm bảo chất lượng cao nhất cho sản phẩm cuối cùng Để khảo sát sai số về lệch quảng đường của robot khi né vật cản, nhóm đã thả điểm trên công cụ Rviz, với mỗi ô lưới tương đương 1 mét.
Hình 6.3 Vị trí robot bắt đầu chạy lần 1 Hình 6.2 Vị trí robot kết thức chạy lần 1
Hình 6.4 Vị trí robot bắt đầu chạy lần 2
Hình 6.5 Vị trí robot kết thức chạy lần 2
Tiến hành cho chạy thử nghiệm 8 lần liên tục nhóm có được bảng thông số thực nghiệm sau:
Bảng 6.1 Kết quả thực nghiệm robot
1 2 3 4 5 6 7 8 Độ lệch khoảng cách của robot khi tới điểm đến(m)
Sai số góc lệch của robot khi tới điểm đến (độ)
Biểu đồ 6.1 Sai lệch khoảng cách robot khi tới điểm đích
Biểu đồ 6.2 Sai lệch góc quay robot khi tới điểm đích
Lần đo 1 Lần đo 2 Lần đo 3 Lần đo 4 Lần đo 5 Lần đo 6 Lần đo 7 Lần đo 8
Khoảng cách sai lệch khi tới điểm đích
Khoảng cách lệch mong muốn Khoảng cách lệch thực tế
Lần đo 1 Lần đo 2 Lần đo 3 Lần đo 4 Lần đo 5 Lần đo 6 Lần đo 7 Lần đo 8
Góc sai lệch khi tới điểm đích
Góc lệch mong muốn góc lệch thực tế
Kết quả cho thấy rằng sai số về quãng đường và góc di chuyển của robot khi né vật cản thường khá thấp Tuy nhiên, vẫn tồn tại nhiều trường hợp dẫn đến sai số đáng kể, đặc biệt khi robot đi vào vùng nguy hiểm của vật thể hoặc di chuyển trên bề mặt gồ ghề Những tình huống này ảnh hưởng tiêu cực đến hiệu suất và độ chính xác của hệ thống, do đó cần thiết phải có các biện pháp cải tiến nhằm giảm thiểu sai số và tăng cường độ tin cậy của robot trong môi trường thực tế.
Việc thực nghiệm được tiến hành nhằm hai mục đích chính:
Để xác định tính chính xác của mã QR Code, cần kiểm tra thông tin được mã hóa bên trong để đảm bảo rằng dữ liệu không chỉ chính xác mà còn toàn vẹn.
Việc kiểm tra tính ổn định của phần mềm quét mã QR Code là rất quan trọng Quá trình thử nghiệm sẽ được thực hiện nhiều lần để phát hiện và khắc phục các lỗi có thể xảy ra Khi phát hiện lỗi, cần thực hiện các biện pháp xử lý kịp thời nhằm đảm bảo phần mềm hoạt động ổn định và đáng tin cậy trong môi trường thực tế.
Quá trình thực nghiệm đóng vai trò quan trọng trong việc đảm bảo chất lượng mã QR Code và phần mềm liên quan, giúp mang lại trải nghiệm tối ưu cho người dùng.
Các bước tiến hành thực nghiệm gồm:
Để đăng ký, hãy truy cập vào đường link được cung cấp bởi trung tâm tổ chức sự kiện và điền đầy đủ thông tin vào mẫu đăng ký Ví dụ, bạn có thể sử dụng đường dẫn sau: [https://docs.google.com/forms/d/e/1FAIpQLSdvMICXiJ81IdeY5HhmcfMkX44OXxiGlXh173KACRm3KV1_Gg/viewform](https://docs.google.com/forms/d/e/1FAIpQLSdvMICXiJ81IdeY5HhmcfMkX44OXxiGlXh173KACRm3KV1_Gg/viewform).
Sau khi truy cập vào link ta sẽ ra được trang web như sau để điền thông tin đăng ký như
Hình 6.6 Form đăng ký tham gia sự kiện
Sau khi hoàn tất đăng ký, thông tin sẽ được lưu trữ trong Firebase Realtime Database Hệ thống cũng sẽ gửi một email xác nhận đến người dùng, kèm theo mã QR Code để check-in tại robot khi tham gia sự kiện.
Hình 6.8 Thông tin người đăng ký được lưu trên Firebase Realtime Database
Khi người tham gia sự kiện đã đăng ký và đến khu vực check-in với robot, màn hình của robot sẽ hiển thị giao diện để quét mã QR Code Người dùng chỉ cần đưa mã QR trước camera của robot để quét Sau khi quét xong, thông tin người tham gia sẽ hiển thị trên màn hình Nếu thông tin chính xác, nhấn nút "Printer Barcode" để in thẻ sự kiện, thẻ này sẽ được sử dụng để tham gia các hoạt động và khu vực khác trong sự kiện.
Để đánh giá tính ổn định của phần mềm, chúng tôi thực hiện thí nghiệm đo thời gian quét mã QR và thời gian kiểm tra thông tin của người tham gia sự kiện bằng các công cụ có sẵn trong ngôn ngữ lập trình.
Sau khi kiểm tra nhóm cho ra được kết quả như hình
Hình 6.10 Kết quả thực nghiệm thời gian đọc mã Qr Code
Hình 6.11 Kết quả thực nghiệm thời gian kiểm tra thông tin người tham gia sự kiện
Cuộc thực nghiệm đã chứng minh rằng cả hai mục tiêu đều đạt được một cách chính xác Mã QR Code đã được xác minh là chứa thông tin đúng và toàn vẹn, đáp ứng các yêu cầu kỹ thuật Phần mềm quét mã QR hoạt động ổn định, với tốc độ đọc và thời gian kiểm tra thông tin người tham gia sự kiện đạt yêu cầu Không có lỗi nghiêm trọng nào được phát hiện, và các lỗi nhỏ đã được xử lý kịp thời, đảm bảo phần mềm hoạt động tin cậy trong môi trường thực tế Kết quả thực nghiệm khẳng định chất lượng của mã QR Code và phần mềm, mang lại trải nghiệm tốt nhất cho người dùng khi sử dụng hệ thống này.
6.2.3 Thực nghiệm mô hình nhận dạng người
Việc thực nghiệm nhằm xác định tính chính xác của mô hình đã được huấn luyện là rất quan trọng Quá trình này bao gồm kiểm tra và đánh giá hiệu suất của mô hình trên các tập dữ liệu kiểm tra, đảm bảo khả năng dự đoán chính xác và đáp ứng yêu cầu kỹ thuật Xác định tính chính xác giúp đảm bảo mô hình hoạt động hiệu quả và đáng tin cậy trong các ứng dụng thực tế.
Hình 6.12 Thực nghiệm mô hình train YOLOv8 lần 1
Hình 6.13 Thực nghiệm mô hình train YOLOv8 lần 2
Quá trình khảo sát được thực hiện khi nhóm đặt robot cách người khoảng 3 mét Khi robot gặp người, nó sẽ dừng lại để xác định độ sai lệch quãng đường mà robot đã di chuyển trước khi dừng.
Vị trí robot đặt cách người 3m
Hình 6.14 Thực nghiệm khoảng cách qua mô hình vị trí cách robot 3m
Vị trí robot khi dừng:
Hình 6.15 Thực nghiệm mô hình robot dừng khi gặp người
Số liệu thu được khi cho robot nhận diện người chạy thực nghiệm 3m:
Bảng 6.2 Bảng thực nghiệm mô hình nhận dạng người
Biểu đồ 6.3 Sai lệch vị trí khi robot gặp người ở khoảng cách 3m
Kết quả cho thấy rằng sự sai lệch khi robot dừng thường lớn hơn mong đợi, nguyên nhân chủ yếu là do khối lượng nặng của xe, dẫn đến quán tính khiến xe dừng không đúng vị trí mong muốn.
Kết quả
Kết quả đạt được sau quá trình thực nghiệm là:
Robot đã cho thấy khả năng di chuyển và né tránh vật cản với độ chính xác cao Các robot hiện nay có thiết kế thân thiện, phù hợp với nhu cầu doanh nghiệp và dễ dàng tương tác Tuy nhiên, vẫn tồn tại một số tình huống gây ra sai số lớn, chẳng hạn như khi robot đi vào khu vực nguy hiểm hoặc di chuyển trên bề mặt gồ ghề.
Phần mềm điều khiển và xử lý dữ liệu cho robot đã trải qua kiểm tra và đánh giá về tính ổn định trong nhiều điều kiện thử nghiệm Các lỗi được phát hiện đã được khắc phục, đảm bảo rằng phần mềm hoạt động ổn định và đáng tin cậy.
Phần mềm giao diện đã được kiểm tra và đánh giá, cho thấy nó có thiết kế đơn giản, dễ sử dụng, đáp ứng đầy đủ các nhu cầu cơ bản cho nhiệm vụ kiểm tra.
Sai lệch vị trí khi gặp người cách 3m
Quảng đường mong muốn (m) Quảng đường đi được (m)
Đảm bảo lưu trữ dữ liệu chính xác và đầy đủ thông tin cần thiết, đồng thời đáp ứng yêu cầu bảo mật thông tin cho người tham gia sự kiện.
Mô hình dự đoán và điều khiển của robot đã được kiểm nghiệm và chứng minh có độ chính xác cao trên các tập dữ liệu thử nghiệm, khẳng định khả năng đáp ứng các yêu cầu kỹ thuật và hoạt động hiệu quả trong các ứng dụng thực tế.
So sánh với các công trình trước đây:
Robot của chúng tôi đã nâng cao khả năng di chuyển và né tránh vật cản trong các môi trường phức tạp, giảm thiểu sai số đáng kể so với các công trình trước đây Với thiết kế thân thiện và dễ dàng tương tác, sản phẩm của chúng tôi hứa hẹn mang lại trải nghiệm tốt hơn cho người dùng.
Phần mềm của chúng tôi đã giải quyết các vấn đề về tính ổn định và độ tin cậy mà các phần mềm trước đây gặp phải khi điều khiển robot trong các điều kiện thử nghiệm khác nhau, đảm bảo hoạt động ổn định và đáng tin cậy hơn.
Giao diện của các công trình trước đây thường phức tạp và khó sử dụng, không đáp ứng đủ nhu cầu bảo mật thông tin Ngược lại, giao diện của chúng tôi được thiết kế đơn giản, dễ sử dụng và hoàn toàn đáp ứng các yêu cầu bảo mật thông tin.
Mô hình trước đây thường không đạt được độ chính xác cao trong dự đoán và điều khiển robot Tuy nhiên, mô hình của chúng tôi đã chứng minh khả năng vượt trội với độ chính xác cao hơn trên các tập dữ liệu thử nghiệm, đáp ứng tốt các yêu cầu kỹ thuật và hiệu quả trong ứng dụng thực tế.
Tổng thể, kết quả của quá trình thực nghiệm cho thấy robot, phần mềm và mô hình đều đạt được các mục tiêu đề ra