1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Tối ưu đường đi cho robot và di chuyển đa robot theo đội hình

165 10 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Tối Ưu Đường Đi Cho Robot Và Di Chuyển Đa Robot Theo Đội Hình
Tác giả Nguyễn Từ Gia Thịnh, Lê Văn Tùng, Nguyễn Xuân Sáng
Người hướng dẫn TS. Vũ Văn Phong
Trường học Trường Đại Học Sư Phạm Kỹ Thuật Thành Phố Hồ Chí Minh
Chuyên ngành Công Nghệ Kỹ Thuật Điều Khiển Và Tự Động Hóa
Thể loại Đồ Án Tốt Nghiệp
Năm xuất bản 2023
Thành phố Tp. Hồ Chí Minh
Định dạng
Số trang 165
Dung lượng 16,9 MB

Cấu trúc

  • CHƯƠNG 1: TỔNG QUAN (21)
    • 1.1 Đặt vấn đề (21)
      • 1.1.1 Tình hình nghiên cứu ngoài nước (21)
      • 1.1.2 Tình hình nghiên cứu trong nước (22)
    • 1.2 Mục tiêu đề tài (24)
    • 1.3 Phương pháp nghiên cứu (24)
    • 1.4 Nội dung nghiên cứu (25)
    • 1.5 Giới hạn (25)
  • CHƯƠNG 2: CƠ SỞ LÝ THUYẾT (26)
    • 2.1 Mô hình toán hệ robot di động hai bánh vi sai (26)
      • 2.1.1 Động học thuận hệ robot di động hai bánh vi sai (27)
      • 2.1.2 Động học nghịch hệ robot di động hai bánh vi sai (28)
    • 2.2 Giới thiệu về hệ điều hành robot (ROS) (29)
      • 2.2.1 ROS filesystem level (30)
      • 2.2.2 ROS Computation graph level (31)
      • 2.2.3 ROS community level (34)
    • 2.3 Cài đặt ROS trên Jetson Nano (34)
      • 2.3.1 Cài đặt mạng và cấu hình (34)
      • 2.3.2 Cài đặt ROS Melodic (35)
      • 2.3.3 Thêm các biến môi trường và cài đặt ROS Dependencies (35)
      • 2.3.5 Cài đặt thư viện cần thiết và các gói chức năng của Lidar (36)
    • 2.4 Triển khai mô hình trong ROS (36)
    • 2.5 Bài toán travelling salesman problem (TSP) (38)
    • 2.6 Thuật toán tìm đường tối ưu (40)
      • 2.6.1 Thuật toán Dijkstra’s (40)
      • 2.6.2 Thuật toán Greedy Best First Search (41)
      • 2.6.3 Thuật toán A* (41)
    • 2.7 Thuật toán giải bài toán TSP (42)
      • 2.7.1 Thuật toán Brute Force Search (42)
      • 2.7.2 Thuật toán tối ưu đàn kiến (ACO) (43)
    • 2.8 Gói Navigation stack trên ROS (44)
  • CHƯƠNG 3: THIẾT KẾ PHẦN CỨNG (46)
    • 3.1 Yêu cầu thiết kế (46)
    • 3.2 Sơ đồ mô tả hệ thống (46)
    • 3.3 Thiết kế khung xe robot (47)
      • 3.3.1 Bottom_base (47)
      • 3.3.2 Middle_base (48)
      • 3.3.3 Control_base (48)
      • 3.3.4 Top_base (49)
    • 3.4 Tính toán lựa chọn thiết bị (50)
      • 3.4.1 Máy tính nhúng Jetson Nano (50)
      • 3.4.2 Động cơ DC JGY-370 (51)
      • 3.4.3 Bánh xe (54)
      • 3.4.4 Driver điều khiển động cơ (54)
      • 3.4.5 Nguồn cấp cho board Jetson Nano và Driver L298N (55)
      • 3.4.6 Cảm biến gia tốc IMU-9250 (55)
      • 3.4.8 Cảm biến khoảng cách laser scan RPLidar A1-M8 (57)
    • 3.5 Sơ đồ nguyên lý hệ thống (58)
    • 3.6 Mô hình robot thực tế (58)
    • 3.7 Điều khiển động cơ dc sử dụng bộ điều khiển PID (59)
  • CHƯƠNG 4: THIẾT KẾ PHẦN MỀM (62)
    • 4.1 Tổng quan hệ thống (62)
    • 4.2 Vẽ bản đồ môi trường (mapping) (65)
      • 4.3.1 Thuật toán Gmapping (65)
      • 4.3.2 Ghép bản đồ (Map merge) (75)
    • 4.3 Định vị robot (localization) (79)
      • 4.4.1 Mô hình chuyển động (motion model) (79)
      • 4.4.2 Mô hình quan sát (observation model) (80)
      • 4.4.3 Thuật toán định vị Monte Carlo (80)
      • 4.4.4 Bộ lọc hạt thích nghi cho định vị (AMCL) (82)
    • 4.4 Bài toán TSP và các bài toán mở rộng (84)
      • 4.3.1 Xử lý occupancy grid map (84)
      • 4.3.2 Áp dụng thuật toán A* vào occupancy grid map đã xử lý (89)
      • 4.3.3 Áp dụng thuật toán ACO giải bài toán ITSP (91)
      • 4.3.4 Áp dụng thuật toán ACO giải bài toán IMTSP (92)
      • 4.3.5 Triển khai thuật toán A* và ACO trên ROS (94)
    • 4.5 Bài toán đội hình (98)
      • 4.4.1 Thuật toán Dynamic Window Approach (DWA) (98)
      • 4.4.2 Thuật toán di chuyển theo đội hình (103)
  • CHƯƠNG 5: KẾT QUẢ MÔ PHỎNG VÀ THỰC NGHIỆM (106)
    • 5.1 Kết quả mô phỏng (106)
      • 5.1.1 Vẽ bản đồ với Gmapping (106)
      • 5.1.3 Bài toán đội hình (115)
    • 5.2 Kết quả thực nghiệm (118)
      • 5.2.1 Điều khiển PID vận tốc bánh xe (118)
      • 5.2.2 Vẽ bản đồ với Gmapping (119)
      • 5.2.3 Bài toán ITSP (124)
      • 5.2.4 Bài toán IMTSP (130)
      • 5.2.5 Bài toán đội hình (132)
  • CHƯƠNG 6: KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN (145)
    • 6.1 Kết luận (145)
    • 6.2 Hướng phát triển (145)
  • TÀI LIỆU THAM KHẢO (146)
  • PHỤ LỤC (149)

Nội dung

Bằng cách áp dụng bài toán TSP vào việc điều khiển robot bầy đàn, ta có thể tối ưu hóa lộ trình di chuyển của các robot sao cho chúng vẫn duy trì một đội hình nhất định.. Việc điều hướng

TỔNG QUAN

Đặt vấn đề

Bài toán TSP (Traveling Salesman Problem) là một trong những bài toán quan trọng và phổ biến trong lĩnh vực tối ưu hóa ngành khoa học máy tính và robotics Bài toán này đặt ra câu hỏi về việc tìm lộ trình ngắn nhất để đi qua tất cả các thành phố và quay trở lại thành phố xuất phát Trong lĩnh vực robotics, TSP có ứng dụng quan trọng trong việc điều khiển robot bầy đàn, giúp tối ưu hóa lộ trình di chuyển của các robot và duy trì đội hình nhất định Việc áp dụng TSP vào robot bầy đàn có nhiều ứng dụng thực tế quan trọng, bao gồm cả việc di chuyển các robot theo đội hình trong các hệ thống tự động hóa và giám sát.

1.1.1 Tình hình nghiên cứu ngoài nước

Trên thế giới, nhiều công trình nghiên cứu đang tập trung phát triển và ứng dụng hệ thống robot bầy đàn, với mục tiêu tạo ra các hệ thống robot có khả năng hoạt động đồng bộ như một tập thể Các hệ thống này tương tác thông qua giao tiếp và hợp tác để thực hiện các nhiệm vụ phức tạp, mở ra nhiều tiềm năng ứng dụng trong tương lai.

Một nghiên cứu quan trọng về việc sử dụng robot bầy đàn trong nhiệm vụ cứu hỏa đã được đề cập trong bài báo "An Experiment on Squad Navigation of Human and Robots" của tác giả L Nomdedeu và các cộng sự vào năm 2018 Bài báo này đã nêu ra khả năng ứng dụng của robot bầy đàn trong việc hỗ trợ người lính cứu hỏa hoàn thành nhiệm vụ phức tạp trong môi trường nhà kho công nghiệp Các robot sẽ tạo bản đồ và di chuyển trong môi trường theo đội hình, giao tiếp với nhau qua mạng không dây, đồng thời cho phép con người tham gia như một thành viên bầy đàn Khi cần, chúng có thể di chuyển theo đội hình bám theo robot leader, giúp con người tìm đường đi an toàn tới mục tiêu và tránh va chạm với chướng ngại vật Phương pháp Simultaneous localization and mapping (SLAM) và bộ lọc Kalman được sử dụng để tạo bản đồ và điều hướng, giúp cải thiện việc ước lược vị trí robot trong bản đồ.

Bài báo [3] “Control of Nonholonomic Mobile Robot Formations: Backstepping

Nghiên cứu "Kinematics into Dynamics" của Travis Dierks và S Jagannathan vào năm 2017 đã đề xuất phương pháp điều khiển đội hình robot dựa trên mô hình robot dẫn đầu - robot theo sau (leaders-follower) bằng cách kết hợp luật điều khiển động học và momen xoắn robot Phương pháp này sử dụng kỹ thuật động học bước sau (Backstepping Kinematics) để tính toán động học của robot theo sau và robot dẫn đầu Trong một đội hình đơn giản, các robot theo sau (follower) được đặt cách robot dẫn đầu (leader) một khoảng cách L và góc lái  tùy thuộc vào vị trí của robot, giúp tạo ra một đội hình linh hoạt và hiệu quả.

Bài báo [4] “Indoor positioning and wayfinding systems: a survey” của tác giả Jayakanth

Kunhoth và các cộng sự đã thực hiện nghiên cứu về điều hướng robot vào năm 2020, cung cấp cái nhìn tổng quan về sự tiến hóa của công nghệ điều hướng và định vị trong nhà dựa trên thị giác máy tính Quá trình này bao gồm xác định vị trí chính xác của người dùng, lập kế hoạch đường dẫn và dẫn họ đến vị trí mục tiêu một cách hiệu quả và an toàn Việc điều hướng dựa trên thông tin về vị trí hiện tại và định vị đích đến, sau đó tính toán và cung cấp chỉ dẫn để hướng dẫn người dùng di chuyển Các hệ thống điều hướng và định vị cũng sử dụng các phương pháp truyền thông giao tiếp qua mạng không dây như Wi-Fi, RFID và Bluetooth để hỗ trợ quá trình này.

Bài toán điều hướng robot trong môi trường trong nhà kết hợp với bài toán Người giao hàng (TSP) được gọi là bài toán Người giao hàng trong nhà (ITSP), một biến thể của bài toán TSP truyền thống Một giải pháp chung cho bài toán ITSP đã được đề xuất dựa trên thuật toán Dijkstra và thuật toán ràng buộc (B&B) trong bài báo "Indoor Traveling Salesman Problem (ITSP) Path Planning" của tác giả Jinjin Yan và các cộng sự vào năm 2021 Bài báo này tập trung vào việc tìm đường đi ngắn nhất cho robot trong một trung tâm mua sắm lớn có sáu tầng, sử dụng mã QR như phương pháp định vị trong nhà Kết quả cho thấy giải pháp này có thể tính toán thành công các đường đi ITSP và có tiềm năng áp dụng cho các ứng dụng điều hướng trong nhà khác như bảo tàng hay bệnh viện.

1.1.2 Tình hình nghiên cứu trong nước

Trong thập kỷ qua, công nghệ robot tại Việt Nam đã phát triển nhanh chóng, với một trong những lĩnh vực tiềm năng nhất là hệ thống đa robot hoạt động đồng bộ để thực hiện các nhiệm vụ phức tạp.

Bài báo [6] “Distributed Formation Control and Obstacle Avoidance of Multi-Robot

Bài báo "System" của tác giả Hà Trọng Nghĩa và cộng sự năm 2019 đã giới thiệu một phương pháp điều khiển phân tán cho hệ thống đa robot di động, giúp tránh vật cản thông qua việc áp dụng phương pháp chu kỳ giới hạn (Limit Cycle - LC) và thuật toán đội hình Phương pháp này tạo ra quỹ đạo tham chiếu giúp các robot duy trì đội hình và tránh vật cản trong quá trình di chuyển, đặc biệt là với hệ robot di động hai bánh vi sai.

Nghiên cứu "3D Scenario Reconstruction and Autonomous Navigation" do Nguyễn Gia Huân và cộng sự thực hiện vào năm 2021 đã khám phá sự kết hợp giữa thuật toán SLAM dựa trên hình ảnh và SLAM dựa trên laser, cho phép xây dựng bản đồ 3D chính xác Đồng thời, thuật toán lập kế hoạch đường đi hai chiều RRT* cũng được phát triển để tạo ra một quỹ đạo khả thi và tối ưu cho robot Ngoài ra, bộ điều khiển Fuzzy-PID tự điều chỉnh cũng được giới thiệu để đảm bảo robot di chuyển theo quỹ đạo một cách chính xác và ổn định.

Ứng dụng của robot lau dọn đang ngày càng phổ biến trong cuộc sống, điển hình như hệ thống đa robot được đề cập trong bài báo "A Multi-Robotic System for Environmental Cleaning" của tác giả Lê Chương và các cộng sự vào năm 2022 Hệ thống này áp dụng phương pháp SLAM dựa trên laser để lập bản đồ và định vị robot, giúp chúng dọn dẹp môi trường có nhiều chất thải độc hại một cách hiệu quả Ngoài ra, bài báo cũng trình bày thuật toán lập kế hoạch đường đi dựa trên bài toán người bán hàng lưu động (TSP), tạo ra lộ trình di chuyển tối ưu cho nhiều robot trong quá trình thực hiện nhiệm vụ.

Hệ đa robot là một công nghệ tiên tiến cho phép các robot hoạt động tự động, truyền thông và tương tác với nhau để hoàn thành mục tiêu chung Với khả năng tự tổ chức và phối hợp, hệ thống đa robot có nhiều ứng dụng thực tế trong các lĩnh vực như khảo sát môi trường, y tế và quốc phòng Đặc biệt, trong các tình huống xung đột, việc ứng dụng robot bầy đàn có thể tạo ra một khả năng linh hoạt và hiệu quả cao Tuy nhiên, để tối ưu hóa hiệu suất của hệ thống đa robot, cần phải giải quyết các thách thức như tối ưu hóa hành trình di chuyển của robot để hoàn thành nhiều mục tiêu cùng một lúc Điều này đòi hỏi các robot phải tương tác và điều chỉnh hành vi của mình dựa trên thông tin từ các robot khác và môi trường xung quanh Việc tối ưu đường đi cho robot và di chuyển đa robot theo đội hình là một vấn đề quan trọng, giúp tiết kiệm thời gian và chi phí, và là một trong những hướng nghiên cứu quan trọng trong lĩnh vực hệ thống đa robot.

Nhóm nghiên cứu đã kết hợp thuật toán A* và ACO để tìm đường đi tối ưu cho robot trong bài toán ITSP, đồng thời cải thiện thuật toán né vật cản "Limit Cycle" bằng cách triển khai thuật toán Dynamic window approach (DWA) để né vật cản động Để duy trì đội hình, nhóm sử dụng thuật toán Leader-follower kết hợp với cảm biến lidar để xác định vị trí của robot, giúp mở rộng phạm vi làm việc và ứng dụng các thuật toán khác Môi trường nghiên cứu được chọn là trong nhà để dễ dàng tạo bản đồ và mô phỏng giải thuật với mô hình thực tế.

CHƯƠNG 1: TỔNG QUAN quá trình thực hiện đề tài này, nhóm sẽ lập trình trên hệ điều hành robot (Robot Operating System) - một hệ thống phần mềm mã nguồn mở được sử dụng rộng rãi trong nghiên cứu và phát triển robot, giúp triển khai và mô phỏng các giải thuật lên robot thực tế.

Mục tiêu đề tài

- Thiết kế phần cứng robot trên solidworks và xuất mô hình robot sang phần mềm Gazebo để mô phỏng giải thuật cho các robot

- Mô phỏng được các giải thuật trên Matlab-Simulink và triển khai mô phỏng các giải thuật đó trên phần mềm Gazebo

- Thi công phần cứng thực tế robot theo dạng robot di động hai bánh vi sai thuộc hệ non- holonomic để triển khai các giải thuật

- Truyền thông xử lý dữ liệu giữa các robot trên máy chủ PC thông qua giao tiếp Wifi dựa trên mạng socket ROS

- Áp dụng bộ điều khiển PID vào động cơ hai bánh xe để ổn định vận tốc robot

- Triển khai giải thuật A* và ACO để robot tìm đường đi tối ưu trong bài toán TSP, MTSP, ITSP, IMTSP

- Triển khai giải thuật DWA (Dynamic window approach) để robot né vật cản động trong quá trình di chuyển

Áp dụng thuật toán đội hình Leader-Follower và bộ điều khiển phản hồi tuyến tính (Feedback Linearization) cho phép các robot di chuyển theo đội hình một cách đồng bộ và giữ nguyên cấu trúc đội hình trong quá trình di chuyển Robot dẫn đầu được điều khiển để bám sát quỹ đạo tham chiếu và tránh các vật cản trên đường đi, trong khi hai robot còn lại sẽ bám theo robot dẫn đầu với khoảng cách và góc giữa các robot được đặt trước một cách chính xác.

Phương pháp nghiên cứu

Dựa trên các đề tài nghiên cứu khoa học được đăng tải trên sách, báo, tạp chí khoa học, việc nghiên cứu lý thuyết các giải thuật và phát triển đề tài là bước đầu tiên quan trọng trong quá trình tìm hiểu và khám phá tri thức mới Việc này giúp người nghiên cứu có cái nhìn tổng quan về lĩnh vực đang được quan tâm, từ đó có thể xây dựng và phát triển ý tưởng một cách hiệu quả.

Để triển khai đề tài này, nhóm sẽ thực hiện trong môi trường trong nhà, do đó sẽ thiết kế và lắp ráp khung robot sao cho nó di chuyển với tốc độ vừa phải, không quá nhanh, giúp robot kịp thời xử lý và thích nghi khi di chuyển theo đội hình và tránh né vật cản động.

Để đánh giá hiệu quả của các thuật toán, chúng tôi sẽ mô phỏng và kiểm chứng chúng trên phần mềm Matlab-Simulink và Gazebo Sau đó, các giải thuật này sẽ được triển khai trên robot thực tế để đánh giá tính thực tế và hiệu suất của chúng trong môi trường thực tế.

- Sử dụng các kiến thức đã được học từ đó vận dụng và thiết kế hệ thống

- Sử dụng phần mềm Rviz để trực quan hoá robot Realtime từ thực tế.

Nội dung nghiên cứu

Cấu trúc nội dung của đồ án như sau:

Chương này giới thiệu tổng quan về đề tài, mục tiêu, phương pháp nghiên cứu, nội dung và một số giới hạn của đề tài

- Chương 2: Cơ sở lý thuyết

This chapter delves into the kinematics of Differential Drive Robots, providing an introduction to the ROS system and a step-by-step guide on installing ROS on the Jetson Nano board Additionally, it offers an overview of the Traveling Salesman Problem (TSP), laying the groundwork for a comprehensive exploration of these interconnected topics in robotics and artificial intelligence.

- Chương 3: Thiết kế phần cứng

Chương này tập trung trình bày các yêu cầu thiết kế phần cứng quan trọng, đồng thời giới thiệu sơ đồ khối hệ thống tổng thể Bên cạnh đó, chương cũng đề cập đến việc tính toán và lựa chọn các linh kiện, thiết bị phù hợp để đảm bảo hiệu suất và tính ổn định của hệ thống Cuối cùng, sơ đồ nguyên lý chi tiết sẽ được trình bày để giúp người đọc hiểu rõ hơn về cấu trúc và hoạt động của hệ thống.

- Chương 4: Thiết kế phần mềm

Chương này giới thiệu các thuật toán quan trọng trong việc tạo bản đồ và điều hướng, bao gồm Gmapping, thuật toán tìm đường đi tối ưu A* và giải pháp cho bài toán ITSP thông qua thuật toán ACO Ngoài ra, chương này cũng đề cập đến thuật toán duy trì đội hình với bộ điều khiển Leader-Follower, giúp tối ưu hóa quá trình di chuyển của đội hình Các thuật toán này sẽ được mô phỏng và lập trình trên hai nền tảng mạnh mẽ là Matlab và ROS, giúp đánh giá hiệu quả và khả năng ứng dụng thực tế của chúng.

- Chương 5: Kết quả và kết luận

Chương này trình bày kết quả mô phỏng và kết quả thực nghiệm các thuật toán.

Giới hạn

Sau đây là một số giới hạn đề tài trong quá trình thực hiện:

- Đề tài không xét đến khía cạnh năng lượng pin khi robot hết pin hoặc pin yếu

- Đề tài không xét đến việc tính toán tải cho robot, chỉ xét đến việc điều khiển vận tốc cho robot

- Chỉ xét vật cản có hình thẳng đứng từ chân đế đến tầm quét của lidar

- Không xét đến trường hợp mất tín hiệu giao tiếp giữa client và máy chủ server thông qua ROS Network

- Không xét hướng tại các trạm trong bài toán TSP và tất cả bài toán mở rộng

Thuật toán ACO được đánh giá hiệu quả thông qua so sánh với phương pháp Brute Force Search trên quy mô trạm nhỏ trong bài toán ITSP Đối với các quy mô lớn hơn và các bài toán mở rộng khác, hiệu suất của thuật toán ACO được xác định thông qua việc so sánh kết quả sau nhiều lần chạy.

CƠ SỞ LÝ THUYẾT

Mô hình toán hệ robot di động hai bánh vi sai

Nhiều robot di động sử dụng cơ chế truyền động vi sai, bao gồm hai bánh xe truyền động gắn trên một trục chung, cho phép điều khiển độc lập về phía trước hoặc phía sau bằng cách cung cấp vận tốc cho từng bánh xe Để thực hiện chuyển động quay, robot phải quay quanh một điểm nằm dọc theo trục bánh trái, gọi là trục chính, và điểm này được gọi là ICC (Instantaneous Center of Curvature).

Curvature Điểm ICC được mô tả như Hình 2.1 bên dưới

Hình 2.1 Mô tả robot di động Differential Drive hệ non-holonomic

Bằng cách điều chỉnh vận tốc của hai bánh xe, chúng ta có thể thay đổi quỹ đạo di chuyển của robot Để thực hiện việc quay quanh điểm ICC, cần cấp vận tốc tương đương nhau cho cả hai động cơ Tốc độ của bánh xe được tính bằng công thức v = 2πr / T, với T là thời gian hoàn thành một vòng quay quanh điểm ICC Vận tốc góc của robot, ký hiệu là ω, được định nghĩa là 2π / T (rad/s) Kết hợp các phương trình, ta có được mối quan hệ giữa tốc độ và vận tốc góc: v = ωr.

Với các đại lượng có trong Hình 2.1 ta có các phương trình sau:

Khi điều hướng, khoảng cách giữa hai trục bánh xe (l) đóng vai trò quan trọng trong việc tính toán vận tốc của bánh phải (Vr) và bánh trái (Vl) dựa trên xung đọc được từ encoder Ngoài ra, khoảng cách từ điểm ICC đến điểm chính giữa của trục hai bánh xe (R) cũng là yếu tố cần thiết để tính toán giá trị chính xác trong bất cứ thời điểm nào khi điều hướng.

2.1.1 Động học thuận hệ robot di động hai bánh vi sai

Trong Hình 2.1, robot được giả định đang ở vị trí (x, y) với hướng tạo thành góc θ so với trục X của hệ tọa độ, trong đó trục X nằm dọc theo chiều dài của robot Khi có thông tin về tốc độ Vl và Vr được tính từ số xung encoder, kết hợp với công thức (2.4), ta có thể xác định được vị trí ICC một cách chính xác.

Tại thời điểm t+ tvị trí và hướng của robot là: cos( ) sin( ) 0 sin( ) cos( ) 0

Phương trình (2.6) mô tả chuyển động của robot quay quanh một khoảng R với tâm là

Xe robot Differential Drive thường được mô tả bằng phương trình động học thuận, giúp biểu diễn chuyển động của xe một cách đơn giản Phương trình này thường được biểu diễn dưới dạng ma trận, trong đó các thành phần của ma trận được xác định bởi vận tốc góc ω và các thông số khác của hệ thống Cụ thể, phương trình động học thuận của hệ Differential Drive Robots có thể được biểu diễn như sau: cos(θ) cos(θ) 0 sin(θ) sin(θ) 0, trong đó θ là góc nghiêng của xe.

Với vector q =  x y   T, trong đó (x, y) biểu thị vị trí của robot và  là góc quay quanh trục Z tương ứng với góc lệch so với trục X, giá trị v là vận tốc trung bình của robot được tính toán dựa trên một công thức cụ thể.

Giá trị của vận tốc góc  được tính dựa trên công thức: r l

Tại thời điểm t+ tvị trí và hướng của robot là:

CHƯƠNG 2: CƠ SỞ LÝ THUYẾT

2.1.2 Động học nghịch hệ robot di động hai bánh vi sai

Ta có thể mô tả vị trí của robot theo một hướng cụ thể ( ) t với vận tốc ( )v t là:

Kết hợp với công thức (2.8), (2.9) ta viết lại như sau:

Bài toán động học nghịch trong điều khiển robot là việc tìm ra vận tốc cho từng bánh xe để robot di chuyển đến vị trí mục tiêu (x, y, θ) Đối với robot Differential Drive Robots, hệ non-holonomic, robot chỉ có thể di chuyển theo phương X và không thể di chuyển theo phương Y, khiến việc di chuyển sang bên phải trở nên phức tạp Trong trường hợp đặc biệt, khi robot di chuyển thẳng và hướng robot là 0 độ, phương trình động học nghịch có thể được viết lại dưới dạng cos(θ)x + sin(θ)y = v*t.

Nếu V r = − =V l vthì robot sẽ quay tại chỗ với tâm là điểm chính giữa trục nối hai bánh xe, phương trình (2.6) được viết lại như sau:

Tóm lại, đối với hệ này, ta có ba trường hợp đặc biệt đối với vận tốc từng bánh như sau:

1 Nếu V l =V r thì robot sẽ chuyển động tuyến tính theo đường thẳng về phía trước hoặc sau

2 Nếu V l = −V r thì robot sẽ xoay quanh điểm chính giữa trục của hai bánh xe, lúc này robot coi như xoay quanh tại chỗ

3 Nếu V l =0 và V r 0thì robot sẽ quanh quanh tâm tại bánh trái với bán kính là / 2l , tương tự với trường hợp ngược lại.

Giới thiệu về hệ điều hành robot (ROS)

Robotics là một lĩnh vực đang phát triển nhanh chóng trong lĩnh vực công nghệ, với các ứng dụng như xe tự lái và robot hình người của Tesla hoặc Boston Dynamics Nền tảng chính đằng sau các ứng dụng này là Robot Operating System (ROS), một nền tảng mã nguồn mở cung cấp thư viện và công cụ để xây dựng các ứng dụng liên quan tới robot ROS cung cấp nhiều tính năng mạnh mẽ để hỗ trợ các nhà phát triển, bao gồm truyền thông tin, tái sử dụng mã nguồn và triển khai các thuật toán cho ứng dụng robot.

ROS được ứng dụng trong nhiều trường hợp liên quan đến giao tiếp và điều khiển cảm biến cũng như thiết bị truyền động Ngoài ra, nền tảng này cũng được sử dụng rộng rãi trong nghiên cứu, bao gồm các lĩnh vực như xe tự hành, robot hình người, thiết bị bay không người lái và nhiều lĩnh vực khác.

• High-end capabilities: ROS đi kèm với các gói như Simultaneous Localization and Mapping (SLAM) và Adaptive Monte Carlo Localization (AMCL)

Hệ sinh thái ROS cung cấp một loạt các công cụ mạnh mẽ để hỗ trợ quá trình phát triển, bao gồm gỡ lỗi, giám sát và mô phỏng Trong đó, các công cụ như rqt_gui, Rviz và Gazebo sẽ đóng vai trò quan trọng trong việc thực hiện đề tài, giúp nhóm dễ dàng theo dõi, phân tích và tối ưu hóa hệ thống.

• Support for high-end sensors and actuators: ROS có đa dạng các gói hỗ trợ nhiều loại cảm biến như 3D LIDAR, laser scanners, depth sensor,…

Khả năng tương tác giữa các nền tảng là một trong những tính năng quan trọng của ROS Điều này được thực hiện thông qua các nodes, thành phần trung gian giao tiếp giữa các gói và chương trình khác nhau Các nodes này có thể được lập trình bằng nhiều ngôn ngữ lập trình khác nhau như C++, Python, Java, giúp tăng cường tính linh hoạt và khả năng tích hợp của hệ thống.

Một trong những vấn đề thường gặp ở các robot độc lập là sự cố ở một phần của mã nguồn có thể khiến toàn bộ hệ thống ngừng hoạt động Tuy nhiên, ROS (Robot Operating System) cung cấp một giải pháp hiệu quả cho vấn đề này Trong ROS, mỗi quy trình được đại diện bởi một node riêng biệt và các node này được kết nối với nhau thông qua các topic Điều này cho phép hệ thống hoạt động linh hoạt hơn, vì nếu một node gặp sự cố, các node khác vẫn có thể tiếp tục hoạt động mà không bị ảnh hưởng.

CHƯƠNG 2: CƠ SỞ LÝ THUYẾT dừng thì hệ thống vẫn có thể hoạt động và trong lúc đó vẫn có thể tiến hành khắc phục sự cố node đó

Having understood the significant benefits of ROS, we can now delve into its core concepts ROS is primarily divided into three levels: the filesystem level, the computation graph level, and the community level, each of which will be briefly summarized.

ROS không chỉ là một framework phát triển thông thường, mà còn có thể được coi như một meta-OS do cung cấp cả công cụ, thư viện và các chức năng giống hệ điều hành, bao gồm trừu tượng phần cứng, quản lý gói và bộ công cụ phát triển Cấu trúc tổ chức tệp tin ROS trên ổ cứng cũng tương tự như một hệ điều hành thực, với cách sắp xếp cụ thể và logic.

Manifest Messages Service Codes Misc

Dưới đây là giải thích cho từng khối ROS filesystem:

ROS packages là thành phần cốt lõi của phần mềm ROS, chứa một hoặc nhiều chương trình ROS (nodes), thư viện, tệp cấu hình và các tài nguyên khác được tổ chức chung trong một thư mục.

Tệp package.xml đóng vai trò quan trọng trong mỗi package, hoạt động như một tệp mô tả chi tiết về package đó Nội dung của tệp này bao gồm thông tin về tác giả, giấy phép và các thông tin liên quan khác về package.

Metapackages: Thuật ngữ "metapackage" chỉ đến một hoặc nhiều package liên quan có thể được nhóm lại một cách tổng quát

Tệp mô tả metapackage là một thành phần quan trọng trong ROS, cho phép định nghĩa và cung cấp thông tin chi tiết về metapackage Tương tự như tệp mô tả package, tệp mô tả metapackage chứa các thông tin quan trọng như thông tin tác giả, giấy phép và phụ thuộc thời gian chạy (runtime dependencies), giúp người dùng hiểu rõ hơn về metapackage và cách sử dụng nó.

Trong ROS, tệp tin message (.msg) đóng vai trò quan trọng trong việc định nghĩa các thông điệp tùy chỉnh Để tạo một message tùy chỉnh, bạn có thể bắt đầu bằng cách đặt tệp tin msg bên trong thư mục msg của gói ROS tương ứng.

Trong ROS, tệp tin message (ví dụ: my_package/msg/MyMessageType.msg) cho phép người dùng tự định nghĩa kiểu dữ liệu tùy chỉnh theo nhu cầu của mình.

Trong ROS, tệp tin srv được sử dụng để định nghĩa yêu cầu và phản hồi cho một dịch vụ tùy chỉnh, trong đó các trường dữ liệu và kiểu dữ liệu được xác định cho cả yêu cầu và phản hồi Những trường dữ liệu này sẽ quyết định cấu trúc và định dạng dữ liệu trao đổi giữa client và server khi sử dụng dịch vụ.

Trong ROS, "misc" (từ viết tắt của miscellaneous) là thuật ngữ chỉ những thành phần hoặc tệp tin không rõ ràng, không thuộc vào các danh mục cụ thể khác Thành phần này thường được sử dụng để lưu trữ các tệp tin, gói hoặc chức năng nhỏ không thể phân loại vào các danh mục khác.

Các quá trình tính toán và xử lý dữ liệu trong ROS được thực hiện thông qua mạng ROS nodes, còn được gọi là "Computation Graph" Thành phần chính của Computation Graph bao gồm Nodes, Master, Parameter Server, Messages, Services, Topics và Bags, tất cả đều cung cấp dữ liệu cho Graph bằng các phương thức khác nhau, giúp thực hiện các tác vụ tính toán và xử lý dữ liệu một cách hiệu quả.

Sau đây là Hình 2.3 miêu tả tổng quan về cấu trúc của Computation Graph:

Hình 2.3 ROS Computation graph level

Dưới đây là giải thích cho từng khối ROS Computation graph level:

Cài đặt ROS trên Jetson Nano

Để cài đặt ROS trên board Jetson Nano chạy hệ điều hành Linux 18.04, bạn cần lưu ý rằng cấu hình ROS sẽ thay đổi tùy theo phiên bản Linux Đối với Linux 18.04 trên Jetson Nano, phiên bản mới nhất của ROS có thể cài đặt là Melodic.

2.3.1 Cài đặt mạng và cấu hình Để có thể tải và cài đặt ROS trên Jetson Nano ta cần phải có kết nối với Internet Sau khi kết nối ta nhập dòng lệnh dưới đây để vào terminal để cấu hình repository:

$ sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu

$ (lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'

Cấu hình keys, nhằm chắc chắn hệ thống của mình có thể ghi nhận đường dẫn này là an toàn để tải xuống:

$ sudo apt-key adv keyserver 'hkp://keyserver.ubuntu.com:80' recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654

Nhập dòng lệnh sau để cập nhật danh sách các source:

ROS cung cấp nhiều thư viện và công cụ khác nhau để hỗ trợ phát triển ứng dụng robot Các gói cài đặt chính của ROS bao gồm Desktop-Full, Desktop và ROS-Base, mỗi gói cung cấp các tính năng và công cụ khác nhau để đáp ứng nhu cầu phát triển cụ thể Để cài đặt bản Desktop-Full, người dùng có thể nhập lệnh tương ứng vào terminal để bắt đầu quá trình cài đặt.

$ sudo apt install ros-melodic-desktop-full

2.3.3 Thêm các biến môi trường và cài đặt ROS Dependencies

Các biến môi trường đóng vai trò quan trọng trong ROS, ảnh hưởng đến các hành vi của hệ thống Chúng có nhiều vai trò khác nhau, bao gồm tìm kiếm các gói, tác động đến thời gian chạy của node và thay đổi hệ thống xây dựng Để tận dụng các biến môi trường này, người dùng cần thực hiện các lệnh cụ thể để thêm chúng vào hệ thống.

$ echo "source /opt/ros/melodic/setup.bash" >> ~/.bashrc

$ sudo apt-get install python-rosinstall python-rosinstall-generator python- wstool build-essential

Trước khi bắt đầu sử dụng ROS, việc khởi tạo rosdep là bắt buộc Công cụ này cho phép cài đặt các mã nguồn và yêu cầu cần thiết của hệ thống cho thành phần ROS core Để cài đặt rosdep, bạn cần nhập các lệnh tương ứng vào hệ thống.

$ sudo apt install python-rosdep

2.3.4 Cài đặt không gian làm việc

Sau khi cài đặt ROS, bước tiếp theo là tạo một không gian làm việc ROS và sau đó tạo một package bên trong không gian làm việc này Việc tạo package là cần thiết để bắt đầu làm việc với ROS Catkin build system sẽ được sử dụng như một bộ công cụ để xây dựng các package trong ROS, cho phép tạo ra các thư viện có khả năng thực thi và chia sẻ từ source code.

Catkin là hệ thống xây dựng chính thức của ROS, thay thế cho rosbuild trong các phiên bản mới nhất Nó cho phép người dùng sửa đổi, xây dựng và cài đặt các gói catkin một cách linh hoạt Để bắt đầu sử dụng catkin, người dùng cần cài đặt catkin workspace bằng cách nhập các lệnh cụ thể.

CHƯƠNG 2: CƠ SỞ LÝ THUYẾT

$ cd ~/catkin_ws catkin_make

$ sudo sh -c 'echo "source ~/catkin_ws/devel/setup.bash" >> ~/.bashrc'

Sau đó tải và biên dịch Jetbot_pro cho board Jetson Nano Thực hiện nhập các lệnh sau vào terminal:

$ git clone https://github.com/waveshare/jetbot_pro.git

$ cd ~/catkin_ws && catkin_make && source ~/catkin_ws/devel/setup.bash

2.3.5 Cài đặt thư viện cần thiết và các gói chức năng của Lidar

Các thư viện cần thiết có thể được sử dụng để vẽ bản đồ bằng Hector SLAM, Gmapping, SLAM Karto, Cartographer, … hay navigation trong ROS

$ sudo apt-get install ros-melodic-gmapping

$ sudo apt-get install ros-melodic-hector-slam

$ sudo apt-get install ros-melodic-navigation

$ sudo apt-get install ros-melodic-teb-local-planner

Triển khai mô hình trong ROS

Trong ROS, node là đơn vị nhỏ nhất thực thi mỗi tác vụ riêng biệt, cho phép hệ thống swarm robot thực hiện các nhiệm vụ phức tạp như vẽ bản đồ, định vị, giải bài toán TSP và duy trì đội hình Để các node giao tiếp với nhau, cần khởi tạo node_master để bắt đầu quá trình giao tiếp giữa các node Hệ thống này được quản lý và hỗ trợ bởi ROS, cho phép các node hoạt động hiệu quả và phối hợp nhịp nhàng.

Hình 2.5 Giao tiếp các node trong hệ thống ROS

Node Key Teleop đóng vai trò quan trọng trong việc gửi tín hiệu điều khiển từ topic cmd_vel đến Arduino, từ đó tính toán và tạo ra băm xung PWM để điều khiển động cơ Ngoài ra, node này còn có khả năng tự tạo giao diện GUI, cho phép người dùng điều khiển robot một cách linh hoạt, bao gồm cả việc di chuyển tiến, lùi, rẽ phải, rẽ trái Tín hiệu đầu vào có thể được nhập từ bàn phím hoặc thông qua các lệnh trên giao diện GUI, mang lại sự tiện lợi và linh hoạt cho người dùng.

Node này đóng vai trò quan trọng trong việc điều khiển chuyển động của robot bằng cách chuyển đổi vận tốc tuyến tính và vận tốc góc thành giá trị xung PWM tương ứng cho từng động cơ, cho phép robot di chuyển chính xác theo hướng mong muốn.

Vận tốc cho mỗi động cơ được tính từ vận tốc tuyến tính và vận tốc góc được tính dựa trên công thức đã đề cập (2.2), (2.3)

Node này đóng vai trò quan trọng trong việc giao tiếp giữa Arduino và hệ thống ROS, cho phép truyền dữ liệu serial thông qua chuẩn UART Chức năng chính của node là thu thập vận tốc từ bánh xe đã được Arduino tính toán và xuất bản lên các topic tương ứng, sau đó được node odometry sử dụng để tính toán và chuyển đổi toạ độ vị trí của robot Đồng thời, node này cũng nhận dữ liệu từ topic cmd_vel do node move_base gửi đến, bao gồm vận tốc tuyến tính và vận tốc góc, và truyền xuống cho Arduino thông qua node Control Motor để thực hiện chuyển đổi và xử lý băm xung cho PWM.

Node này cung cấp hướng cho robot bằng cách truyền trực tiếp góc yaw từ cảm biến IMU vào biến chứa giá trị hướng xe trong node odometry, giúp giảm thiểu sai số thường gặp khi sử dụng dữ liệu từ encoder bánh xe.

Node này sẽ đăng ký nhận dữ liệu từ topic chứa vận tốc đọc được tính toán từ xung encoder bánh xe mà Arduino gửi lên qua node Ros serial Dữ liệu này sẽ được sử dụng để tính toán vị trí và hướng (x, y, θ) của xe dựa trên công thức đã đề cập trước đó Sau đó, node sẽ xuất bản dữ liệu này lên topic odom và phát sóng một khung tọa độ transform từ vị trí ban đầu so với tọa độ xe, giúp xác định vị trí xe đã di chuyển so với điểm ban đầu.

Node SLAM sẽ được triển khai với thuật toán Gmapping thông qua gói slam_gmapping được hỗ trợ bởi ROS, đồng thời tích hợp gói multirobot_map_merge để tạo bản đồ và hợp nhất ba bản đồ riêng lẻ thành một bản đồ chung Trong khi đó, Node AMCL sẽ sử dụng bộ lọc hạt và thuật toán MCL để xác định vị trí của robot trong bản đồ đã được tạo bởi Node SLAM, dựa trên dữ liệu trạng thái trước đó và dữ liệu quan sát mới nhất từ RPLidar.

CHƯƠNG 2: CƠ SỞ LÝ THUYẾT

Node này thực hiện đọc dữ liệu từ cảm biến Lidar, cung cấp khoảng cách từ vật cản đến robot với tầm đo 0.15-12m và góc quét 360 độ Dữ liệu thu được là các điểm mây (point cloud) đã được xử lý trong node RPLidar hỗ trợ bởi ROS, giúp tạo bản đồ và định vị chính xác vị trí của robot.

This node reads transformed data and writes it to ROS to display frames on the coordinate system in Rviz, linking with links and joints in the Solidworks file designed by the team to visually display real-time observation data from the robot's actual position.

Node này đóng vai trò quan trọng trong việc lưu trữ bản đồ khi robot sử dụng SLAM để quét map Sau đó, khi triển khai chức năng điều hướng trên bản đồ đã tạo, node này sẽ tải bản đồ lên để thực hiện quá trình điều hướng chính xác cho robot.

Node này sử dụng thông tin vị trí từ AMCL và bản đồ từ Map Server để điều khiển robot di chuyển đến vị trí mục tiêu Quá trình điều khiển này được thực hiện bằng cách gửi giá trị vận tốc tương đương động học nghịch, cho phép truyền giá trị vận tốc tuyến tính và vận tốc góc xuống node Control Motor Để đảm bảo đường đi hiệu quả và tránh va chạm, node này áp dụng thuật toán tìm đường A* và thuật toán né vật cản động DWA.

Bài toán travelling salesman problem (TSP)

Bài toán Travelling Salesman Problem (TSP) là một trong những bài toán nổi tiếng trong lĩnh vực khoa học máy tính và toán học, yêu cầu tìm đường đi ngắn nhất để người bán hàng có thể đi qua tất cả các thành phố một lần và quay về thành phố bắt đầu Bài toán này được đặt tên là "travelling salesman" vì nó mô tả tình huống mà người bán hàng cần đi qua nhiều thành phố để bán hàng và trở về điểm xuất phát với tổng quãng đường đi ngắn nhất có thể.

Trong nhiều năm qua, các nhà nghiên cứu đã dành sự quan tâm đặc biệt cho việc nghiên cứu các vấn đề liên quan đến điều hướng trong nhà cho nhiều đối tượng Một trong những vấn đề thú vị là Indoor Travelling Salesman Problem (ITSP), kết hợp giữa điều hướng trong nhà và bài toán Traveling Salesman Problem (TSP) ITSP là một phiên bản mở rộng của TSP, tập trung vào việc tìm đường đi tối ưu trong nhà Trong khuôn khổ nghiên cứu này, thuật ngữ "trạm" sẽ được sử dụng thay thế cho "thành phố" trong bài toán ITSP.

Bài toán ITSP gặp phải hạn chế khi số lượng trạm quá lớn hoặc hàng hóa không đủ để phục vụ tất cả thành phố, đòi hỏi sự hỗ trợ của nhiều người bán hàng khác Điều này dẫn đến sự ra đời của bài toán mở rộng là Indoor Multiple Travelling Salesman Problem (IMTSP), trong đó nhiều người giao hàng được giao nhiệm vụ phục vụ nhiều trạm và quay trở về điểm xuất phát với mục tiêu tối ưu hóa tổng quãng đường di chuyển.

Occupancy grid map là một thành phần quan trọng trong SLAM, đại diện cho môi trường xung quanh mà robot hoạt động thông qua các ô lưới 2D hoặc 3D Mỗi ô lưới chứa một giá trị xác suất, chỉ ra khả năng ô đó có bị chiếm hay không Trong nghiên cứu này, chúng tôi sử dụng 2D occupancy grid map để mô tả môi trường hoạt động của robot.

Trong bản đồ chiếm chỗ (occupancy grid map), mỗi ô thể hiện trạng thái có được chiếm chỗ hay không Ba màu được sử dụng để đại diện cho trạng thái của mỗi ô, bao gồm màu đen cho vị trí đã được chiếm, màu trắng cho vị trí trống và màu xám cho vị trí chưa xác định Bản đồ chiếm chỗ được lưu trữ dưới dạng hình ảnh và được biểu diễn bằng ma trận có n hàng và m cột, giúp thể hiện rõ ràng giá trị của mỗi ô.

Hình 2.7 Các màu đặc trưng được thể hiện trong occupancy grid map

CHƯƠNG 2: CƠ SỞ LÝ THUYẾT

Thuật toán tìm đường tối ưu

Mục đích chính của việc áp dụng thuật toán tìm đường trong grid map là xác định đường đi khả thi và tối ưu giữa các trạm trong bài toán ITSP Bằng cách thay đổi điểm bắt đầu và kết thúc của thuật toán, chúng ta có thể tính toán chi phí di chuyển giữa các trạm một cách chính xác và hiệu quả.

Việc tính toán khoảng cách hiệu quả là yếu tố quan trọng, không chỉ giúp tìm ra chi phí thấp nhất mà còn đảm bảo đường đi nhanh nhất Đặc biệt, với số lượng trạm lớn, việc lựa chọn thuật toán phù hợp trở nên thiết yếu Trong đó, ba thuật toán nổi tiếng gồm Dijkstra’s, Greedy Best First Search và A* được xem xét kỹ lưỡng để đánh giá và chọn lựa phù hợp nhất.

Thuật toán Dijkstra’s hoạt động bằng cách xem xét tất cả các đỉnh trong grid map bắt đầu từ điểm xuất phát của robot, sau đó lặp đi lặp lại quá trình xem xét các đỉnh lân cận chưa được kiểm tra và thêm chúng vào chuỗi các cạnh đã xem xét Quá trình tìm kiếm này sẽ được mở rộng ra khắp bản đồ từ điểm xuất phát đến khi tìm thấy điểm mục tiêu mong muốn Với điều kiện các cạnh không có chi phí âm, thuật toán Dijkstra’s đảm bảo tìm được đường đi ngắn nhất trong grid map từ điểm xuất phát đến điểm mục tiêu.

Cách thức hoạt động của thuật toán như sau:

2: Add start node to OPEN

7: Get first node in OPEN and call O, add O to CLOSED

12: Find all neighbor node of O (neighbor  OPEN and CLOSED), add neighbor node to OPEN and sort the neighbor node with increase distance from start node to examine node

Thuật toán chỉ kết thúc khi tìm được nút mục tiêu Quá trình sắp xếp các nút lân cận theo thứ tự tăng dần dựa trên chi phí từ điểm xuất phát đến điểm nút đang xét là chìa khóa quan trọng Điều này dẫn đến việc tìm kiếm sẽ mở rộng ra khắp map, vì chi phí của nút sau khi xem xét sẽ luôn lớn hơn chi phí đã xét nhưng không chọn.

2.6.2 Thuật toán Greedy Best First Search

Thuật toán Greedy hoạt động tương tự như Dijkstra’s, nhưng có một điểm khác biệt quan trọng là sử dụng giá trị ước lượng (heuristic) để xác định chi phí từ điểm đích đến bất kỳ điểm nào Thay vì ưu tiên các đỉnh gần điểm bắt đầu, thuật toán này sẽ lựa chọn đỉnh gần với điểm mục tiêu nhất, giúp tăng tốc độ tìm kiếm Mặc dù thuật toán Greedy không đảm bảo tìm được đường ngắn nhất, nhưng nó lại có ưu điểm về tốc độ khi so sánh với Dijkstra’s, nhờ vào việc sử dụng hàm heuristic để dẫn hướng đến mục tiêu một cách nhanh chóng.

Cách thức hoạt động của thuật toán như sau:

1: Algorithm Greedy Best First Search:

2: Add start node to OPEN

3: … Similar to Dijkstra's Algorithm from line 1 to line 10 …

12: Find all neighbor node of O (neighbor  OPEN and CLOSED), add neighbor node to OPEN and sort the neighbor node with increase estimate distance from target node to examine node:

Thuật toán Greedy cũng chỉ dừng lại khi tìm được nút mục tiêu, tương tự như Dijkstra's Tuy nhiên, điểm khác biệt nằm ở việc sử dụng hàm chi phí ước lượng, không quan tâm đến vật cản trên đường đi Hàm này ưu tiên chọn lựa theo hướng mục tiêu, ngay cả khi đường đi không tối ưu Điều này cho phép thuật toán Greedy tính toán nhanh hơn so với Dijkstra's, vì không cần xem xét nhiều nút.

Thuật toán A* là một trong những thuật toán tìm đường phổ biến nhất hiện nay, nổi bật với tính linh hoạt và khả năng ứng dụng trong nhiều tình huống khác nhau Thuật toán này không chỉ có khả năng tìm được đường đi ngắn nhất tương tự như thuật toán Dijkstra’s, mà còn sử dụng hàm heuristic để dẫn hướng đường đi hiệu quả như Greedy Best First Search.

CHƯƠNG 2: CƠ SỞ LÝ THUYẾT

Công thức đánh giá hàm f(n) bao gồm ba thành phần chính: hàm đánh giá tại nút n, chi phí của đường đi từ điểm xuất phát đến điểm nút n (g(n)) và chi phí ước lượng từ điểm nút n đến điểm mục tiêu (h(n)) Hàm h(n) còn được gọi là hàm heuristic vì nó ước lượng chi phí mà không biết trước sự hiện diện của vật cản trên đường đi.

Giả sử của nút đang xét là ( x y n , n ), và nút mục tiêu là ( x g , y g ) Tính toán khoảng cách ( ) h n theo khoảng cách Euclidean như sau:

Cách thức hoạt động của thuật toán như sau:

2: Add start node to OPEN

3: …Similar to Dijkstra's Algorithm from line 1 to line 10 …

12: Find all neighbor node of O (neighbor  OPEN and CLOSED), add neighbor node to OPEN and sort the neighbor node with increase value of bellow function:

Thuật toán A* là sự kết hợp của Dijkstra’s và Greedy Best First Search thông qua hàm Heuristic Khi hàm Heuristic chỉ xét đến chi phí từ nút bắt đầu đến nút đang xét (h n( )=0), thuật toán A* trở thành thuật toán Dijkstra’s Ngược lại, khi chỉ có giá trị ước lượng (h n( )) đóng vai trò trong hàm Heuristic (g n( )=0), thuật toán A* tương tự như thuật toán Greedy Best First Search.

Thuật toán A* kết hợp được tính chính xác của Dijkstra và tốc độ của Greedy, làm cho nó trở thành lựa chọn tốt nhất cho việc tìm đường đi ngắn nhất trong môi trường grid map Theo các nghiên cứu so sánh, thuật toán A* cũng chứng tỏ hiệu quả hơn so với các thuật toán khác đã được xem xét, khẳng định vị thế của nó trong lĩnh vực tìm đường tối ưu.

Thuật toán giải bài toán TSP

2.7.1 Thuật toán Brute Force Search Để giải bài toán TSP, đã có nhiều thuật toán chính xác được các nhà nghiên cứu phát triển như Brute Force Search, Branch and Bound, … Các thuật toán này đều có chung đặc điểm là tìm kiếm toàn bộ lời giải có thể của bài toán TSP, từ đó có thể chọn lựa được lời giải một cách chính xác Nhưng có vấn đề là thuật toán này sẽ tìm tất cả trường hợp với số trường hợp:

Số lượng trạm được chọn (n) đóng vai trò quan trọng trong việc xác định số trường hợp và thời gian tính toán Khi số lượng trạm tăng lên, số trường hợp cũng tăng theo, dẫn đến thời gian tính toán lâu hơn Do đó, phương pháp này chỉ phù hợp cho quy mô số lượng trạm nhỏ.

2.7.2 Thuật toán tối ưu đàn kiến (ACO)

Bài toán TSP có thể được giải quyết bằng nhiều cách tiếp cận khác nhau ngoài thuật toán chính xác, bao gồm cả thuật toán gần đúng và heuristic Heuristic là một kỹ thuật cung cấp lời giải tốt trong thời gian hợp lý, mặc dù không đảm bảo đó là giải pháp tối ưu Một số ví dụ về các thuật toán gần đúng và heuristic được áp dụng cho bài toán TSP bao gồm giải thuật Neighbourhood, thuật toán di truyền và thuật toán tối ưu đàn kiến (Ant Colony Optimization - ACO).

Hình 2.8 Hình dung về thuật toán ACO

Thuật toán đàn kiến là một phương pháp tìm kiếm dựa trên ý tưởng về cách những con kiến sử dụng dấu vết và kinh nghiệm để tìm đường đi của chúng Quá trình này liên quan đến việc cập nhật mức độ mùi - pheromone và đường đi ngắn nhất dựa trên kinh nghiệm của đàn kiến.

Quá trình tìm đường đi ngắn nhất của kiến dựa trên mùi trên dấu vết mà kiến để lại được thực hiện thông qua việc lặp đi lặp lại cho tất cả các con kiến Kết quả cuối cùng sẽ được thể hiện qua ma trận xác suất, cho thấy khả năng chọn đường của từng con kiến, từ đó xác định được đường đi ngắn nhất hiệu quả nhất.

( ) ( ) , k i ij ij k k ij i il il l N p j N

Trong quá trình tìm đường, mỗi con kiến k sẽ chọn đường đi từ nút i đến nút j dựa trên xác suất p ij k, được tính toán thông qua mức độ pheromone của đường đi τ ij, thông tin heuristic η ij và các thông số điều chỉnh α và β Các thông số này sẽ ảnh hưởng đến quyết định của con kiến, trong đó α điều chỉnh ảnh hưởng của mức độ pheromone và β điều chỉnh ảnh hưởng của thông tin heuristic Đồng thời, N i k đại diện cho trạm lân cận của nút i mà con kiến k chưa đi qua, giúp đảm bảo quá trình tìm đường hiệu quả.

Những con đường mà kiến đã đi qua sẽ có mức độ pheromone cao hơn so với những con đường mà chúng chưa từng đặt chân đến Điều này dẫn đến việc áp dụng quy luật cập nhật mùi, theo đó mức độ pheromone trên đường đi của kiến sẽ được điều chỉnh dựa trên tần suất và số lượng kiến đi qua.

CHƯƠNG 2: CƠ SỞ LÝ THUYẾT

Trong đó  là hệ số bay hơi pheromone, c k là khoảng cách mà con kiến đã di chuyển,

 = nếu con kiến đi qua đường ( , )i j , mặc khác  = ij 0

Gói Navigation stack trên ROS

Có một gói được hỗ trợ bởi ROS là Navigation Stack cho sự tự động di chuyển của robot Có ba gói cần có của navigation là:

• Gói move_base: lên kế hoạch đường đi cho robot dựa trên map và thông tin điểm mục tiêu, từ đó robot có thể đạt đến điểm mong muốn

• Gói slam_gmapping: xây dựng map dựa trên dữ liệu lấy từ lidar

• Gói AMCL: xác định vị trí của robot trong map hiện tại

The navigation package's core component is the move_base package, which comprises two primary elements: global path planning and local path planning These planners work in tandem to devise a collision-free route based on surrounding obstacles The navigation package's architecture is illustrated in Figure 2.9, showcasing its key components, including the global planner, local planner, costmaps, and recovery behaviors, which collectively facilitate seamless navigation.

Hình 2.9 Mô hình Navigation stack

Các thành phần trong khung nền trắng là những thành phần được cung cấp bởi ROS cho người sử dụng, yêu cầu phải được chuẩn bị trước Trong khi đó, các thành phần trong khung nền xám là các thành phần tùy chọn, và các thành phần trong khung nền xanh liên quan đến nền tảng robot cần được cung cấp bởi người dùng.

• sensor transforms: chức năng của thành phần này là để chuyển đổi tọa độ tf giữa cảm biết robot và trung tâm điều khiển

• sensor sources: thành phần này là dữ liệu đầu vào tương tác với cảm biến chuyển động của robot

• odometry source: thành phần này chứa dữ liệu của odometer, dữ liệu này phản ánh được khoảng cách mà robot đã di chuyển so với trung tâm điều khiển

• base_controller: thành phần này đóng gói dữ liệu điều khiển Twist (gồm vận tốc tuyến tính và vận tốc góc) và publish nó lên nền tảng ROS

• map_server: dùng để lưu bản đồ và tải bản đồ lên sau khi vẽ bản đồ với gmapping.

THIẾT KẾ PHẦN CỨNG

Yêu cầu thiết kế

Những yêu cầu kỹ thuật ban đầu để tính toán thiết kế, cơ khí như sau:

- Địa hình cho robot hoạt động: trên mặt phẳng, không dốc nghiêng

- Mô hình xe đúng với mô hình động học của hệ Differential Drive Robots

- Thiết kế đơn giản, mô hình dễ lắp đặt, thay thế và sửa chửa

- Thiết kế robot với vận tốc di chuyển tối đa đạt 0.1(m/s)

- Thiết kế bộ điều khiển PID vận tốc động cơ với sai số xác |e xl | 10% Thời gian xác lập t xl 1 ( ) s

Sơ đồ mô tả hệ thống

TP-link MR-6400 PC ASUS I7-10

Hình 3.1 Sơ đồ khối tổng quan hệ thống

Hình 3.1 cung cấp cái nhìn tổng quan về các thiết bị phần cứng cần thiết cho hệ thống robot swarm Sơ đồ này đại diện cho cấu trúc cơ bản của một robot, và tương tự áp dụng cho hai robot còn lại trong hệ thống Các thiết bị phần cứng chính bao gồm các thành phần cần thiết để đảm bảo hệ thống hoạt động hiệu quả.

Máy tính PC đóng vai trò quan trọng trong việc nhận tín hiệu từ board Jetson Nano để xử lý các tác vụ phức tạp đòi hỏi tài nguyên lớn Nhóm điều khiển ba robot cùng lúc, do đó tất cả các tác vụ đòi hỏi tài nguyên đều được truyền qua mạng wifi thông qua giao thức socket được hỗ trợ bởi ROS Network và đẩy lên PC để xử lý, giúp tối ưu hóa hiệu suất và khả năng điều khiển.

- Router Wi-Fi Tplink MR-6400 giúp truyền nhận dữ liệu giữa ba robot và PC

- Board Jetson Nano nhận dữ liệu xử lý từ PC và kết nối với cảm biến và arduino Mega 2560 để băm xung điều khiển động cơ

- RPLidar A1-M8 dùng để quét tạo bản đồ và xác định vật cản trong quá trình điều hướng của robot

The Board Jetbot Kit is specifically designed to draw power from three cell batteries, directly supplying the L298N driver, which in turn generates a 5V output that is then provided to the Jetson Nano board.

Bộ Arduino Mega 2560 đóng vai trò quan trọng trong việc giao tiếp với board Jetson Nano, cho phép nhận tín hiệu vận tốc từ robot và gửi tín hiệu từ cảm biến IMU đến Jetson Nano để xử lý, từ đó giúp hệ thống tự động hóa hoạt động chính xác và hiệu quả hơn.

- Cảm biến gia tốc IMU 9250 để xác định hướng cho robot

- Driver L298N để nhận xung PWM từ Arduino chuyển thành điện áp cấp cho hai động cơ JGY-370

Mỗi động cơ được tích hợp sẵn encoder để đọc giá trị xung khi động cơ quay, giúp cung cấp thông tin chính xác về vận tốc và vị trí của bánh xe Dữ liệu này sau đó được sử dụng để điều khiển phản hồi vòng kín PID, đảm bảo vận tốc của bánh xe được kiểm soát một cách chính xác và ổn định.

- Động cơ hộp số JGY-370 giúp di chuyển robot trong quá trình điều hướng.

Thiết kế khung xe robot

Nhóm thiết kế khung xe dựa trên tiêu chí đơn giản, dễ lắp đặt và đi dây, đồng thời đảm bảo chắc chắn và không rung lắc trong quá trình di chuyển để hỗ trợ hệ thống IMU xác định hướng chính xác Khung xe được cấu thành từ bốn tầng chính, sử dụng vật liệu mica giúp giảm trọng lượng và tăng khả năng di chuyển linh hoạt trong quá trình điều hướng.

Tầng dưới cùng được thiết kế để cố định động cơ và bánh xe được mô tả trong Hình 3.2

Hình 3.2 Mô hình phần đế của xe bottom_base

CHƯƠNG 3: THIẾT KẾ PHẦN CỨNG

Tầng này được thiết kế để gắn board Jetson Nano và có đục hai lỗ để cố định angten wifi ở phía sau được mô tả trong Hình 3.3

Hình 3.3 Mô hình tầng giữa middle base

Tầng này được thiết kế để tích hợp các thành phần quan trọng như IMU, Arduino Mega 2560, driver L298N và board chuyển tín hiệu RPLidar A1-M8 IMU được đặt phía sau và cố định ở giữa trục xe để xác định hướng chính xác cho xe, đảm bảo tính ổn định và chính xác trong quá trình vận hành.

Hình 3.4 Mô hình tầng giữa robot control_base

Tầng trên cùng của khung xe được thiết kế tối giản về vật liệu để giảm thiểu khối lượng, đồng thời tập trung trọng lượng vào thân xe nhằm đảm bảo sự ổn định và giảm rung lắc trong quá trình di chuyển Vị trí này cũng được dành riêng cho cảm biến Lidar, yêu cầu không gian rộng để hoạt động hiệu quả mà không bị che khuất bởi các linh kiện khác.

Hình 3.5 Mô hình tầng trên cùng top_base

Hình 3.6 Bản vẽ hoàn chỉnh khung xe robot

Sau khi thiết kế xong các tầng cần thiết cho robot, bước tiếp theo là lắp ráp khung xe hoàn chỉnh và cố định mô phỏng các thiết bị được gắn trên robot Các chi tiết của mô hình này được thể hiện rõ ràng trong Hình 3.6, cung cấp cái nhìn tổng quan về cấu trúc và bố trí của robot.

CHƯƠNG 3: THIẾT KẾ PHẦN CỨNG

Hình 3.7 Mô hình 3D của khung xe được thiết kế trên solidworks

Hình 3.7 mô tả chi tiết hình dạng 3D toàn bộ khung xe robot được gắn đầy đủ các thiết bị cần thiết cho hệ thống.

Tính toán lựa chọn thiết bị

3.4.1 Máy tính nhúng Jetson Nano

Jetson Nano là một nền tảng tích hợp mạnh mẽ và nhỏ gọn được phát triển bởi NVIDIA, đáp ứng nhu cầu ngày càng tăng về công nghệ trí tuệ nhân tạo (AI) và máy học sâu (Deep Learning) Với khả năng xử lý đồ họa và tính toán mạnh mẽ, Jetson Nano được trang bị bộ vi xử lý ARM Cortex-A57 quad-core và GPU NVIDIA Maxwell 128-core, cho phép thực hiện các tác vụ AI phức tạp một cách nhanh chóng và hiệu quả Jetson Nano hỗ trợ các giao tiếp và kết nối linh hoạt như Gigabit Ethernet, HDMI, USB 3.0 và GPIO, giúp tương tác dễ dàng với các thiết bị ngoại vi và cấu hình mạng, đáp ứng đầy đủ các yêu cầu của hệ thống.

- Bộ nhớ RAM: 4GB 64-bit LPDDR4, 1600MHz

- Điện áp đầu vào: 5.0 V DC

Sơ đồ chân GPIO mở rộng trên board Jetson Nano mô tả trong Hình 3.9

Hình 3.9 Các chân GPIO của board Jetson Nano

Để đảm bảo động cơ hoạt động hiệu quả với tốc độ không yêu cầu di chuyển nhanh, việc trang bị hộp số giảm tốc là cần thiết nhằm tăng momen xoắn và giúp động cơ kéo tải dễ dàng hơn Ngoài ra, lựa chọn động cơ có Encoder đi kèm sẽ mang lại sự tiện lợi trong việc điều khiển phản hồi PID Quá trình tính toán và phân tích lực tác động lên bánh xe sẽ giúp nhóm chọn được động cơ phù hợp với yêu cầu cụ thể của hệ thống.

CHƯƠNG 3: THIẾT KẾ PHẦN CỨNG

Hình 3.10 Lực tác động lên bánh xe

Sau đây là Bảng 3.1 thông số mô tả hệ thống:

Bảng 3.1 Bảng thông số mô tả hệ thống

Kí hiệu Mô tả Giá trị

F ms uuur Lực ma sát của bề mặt bánh xe với mặt sàn (N)

F k uur Lực đẩy tác động lên bánh xe (N)

Trọng lác tác dụng lên bánh xe (N)

N uur Phản lực mà bánh xe tác dụng lên mặt sàn (N) v Vận tốc mong muốn của robot 0.1 (m/s) d Đường kính bánh xe 67 (mm) m Khối lượng xe 1.5 (kg)

 Hệ số ma sát lăn bánh xe với mặt sát 0.5

Chọn chiều dương theo chiều mũi tên như Hình 3.10 Mỗi bánh xe chịu trọng lượng là 0.75 (kg) Phương trình tổng hợp lực tác động lên bánh xe là: k ms

F −F =ma (3.1) Để robot chuyển động thì F k F ms , mà:

F ms =  =   = N  m g    (3.2) Công suất cần cho động cơ:

Vậy công suất tối thiểu để xe có thể chuyển động là 0.75 (W)

Để tính toán số vòng quay cần thiết của động cơ trong một phút, chúng ta cần dựa vào đường kính bánh xe và khoảng cách dịch chuyển khi bánh xe quay một vòng Với đường kính bánh xe là dg (mm) và khoảng cách dịch chuyển khoảng 0,21 m, chúng ta có thể tính toán số vòng quay cần thiết để đạt được vận tốc mong muốn.

Khi xe tăng tốc, vận tốc lớn nhất mong muốn đạt được là 0.1 m/s sau 0.5 giây Để tính toán vận tốc này, ta sử dụng công thức chuyển động thẳng biến đổi đều, trong đó v là vận tốc lớn nhất, v0 là vận tốc ban đầu, t là thời gian tăng tốc và a là gia tốc Áp dụng công thức này, ta có thể tính toán vận tốc lớn nhất đạt được của xe sau một thời gian tăng tốc nhất định thông qua phương trình v = v0 + at.

Ta tính lại công suất cần thiết của robot khi có gia tốc a=0.2 (m/s ) 2 , từ công thức (3.1)

Vậy công suất tối thiếu thực tế cần thiết để di chuyển được xe là:

Moment xoắn của động cơ cần thiết là:

Động cơ DC là lựa chọn phù hợp cho ứng dụng này vì không yêu cầu di chuyển nhanh, đồng thời phải đảm bảo khả năng chịu tải tốt và đáp ứng chi phí hợp lý Trong đó, động cơ Encoder có hộp số JGY-370 30RPM là lựa chọn tối ưu với moment và tốc độ yêu cầu Nhóm quyết định sử dụng động cơ có tốc độ quay chậm 30RPM để mô hình xe di chuyển mượt mà và ổn định trong không gian làm việc, giúp dễ dàng tính toán và xử lý góc xoay của xe.

Sau đây là thông số kỹ thuật chính của động cơ:

- Dòng chịu đựng tối đa khi có tải: 1.3A

CHƯƠNG 3: THIẾT KẾ PHẦN CỨNG

- Tốc độ không tải: 30 (RPM)

- Lực kéo moment định mức: 7.4 (kg.cm)

- Số xung Encoder mỗi kênh trên 1 vòng quay trục chính: 11 200 2200 = (xung)

Hình 3.11 Động cơ DC Encoder có hộp số JGY-370

Nhóm đã lựa chọn bánh xe có đường kính 67mm, thường được sử dụng trong thiết kế robot có động cơ kim loại, để lắp vào động cơ điều khiển phía sau do mô hình tương đối nhỏ và tốc độ di chuyển không quá nhanh Bánh xe này có chất lượng tốt, thiết kế rãnh lốp tối ưu giúp tăng độ ma sát và bám đường cao nhất Để cải thiện khả năng cân bằng và điều khiển di chuyển, nhóm còn thiết kế thêm bánh đa hướng mini có kích thước 11mm, hoạt động dựa trên tác động của 2 bánh sau.

Hình 3.12 Bánh xe cho 2 động cơ và bánh đa hướng

3.4.4 Driver điều khiển động cơ

Module L298N là một mạch điều khiển động cơ DC mạnh mẽ, cho phép điều khiển hai động cơ một chiều cùng lúc Với IC điều khiển cầu kép toàn kỳ, module này có dải điện áp hoạt động rộng và khả năng xử lý dòng tải lên đến 2A, hoàn toàn phù hợp với yêu cầu của động cơ JGY-370 có dòng tải tối đa 1.3A Cấu tạo của module bao gồm hai mạch cầu H transistor, đảm bảo hiệu suất và độ tin cậy cao trong quá trình điều khiển động cơ.

Sau đây là thông số kỹ thuật chính của thiết bị:

- Điện áp điều khiển: 5 35  V DC

- Dòng tải tối đa cho mỗi cầu H: 2A

- Kích thước: 4.3cm x 3.4cm x 2.7cm

Hình 3.13 Driver L298N Điều khiển chiều quay L298N:

• Khi ENA = 0: Động cơ không quay với mọi đầu vào

• Khi ENA = 1 ta có các chiều quay như sau:

- INT1 = 1, INT2 = 0: động cơ quay thuận

- INT1 = 0, INT2 = 1: động cơ quay nghịch

- INT1 = INT2: động cơ dừng, tương tự với các chân ENB, INT3, INT4

3.4.5 Nguồn cấp cho board Jetson Nano và Driver L298N

Để phù hợp với điện áp đầu vào 5V DC của board Jetson Nano, nhóm nghiên cứu đã sử dụng Jetbot Kit của Waveshare, bao gồm driver điều khiển động cơ và màn hình OLED tích hợp sẵn khay cắm pin ba cells 18650 Tuy nhiên, do sử dụng băm xung cho động cơ từ driver L298N, nhóm đã bỏ qua chức năng driver của Jetbot Kit và lấy nguồn trực tiếp từ ba cells pin để đảm bảo hiệu suất và độ ổn định cho hệ thống.

Pin 18650 với điện áp tổng khi đầy là 12,6V sẽ cấp trực tiếp cho nguồn điều khiển của L298N, đồng thời Jetbot Kit cũng cung cấp điện áp ổn định 5V DC để cấp cho ngõ vào của Jetson Nano.

Hình 3.14 Driver board Jetbot Kit Expansion

3.4.6 Cảm biến gia tốc IMU-9250

Cảm biến IMU (Inertial Measurement Unit) đóng vai trò quan trọng trong công nghệ điều khiển chuyển động và định vị không gian Module cảm biến IMU 9250, được thiết kế bởi công ty InvenSense, là một trong những lựa chọn phổ biến, tích hợp gia tốc kế, gyro và cảm biến từ tính trong một thiết bị nhỏ gọn Trong ứng dụng cụ thể này, nhóm nghiên cứu chỉ tập trung vào sử dụng phản hồi góc yaw của cảm biến IMU 9250 để đáp ứng yêu cầu thiết kế robot di chuyển trên một mặt phẳng cố định với trục Z không đổi.

CHƯƠNG 3: THIẾT KẾ PHẦN CỨNG

Sau đây là thông số kỹ thuật chính của thiết bị:

- Điện áp hoạt động: 2.4  3.6 V DC

- Phạm vi ngõ ra các góc có thể lập trình: 250, 500, 1000, 2000    o /s

- Phạm vi ngõ ra các gia tốc có thể lập trình: 2g, 4g, 8g, 16g   

- Phạm vi thang đo từ tính: 4800μT

- Kích thước: 26.1mm x 15.5mm x 2.6mm

Hình 3.15 Cảm biến gia tốc IMU-9250

3.4.7 Vi điều khiển Arduino Mega 2560

Arduino Mega 2560 là một phiên bản mạnh mẽ và đa chức năng của nền tảng Arduino, kết hợp một bộ xử lý AVR 8-bit và các tính năng phong phú, lý tưởng cho các dự án phức tạp và đòi hỏi nhiều chân I/O.

Bộ vi điều khiển Arduino Mega 2560 sở hữu bộ nhớ lớn với 256KB bộ nhớ Flash và 8KB bộ nhớ SRAM, cho phép chạy các chương trình phức tạp và lưu trữ dữ liệu nhiều hơn Điều này giúp nó đáp ứng được các yêu cầu của hệ thống, đặc biệt là trong quá trình giao tiếp với ROS trên Jetson Nano Quá trình thử nghiệm đã chỉ ra rằng Arduino Uno R3 không thể giao tiếp được do hạn chế về bộ nhớ SRAM, vì vậy việc lựa chọn Arduino Mega 2560 là một quyết định hợp lý để đảm bảo hệ thống hoạt động trơn tru.

Sau đây là thông số kỹ thuật chính của thiết bị:

- Điện áp đầu vào: 7 12  V DC

- Dòng ngõ ra trên mỗi I/O: 20 mA

3.4.8 Cảm biến khoảng cách laser scan RPLidar A1-M8 Để nhận biết các vật cản, quét bản đồ, cũng như phù hợp với các yêu cầu trong hệ thống xe robot tự hành ứng dụng ROS, nhóm quyết định sử dụng RPLidar A1-M8 là một cảm biến tiên tiến với nhiều tính năng ưu việt Với khả năng quét 360 độ và tầm nhìn rộng 0 12( ) m , nó có thể nhận biết và xác định vị trí các đối tượng xung quanh một cách chính xác

Sau đây là thông số kỹ thuật chính của thiết bị:

- Điện áp hoạt động: 5V DC

- Tần số quét: 5.5 10 ( Hz) Với tần số 5.5 Hz sẽ quét được 1450 điểm/vòng

CHƯƠNG 3: THIẾT KẾ PHẦN CỨNG

Sơ đồ nguyên lý hệ thống

Sau khi lựa chọn thiết bị, nhóm tiến hành vẽ kết nối và đấu dây các thiết bị trên phần mềm Altium, trình bày chi tiết trong Hình 3.18, giúp minh họa rõ ràng quy trình thiết kế và lắp ráp hệ thống.

Hình 3.18 Sơ đồ nguyên lý đi dây hệ thống

Vi điều khiển Arduino Mega 2560 đóng vai trò trung tâm trong hệ thống, đọc giá trị xung từ encoder của hai động cơ và thu nhận tín hiệu từ cảm biến IMU 9250 thông qua giao thức I2C qua chân SDA và SCL Đồng thời, Arduino cũng nhận tín hiệu vận tốc từ board Jetson Nano và tạo ra xung PWM để điều khiển driver L298N, từ đó kiểm soát vận tốc của động cơ một cách chính xác.

Mô hình robot thực tế

Sau khi thiết kế mô hình khung xe trên phần mềm Solidworks, nhóm đã tiến hành thi công phần cứng thực tế bằng cách lựa chọn thiết bị phù hợp như đã trình bày ở mục 3.4 Tiếp đó, dựa trên việc tìm hiểu chi tiết sơ đồ nguyên lý và cách đấu nối các thiết bị được trình bày ở mục 3.5, nhóm đã lắp ráp các thiết bị lại hoàn thiện, tạo nên kết cấu như Hình 3.19.

Hình 3.19 Mô hình triển khai thi công thực tế robot

Khung xe được thiết kế đảm bảo tính chắc chắn và thẩm mỹ, không xảy ra hiện tượng rung lắc trong quá trình di chuyển Trọng lượng của khung xe khoảng 1.5 kg, đáp ứng đầy đủ các yêu cầu thiết kế đề ra, mang lại trải nghiệm di chuyển mượt mà và an toàn cho người dùng.

Điều khiển động cơ dc sử dụng bộ điều khiển PID

Bộ điều khiển PID là giải pháp đa năng được sử dụng rộng rãi trong lĩnh vực điều khiển, phù hợp với cả ứng dụng điều khiển tương tự và điều khiển số Với hơn 90% các bộ điều khiển trong công nghiệp sử dụng bộ điều khiển PID, nó đã trở thành một phần quan trọng trong các hệ thống điều khiển tự động Bộ điều khiển PID hoạt động dựa trên việc tính toán giá trị đầu ra để điều chỉnh quá trình, giúp đạt được độ chính xác cao và ổn định trong các ứng dụng công nghiệp.

"Error" là hiệu số giữa giá trị đo thông số biến đổi và giá trị đặt mong muốn, phản ánh mức độ chênh lệch giữa giá trị thực tế và giá trị mong muốn Bộ điều khiển sẽ thực hiện giảm tối đa sai số này bằng cách điều chỉnh giá trị điều khiển đầu vào một cách chính xác và linh hoạt, đảm bảo hệ thống hoạt động ổn định và hiệu quả.

Hình 3.20 Sơ đồ khối của bộ điều khiển PID

CHƯƠNG 3: THIẾT KẾ PHẦN CỨNG

- Setpoint là giá trị đặt mong muốn

- Output là đại lượng vật lý cần điều khiển

- Error là sai số giữa giá trị ở ngõ ra và giá trị đặt

- Bộ tổng để hồi tiếp tín hiệu ở ngõ ra so với giá trị đặt Định nghĩa u(t) là đầu ra của bộ điều khiển

Luật điều khiển PID sẽ được định nghĩa như sau: t

Khi điều khiển tốc độ động cơ, nhóm quyết định sử dụng bộ điều khiển PI thay vì PID để tránh gây ra dao động không mong muốn và nhiễu, đảm bảo tốc độ di chuyển mượt mà Bộ điều khiển PID được sửa đổi thành bộ điều khiển PI nhằm hạn chế các tác động tiêu cực đến quá trình điều khiển tốc độ động cơ.

Trong đó: K P là hệ số khuếch đại, I P

= K là hằng số thời gian tích phân

Tín hiệu PI chậm pha so với tín hiệu vào một góc trong khoảng từ −π/2 đến 0 phụ thuộc vào các tham số K T P , I và tần số tín hiệu vào

- Tác động khâu tỉ lệ

Khi hệ số K P càng nhỏ, sai số xác lập càng lớn, trong khi đó, việc tăng K P sẽ giúp giảm thiểu sai số xác lập Tuy nhiên, nếu hệ thống chưa xảy ra hiện tượng vọt lố, thời gian xác lập sẽ diễn ra nhanh chóng Ngược lại, nếu đã xảy ra vọt lố, thời gian xác lập sẽ rất lâu Ngoài ra, khi K P quá lớn, hệ thống sẽ mất ổn định và không thể hoạt động hiệu quả.

Giải thích: ta có công thức bộ điều khiển PID:

Khi xem xét công thức điều khiển, ta thấy rằng nếu giá trị Kp lớn, thì ngõ ra bộ điều khiển u sẽ gần bằng với tích của Kp và tín hiệu vào e Điều này có nghĩa là, ngay cả khi tín hiệu vào e nhỏ, nhưng nếu Kp lớn, hệ thống vẫn có thể tạo ra ngõ ra u rất lớn, khiến hệ thống phản ứng nhanh chóng để giảm thiểu sai số e Tuy nhiên, điều này cũng có thể dẫn đến hiện tượng vọt lố, khiến hệ thống mất ổn định nếu không được kiểm soát kịp thời.

- Tác động khâu tích phân

Khi tăng K I thì e xl giảm dần về 0 nhưng t tăng dần và nếu càng tăng xl K I thì độ vọt lố cũng tăng nhanh dần, T cũng tăng dần khi tăng r K I

Khi KI là khâu tích phân, giá trị của KI càng lớn thì chỉ cần sai số tích phân nhỏ cũng có thể gây ra tác động lớn đến hệ thống Điều này dẫn đến sự xuất hiện của dao động để bù trừ các vùng sai số âm và dương với nhau, khiến giá trị sai số tích phân dần về 0 và sai số xác lập bị triệt tiêu.

K I tăng quá hệ sẽ mất ổn định

Hệ vi xử lý không thể đọc cảm biến liên tục mà phải có thời gian lấy mẫu nhất định do các driver công suất không thể chịu được tần số lấy mẫu liên tục Điều này khiến hầu hết quá trình hệ thống điều khiển bị rời rạc hóa, với hệ vi xử lý chỉ nhận tín hiệu từ cảm biến và xử lý tín hiệu để xuất ra điều khiển sau khoảng thời gian nhất định Do đó, thuật toán điều khiển PID rời rạc được sử dụng rộng rãi trên máy tính cũng như hệ thống nhúng, yêu cầu chuyển đổi về miền thời gian rời rạc cho từng khâu.

- Khâu tỉ lệ: (u kT)=K e kT P ( )

Với T là chu kỳ lấy mẫu (giây) Từ đó cho ta ngõ ra tác động u kT( ) là:

Tham khảo PID rời rạc từ trang 294-296, sách “Lý thuyết điều khiển tự động” [19], ta có giải thuật PID được thực hiện trong chương trình:

Bộ điều khiển PID rời rạc:

4: Out= pre out_ +P_part + I_part

THIẾT KẾ PHẦN MỀM

Tổng quan hệ thống

Choose the station points Formation Control

Hình 4.1 Tổng quan quá trình xử lý

Nhóm tập trung giải quyết bài toán ITSP kết hợp điều khiển đội hình, với quy trình thực hiện được thể hiện ở Hình 4.1 Quá trình này bắt đầu với việc tạo nền tảng thông qua mapping, sau đó lựa chọn trạm và tìm đường đi tối ưu để giải quyết bài toán ITSP Cuối cùng, hệ thống sẽ kết hợp điều khiển đội hình theo đường đi đã được tối ưu hóa.

Phương pháp điều khiển được áp dụng trong bài báo này là phương pháp điều khiển tập trung, trong đó một máy chủ điều khiển ba robot thông qua mạng ROS Quá trình trao đổi dữ liệu và phương thức được sử dụng trong mạng ROS được minh họa cụ thể ở hình 4.2, giúp người đọc hiểu rõ hơn về cách thức hoạt động của hệ thống điều khiển.

Hình 4.2 Phương pháp giao tiếp dữ liệu giữa robot và máy chủ

Sau đây là lưu đồ tổng quan hệ thống được mô tả trong hình bên dưới:

Is data in csv file

Save stations as csv file

Is data right in csv

Find optimal path with ACO

Is data right in json

Hình 4.3-a Lưu đồ tổng quan hệ thống

CHƯƠNG 4: THIẾT KẾ PHẦN MỀM

Show optimal path in rviz

Draw robot path by odom

Run action goal to start ITSP

Draw robot path by amcl

Hình 4.4-b Lưu đồ tổng quan hệ thống

Vẽ bản đồ môi trường (mapping)

Định vị và xây dựng bản đồ đồng thời (SLAM) là một trong những chủ đề nghiên cứu quan trọng nhất trong lĩnh vực Robot học hiện nay Công nghệ này bao gồm hai khía cạnh chính: xây dựng bản đồ (Mapping) và ước tính vị trí robot trong bản đồ (Localization), cho phép robot định vị chính xác và xây dựng bản đồ chi tiết trong môi trường chưa được biết đến Quá trình này được thực hiện thông qua việc kết hợp thông tin từ các cảm biến như máy quét laser, dữ liệu bánh encoder bánh xe và cảm biến gia tốc IMU, giúp robot xác định vị trí và tạo ra bản đồ 3D hoặc 2D của môi trường xung quanh.

Ta có thể mô tả việc ước tính vị trí và thiết lập bản đồ trong phân phối xác suất sau:

Trong công thức (4.1), trạng thái của robot tại thời điểm t được biểu diễn bằng x_t, bản đồ sau khi quét được ký hiệu là m, dữ liệu quan sát từ thời điểm 1 đến t được biểu diễn bằng z_1:t và tín hiệu điều khiển từ thời điểm 1 đến t được biểu diễn bằng u_1:t.

Một bản đồ chính xác là yêu cầu quan trọng đầu tiên trong các bài toán điều khiển robot tự hành, cho phép robot xác định vị trí của mình trong không gian và lập kế hoạch di chuyển dựa trên môi trường xung quanh Trong hệ thống ROS, có 5 kỹ thuật SLAM phổ biến, bao gồm HectorSLAM, Gmapping, KartoSLAM, CoreSLAM và LagoSLAM, trong đó HectorSLAM và Gmapping tạo ra bản đồ chính xác nhất Tuy nhiên, thuật toán Gmapping có độ chính xác tốt hơn và bản đồ tạo ra đẹp hơn so với HectorSLAM, đồng thời cũng tối ưu hơn trong việc xử lý dữ liệu nhiễu và trong môi trường phức tạp, đồng thời ngốn ít tài nguyên CPU máy tính hơn Vì vậy, trong nhiệm vụ tạo ra bản đồ môi trường, gói vẽ bản đồ slam_gmapping được tích hợp sẵn trong ROS là lựa chọn phù hợp, kết hợp dữ liệu quét laser và độ chính xác của hệ thống để xây dựng bản đồ lưới chiếm dụng 2D.

Gói slam_gmapping sử dụng dữ liệu quét laser và thông tin từ hệ thống odometry để ước tính vị trí của robot và xây dựng bản đồ môi trường xung quanh Điều này cho phép robot có cái nhìn toàn diện về không gian xung quanh và hoạt động thông minh, tự động Với bản đồ đã được xác định trước, robot có thể tối ưu hóa nhiệm vụ của mình, bao gồm tìm đường đi ngắn nhất, tránh vật cản và thực hiện các tác vụ cụ thể một cách hiệu quả.

CHƯƠNG 4: THIẾT KẾ PHẦN MỀM

Trong đề tài này, nhóm nghiên cứu sử dụng cảm biến laser scan Rplidar A1 với tần số quét 5.5 Hz và khoảng cách quét từ 0.15 đến 12 mét Dữ liệu này được kết hợp với yêu cầu về odometry của gói slam_gmapping để gửi thông tin vị trí (x, y) và hướng của xe, được biểu diễn bằng góc yaw, lên topic odom nhằm thực hiện việc vẽ bản đồ Trước khi đi sâu vào thuật toán Gmapping, chúng ta sẽ tìm hiểu về một số bộ lọc quan trọng được ứng dụng trong thuật toán này.

Bộ lọc Bayes (Bayes filter) dựa trên định lý Bayes (Bayes rule), với yêu cầu p x( ) 0 và ( ) 0 p y  được trình bày như sau:

Quy tắc Bayes đóng vai trò quan trọng trong hầu hết các bộ lọc xác suất robotics Khi muốn suy ra một đại lượng x từ dữ liệu y, xác suất p(x) được gọi là xác suất tiên nghiệm, còn y được gọi là dữ liệu quan sát Xác suất tiên nghiệm p(x) mô tả trạng thái của x trước khi kết hợp với dữ liệu quan sát y, và thường được chuẩn hóa thành một hằng số ký hiệu là η.

Xác suất p(x|y) còn được gọi là xác suất hậu nghiệm của X, được tính toán dựa trên quy tắc Bayes Theo đó, xác suất hậu nghiệm này được xác định thông qua xác suất có điều kiện nghịch đảo p(y|x) và xác suất tiên nghiệm p(x).

Luật xác suất mô tả sự thay đổi của trạng thái có thể được biểu diễn bằng một phân phối xác suất có dạng như sau:

Trong đó x là biến mô tả trạng thái của robot, z mô tả những dữ liệu quan sát từ môi trường, ulà tín hiệu điều khiển

Tuy nhiên, nếu trạng thái x là hoàn thành, điều đó có nghĩa là nó chứa đầy đủ thông tin về tất cả những gì đã xảy ra trong quá khứ, bao gồm cả tín hiệu điều khiển và dữ liệu quan sát từ trước đó u 1: t − 1 và z 1: t − 1.

Tương tự ta có thể biểu diễn xác suất của phép đo nếu trạng thái x là hoàn thành:

Công thức (4.7) được hiểu là chỉ cần trạng thái x t là đủ để dự đoán phép đo z t mà không cần quan tâm đến bất kỳ biến nào khác

Trong lý thuyết xác suất robotics, khái niệm niềm tin (belief) đóng vai trò quan trọng Niềm tin về biến trạng thái x tại thời điểm t được ký hiệu là bel(xt), đại diện cho xác suất hậu nghiệm Biến trạng thái là đại diện cho trạng thái của một hệ thống hoặc sự kiện, và niềm tin là xác suất của một trạng thái cụ thể xảy ra Ví dụ, nếu xt là biến trạng thái thể hiện trạng thái của một đèn giao thông, bel(xt) sẽ là xác suất rằng đèn giao thông hiện tại đang ở trạng thái xt.

Có thể giả định rằng niềm tin được thực hiện sau khi kết hợp với phép đo zt, điều này sẽ giúp ích cho việc tính toán xác suất hậu nghiệm trước khi kết hợp phép đo zt, ngay khi thực hiện lệnh điều khiển ut Xác suất hậu nghiệm như vậy sẽ được viết lại như sau:

Phân phối xác suất trong công thức (4.9) và (4.8) mô tả quá trình dự đoán trạng thái tại thời gian t dựa trên trạng thái trước đó, trước khi kết hợp phép đo tại thời điểm t Quá trình này cho phép bel x( ) t dự đoán trạng thái hệ thống một cách chính xác hơn.

Thuật toán Bayes_filter được mô tả như sau:

Để triển khai thuật toán này, có ba dữ liệu cần thiết phải được xác định, bao gồm xác suất niềm tin ban đầu bel x(0), xác suất đo lường p(z|x(t)) và xác suất biến đổi trạng thái p(x(t)|x(t-1), u(t)) Đây là những thông số quan trọng giúp thuật toán hoạt động hiệu quả và cung cấp kết quả chính xác.

Bộ lọc Bayes là một thuật toán quan trọng trong xử lý tín hiệu, bao gồm hai bước quan trọng được trình bày ở dòng số 3 và 4 Trong bước đầu tiên, quá trình này xử lý với tín hiệu điều khiển u t, tại đó niềm tin bel x ( ) t được tính toán thông qua tích phân.

CHƯƠNG 4: THIẾT KẾ PHẦN MỀM của xác suất trạng thái x t dựa trên tín hiệu điểu khiển u t và trạng thái trước đó x t − 1 kết hợp với xác suất niềm tin hậu nghiệm ở thời gian trước đó bel x( t − 1 ) Bước xử lý này còn gọi là dự đoán (prediction) Bước thứ hai gọi là cập nhật đo đạc, nghĩa là xác suất hậu nghiệm trạng thái bel x( ) t được cập nhật khi kết hợp với xác suất dữ liệu quan sát z t được mô tả ở dòng số 4

Bộ lọc hạt là một triển khai phi tham số của bộ lọc Bayes, nơi các mẫu của phân phối hậu nghiệm được gọi là các hạt (particles).

Trong đó X t là tập hợp khác hạt tại thời điểm t, M là số lượng các hạt trong tập hợp hạt

X t , Mỗi hạt x t [m] (với 1  m  M ) là một thể hiện cụ thể của trạng thái tại thời điểm

Thuật toán Particle_filter được mô tả như sau:

Định vị robot (localization)

Định vị robot với bản đồ sẵn có là một vấn đề phức tạp trong lĩnh vực robotics Để giải quyết vấn đề này, hầu hết các phương pháp đều biểu diễn vị trí robot trong bản đồ bằng tập hợp các hạt xác suất Hai mô hình quan trọng được sử dụng để ước tính vị trí robot dưới dạng tập hợp các hạt và triển khai các bộ lọc phi tham số là mô hình chuyển động và mô hình đo lường, giúp tăng độ chính xác và hiệu quả trong việc định vị robot.

4.4.1 Mô hình chuyển động (motion model)

Mô hình chuyển động đóng vai trò là mô hình chuyển trạng thái robot tự hành Mô hình này là một phân phối xác xuất điều kiện quen thuộc

( t | t , t 1) p x u x − (4.13) Ở đây x t là bao gồm cả vị trí ( , )x y và hướng quay robot quanh trục z là góc yaw, thường ký hiệu là 

CHƯƠNG 4: THIẾT KẾ PHẦN MỀM

Trong mô hình chuyển động, có hai phương pháp chính đại diện cho việc ước lượng vị trí của robot, bao gồm mô hình chuyển động vận tốc và mô hình chuyển động đo lường Mô hình đo lường (odometry) thường cung cấp độ chính xác cao hơn so với mô hình tốc độ (velocity), nhưng yêu cầu robot phải hoàn thành việc di chuyển trước khi có thể ước lượng giá trị encoder Để ước lượng vị trí của robot, mô hình chuyển động đo lường sẽ được triển khai thông qua việc đọc xung từ encoder và tính toán giá trị vận tốc của từng bánh xe, sau đó kết hợp với thuật toán AMCL để định vị robot trong bản đồ có sẵn.

4.4.2 Mô hình quan sát (observation model)

Mô hình quan sát Z thường được sử dụng để ước lượng và cập nhật trạng thái của robot dựa trên thông tin quan sát từ cảm biến dưới sự tác động của nhiễu môi trường Trong mô hình này, số lượng K các giá trị đo được sẽ được biểu diễn, cho phép hệ thống robot tự động cập nhật và điều chỉnh trạng thái của mình một cách chính xác và đáng tin cậy.

Mô hình được định nghĩa là một phân phối xác xuất có điều kiện:

Trong mô hình này, z t đại diện cho dữ liệu quan sát thu được từ cảm biến (laser_scan) tại thời điểm t, trong khi x t thể hiện vị trí của robot tại cùng thời điểm và m là bản đồ tại thời điểm t Giả định rằng các điểm đo là độc lập với nhau, chúng ta có thể xấp xỉ và đơn giản hóa mô hình này.

4.4.3 Thuật toán định vị Monte Carlo

Monte-Carlo Localization (MCL) là một thuật toán định vị phổ biến được sử dụng trong chế tạo robot, giúp xác định vị trí của robot trong bản đồ sẵn có Thuật toán này sử dụng bộ lọc hạt PF để ước lượng vị trí của robot MCL là một trong những phương pháp định vị được áp dụng rộng rãi trong lĩnh vực robot, giúp tăng độ chính xác và hiệu quả trong việc xác định vị trí của robot trong môi trường phức tạp.

Hình 4.16 Định vị robot với Monte Carlo

CHƯƠNG 4: THIẾT KẾ PHẦN MỀM

Bộ lọc Monte-Carlo là một kỹ thuật quan trọng trong định vị robot, bao gồm hai bước chính: lấy mẫu vị trí từ mô hình chuyển động và đánh giá trọng số bằng mô hình quan sát, sau đó lấy mẫu lại các mẫu quan trọng Khi robot khởi động, vị trí ban đầu không được xác định chính xác, do đó các điểm mẫu ngẫu nhiên được sử dụng để đại diện cho vị trí robot trên toàn bản đồ Thuật toán MCL tính toán trọng số cho các hạt đã lấy mẫu trước đó dựa trên quan sát môi trường xung quanh, với hàm bel x( ) t biểu thị sự nhận thức của robot về vị trí của nó Quá trình di chuyển và quan sát được lặp lại, với trọng số của mỗi hạt được cập nhật và các hạt có trọng lượng thấp bị loại bỏ, giúp tập hạt hội tụ và giảm dần xung quanh khu vực có xác suất cao nhất cho vị trí của robot.

Thuật toán MCL được minh họa qua ví dụ xác định vị trí robot trong hành lang Ban đầu, robot không biết chính xác vị trí của mình, do đó các hạt đại diện cho niềm tin được phân bố ngẫu nhiên và đồng đều trên toàn bộ không gian Khi nhận được dữ liệu quan sát, trọng lượng của mỗi hạt được tính lại dựa trên các quan sát kết hợp, và chiều cao của mỗi hạt đại diện cho trọng lượng của hạt mà ở đó xác suất robot giống với thực tế nhất Quá trình lấy mẫu lại giúp phân bố lại các hạt xung quanh các hạt có trọng lượng cao, và lặp lại bước kết hợp phép đo quan sát giúp cập nhật trọng số cho các hạt Cuối cùng, robot tiếp tục tiến hành lấy mẫu lại để hoàn thành chu trình của mình, giúp xác định vị trí chính xác hơn.

4.4.4 Bộ lọc hạt thích nghi cho định vị (AMCL)

Thuật toán AMCL (Adaptive Monte Carlo Localization) là một phương pháp xác định vị trí toàn cục cho robot, nhưng nó có hạn chế khi robot bị mất dấu hoặc gặp sự cố trong việc xác định vị trí Để khắc phục điều này, việc thêm các hạt ngẫu nhiên vào hệ thống có thể giúp robot phục hồi vị trí trong trường hợp bị thay đổi vị trí đột ngột hoặc bị dời đi một đoạn lớn Việc thêm các hạt ngẫu nhiên này không chỉ giúp robot phục hồi vị trí mà còn tăng tính ổn định và độ tin cậy của thuật toán, ngay cả khi robot không bị mất dấu Tuy nhiên, câu hỏi đặt ra là cần thêm bao nhiêu hạt và tạo ra các hạt từ phân phối nào để đạt được hiệu quả tốt nhất.

Việc theo dõi xác suất của các đo đạc từ cảm biến cho phép ước tính độ chính xác của việc xác định vị trí hiện tại Khi xác suất này thấp, nó chỉ ra rằng các hạt hiện tại không phản ánh đúng vị trí thực tế, và điều này có thể được cải thiện bằng cách thêm nhiều hạt Số lượng hạt cần thêm có thể được xác định dựa trên ước tính về độ chính xác của việc xác định vị trí, và phân phối có thể được xấp xỉ theo trọng số của particle để tính toán số particle ngẫu nhiên cần thêm vào một cách dễ dàng.

Tuy nhiên, nhiễu từ cảm biến có thể gây ra sai số với giá trị trung bình trong quá trình xác định vị trí toàn cầu Để cải thiện độ chính xác, việc duy trì một trung bình ngắn hạn của khả năng đo đạc và liên kết nó với trung bình dài hạn khi xác định số lượng mẫu ngẫu nhiên là một phương pháp hữu ích Phương pháp này giúp cân nhắc cả thông tin gần đây và thông tin từ quá khứ, từ đó cải thiện quá trình xác định vị trí trong thuật toán MCL.

10: w slow =w slow + slow (w avg −w slow )

11: w fast =w fast + fast (w avg −w fast )

13: with probality max(0.0,1.0−w fast /w slow ) do

CHƯƠNG 4: THIẾT KẾ PHẦN MỀM

Thuật toán này là một biến thể của MCL, được thiết kế để bổ sung các hạt ngẫu nhiên Điểm mạnh của thuật toán này nằm ở khả năng thích ứng cao, cho phép nó liên tục theo dõi và cập nhật trung bình ngắn hạn và dài hạn của p z z( | t t − 1 , , )u m t , giúp tăng độ chính xác và hiệu quả trong việc xử lý dữ liệu.

Thuật toán yêu cầu điều kiện 0 slow =  fast Một yếu tố quan trọng của thuật toán nằm ở việc tính toán xác suất thêm một mẫu ngẫu nhiên dựa trên sự khác biệt giữa trung bình khả năng quan sát ngắn hạn và dài hạn trong vùng lân cận Nếu vùng quan sát ngắn hạn tốt hơn hoặc bằng vùng quan sát dài hạn, không cần thêm các particle ngẫu nhiên Ngược lại, nếu vùng quan sát ngắn hạn xấu hơn vùng quan sát dài hạn, có nghĩa là robot bị mất dấu, thì các particle ngẫu nhiên sẽ được thêm vào để cải thiện độ chính xác.

Bài toán TSP và các bài toán mở rộng

4.3.1 Xử lý occupancy grid map

Hình 4.17 Occupancy grid map với vùng không xác định lớn

Từ Hình 4.17 cho thấy map gốc có các vùng dư thừa bên ngoài không cần thiết phải xem xét, việc đưa những vùng này vào tính toán sẽ làm chậm tốc độ tính toán Để giải quyết vấn đề này, nhóm tác giả đề xuất phương pháp tự động cắt map trong vùng cần thiết để xem xét Để quản lý dễ dàng các giá trị trong ma trận của occupancy grid map, nó được chuyển đổi thành binary occupancy grid map trong Matlab, trong đó các ô được chiếm sẽ có giá trị True và các ô trống hoặc không xác định sẽ có giá trị False.

1: Load map with pgm type file

2: Get width and height of map

3: Scan all rows of map matrix from top to bottom by two for loops

4: If this row has a value which is occupied

5: Limit top is this row

8: Scan all rows of map matrix from bottom to top by two for loops

9: If this row has a value which is occupied

10: Limit bottom is this row

13: Scan all columns of map matrix from left to right by two for loops

14: If this column has a value which is occupied

15: Limit left is this column

18: Scan all columns of map matrix from right to left by two for loops

19: If this column has a value which is occupied

20: Limit right is this column

23: Crop map with limit top, limit bottom, limit left and limit right

24: Convert map after cropped into binary occupancy grid map

Các giá trị của ma trận map đóng vai trò quan trọng trong các thuật toán tìm đường sau này, do đó việc tính toán tối ưu cho ma trận map này là thực sự cần thiết Quá trình áp dụng thuật toán vào nguồn từ hình Hình 4.17 sẽ mang lại kết quả về map sau khi cắt và binary occupancy grid map như được minh họa ở Hình 4.18 và Hình 4.19.

CHƯƠNG 4: THIẾT KẾ PHẦN MỀM

Hình 4.18 Map sau khi cắt

Hình 4.19 Binary occupancy grid map

Từ binary occupancy grid map là một ma trận n hàng và m cột, với các giá trị không đổi dù được thể hiện trên hệ tọa độ khác nhau Tuy nhiên, khi biểu diễn trên hệ tọa độ scater, các hàng bên trong ma trận có thể được hiển thị ngược chiều, bắt đầu từ dưới lên thay vì từ trên xuống Điều này dẫn đến sự khác biệt về hình ảnh giữa bản đồ gốc và bản đồ được biểu diễn trên hệ tọa độ scater.

Hình 4.20 Sự thay đổi khi quan sát trên scatter của ma trận binary occupancy grid map

Việc thể hiện ma trận của binary occupancy grid map trên scatter giúp việc triển khai thuật toán tìm đường và thuật toán đội hình trở nên dễ dàng và thuận tiện hơn Mặc dù hình ảnh có thể thay đổi, nhưng các giá trị cơ bản vẫn giữ nguyên và không ảnh hưởng đến việc tính toán cũng như triển khai thực tế.

Hình 4.21 Map sau khi xử lý

Khi robot di chuyển trong bản đồ, chúng hoạt động trong hai không gian chính: không gian robot và không gian vật cản Không gian vật cản được tính toán cẩn thận để tránh va chạm giữa các robot và vật cản, đảm bảo an toàn và hiệu quả cho quá trình di chuyển Đặc biệt, với đội hình robot hình tam giác có bán kính ngoại tiếp các robot là R, việc tính toán không gian vật cản trở nên quan trọng hơn bao giờ hết để tránh những va chạm không mong muốn.

CHƯƠNG 4: THIẾT KẾ PHẦN MỀM

Đội hình tam giác với đường tròn ngoại tiếp các robot bán kính R sẽ được áp dụng để tính toán không gian vật cản cho robot bằng phép cộng Minkowski Phép cộng Minkowski là một khái niệm trong toán hình học, được định nghĩa là phép cộng từng vector trong chuỗi vị trí vector A với từng vector trong chuỗi vị trí vector B trong không gian Euclidean Trong ứng dụng thực tế, hai chuỗi vị trí vector này được định hình là đội hình của robot và vật cản, như được minh họa trong Hình 4.23.

Hình 4.23 Phép cộng Minkowski cho đội hình robot và vật cản

Khi điểm điều khiển nằm bên ngoài không gian vật cản, đội hình của robot sẽ không va chạm với vật cản, do đó độ phồng của vật cản sẽ phụ thuộc vào bán kính của nó.

R Ví dụ độ phồng với R=8(cell) được sử dụng trong binary occupancy grid map được thể hiện ở Hình 4.24 bên dưới Để tránh được vật cản, điểm điều khiển của đội hình buộc phải bên ngoài vùng màu hồng của Hình 4.24

Hình 4.24 Phồng vật cản với bán kính R = 8 (cell)

4.3.2 Áp dụng thuật toán A* vào occupancy grid map đã xử lý

Thuật toán A* được tích hợp vào bản đồ lưới (grid map) sau khi bản đồ này đã được xử lý với độ phồng theo yêu cầu của đội hình Quá trình xử lý của thuật toán A* bao gồm các bước tính toán phức tạp để tìm ra đường đi tối ưu trên bản đồ lưới đã được xử lý.

2: Create map matrix with obstacles from reached grid map

3: For start index = 1: number of stations

4: For target index = 1: number of stations

5: Start node ( s ) is station at start index

6: Target node ( t ) is station at target index

7: If start node = target node

8: Cost of path to move from start node to target node, which is called d i j( , ) where i is start node and j is target node In this case, cost of path is zero:

10: Bypass this target index and continue loop

12: Add start node to OPEN matrix

13: While node n  target node and no path = True

14: If there is no route from start to target

CHƯƠNG 4: THIẾT KẾ PHẦN MỀM

18: Select the node n with smallest estimate cost among the nodes

22: Search with all adjacent nodes to n

Kết quả tìm đường giữa hai trạm bằng thuật toán A* được thể hiện ở Hình 4.25 Khoảng cách đường đi thu được sẽ được lưu vào d(1,8), với trạm bắt đầu là 1 và kết thúc là 8 Đối với n trạm, sẽ có n^2 - n đường đi cần tìm kiếm và tính toán chi phí Các chi phí tìm kiếm này sẽ được lưu vào ma trận khoảng cách, cung cấp thông tin cần thiết cho việc tính toán và phân tích.

Tại d là ma trận khoảng cách của các trạm, n là số lượng các trạm, d i j( , ) là khoảng cách của đường đi từ trạm i sang trạm j

Hình 4.25 Thuật toán A* tìm đường bắt đầu từ trạm 1, kết thúc trạm 8

Quá trình tính toán sẽ được tiếp tục cho đến khi tìm được tất cả các đường đi giữa các trạm, từ đó đưa ra kết quả là ma trận d tương tự như ma trận (4.20) và mảng chứa các đường đi.

4.3.3 Áp dụng thuật toán ACO giải bài toán ITSP

Sau khi có được ma trận khoảng cách d, nó được sử dụng làm đầu vào cho thuật toán ACO để tìm đường đi tối ưu Thuật toán ACO được áp dụng để giải quyết bài toán TSP thông qua việc tìm kiếm và tối ưu hóa đường đi dựa trên các tham số được xác định trong ma trận khoảng cách.

1: Define parameters are as number of iterations, number of ants, ,  , 

2: Get distance matrix from matrix (4.20)

5: Initialize the start city for each ant

6: Construct solutions: find tour of each ant based on probability formula (2.24) to select next city

7: Calculate distance of found tour

8: Update pheromone level based on formula (2.25)

Trong thuật toán, hai thông số quan trọng là số lần lặp và số lượng kiến, ảnh hưởng trực tiếp đến đường đi được lựa chọn của chương trình Khi số lượng kiến nhỏ và số lần lặp ít, kiến sẽ lựa chọn đường đi dựa trên xác suất và mùi pheromone mà kiến trước đó đã đi qua Điều này có thể dẫn đến việc kiến chọn đường dài hơn thay vì đường ngắn do xác suất và số lượng kiến hạn chế Do đó, việc chọn số lượng lặp và số lượng kiến đủ lớn là cần thiết để tránh các trường hợp xảy ra xác suất đi vào đường không tối ưu.

Hình 4.26 Trường hợp bầy kiến chọn dài hơn

CHƯƠNG 4: THIẾT KẾ PHẦN MỀM Ở đề tài này, thuật toán Brute Force Search sẽ được xem xét để so sánh tính chính xác trong số lượng trạm nhỏ cho với một thuật toán ACO Thuật toán Brute Force Search được thực hiện như sau:

1: Get distance matrix from matrix (4.20)

4: Calculate total distance of ith permutation

5: If total distance of ith permutation < minimum cost

Bài toán đội hình

4.4.1 Thuật toán Dynamic Window Approach (DWA)

• Tổng quan thuật toán DWA

Dynamic Window Approach là một thuật toán điều khiển di chuyển cục bộ hiệu quả, được thiết kế để điều khiển chuyển động của robot di động trong môi trường động Thuật toán này tính toán và đánh giá tốc độ và hướng tiềm năng cho robot, cho phép chọn các hành động tốt nhất để di chuyển an toàn và hiệu quả Bằng cách xem xét trạng thái hiện tại của robot, bao gồm vị trí, tốc độ và hướng, cũng như môi trường xung quanh với chướng ngại vật và các đối tượng động, thuật toán này giúp robot di chuyển một cách thông minh và linh hoạt.

Thuật toán DWA được chia làm 2 phần chính là không gian tìm kiếm (search space) và hàm mục tiêu (objective function):

- Không gian tìm kiếm vận tốc của robot được chia làm ba bước:

Quỹ đạo tròn: thuật toán chỉ xem xét quỹ đạo tròn được xác định bởi vận tốc dài và vận tốc góc của robot ( ) v w ,

Vận tốc cho phép là giới hạn và cho phép của vận tốc để đảm bảo quỹ đạo được chọn là an toàn Vận tốc này được xem xét là cho phép nếu quỹ đạo của robot dừng trước khi va chạm vào vật cản gần nhất, đảm bảo tính an toàn và tránh được các va chạm tiềm ẩn.

Cửa sổ động: cửa sổ động sẽ hạn chế vận tốc cho phép có thể đạt được trong thời gian ngắn với gia tốc hạn chế của robot

- Hàm mục tiêu: từ vị trí và hướng của robot hiện tại sẽ đánh giá các khía cạnh sau để chọn quỹ đạo tối ưu nhất:

   là các trọng số của heading, dist, vel tượng ứng

 làm mịn tổng trọng số của ba thành phần heading, dist, vel tương ứng

Hình 4.33 Đánh giá theo heading

Trong đó heading là hướng của robot so với mục tiêu heading lớn nhất chỉ khi robot di chuyển trực tiếp hướng đến mục tiêu

: là hướng robot tại vị trí dự đoán

Góc giữa robot tại vị trí dự đoán và điểm mục tiêu đóng vai trò quan trọng trong việc điều hướng robot Khoảng cách đến vật cản gần nhất, được ký hiệu là dist, sẽ giúp robot di chuyển vòng quanh vật cản một cách an toàn và hiệu quả Việc lựa chọn giá trị dist phù hợp sẽ đảm bảo robot tránh được vật cản và tiếp tục di chuyển đến điểm mục tiêu đã đặt ra.

Hình 4.34 Đánh giá theo dist vel là vận tốc dài của robot vel càng lớn thì robot di chuyển nhanh hơn.

CHƯƠNG 4: THIẾT KẾ PHẦN MỀM

Hình 4.35 Đánh giá theo vel

Hình 4.36 Đánh giá theo hàm mục tiêu G v w ( , )

Từ việc đánh giá dựa trên tiêu chí heading, dist và vel, hàm mục tiêu sẽ chọn được vận tốc dài và vận tốc góc tối ưu, giúp robot vừa tránh vật cản vừa di chuyển đến điểm mục tiêu một cách nhanh chóng và hiệu quả nhất.

Hình 4.37 Lưu đồ thuật toán DWA

Các tham số của thuật toán được khảo sát thông qua Bảng 4.2 để chọn được tham số tối ưu cho thuật toán DWA mô phỏng trên matlab

Bảng 4.2 Bảng khảo sát các tham số liên quan thuật toán DWA trên mô phỏng

   Sim time(s) Goal reach time(s) Goal reach

CHƯƠNG 4: THIẾT KẾ PHẦN MỀM

Kết quả thời gian chạy mô phỏng cho thấy robot có thể đến điểm mục tiêu trong 27,29 giây Dựa trên kết quả này, các tham số tối ưu cho thuật toán đã được xác định là  = 0,1,  = 0,2,  = 0,1 và thời gian mô phỏng (sim time) là 2,0.

DWA để robot thực hiện né vật cản và đến điểm mục tiêu

Các tham số của thuật toán được khảo sát thông qua Hình 4.38 để chọn được tham số tối ưu cho thuật toán DWA trên thực nghiệm

Điều chỉnh tham số cho bản đồ chi phí cục bộ (local costmap) đóng vai trò quan trọng trong việc tối ưu hóa hành vi của bộ lập kế hoạch DWA cục bộ (DWA local planner) Việc này đòi hỏi sự đánh giá kỹ lưỡng các tham số để đạt được hiệu suất tốt nhất Bảng đánh giá các tham số DWA trên thực nghiệm (Hình 4.38) cung cấp thông tin hữu ích để điều chỉnh và tinh chỉnh các tham số này.

4.4.2 Thuật toán di chuyển theo đội hình

• Bộ điều khiển Leader-Follower

The leader-follower controller utilizes longitudinal velocity and angle to determine the required longitudinal velocity and angle, ensuring the maintenance of a predetermined separation distance and bearing angle between the leader and follower.

Hình 4.39 Sơ đồ đội hình leader-follower

Trong đó: p i = x y i i  i  T tọa độ của leader, p j =   x y j j  j   T tọa độ của follower, d d d d T j j j j p =   x y    tọa độ mong muốn của follower, L d ij khoảng cách mong muốn,  ij d góc mong muốn giữa leader và follower

Tại đó 𝐿 𝑖𝑗𝑥 (𝑡) và L t ijy ( ) tương ứng cho khoảng cách giữa leader và follower theo trục x và y: cos sin ijx i j i ijy i j j

 ij góc giữa leader và follower được tính như sau: arctan 2( , ) ij L ijy L ijx i

CHƯƠNG 4: THIẾT KẾ PHẦN MỀM

Để duy trì đội hình cho robot, có hai phương pháp điều khiển chính là điều khiển tập trung và điều khiển phân tán Trong đó, điều khiển phân tán hoạt động theo cơ chế leader điều khiển follower 1, follower 1 điều khiển follower 2 và cứ tiếp tục như vậy cho đến follower n Tuy nhiên, phương pháp này có nhược điểm là sự mất ổn định có thể xảy ra khi follower 1 chưa ổn định Đối với đề tài nghiên cứu về đội hình 3 robot, việc lựa chọn điều khiển tập trung là phù hợp hơn để đạt được sự ổn định nhanh chóng.

Xét mô hình điều khiển tập trung ba robot như hình dưới:

Hình 4.41 Mô hình điều điều khiển 3 robot

Từ mô hình điều khiển ba robot, có được phương trình động học điều khiển đội hình ba robot:

( , ) 1( ) , ij ij ij j ij i ij i j z =G z B u +F z u  =w −w (4.32)

Tại đó z ij =   l ij  ij   T ,    ij = − i j là định hướng tương đối, u j =   v j w j   T là đầu vào của follower, u i = v i w i  T là đầu vào của leader và:

1 1 cos sin cos 0 sin cos , sin

1 ij ij ij ij ij ij ij ij ij d

Từ phương trình (4.32), có được phương trình điều khiển vận tốc cho follower:

( ) d ij ij d ij ij d ij ij k L L p k z z k  

( ) d ij ij d ij ij d ij ij k L L p k z z k  

Tại đó k 1 và k 2  0 là hệ số bộ điều khiển.

KẾT QUẢ MÔ PHỎNG VÀ THỰC NGHIỆM

Kết quả mô phỏng

Trước khi triển khai mô hình thực tế, nhóm đã kiểm chứng các thuật toán thông qua phần mềm mô phỏng Matlab và Gazebo Điều này cho phép nhóm thử nghiệm và đánh giá hiệu quả của các giải thuật như vẽ bản đồ với Gmapping, thuật toán tìm đường đi tối ưu A*, ACO trong bài toán ITSP và thuật toán duy trì đội hình.

5.1.1 Vẽ bản đồ với Gmapping

Sau khi thiết kế robot trên SolidWorks, nhóm thực hiện đã chuyển mô hình khung xe sang phần mềm Gazebo bằng cách sử dụng plugin để xuất sang file URDF, giúp tận dụng lợi thế của Gazebo - một phần mềm mô phỏng mã nguồn mở phổ biến trong lĩnh vực robot học và điều khiển robot.

Gazebo cung cấp một môi trường 3D toàn diện để mô phỏng và kiểm tra các hệ thống robot, cho phép người dùng tạo mô hình robot, môi trường và nhiệm vụ trong không gian ảo Với khả năng tương thích với nhiều hệ điều hành và cung cấp giao diện lập trình, Gazebo đã trở thành công cụ quan trọng trong nghiên cứu và phát triển robot, giúp kiểm tra và đánh giá hiệu suất của robot cũng như phát triển các thuật toán và hệ thống nhúng.

Hình 5.1 Chuyển mô hình robot từ solidworks sang gazebo

Hình 5.1 mô tả robot trong môi trường Gazebo đã được nhóm tinh chỉnh để tối ưu hóa quá trình di chuyển và mô phỏng thuật toán Nhờ vào sự hỗ trợ sẵn có của Gazebo với ROS, nhóm đã lược bỏ các thiết bị như Arduino Mega, Jetson Nano và IMU, thay vào đó sử dụng các plugin có sẵn trong thư viện để mô phỏng cảm biến như Lidar, IMU và Encoder bánh xe.

Và để đơn giản trong quá trình tạo môi trường Nhóm đã sử dụng môi trường models có sẵn trong gói turtlebot3_simulation với mô hình turtlebot3_house

Sau đây là kết quả mô phỏng thực hiện trên PC Asus core I7 – 10700, CPU 2.9 GHz, RAM 16GB

Hình 5.2 Mô phỏng ba robot trong môi trường turtlebot3_house trong gazebo

Sau khi mô phỏng ba robot trong môi trường Gazebo, nhóm sẽ triển khai thuật toán Gmapping với gói slam_gmapping trong thư viện ROS để tạo bản đồ cho từng robot Tiếp theo, nhóm sẽ sử dụng gói multirobot_map_merge để hợp nhất ba bản đồ thành một bản đồ chung và hiển thị kết quả trong công cụ Rviz.

Hình 5.3 Hợp nhất 3 bản đồ sử dụng gói multirobot_map_merge

Sau khi di chuyển robot, nhóm sử dụng node Key Teleop để điều khiển robot bằng lệnh từ bàn phím, giúp robot di chuyển xung quanh căn phòng và tạo lập bản đồ Quá trình này sẽ thu được bản đồ hợp nhất, cung cấp thông tin chính xác về không gian xung quanh robot.

CHƯƠNG 5: KẾT QUẢ MÔ PHỎNG VÀ THỰC NGHIỆM

Hình 5.4 Bản đồ hợp nhất sau khi được quét bởi ba robot

Kết quả thu được từ Hình 5.4 cho thấy bản đồ tạo ra sau khi hợp nhất ba bản đồ có độ chính xác cao, với các vật cản và bức tường được thể hiện chính xác trong bản đồ, khớp hoàn hảo với môi trường mô phỏng trong Gazebo.

• Tìm đường đi giữa các trạm

Kết quả khi thực hiện tìm đường cho 15 trạm được chọn ngẫu nhiên thu được trên phần mềm Matlab như Hình 5.5 bên dưới

Hình 5.5 Ma trận khoảng cách và đường đi được tìm giữa 15 trạm được chọn ngẫu nhiên

Các giá trị trong ma trận khoảng cách phải được tìm thấy và có giá trị xác định để đảm bảo tính hợp lệ của bài toán Trường hợp không tìm được đường đi giữa hai trạm sẽ được xem là một lỗi trong việc lựa chọn thành phố, thường do các yếu tố như vùng không gian vật cản, độ phồng của bản đồ quá lớn hoặc đội hình quá lớn Những yếu tố này có thể khiến thuật toán không tìm được đường đi và kết thúc toàn bộ quá trình giải bài toán TSP.

• Giải quyết bài toán TSP với thuật toán ACO

Kết quả thử nghiệm thuật toán ACO được mô phỏng, đánh giá và phân tích bằng phần mềm Matlab Các thông số quan trọng của thuật toán được sử dụng trong quá trình thử nghiệm này được trình bày chi tiết trong Bảng 5.1, giúp đánh giá hiệu suất và độ chính xác của thuật toán.

Bảng 5.1 Thông số được sử dụng trong thuật toán ACO

Parameter Descriptions Value m iter Number of iterations 100 m Number of ants 100

 The adjustment coefficient for the effect of  ij 2

 The adjustment coefficient for the effect of  ij 4

Hình 5.6 Sử dụng thuật toán ACO giải bài toán TSP

• Tìm đường đi tối ưu trong bài toán ITSP

Sau khi thực hiện xử lý map và tìm đường đi giữa các trạm, thuật toán ACO đã được áp dụng để tìm đường tối ưu cho 15 trạm được chọn ngẫu nhiên, và kết quả thu được được thể hiện rõ ràng trong Hình 5.7.

CHƯƠNG 5: KẾT QUẢ MÔ PHỎNG VÀ THỰC NGHIỆM

Để đánh giá hiệu quả của thuật toán ACO, chúng tôi đã so sánh kết quả với thuật toán chính xác Brute Force Search trong cùng trường hợp 15 trạm trên môi trường Matlab, qua đó cho thấy khả năng tìm đường đi tối ưu của thuật toán ACO.

Bảng 5.2 So sánh kết quả thuật toán ACO và thuật toán Brute Force Search

No n ACO Time of ACO

Time of Brute Force (seconds)

Kết quả từ các trường hợp thử nghiệm từ 1 đến 8 cho thấy cả hai thuật toán đều đưa ra kết quả giống nhau về chi phí đường đi Điều này chứng tỏ việc lựa chọn số lượng kiến, thông số ảnh hưởng và thông số bay hơi đã phù hợp, giúp đánh giá hiệu quả của thuật toán.

Khi so sánh về thời gian thực hiện, các kết quả ban đầu cho thấy Brute Force Search tìm kiếm nhanh hơn do số vòng lặp trong ACO là 100, dẫn đến thời gian thực hiện lâu hơn Tuy nhiên, khi quan sát các trường hợp từ 7 trở đi, thời gian của Brute Force tăng lên rất lớn, gấp hơn 10 lần so với trường hợp trước đó Ngược lại, thời gian thực hiện của ACO cho thấy sự hiệu quả của thuật toán khi thời gian chênh lệch giữa các trường hợp là không đáng kể Điều này cho thấy ACO có khả năng xử lý hiệu quả với các trường hợp phức tạp hơn.

Vì vậy, lựa chọn số lần lặp cho thuật toán đã hơp lý

Về tính khả thi triển khai, kết quả dòng thứ 9 cho thấy rõ ràng nhất về hiệu quả mà ACO đạt được, đặc biệt khi số lượng trạm hiện tại là 13, dẫn đến một số lượng lớn các hoán vị có thể xảy ra.

Kết quả thực nghiệm

5.2.1 Điều khiển PID vận tốc bánh xe

Sau khi tinh chỉnh thông số PID cho cả hai bánh xe bằng phương pháp thử sai, kết hợp với điều kiện vận tốc di chuyển tối đa là 0,1 m/s, nhóm nghiên cứu đã thu được thông số đáp ứng vận tốc bánh trái và bánh phải với từng vận tốc cụ thể là 0,3 m/s, 0,5 m/s và 0,7 m/s Thông số PID được tinh chỉnh bao gồm Kp = 0 và Ki = 0,2, giúp đạt được kết quả như mong đợi.

Hình 5.20 Đồ thị đáp ứng PID bánh trái

Hình 5.21 Đồ thị đáp ứng PID bánh phải

Đồ thị đáp ứng PID vận tốc bánh trái và phải được mô tả ở Hình 5.20 và Hình 5.21 cho thấy tín hiệu ngõ ra đáp ứng khá nhanh với tín hiệu đặt Đối với bánh trái, ở vận tốc thấp là 0.3 m/s, vận tốc trung bình đạt 0.030748 m/s với sai số xác lập khoảng 2,5% Ở vận tốc 0.5 m/s và 0.7 m/s, vận tốc trung bình lần lượt là 0.04892 m/s và 0.069347 m/s, với sai số xác lập tương ứng là 2,16% và 1% Thời gian xác lập của cả ba trường hợp đều nhỏ hơn 1 giây Tương tự, đáp ứng vận tốc bánh phải cũng cho kết quả tốt.

5.2.2 Vẽ bản đồ với Gmapping

Sau khi thành công trong việc vẽ bản đồ và hợp nhất bản đồ trong môi trường mô phỏng Gazebo, nhóm đã áp dụng các gói thư viện slam_gmapping và multirobot_map_merge để triển khai cho robot thật tại phòng Lab C304, từ đó thu được kết quả đáng khích lệ.

CHƯƠNG 5: KẾT QUẢ MÔ PHỎNG VÀ THỰC NGHIỆM

Hình 5.22 Môi trường thực tế và vị trí ban đầu của ba robot khi quét bản đồ Lab C304

Hình 5.23 Bản đồ được tạo bởi thuật toán Gmapping

Sau đây là bản đồ được tạo bởi 1 robot được mô tả trong hình Hình 5.24

Hình 5.24 Bản đồ được tạo bởi một robot

Trong quá trình khảo sát, nhóm thực hiện tạo bản đồ với Gmapping nhiều lần để thu thập dữ liệu chính xác Để đánh giá chất lượng bản đồ, nhóm dựa trên công thức được đề cập trong bài báo [31] làm tiêu chuẩn Sau sáu lần quét, nhóm đã thu được bản đồ tốt nhất, mô tả chi tiết trong Hình 5.24, thể hiện kết quả khảo sát đáng tin cậy.

Trong đó x là tổng chiều dài bản đồ sau khi quét, ylà tổng chiều dài bản đồ thực tế

Bảng 5 5 Khảo sát tạo bản đồ được tạo bởi một robot với Gmapping tại Lab C304

CHƯƠNG 5: KẾT QUẢ MÔ PHỎNG VÀ THỰC NGHIỆM

Bản đồ thu được trên hình Hình 5.24 cho thấy kích thước chiều dài và chiều rộng của phòng Lab C304 tương đối chính xác Cụ thể, chiều dài được đo là 9.89m và chiều rộng là 9.64m, gần giống với kích thước thực tế của phòng là 9.92m chiều dài và 9.65m chiều rộng Điều này chứng tỏ bản đồ thu được là đáng tin cậy và phản ánh chính xác không gian thực tế của phòng Lab C304.

Hình 5.25 Vị trí của ba robot và bản đồ ban đầu được ghép trong Rviz

Hình 5.26 Bản đồ hợp nhất thu được sau khi quét toàn bộ căn phòng

Ngoài ra trong quá trình thực hiện nhóm đã thử quét bản đồ ở phòng Lab Rockwell để thử nghiệm thuật toán Phòng Lab Rockwell được mô tả trong Hình 5 27

Hình 5 28 Bản đồ tạo bởi một robot tại phòng Lab Rockwell D101

Hình 5 28 thể hiện bản đồ được tạo bởi robot từ phòng Lab Rockwell D101, với kết quả bản đồ thu được khá chính xác so với kích thước thực tế của phòng, đạt chiều dài 9,95 mét và chiều rộng 9,54 mét.

CHƯƠNG 5: KẾT QUẢ MÔ PHỎNG VÀ THỰC NGHIỆM

Hình 5.29 Bản đồ được tạo bởi ba robot tại phòng Lab Rockwell D101

Bảng 5 6 Khảo sát tạo bản đồ được tạo bởi ba robot với Gmapping tại Lab D101

Hình 5.29 minh họa bản đồ được tạo bởi ba robot tại phòng Lab Rockwell D101 với độ chính xác cao lên đến 99.85% sau lần quét thứ 5 Kết quả này cho thấy bản đồ gần như hoàn hảo khi so sánh với kích thước thực tế của phòng, với chiều dài là 9.95 mét và chiều rộng là 9.54 mét.

Trong quá trình thử nghiệm, robot đã được vận hành trên bản đồ thực tế đã được quét tại phòng nghiên cứu Mitsubishi Electric Factory Automation Kết quả thu được từ việc chọn ngẫu nhiên 7 điểm trên bản đồ đã quét cho thấy hiệu suất hoạt động của robot trong môi trường thực tế.

Bảng 5.7 Toạ độ các trạm được chọn trên bản đồ

7 0.033996 -0.96117 0 Kết quả thực hiện vận hành với các điểm thu được từ Hình 5.30 đến Hình 5.38

Hình 5.30 Robot tại thời điểm TSP bắt đầu t = 0 ( ) s

CHƯƠNG 5: KẾT QUẢ MÔ PHỎNG VÀ THỰC NGHIỆM

Hình 5.31 Robot đã đến trạm 1 với t = 75 ( ) s

Hình 5.32 Robot đã đến trạm 2 với t = 120 ( ) s

Hình 5.33 Robot đã đến trạm 3 với t = 150 ( ) s

Hình 5.34 Robot đã đến trạm 4 với t = 189 ( ) s

CHƯƠNG 5: KẾT QUẢ MÔ PHỎNG VÀ THỰC NGHIỆM

Hình 5.35 Robot đã đến trạm 5 với t = 235 ( ) s

Hình 5.36 Robot đã đến trạm 6 với t = 322 ( ) s

Hình 5.37 Robot đã đến trạm 7 với t = 348 ( ) s

Hình 5.38 Robot đã trở về trạm 1 với t = 467 ( ) s

Kết quả trình bày từ Hình 5.30 đến Hình 5.38 cho thấy sự thành công của các thuật toán đã áp dụng, tận dụng nền tảng môi trường từ việc ghép map Trên cơ sở đó, thuật toán A* được sử dụng để tìm đường đi và hoàn thiện ma trận khoảng cách, đồng thời kết hợp với thuật toán ACO để tối ưu hóa đường đi cho robot.

CHƯƠNG 5: KẾT QUẢ MÔ PHỎNG VÀ THỰC NGHIỆM để hoàn thành bài toán ITSP Ngoài ra, để áp dụng được vào robot thực, thuật toán DWA và các gói navigation được sử dụng thành công nhằm tạo linh hoạt cho robot tránh vật cản tĩnh và động

Kết quả thu được đều được kiểm chứng thông qua thực nghiệm, bao gồm việc đo đạt thực tế và so sánh kết quả Các số màu đen trên hình của mô hình thực tế thể hiện các số đo đạt được Qua thí nghiệm, robot đã di chuyển qua các trạm với sai số nằm trong vùng cho phép, đạt được kết quả như mong muốn khi cài đặt thông số cho DWA.

Kết quả quan sát từ các đồ thị đáp ứng của hai động cơ thực hiện di chuyển trên đường đi tối ưu và thuật toán DWA cho thấy bộ điều khiển PID áp dụng cho hai động cơ đạt được kết quả tốt, thể hiện hiệu suất điều khiển cao.

Thực hiện thành công bài toán ITSP cho một robot là nền tảng để tiếp tục thực hiện bài toán IMTSP và chạy đội hình robot

Trong bài toán IMTSP, việc triển khai thuật toán A* giữ nguyên như khi giải bài toán ITSP Tuy nhiên, thuật toán ACO được áp dụng một cách khác biệt so với ITSP, thể hiện qua kết quả đường đi tối ưu và phân công hiệu quả cho các robot.

Hình 5.39 Robot tại thời điểm IMTSP bắt đầu t = 0 ( ) s

Hình 5.40 Robot tại thời điểm t = 166( ) s

Hình 5.41 Robot tại thời điểm IMTSP kết thúc t = 361( ) s

Trong bài toán IMTSP, thuật toán A* được triển khai một cách không đổi so với khi giải bài toán ITSP Tuy nhiên, thuật toán ACO lại được áp dụng theo cách khác biệt khi giải bài toán này Kết quả đường đi mà ACO tìm ra cho thấy sự tối ưu hóa đáng kể và phân công hiệu quả cho các robot, thể hiện khả năng giải quyết bài toán một cách thông minh.

CHƯƠNG 5: KẾT QUẢ MÔ PHỎNG VÀ THỰC NGHIỆM

Trong quá trình di chuyển, global_path_planner liên tục cập nhật đường đi cho robot, thể hiện sự linh hoạt trong việc thích nghi với môi trường Mặc dù đã tìm được đường đi tối ưu ban đầu, nhưng nếu gặp phải vật cản hoặc chướng ngại vật, thuật toán A* sẽ tiếp tục tìm kiếm và tạo ra đường đi mới tối ưu cho robot Kết quả cuối cùng cho thấy robot đã linh hoạt thay đổi đường đi để tránh chướng ngại vật, đồng thời vẫn đảm bảo hoàn thành nhiệm vụ đi qua tất cả các trạm theo yêu cầu.

Ngày đăng: 28/12/2023, 18:52

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w