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

thiết kế và điều khiển cánh tay robot kết hợp xe tự hành lấy hàng theo đơn trong môi trường nhà kho

215 0 0
Tài liệu đã được kiểm tra trùng lặp

Đ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 đề Thiết Kế Và Điều Khiển Cánh Tay Robot Kết Hợp Xe Tự Hành Lấy Hàng Theo Đơn Trong Môi Trường Nhà Kho
Tác giả Ngô Hoàng Thiện, Phạm Quang Vỹ, Nguyễn Thanh Duy
Người hướng dẫn PGS.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 2024
Thành phố Thành Phố Hồ Chí Minh
Định dạng
Số trang 215
Dung lượng 14,23 MB

Cấu trúc

  • CHƯƠNG 1: TỔNG QUAN (29)
    • 1.1. Đặt vấn đề (29)
    • 1.2. Mục tiêu (31)
    • 1.3. Phương pháp nghiên cứu (31)
    • 1.4. Nội dung nghiên cứu (32)
    • 1.5. Giới hạn (33)
  • CHƯƠNG 2: CƠ SỞ LÝ THUYẾT (32)
    • 2.1. Mô hình toán của hệ xe hai bánh vi sai (34)
      • 2.1.1. Động học thuận (35)
      • 2.1.2. Động học nghịch (36)
    • 2.2. Driver Cycloidal (38)
    • 2.3. Momen xoắn cho cánh tay (39)
    • 2.4. Bài toán người bán hàng (TSP) (39)
    • 2.5. Thuật toán tối ưu đàn kiến (ACO) (41)
    • 2.6. Thuật toán Dijsktra’s (44)
    • 2.7. Thuật toán DWA (46)
    • 2.8. Tổng quan về hệ điều hành robot (ROS) (47)
      • 2.8.1. ROS File System Level (48)
      • 2.8.2. ROS Computation Graph Level (49)
      • 2.8.3. ROS Community Level (52)
    • 2.9. Giới thiệu về phần mềm (53)
      • 2.9.1. Giới thiệu phần mềm Gazebo (53)
      • 2.9.2. Giới thiệu về phần mềm Rviz (55)
      • 2.9.3. Giới thiệu về Turtlebot3 (59)
    • 2.10. Giới thiệu về gói Navigation Stack trong ROS (63)
    • 2.11. Giới thiệu về Qt Designer (64)
    • 2.12. Giới thiệu về Web Server (66)
      • 2.12.1. Giới thiệu về ReactJS (66)
      • 2.12.2. Giới thiệu về EmailJS (67)
      • 2.12.3. Giới thiệu về Firebase (68)
    • 2.13. Cách xác định vị trí xe trên bản đồ (70)
      • 2.13.1. Nguyên lý hoạt động của cảm biến đo lường chuyển động (IMU) (70)
      • 2.13.2. Nguyên lý hoạt động của cảm biến Encoder (73)
    • 2.14. Nguyên lý hoạt động của xử lý ảnh (77)
      • 2.14.1. Phương pháp nhận diện màu sắc (77)
      • 2.14.2. Xác định vị trí của vật trên khung ảnh (78)
  • CHƯƠNG 3: TÍNH TOÁN VÀ THIẾT KẾ (32)
    • 3.1. Yêu cầu thiết kế (80)
    • 3.2. Sơ đồ khối mô tả hệ thống (80)
    • 3.3. Thiết kế khung xe và cánh tay 3 bậc (82)
      • 3.3.1. Bản vẽ khung xe (82)
      • 3.3.2. Bản vẽ cánh tay (86)
    • 3.4. Tính toán lựa chọn và lựa chọn động cơ cánh tay (105)
      • 3.4.1. Thiết kế khớp 3 của cánh tay 3 bậc (105)
      • 3.4.2. Thiết kế khớp 2 của cánh tay 3 bậc (106)
      • 3.4.3. Thiết kế khớp 1 của cánh tay 3 bậc (107)
      • 3.4.4. Chọn động cơ cho từng khớp (108)
      • 3.4.5. Tính toán tải trọng tối đa của cánh tay (109)
    • 3.5. Tính toán và chọn động cơ cho xe tự hành (110)
    • 3.6. Lựa chọn các thiết bị khác cho hệ cánh tay robot di động (112)
      • 3.6.1. Vi điều khiển Arduino Mega 2560 (112)
      • 3.6.2. Mạch cầu H L298N (113)
      • 3.6.3. Webcam Rapoo C260 (114)
      • 3.6.4. Máy tính nhúng Jetson Nano (115)
      • 3.6.5. Cảm biến Lidar A1M8 (117)
      • 3.6.6. Cảm biến góc IMU MPU6050 (119)
      • 3.6.7. Nguồn cấp cho Jetson Nano (120)
      • 3.6.8. Nguồn Pin Lithium 12V10A (120)
      • 3.6.9. Máy bơm chân không (121)
    • 3.7. Lắp ráp phần cứng (122)
    • 3.8. Bộ điều khiển PID (125)
  • CHƯƠNG 4: THI CÔNG HỆ THỐNG (32)
    • 4.1. Thiết lập bản đồ cho robot (Map) (127)
      • 4.1.1. PGM (Portable Gray Map) (127)
      • 4.1.2. Binary Occupancy Grid Map (129)
      • 4.1.3. Costmap (131)
    • 4.2. Định vị cho Robot và các đặc điểm trạm trên bản đồ có sẵn (Localization) (133)
    • 4.3. Giải bài toán TSP cho các trạm bằng thuật toán ACO (137)
    • 4.4. Quy hoạch đường đi toàn cục tối ưu cho robot bằng thuật toán Dijsktra (139)
    • 4.5. Sử dụng thuật toán DWA cho robot né tránh vật cản (140)
    • 4.6. Thiết kế web server cho khách hàng (145)
      • 4.6.1. Tổng quan về Web Server (145)
      • 4.6.2. Trang Signin (146)
      • 4.6.3. Trang Account (147)
      • 4.6.4. Trang Buy (148)
      • 4.6.5. Truyền nhận dữ liệu giữa Web Server và GUI (150)
    • 4.7. Thiết kế giao diện người dùng cho người vận hành (152)
      • 4.7.1. Tổng quan về giao diện (152)
      • 4.7.3. Trang Splash (159)
      • 4.7.4. Trang Products (159)
      • 4.7.5. Trang Database (160)
      • 4.7.6. Trang Observation (160)
      • 4.7.7. Trang About Us (162)
      • 4.7.8. Thông báo Signout (163)
    • 4.8. Quy trình xử lý ảnh và hoạt động của cánh tay robot (164)
  • CHƯƠNG 5: KẾT QUẢ THỰC HIỆN (32)
    • 5.1. Kết quả mô phỏng (167)
      • 5.1.1. Mô phỏng thuật toán ACO trên phần mềm Matlab (167)
      • 5.1.2. Mô phỏng thuật toán Dijkstra’s trên phần mềm Matlab (168)
      • 5.1.3. Mô phỏng thuật toán DWA (169)
      • 5.1.4. Mô phỏng hệ hai bánh vi sai trên phần mềm Matlab (170)
      • 5.1.5. Vẽ bản đồ bằng phương pháp Gmapping trong ROS (171)
      • 5.1.6. Bài toán TSP trong ROS (172)
    • 5.2. Kết quả thực tế (173)
      • 5.2.1. Điều khiển PID vận tốc bánh xe (173)
      • 5.2.2. Điều khiển PID vị trí cánh tay (177)
      • 5.2.3. Vẽ bản đồ bằng phương pháp Gmapping (184)
      • 5.2.4. Chạy ITSP với 5 trạm trong map thực tế (187)
      • 5.2.5. Các trường hợp gắp hàng (194)
      • 5.2.6. Thử nghiệm tránh vật cản tĩnh và vật cản động (195)
      • 5.2.7. Chế độ chạy auto và manual trên GUI (0)
  • CHƯƠNG 6: KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN (32)
    • 6.1. Kết luận (0)
    • 6.2. Hướng phát triển (0)
  • TÀI LIỆU THAM KHẢO (0)

Nội dung

HỒ CHÍ MINH KHOA ĐIỆN – ĐIỆN TỬ BỘ MÔN ĐIỀU KHIỂN TỰ ĐỘNG ---⸙∆⸙--- ĐỒ ÁN TỐT NGHIỆP ĐỀ TÀI: THIẾT KẾ VÀ ĐIỀU KHIỂN CÁNH TAY ROBOT KẾT HỢP XE TỰ HÀNH LẤY HÀNG THEO ĐƠN TRONG MÔI TRƯỜN

TỔNG QUAN

Đặt vấn đề

Sự phát triển mạnh mẽ của robotics trong những năm gần đây đánh dấu việc đẩy mạnh khoa học công nghệ vào nhiều lĩnh vực trong đời sống của con người Đối với lĩnh vực logistics và quản lý kho bãi, AGV và AMR đang là 2 ứng dụng nổi bật trong việc tối ưu hóa quy trình vận chuyển và quản lý hàng hóa Thêm vào đó, bằng cách tích hợp thêm cánh tay robot sẽ mở ra thêm nhiều ứng dụng tiến bộ hơn trong ngành

Từ đó, giảm thiểu sự phụ thuộc vào lao động nhân công mà còn tối ưu hóa chi phí và thời gian

Trong bài báo “Mobile Picking-Robot having wide reach area for shelves” của tác giả Kazuma Komoda cùng các cộng sự được xuất bản năm 2019 tập trung vào việc phát triển hệ thống lấy hàng tự động dựa trên một cơ chế trục tuyến tính, nhằm giải quyết các thách thức trong việc lấy hàng từ các giá đỡ hàng hóa có khoảng cách hẹp và mặt hàng được xếp lộn xộn Nghiên cứu đã tập trung vào thiết kế một hệ thống robot di động linh hoạt, sử dụng cơ chế tay cầm có khả năng hoạt động trong không gian hạn chế và có thể nhận diện, lấy hàng một cách hiệu quả [1]

Trong bài báo “Toward Future Automatic Warehouses: An Autonomous Depalletizing System Based on Mobile Manipulation and 3D Perception” của tác giả Jacopo Aleotti cùng các cộng sự được xuất bản năm 2021 đã nghiên cứu về nền tảng điều khiển và vận hành cho một hệ thống điều khiển robot di động kết hợp cánh tay robot UR10 thực hiện các nhiệm vụ depalletizing (giải thùng pallet) tự động, tích hợp của thị giác máy móc, điều khiển và các thành phần cơ khí để tăng tính linh hoạt và dễ triển khai trong môi trường công nghiệp như các kho hàng [2]

Trong bài báo “Storage Assignment Policy and Route Planning of AGVS in Warehouse Optimization” xuất bản năm 2019 của tác giả Ly Gia Bao cùng các cộng sự đã nghiên cứu tập trung vào tối ưu hoá hoạt động kho hàng để giảm chi phí và tăng lợi nhuận trong lĩnh vực logistics và chuỗi cung ứng Tác giả nghiên cứu áp dụng hệ

CHƯƠNG 1 TỔNG QUAN ĐỒ ÁN TỐT NGHIỆP

2 thống xe hướng dẫn tự động (AGVS) để cải thiện hiệu suất vận chuyển và lưu lượng hàng hóa Họ phân tích và đề xuất các chiến lược phân bổ vị trí lưu trữ và lập kế hoạch đường đi cho AGVS trong kho hàng theo cấu trúc kho hình chữ nhật truyền thống [3]

Trong bài báo “Planning Optimal Trajectories for Mobile Manipulators under End-effector Trajectory Continuity Constraint” xuất bản năm 2023 của hai tác giả

Quang-Nam Nguyen và Quang-Cuong Pham tập trung nghiên cứu vào giải quyết vấn đề lập kế hoạch chuyển động cho robot di động kết hợp với cánh tay manipulator (mobile manipulator) khi cần điều hướng điểm kết thúc của cánh tay qua một quỹ đạo liên tục trong không gian nhiệm vụ (taskspace trajectory), thường là một đường dẫn thời gian tham số hóa, như trong các ứng dụng như in ấn di động hoặc phun sơn di động [4]

Sau quá trình tìm hiểu các nghiên cứu khoa học, nhóm chúng tôi nhận thấy rằng, hệ xe di động kết hợp với cánh tay robot là một đề tài đã được nghiên cứu rộng rãi trên thế giới và đã ứng dụng ở nhiều lĩnh vực không chỉ riêng về logistics và quản lỹ kho bãi như nhà hàng, khách sạn, nông nghiệp,… tuy nhiên các nghiên cứu đến từ các nhóm tác giả trong nước thì vẫn còn hạn chế, có thể xuất phát từ nhiều nguyên nhân khách quan đến chủ quan, song họ vẫn có những nghiên cứu nhất định về đề tài này, chủ yếu là tập trung vào điều khiển chuyển động cũng như áp dụng các thuật toán để tối ưu chuyển động hoặc cho các ứng dụng với mức độ vừa và nhỏ Vì thế, các đề tài về hệ xe di dộng kết hợp với cánh tay robot vẫn là đề tài còn mới và cần được nghiên cứu rộng rãi hơn

Từ những yếu tố trên, nhóm chúng tôi đã quyết định nghiên cứu và thực hiện dự án với đề tài là “Thiết kế và điều khiển cánh tay robot kết hợp xe tự hành lấy hàng theo đơn trong môi trường nhà kho” (Design and control a robotic arm combined with an autonomous vehicle for order picking in warehouse environment) Nhóm đã ứng dụng thuật toán tối ưu đàn kiến (ACO) để giải bài toán người bán hàng trong môi trường trong nhà (ITSP) kết hợp với thuật toán tìm đường tối ưu Dijkstra’s giúp ĐỒ ÁN TỐT NGHIỆP

3 robot di chuyển, bên cạnh đó, thuật toán DWA cũng được sử dụng nhằm mục đích né vật cản, cánh tay robot ba bậc tự do ứng dụng xử lý ảnh để thực hiện gắp hàng, các đơn hàng được đặt thông qua web server và danh sách các đơn hàng sẽ được lưu trữ trong cơ sở dữ liệu Firebase, cuối cùng việc điều khiển sẽ thông qua GUI.

Mục tiêu

Mô hình robot được thiết kế qua phần mềm Solidworks, phải đảm bảo có thiết kế đơn giản, linh hoạt trong việc sửa chữa, dễ dàng di chuyển trong môi trường trong nhà và phải dựa trên dạng robot xe hai bánh vi sai thuộc hệ non-holonomic Áp dụng được các thuật toán ACO, Dijkstra’s giải bài toán ITSP và tối ưu đường đi, thuật toán DWA cho robot né vật cản Áp dụng bộ điều khiển PID trong việc điều khiển hai bánh xe và ba khớp cánh tay robot

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

Dữ liệu robot được xử lý trên laptop thông qua giao tiếp Wifi sử dụng mạng socket ROS

Thiết kế một trang web server để thực hiện việc đặt hàng

Thực hiện lưu trữ danh sách các đơn đặt hàng trên cơ sở dữ liệu Firebase

Thiết kế một giao diện GUI dùng để quản lý toàn bộ việc điều khiển hệ thống robot và các tương tác cần thiết với cơ sở dữ liệu.

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

Phương pháp nghiên cứu lý thuyết: Phương pháp phân tích – tổng hợp lý thuyết

Phương pháp nghiên cứu thực tiễn: Phương pháp phỏng vấn – trả lời, phương pháp hỏi ý kiến chuyên gia, phương pháp nghiên cứu phân tích – tổng hợp

CHƯƠNG 1 TỔNG QUAN ĐỒ ÁN TỐT NGHIỆP

Sử dụng các tài liệu liên quan đến đề tài có sẵn tại thư viện Trường Đại học Sư Phạm Kỹ Thuật Thành phố Hồ Chí Minh, kết hợp với tài liệu từ Internet, các bài báo nghiên cứu khoa học trên Google Scholar cùng với sự đóng góp ý kiến từ giảng viên hướng dẫn cũng như các bạn học

Vận dụng các kiến thức nền tảng của các môn học, thực hiện việc lập trình trên phần mềm mô phỏng chuyên dụng, kinh nghiệm sẵn có của nhóm từ các đồ án trước Ngoài ra, nhóm có sự tham khảo các đề tài tương tự của các khóa đi trước.

Nội dung nghiên cứu

Đồ án bao gồm có 6 chương như sau:

Chương 1 – Tổng quan: Trình bày khái quát về đề tài, mục tiêu đề tài hướng đến, phương pháp nghiên cứu và giới hạn của đề tài nghiên cứu này

Chương 2 – Cơ sở lý thuyết: Trình bày về các lý thuyết, phần mềm mà nhóm nghiên cứu sử dụng cho đồ án

Chương 3 – Tính toán và thiết kế: Trình bày các thiết kể về phần cứng, từ đó tính toán và đưa ra sự lựa chọn thiết bị, linh kiện phù hợp với mục tiêu mà đề tài hướng đến

Chương 4 – Thi công hệ thống: Trình bày kết quả khi hoàn thành thi công phần cứng, các thiết kế về phần mềm, giao diện web server và giao diện điều khiển GUI

Chương 5 – Kết quả thực hiện: Trình bày các kết quả mô phỏng và kết quả thực nghiệm sau quá trình nghiên cứu và thực hiện của nhóm

Chương 6 – Kết luận và hướng phát triển: Trình bày kết luận về đề tài, đưa ra các đánh giá khách quan dựa trên chương 5, từ đó nhóm có các đề xuất cải tiến hay phát triển đồ án này theo các hướng khác trong tương lai ĐỒ ÁN TỐT NGHIỆP

CƠ SỞ LÝ THUYẾT

Mô hình toán của hệ xe hai bánh vi sai

Trong thực tế, có nhiều cách để điều khiển robot nhưng một phương thức thường hay được ứng dụng cho các loại robot di động là cơ chế truyền động vi sai Phương thức này là sự truyền động hai bánh xe được gắn trên cùng một trục, khi truyền vận tốc cho hai bánh xe, xe có thể tiến hoặc lùi Để robot có thể di chuyển theo một góc  , robot sẽ giữ một trục và quay quanh trục đó (trục chính), điểm đó gọi là ICC và được mô tả theo hình dưới đây [5]:

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

Khi tăng hoặc giảm vận tốc, ta có thể thay vận tốc và góc quay trong lúc xe chạy

Khi quay quanh trục chính, vận tốc cho hai bánh xe là đồng tốc, và được tính theo công thức sau: v =  r (2.1)

Với T s ( )là thời gian xe quay quanh trục, 2

Từ hình 2.1 ta có các phương trình sau: ĐỒ ÁN TỐT NGHIỆP 7

Với L là khoảng cách giữa hai trục bánh xe, V d và V e là vận tốc của bánh phải và bánh trái được tính dựa trên xung từ cảm biến vận tốc từ hai bánh xe gửi về và R là khoảng cách từ điểm quay( ICC )đến điểm giữa của trục hai bánh xe Ta có thể tính được R và trong bất kỳ trường hợp nào khi điều hướng qua công thức:

Trong hình 2.1, ví dụ robot đang ở tọa độ ( , ) x y , hướng của robot là góc  tạo với trục

X hướng theo chiều dài robot Khi có V d và V e được đọc từ cảm biến vận tốc, kết hợp với công thức (2.4) ta có điểm quay ICC như sau:

Tại t + t thì tọa độ ( , ) x y và góc quay  của robot là:

) 1 x x y y x t sin x ICC I CC y y ICC ICC t sin t t t

Phương trình (2.6) thể hiện chuyển động quay quanh một khoảng R với điểm góc quay ( ICC ) của robot cùng với vận tốc góc  Để mô tả động học thuận, ta có phương trình sau:

CHƯƠNG 2 CƠ SỞ LÝ THUYẾT ĐỒ ÁN TỐT NGHIỆP 8 cos( ) cos( ) 0 sin( ) sin( ) 0

Với q =  x y   T , ( , ) x y là tọa độ của robot,  là góc quay quanh trục Z của robot, tương ứng với góc lệch so với trục X của robot Giá trị v là vận tốc trung bình công thức sau:

Giá trị của vận tốc góc : d e

Tại thời điểm t+t tọa độ và góc quay robot là:

Ta có thể mô tả tọa độ 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 xây dựng lại công thức như sau:

 = L  − Động học nghịch là khi muốn robot di chuyển vị trí mục tiêu ( , , ) x y  và người điều khiển sẽ đưa vận tốc vào robot để robot có thể di chuyển đến điểm đó Tuy nhiên đối với Differential Drive Robots được gọi là hệ non-holonomic thì robot di chuyển chỉ duy nhất theo X , không thể di chuyển ngang (theo Y )

Vì vậy, ở 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: Nếu V e =V d thì robot di chuyển tuyến tính về trước hoặc sau (tiến hoặc lùi): cos( ) sin( ) x x v y y t t v

Nếu V e = −V d thì 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:

CHƯƠNG 2 CƠ SỞ LÝ THUYẾT ĐỒ ÁN TỐT NGHIỆP 10

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

Driver Cycloidal

Đóng vai trò là một bộ giảm tốc driver cyloidal đóng vai trò quan trọng trong các khớp của cánh tay robot, giúp tăng momen cho cánh tay và tạo ra những chuyển động mượt mà và chính xác hơn

Công thức vẽ bánh răng:

( ) ( ( ) ) ( ( ) ) tan sin 1 cos( ) r cos a N t cos 1 cos x R t R t N t E N t

• R: bán kính bánh răng (mm)

• Rr: bán kính răng (mm)

( ) ( ( ) ) ( ( ) ) tan sin 1 sin( ) r sin a N t cos 1 cos y R t R t N t E N t

Momen xoắn cho cánh tay

Hình 2.3 Sơ đồ mô tả 1 khớp cánh tay và các thành phần ảnh hưởng tới momen

Khi tính momen xoắn cho động cơ cánh tay cần xác định khoảng cách từ tâm quay của động cơ đến điểm cuối của điểm đặt lực Từ đó ta có công thức:

• Mass : là khối lượng của đối tượng cần chuyển động quanh trục quay Đơn vị là kg

• Length : là khoảng cách từ tâm quay tới điểm đặt lực Đơn vị là mét (m)

• g : gia tốc trọng trường có giá trị là 9.8 (m/s 2 )

Bài toán người bán hàng (TSP)

Bài toán người bán hàng (TSP) là một bài toán NP-hard được nghiên cứu trong lĩnh vực lý thuyết khoa học máy tính Bài toán được hiểu đơn giản như sau:

“Giả sử luôn tồn tại đường đi giữa các thành phố, vị trí và khoảng cách giữa các thành phố với nhau được cho trước Hãy tìm đường đi ngắn nhất để người bán hàng xuất phát từ

CHƯƠNG 2 CƠ SỞ LÝ THUYẾT ĐỒ ÁN TỐT NGHIỆP 12 một thành phố nào đó có thể đi qua toàn bộ các thành phố, mỗi thành phố một lần và trở về thành phố ban đầu với tổng chi phí thấp nhất.”

Bài toán này đã và đang là một vấn đề nghiên cứu của các nhà khoa học trong nhiều thập kỷ qua vì mức độ khó của nó Khi ta càng tăng số lượng thành phố thì độ khó của bài toán cũng tăng theo Ứng dụng của bài toán TSP trong thực tế có thể kể đến như: Vận chuyển và giao hàng (Logistics), lập kế hoạch, định tuyến, quy hoạch sản xuất… ĐỒ ÁN TỐT NGHIỆP 13

Hình 2.5 Ứng dụng của bài toán TSP trong Logistics

Bài toán ITSP là sự kết hợp giữa bài toán điều hướng trong nhà và bài toán TSP Nó phát triển từ bài toán TSP để tối ưu hóa quá trình di chuyển trong không gian hạn chế Trong ITSP, thuật ngữ “trạm” thường được sử dụng thay cho “thành phố” để chỉ các điểm đích, và mục tiêu là tìm đường đi ngắn nhất hoặc tối ưu nhất giữa các trạm này [6].

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

Hiện nay, có rất nhiều công trình nghiên cứu giải thuật để giải bài toán TSP

Các thuật toán chính xác như Brute Force Search, Branch and Bound,… việc tìm ra tất cả lời giải có thể có cho bài toán TSP là khả thi nhưng đổi lại về tính hiệu quả thực tiễn, nơi đòi hỏi thực hiện tính toán cho số lượng lớn trạm, thì độ phức tạp bài toán cao, do đó mất nhiều thời gian để tính toán Vì thế, phương pháp này thường chỉ phù hợp với quy mô bài toán nhỏ hoặc có thể sử dụng khi một số biến thể để giảm số lượng trường hợp cần xử lý

Thay vì sử dụng thuật toán chính xác thì các thuật toán gần đúng hay heuristic mở ra nhiều cách tiếp cận mới Heuristic là phương pháp cung cấp một giải pháp không đảm bảo là tối ưu nhất, nhưng trong một thời gian hợp lý, nó sẽ đưa ra một giải pháp khả quan Một số thuật toán có thể kể đến như giải thuật láng giềng (Neighbourhood Algorithm), thuật toán di truyền (GA – Genetic Algorithm), … và một trong số đó là thuật toán tối ưu đàn kiến (Ant Colony Optimization - ACO),

CHƯƠNG 2 CƠ SỞ LÝ THUYẾT ĐỒ ÁN TỐT NGHIỆP 14

Thuật ngữ AS được sử dụng ban đầu để mô tả phiên bản ban đầu của thuật toán, được đề xuất bởi Marco Dorigo và các đồng nghiệp trong bài báo “Ant System: Optimization by a Colony of Cooperating Agents” vào năm 1996 [7] Sau đó, thuật ngữ ACO đã được áp dụng rộng rãi hơn để chỉ cả một lớp các thuật toán dựa trên cơ chế tương tự như của con kiến để giải quyết các vấn đề tối ưu hóa

Trong tự nhiên, loài kiến sử dụng vết mùi (pheromone) để dẫn đường từ tổ đến nguồn thức ăn Các con kiến đi sau sẽ dựa vào lượng mùi mà các con đi trước để lại Nếu chưa có pheromone trên đường đi, chúng sẽ để lại mùi trên lối đi của mình Mỗi con kiến di chuyển một cách ngẫu nhiên và lượng mùi này sẽ bay hơi theo thời gian Các đường có lượng pheromone nhiều hơn sẽ có xác suất cao hơn để các con kiến chọn và qua quá trình này lặp đi lặp lại cho đến khi hình thành được đường đi ngắn nhất từ tổ đến nguồn thức ăn Thông qua tập tính của loài kiến trong việc tìm kiếm thức ăn, các nhà khoa học đã nghiên cứu, tiếp cận và ứng dụng điều đó nhằm tìm ra lời giải cho bài toán TSP

Hình 2.6 Mô tả đơn giản quá trình tìm thức ăn của đàn kiến

Chọn con kiến k trong số m con đang ở thành phố , chọn ngẫu nhiên thành phố j với xác suất p ij Công thức xác suất được thiết lập như sau: [8] ĐỒ ÁN TỐT NGHIỆP 15

( ) ij ij ij ij l Ni k

P t ij : là xác suất con kiến k lựa chọn cạnh ij

T ij : là mùi cạnh ij

1 ij ij n =d : là mùi khởi tạo ban đầu với d ij là khoảng cách giữa hai thành phố i j ,

: là hệ số điều chỉnh ảnh hưởng của T ij

 : là hệ số điều chỉnh ảnh hưởng của n ij

 , : là hệ số chỉ ra mức độ ảnh hưởng của thông tin ban đầu và thông tin khai phá Tiếp đến, công thức cập nhật mùi được xây dựng:

( 1) (1 ) ( ) ( 1) (1 ) ( ) m 1 k ( ) ij ij ij ij k ij

 : là tốc độ bay hơi (0   1).

 : là lượng mùi tăng thêm bởi con kiến k được tính theo công thức:

 = : nếu con kiến k đi qua cạnh ( , ) i j

CHƯƠNG 2 CƠ SỞ LÝ THUYẾT ĐỒ ÁN TỐT NGHIỆP 16

 = : nếu con kiến k không đi qua cạnh ( , )i j

Tiến trình thực hiện của thuật toán ACO như sau:

Bước 1: Khởi tạo ma trận vết mùi cho trước, điều kiện dừng, số lượng kiến, số thành phố, khoảng cách (chi phí) giữa các thành phố, hệ số , ,  

- Khởi tạo thành phố xuất phát cho mỗi con kiến

- Tìm hành trình của mỗi con kiến dựa vào công thức xác suất chọn đỉnh

- Cập nhật lời giải tốt nhất

Bước 3: Đưa ra lời giải tốt nhất

Thuật toán Dijsktra’s

Thuật toán Dijkstra’s là một phương pháp tìm đường ngắn nhất trong một đồ thị có trọng số dương Bắt đầu từ điểm xuất phát, thuật toán khám phá từng đỉnh một theo thứ tự từ xa đến gần, mở rộng ra các đỉnh kề với đỉnh hiện tại chưa được xét đến khi đạt được đích đến mong muốn

Thuật toán Dijkstra’s là một trong những phương pháp tìm đường đi tối ưu thông qua việc xét tất cả các điểm có trong một bản đồ dạng lưới Quá trình làm việc của thuật toán được thực hiện trong một vòng lặp, tính từ điểm bắt đầu được chọn trước, rồi mở rộng việc xét ra các điểm kề với điểm hiện tại nhưng chưa được xét, sau đó xét các điểm này và đưa chúng vào danh sách điểm đã xét, đến khi đạt được đích đến mong muốn Thuật toán đảm bảo tìm ra đường đi có chi phí thấp nhất đến mục tiêu, với điều kiện các cạnh không có chi phí âm

Thuật toán Dijkstra’s được công bố lần đầu vào năm 1959 bởi nhà khoa học máy tính người Hà Lan Edsger Dijkstra trong bài báo “A Note on Two Problems in Connexion with Graphs” Thuật toán này là một trong những thuật toán quan trọng nhất trong lĩnh vực đồ ĐỒ ÁN TỐT NGHIỆP 17 thị và tối ưu hóa, được sử dụng rộng rãi để tìm đường đi ngắn nhất giữa các đỉnh trong đồ thị có trọng số không âm [9]

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

Bước 1: Thêm nút bắt đầu vào OPEN:

- Bước này bắt đầu thuật toán bằng cách thêm nút bắt đầu vào tập hợp OPEN Đây là nơi các nút chờ được duyệt

Bước 2: Lặp lại cho đến khi không còn nút nào trong OPEN:

- Nếu không còn nút nào trong OPEN, thuật toán kết thúc với kết quả là không tìm thấy đường đi từ nút bắt đầu đến đích

Bước 3: Lấy nút đầu tiên từ OPEN và gọi là O, sau đó thêm O vào CLOSED:

- Nếu nút O là nút đích, thuật toán kết thúc với kết quả là tìm thấy đường đi từ nút bắt đầu đến nút đích

Bước 4: Tìm tất cả các nút láng giềng của nút O (các nút không thuộc OPEN và CLOSED):

- Thêm các nút láng giềng này vào tập hợp OPEN và sắp xếp chúng theo thứ tự tăng dần của khoảng cách từ nút bắt đầu đến nút láng giềng

- Đây là bước quan trọng để duyệt qua các đường đi có thể từ nút bắt đầu

Bước 5: Quay lại bước 2 (lặp lại quá trình):

- Sau khi xử lý nút O và các nút láng giềng của nó, thuật toán quay lại bước 2 để tiếp tục tìm kiếm đường đi

OPEN: Tập hợp các nút chờ được duyệt

CLOSED: Tập hợp các nút đã được duyệt

CHƯƠNG 2 CƠ SỞ LÝ THUYẾT ĐỒ ÁN TỐT NGHIỆP 18

Nút láng giềng: Các nút kề với nút hiện tại O

Khoảng cách từ nút bắt đầu: Là khoảng cách từ nút bắt đầu đến nút đang xét.

Thuật toán DWA

Thuật toán DWA là một thuật toán được sử dụng trong điều khiển chuyển động robot, đặc biệt là trong các tình huống tránh vật cản và di chuyển trong môi trường động Thuật toán này được giới thiệu lần đầu tiên năm 1997 trong một bài báo khoa học bởi tác giả

Dieter Fox, Wolfram Burgard, và Sebastian Thrun Trong bài báo này, các tác giả đã mô tả cách tiếp cận cửa sổ động (Dynamic Window Approach) để tránh va chạm, bao gồm cả các khái niệm, thuật toán, và các kết quả thực nghiệm để chứng minh tính hiệu quả của phương pháp này [10]

DWA sử dụng một cửa sổ động trong không gian vận tốc của robot Thay vì xem xét tất cả các vận tốc có thể, DWA chỉ xem xét một tập hợp con các vận tốc có thể trong một khoảng thời gian ngắn, được gọi là “cửa sổ động” Tập hợp con này được xác định bởi các ràng buộc động lực học của robot và các yêu cầu an toàn để tránh va chạm Thuật toán bao gồm hai phần chính: không gian tìm kiếm (search space) và tối ưu (optimization), cụ thể từng phần như sau:

Search space (Không gian tìm kiếm): Không gian tìm kiếm của các vận tốc khả thi được giảm thiểu qua ba bước:

- Circular trajectories (Quỹ đạo tròn): Thuật toán DWA chỉ xem xét các đường đi tròn (độ cong) được xác định bởi các cặp vận tốc tuyến tính và góc( , ) v  Điều này tạo ra một không gian tìm kiếm hai chiều về vận tốc

- Admissible velocities (Vận tốc khả thi): Việc giới hạn vào các vận tốc khả thi đảm bảo rằng chỉ những đường đi an toàn mới được xem xét Một cặp vận tốc( , ) v  được coi là khả thi nếu robot có thể dừng lại trước khi chạm đến vật cản gần nhất trên đường đi tương ứng ĐỒ ÁN TỐT NGHIỆP 19

- Dynamic window (Cửa sổ động): Cửa sổ động giới hạn các vận tốc khả thi chỉ trong những vận tốc có thể đạt được trong một khoảng thời gian ngắn, với gia tốc giới hạn của robot

Optimization (Tối ưu hóa): Hàm mục tiêu sau đây được tối ưu hóa để tìm ra cặp vận tốc tốt nhất:

  , , : là các trọng số theo thứ tự của heading dist vel, ,

 : làm mượt tổng trọng số của ba thành phần này và dẫn đến việc tạo ra khoảng cách an toàn lớn hơn từ các vật cản

Dựa trên vị trí và hướng hiện tại của robot, hàm mục tiêu này cân nhắc các khía cạnh sau:

- Target heading (Hướng mục tiêu): Thành phần heading đo lường mức độ tiến bộ hướng về vị trí mục tiêu Giá trị này đạt tối đa khi robot di chuyển trực tiếp về phía mục tiêu

- Clearance (Khoảng cách an toàn): Thành phần distlà khoảng cách đến vật cản gần nhất trên đường đi Khoảng cách càng nhỏ, nhu cầu của robot tránh vật cản càng cao

- Velocity (Vận tốc): Thành phần vel là vận tốc tiến tới của robot, hỗ trợ di chuyển nhanh chóng.

Tổng quan về hệ điều hành robot (ROS)

ROS là một hệ điều hành đã trở nên vô cùng phổ biến trong lĩnh vực nghiên cứu về robotics, cộng đồng ROS vô cùng lớn mạnh bao gồm các nhà nghiên cứu, người đam mê có sự quan tâm nhất định về robotics và cả các doanh nghiệp Nó là một bộ phần mềm với mã nguồn mở cung cấp các khung phần mềm cho phát triển robot Hiện tại, ROS chỉ hoạt

CHƯƠNG 2 CƠ SỞ LÝ THUYẾT ĐỒ ÁN TỐT NGHIỆP 20 động trên các hệ điều hành với nền tảng là hệ điều hành Unix Phần mềm dành cho ROS chủ yếu được thử nghiệm trên hệ thống Ubuntu và Mac OS X

ROS nhằm mục đích thúc đẩy sự chia sẻ và hợp tác, với các mục tiêu bổ sung như gọn nhẹ và dễ tích hợp với các khung phần mềm robot khác Nó khuyến khích sử dụng các thư viện không phụ thuộc vào ROS với các giao diện rõ ràng và hỗ trợ nhiều ngôn ngữ lập trình như Python, C++ và Lisp, cùng với hỗ trợ thử nghiệm cho Java và Lua ROS bao gồm một khung kiểm tra tích hợp, rostest, để kiểm tra đơn vị và tích hợp dễ dàng Ngoài ra, nó được thiết kế để mở rộng tốt cho các hệ thống chạy lớn và các quy trình phát triển mở rộng

ROS gồm ba thành phần chính gồm: ROS File System Level, ROS Computation Graph Level và ROS Community Level

Tương tự như một hệ điều hành, các tệp ROS cũng được tổ chức trên ổ cứng theo một cách cụ thể Ở cấp độ này, chúng ta có thể thấy cách các tệp này được sắp xếp trên đĩa Biểu đồ sau đây cho thấy cách các tệp và thư mục ROS được tổ chức trên ổ cứng:

Hình 2.7 ROS File System Level

Packages: Là thành phần trung tâm của hệ thống ROS, bao gồm một hoặc nhiều node

ROS, các thư viện, các tệp cấu hình và các thành phần khác ĐỒ ÁN TỐT NGHIỆP 21

Package manifest: Là một tệp cấu hình bao gồm trong từng gói ROS, cung cấp mô tả chi tiết về gói và thông tin về gói mà nó thuộc về

Meta packages: Đề cập đến một hoặc nhiều gói phần mềm liên quan được tổ chức một cách tổng quát, thường là để đơn giản hóa quản lý và phân phối các gói liên quan

Meta packages manifest: Là một tệp đặc biệt trong ROS dùng để mô tả và cung cấp thông tin chi tiết về metapackage, giúp quản lý và sử dụng các gói tóm tắt một cách hiệu quả

Messages: Trong ROS, các tệp message (.msg) được dùng để định nghĩa các thông điệp cụ thể mà các node ROS sẽ trao đổi với nhau

Services: Để mô tả yêu cầu và phản hồi của một dịch vụ tùy chỉnh trong ROS, sử dụng các tệp srv Đây là nơi để định nghĩa cấu trúc và định dạng dữ liệu cho yêu cầu và phản hồi của dịch vụ

Repositories: Hầu hết các gói ROS được quản lý bằng Hệ thống Quản lý Phiên bản

(VCS) như Git, Subversion (SVN), Mercurial (Hg), và các công cụ tương tự Một nhóm các gói sử dụng cùng một VCS có thể được gọi là các kho mã nguồn Các gói trong các kho mã nguồn này có thể được phát hành bằng công cụ tự động hóa phát hành catkin được gọi là bloom

Misc: Thường được dùng để lưu trữ những tệp tin, gói phần mềm, hoặc các chức năng nhỏ mà không thuộc vào các danh mục cụ thể khác

Trong ROS, việc tính toán và xử lý dữ liệu được đảm nhận bởi một mạng gọi là

“Computation Graph” Dưới đây là sơ đồ thể hiện các thành phần đóng vai trò cung cấp dữ liệu và quản lý kết nối trong mạng, thông qua các phương thức và hình thức giao tiếp riêng biệt của mình

CHƯƠNG 2 CƠ SỞ LÝ THUYẾT ĐỒ ÁN TỐT NGHIỆP 22

Hình 2.8 ROS Computation Graph Level

Nodes: Mỗi node là một đơn vị cơ bản, tương đương với một tệp thực thi chứa logic chương trình Việc tạo một node với một nhiệm vụ cụ thể sẽ đảm bảo sự thuận tiện trong việc quản lý và sử dụng chúng Khi lập trình, mỗi node đăng ký thông tin như tên, loại message, địa chỉ URI, và số cổng Với thông tin này, node có thể linh hoạt vai trò như publisher, subscriber, service server, hoặc service client thực hiện trao đổi thông điệp qua các topic và services

Master: Là thành phần trung tâm hoạt động riêng biệt, quản lý và điều hành các kết nối và thông tin giữa các node trong hệ thống ROS Các node đăng ký với ROS Master để giao tiếp với nhau, nhận địa chỉ và thông tin về các topic, service, và parameter server cần thiết Dù ROS Master thiết lập kết nối, các node vẫn có thể tiếp tục trao đổi dữ liệu ngay cả khi ROS Master ngừng hoạt động

Parameter Server: Là thành phần quan trọng của ROS Master, cung cấp một không gian lưu trữ và chia sẻ thông số cấu hình của các node trong hệ thống, cũng như cho phép các node có thể truy cập và tùy ý điều chỉnh các giá trị này ĐỒ ÁN TỐT NGHIỆP 23

Messages: Là phương thức để các node trao đổi dữ liệu với nhau thông qua các topic

Các message chứa thông tin cụ thể và được truyền giữa các node nhằm thực hiện các chức năng trong hệ thống ROS

Topics: Là một kênh truyền thông trong ROS, qua đó các message được gửi và nhận

Khi một node gửi message qua một topic, nó được gọi là publisher của topic đó, và khi một node nhận message từ topic này, nó được gọi là subscriber Mỗi topic có một tên duy nhất, bất kể node nào cũng có quyền truy cập vào topic này gửi dữ liệu qua đó với điều kiện là chúng có cùng kiểu dữ liệu message, đặc biệt có sự hỗ trợ về cách thức giao tiếp giữa publisher và subcriber bao gồm 1:1, 1:N, N:1 và cả N:N phụ thuộc vào mục đích sử dụng

Services: Là một cơ chế trong ROS dùng để xử lý yêu cầu và phản hồi trong các ứng dụng yêu cầu tương tác theo mô hình request/response Service cho phép một node server cung cấp một dịch vụ với tên xác định, và node client có thể gửi yêu cầu đến server và nhận phản hồi từ nó

Bags: Là một định dạng để lưu trữ và phát lại dữ liệu message trong ROS; hữu ích khi làm việc với các cơ chế robot phức tạp

Giới thiệu về phần mềm

2.9.1 Giới thiệu phần mềm Gazebo

Gazebo là một phần mềm mô phỏng cho robot và hệ thống robot tự động Sau khi thiết kế 3D cho robot bước tiếp theo là mô phỏng Gazebo sẽ cung cấp một môi trường mô phỏng cho các robot được tích hợp với hệ thống điều khiển và phân tích của ROS Người dùng có thể sử dụng Gazebo để mô phỏng cánh tay robot hoặc mobile robot

Gazebo ROS cung cấp các công cụ để mô phỏng robot, tích hợp cả môi trường indoor và outdoor, người sử dụng có thể mô phỏng cảm biến và môi trường xung quanh Trong Gazebo đã mô phỏng các mẫu robot có sẵn người dùng có thể sử dụng mà không cần phải tạo hay thiết kế robot Gazebo có thể được cài đặt mà không cần cài đặt ROS nhưng người dùng nên cài đặt ROS – Gazebo để có thể kết nối ROS với Gazebo

CHƯƠNG 2 CƠ SỞ LÝ THUYẾT ĐỒ ÁN TỐT NGHIỆP 26

Hình 2.10 Giao diện người dùng của phần mềm Gazebo

Giao diện người dùng (GUI) của Gazebo là một môi trường để người dùng tương tác với robot và môi trường trong Gazebo Giao diện này cung cấp các công cụ và thanh điều khiển để thao tác với các mô hình robot, thiết lập môi trường, thay đổi các tham số mô phỏng, và quan sát kết quả

Một số tính năng của GUI Gazebo bao gồm:

Mô hình hóa robot và môi trường: Cho phép bạn thêm, chỉnh sửa và xóa các đối tượng trong mô phỏng, bao gồm các robot, vật thể, và các bề mặt môi trường

Thanh điều khiển và menu: Cung cấp các nút chức năng, thanh công cụ và menu để truy cập các tính năng như chạy/pause mô phỏng, điều khiển thời gian, lưu lại trạng thái mô phỏng, và nhiều tính năng khác

Cửa sổ mô phỏng: Hiển thị các cảm biến và dữ liệu từ robot và môi trường, cho phép theo dõi và phân tích hành vi của robot trong mô phỏng

Công cụ debug và giám sát: Cung cấp các công cụ để kiểm tra lỗi, debug, và giám sát các thông số vật lý và điều khiển của robot trong quá trình mô phỏng ĐỒ ÁN TỐT NGHIỆP 27

2.9.2 Giới thiệu về phần mềm Rviz

Rviz (ROS Visualization) là một công cụ quan trọng và mạnh mẽ trong lĩnh vực phát triển robot, đặc biệt trong việc hiển thị không gian 3D, sử dụng để hiển thị và tương tác với dữ liệu từ robot và môi trường xung quanh từ các cảm biến như quét laser, pointcloud và camera, Giúp cho việc kiểm tra mô hình, lập kế hoạch đường đi và phát hiện vật cản trở nên dễ dàng hơn

Hình 2.11 Giao diện người dùng của phần mềm Rviz

Nhờ vào tính linh hoạt khả năng tùy chỉnh cao, Rviz không chỉ được sử dụng để phát triển phần mềm robot mà còn trong nghiên cứu lập kế hoạch chuyển động, điều khiển robot, và các ứng dụng phức tạp khác

Với tính chất mã nguồn mở và miễn phí, Rviz là công cụ quan trọng và sẵn sàng hỗ trợ cộng đồng phát triển robot trên toàn cầu, giúp tang cường sự hiểu biết và tiến bộ trong lĩnh vực công nghệ

2.9.2.1 URDF mô phỏng một rô-bốt và hiển thị trạng thái của nó bằng hai chương trình đi kèm với ROS: Gazebo và rviz Gazebo là một trình mô phỏng 3D cho phép giả lập rô-bốt và môi trường xung quanh với các đặc tính vật lý như trọng lực, tốc độ, gia tốc, v.v., tương tự như

CHƯƠNG 2 CƠ SỞ LÝ THUYẾT ĐỒ ÁN TỐT NGHIỆP 28 trong thế giới thực Khi không có rô bốt thật hoặc muốn kiểm tra rô bốt trong môi trường ảo trước khi thử ngoài đời, nên sử dụng Gazebo, Rviz (ROS Visualization) là phần mềm trực quan hóa 3D giúp theo dõi trạng thái của rô-bốt như dữ liệu cảm biến (hình ảnh, pointcloud, quỹ đạo, v.v.) hoặc chuyển đổi giữa các tọa độ khác nhau Rviz có thể được sử dụng cho cả rô-bốt thật và mô phỏng Để mô phỏng rô-bốt trong ROS, cần mô tả nó trong một file URDF (Unified Robot Description Format) URDF là một tệp XML cho phép bạn mô tả các thuộc tính vật lý quan trọng của rô-bốt như liên kết (link), khớp nối (joint), hình dạng, màu sắc, va chạm (collision), v.v

Hình 2.12 Rviz và Gazebo mô tả Robot qua URDF

Xuất file Solidworks qua URDF:

• Đầu tiên tải Solidworks to URDF Exporter:

SolidWorks to URDF exporter là một tiện ích bổ sung của SolidWorks giúp xuất các bộ phận và cụm lắp ráp thành tệp URDF Tiện ích này tạo ra gói ROS bao gồm các thư mục cho mesh, texture và robot Với các bộ phận đơn lẻ, nó lấy thuộc tính vật liệu và tạo một liên kết trong URDF Với các cụm lắp ráp, nó tạo các liên kết và cây phân cấp dựa trên cấu trúc của Solidworks, đồng thời tự động xác định loại khớp nối, phép biến đổi và trục phù hợp ĐỒ ÁN TỐT NGHIỆP 29

• Tiếp theo, đặt trục cho mô hình theo hệ tọa độ chung những trục không xoay sẽ đặt Coordinate System, các trục xoay sẽ đặt bằng axis, các hệ trục Coordinate System như base_link, base_footprint, base_scan,…

• Sau khi đặt trục xong thì chỉnh lại thông số mô hình về khối lượng, tính chất vật lý,…

• Sau đó Export ra file URDF

• Sẽ ra 2 file display.launch, gazebo.launch: display.launch (sử dụng xuất robot model lên Rviz), Gazebo.launch (bao gồm robot model và các tính chất vật lý của robot)

Giới thiệu về gói Navigation Stack trong ROS

Gói “Navigation Stack” trong ROS là một tập hợp các công cụ phần mềm được thiết kế để hỗ trợ robot di động tự động hóa trong việc điều hướng và điều khiển Đây là một giải pháp phần mềm quan trọng cho các ứng dụng robot tự động hóa trong nhiều lĩnh vực như dịch vụ giao hàng tự động, robot dịch vụ, và nghiên cứu robot

Navigation Stack cung cấp các thuật toán và công cụ cho robot để tự định vị trong không gian, xây dựng bản đồ của môi trường xung quanh, và lập kế hoạch đường đi từ vị trí hiện tại đến điểm đích Điều này giúp robot có khả năng di chuyển an toàn, tránh vật cản và tối ưu hóa đường đi, đồng thời cải thiện hiệu quả và độ chính xác của hoạt động tự động

Bằng cách tích hợp các thành phần như SLAM, Path Planning (lập kế hoạch đường đi), và Motion Control (điều khiển chuyển động), Navigation Stack cho phép robot hoạt động độc lập trong môi trường phức tạp mà không cần sự can thiệp của con người Điều này làm cho gói navigation stack trở thành một công cụ quan trọng và mạnh mẽ cho phát triển và triển khai các ứng dụng robot di động trong thực tế Cấu trúc của gói navigation được thể hiện trong hình 2.14 dưới đây:

CHƯƠNG 2 CƠ SỞ LÝ THUYẾT ĐỒ ÁN TỐT NGHIỆP 36

Hình 2.19 Mô hình gói Navigation Stack Đối với một gói navigation thì những thành phần sau đây phải cần có các gói: move_base: Giúp robot lập kế hoạch đường đi dựa trên bản đồ và thông tin về điểm đích, giúp robot đến được vị trí mong muốn slam_gmapping: Được sử dụng để tạo ra bản đồ từ dữ liệu thu thập bởi lidar

AMCL: Giúp xác định vị trí hiện tại của robot trong bản đồ đã được tạo ra

Gói quan trọng nhất trong navigation là gói move_base, bao gồm hai phần chính: lập kế hoạch đường đi toàn cục (global planner) và lập kế hoạch đường đi cục bộ (local planner) Gói này giúp tạo ra lộ trình tổng thể và đồng thời điều chỉnh lộ trình này để tránh các vật cản xung quanh, đảm bảo robot di chuyển an toàn và hiệu quả.

Giới thiệu về Qt Designer

Qt Designer là một công cụ phát triển giao diện đồ họa (GUI) được tích hợp trong bộ công cụ Qt của Qt Company Được thiết kế để hỗ trợ việc thiết kế và phát triển các ứng dụng đa nền tảng, Qt Designer cung cấp một giao diện đồ họa trực quan cho người phát triển để thiết kế và chỉnh sửa giao diện người dùng một cách dễ dàng

Qt Designer cho phép người dùng kéo và thả các thành phần giao diện như nút bấm, ô văn bản, danh sách, thanh trượt, và các widget khác vào cửa sổ thiết kế Người dùng có thể ĐỒ ÁN TỐT NGHIỆP 37 tinh chỉnh các tính năng và hành vi của các widget này bằng cách sử dụng các thuộc tính và sự kiện có sẵn

Một trong những điểm mạnh của Qt Designer là tích hợp tốt với Qt Creator, môi trường phát triển tích hợp (IDE) của Qt, cho phép người dùng thiết kế giao diện và lập trình ứng dụng trong cùng một nơi Qt Designer cũng hỗ trợ việc sử dụng các lớp và phương thức được tạo tự động bởi Qt, giúp giảm thiểu thời gian và công sức cần thiết cho việc phát triển phần giao diện người dùng của ứng dụng

Tóm lại, Qt Designer là một công cụ quan trọng trong bộ công cụ Qt, giúp người phát triển tạo ra các giao diện người dùng đẹp và hiệu quả một cách nhanh chóng và tiện lợi

Qt Framework được phát triển bằng ngôn ngữ C++ Điều này có nghĩa là bạn có thể sử dụng C++ để phát triển ứng dụng sử dụng Qt Qt cũng hỗ trợ các ngôn ngữ khác thông qua các liên kết và công cụ, ví dụ như Python thông qua PyQt hay PySide, JavaScript thông qua Qt for WebAssembly, và cả Rust thông qua công cụ qtRust

Ngoài ra, Qt còn hỗ trợ việc phát triển ứng dụng di động sử dụng C++ và QML (Qt Modeling Language), một ngôn ngữ mô tả giao diện người dùng dựa trên JavaScript Điều này cho phép phát triển ứng dụng di động đa nền tảng bằng cách sử dụng C++ cho logic nền tảng và QML cho phần giao diện người dùng

Hình 2.20 Giao diện điều khiển chính phần mềm Qt Designer

CHƯƠNG 2 CƠ SỞ LÝ THUYẾT ĐỒ ÁN TỐT NGHIỆP 38

Giới thiệu về Web Server

ReactJS là một thư viện JavaScript chuyên giúp các nhà phát triển xây dựng giao diện người dùng hay UI Trong lập trình ứng dụng front – end, lập trình viên thường sẽ phải làm việc với các thành phần sau:

Component-Based: ReactJS sử dụng mô hình component-based, nghĩa là giao diện được chia thành các thành phần nhỏ, tái sử dụng được Mỗi thành phần (component) là một phần tử giao diện độc lập, có thể quản lý trạng thái và vòng đời của riêng nó

Virtual DOM: React sử dụng Virtual DOM (Document Object Model ảo) để tăng hiệu suất Khi trạng thái của một component thay đổi, React sẽ tạo một cây DOM ảo mới và so sánh nó với cây DOM ảo trước đó Chỉ những thay đổi thực sự cần thiết mới được áp dụng lên DOM thật, giúp tối ưu hóa hiệu suất

JSX: React sử dụng một cú pháp đặc biệt gọi là JSX (JavaScript XML), cho phép viết HTML trong JavaScript JSX làm cho code dễ đọc và viết hơn, và nó sẽ được biên dịch thành JavaScript thông qua các công cụ như Babel

Các tính năng chính: ĐỒ ÁN TỐT NGHIỆP 39

State Management: React quản lý trạng thái của ứng dụng một cách hiệu quả Các công cụ như Redux hoặc Context API thường được sử dụng kết hợp với React để quản lý trạng thái phức tạp

Lifecycle Methods: React cung cấp các phương thức vòng đời (lifecycle methods) như componentDidMount, componentDidUpdate, và componentWillUnmount, giúp lập trình viên kiểm soát hành vi của component tại các thời điểm khác nhau trong vòng đời của nó

Hooks: Với phiên bản React 16.8, Hooks được giới thiệu, mang lại khả năng sử dụng state và các tính năng khác của React mà không cần viết các class component Một số hooks phổ biến gồm useState, useEffect, và useContext

EmailJS là một dịch vụ cho phép bạn gửi email trực tiếp từ JavaScript mà không cần thiết lập backend/server Điều này rất hữu ích cho các nhà phát triển web muốn thêm tính năng gửi email vào các ứng dụng web mà không cần phải triển khai server riêng để xử lý email Dưới đây là một số thông tin chi tiết về EmailJS:

CHƯƠNG 2 CƠ SỞ LÝ THUYẾT ĐỒ ÁN TỐT NGHIỆP 40

Hình 2.23 Giao diện làm việc chính của EmailJS

Dễ dàng tích hợp: EmailJS cung cấp các SDK và API đơn giản để tích hợp vào các ứng dụng web

Hỗ trợ nhiều dịch vụ email: Hỗ trợ nhiều nhà cung cấp dịch vụ email phổ biến như Gmail, Outlook, Yahoo, và SMTP tùy chỉnh

Bảo mật: Thông tin xác thực và cài đặt cấu hình được quản lý thông qua EmailJS Dashboard, giúp giảm thiểu nguy cơ lộ thông tin bảo mật trong mã nguồn client-side

Tùy chỉnh mẫu email: Hỗ trợ các mẫu email (templates) có thể tùy chỉnh, giúp bạn dễ dàng định dạng và cá nhân hóa email

Firebase là một nền tảng dịch vụ điện toán đám mây của Google, được thiết kế để giúp các nhà phát triển xây dựng và triển khai các ứng dụng di động và web một cách nhanh chóng và dễ dàng Firebase cung cấp một loạt các dịch vụ đa dạng, từ lưu trữ dữ liệu đến xử lý người dùng, phân tích, thông báo đẩy, đến chức năng chạy các hoạt động dựa trên máy chủ (serverless computing) ĐỒ ÁN TỐT NGHIỆP 41

Các tính năng chính của Firebase bao gồm:

Realtime Database: Cơ sở dữ liệu thời gian thực cho phép đồng bộ dữ liệu giữa nhiều người dùng và thiết bị một cách tức thời

Firestore: Cơ sở dữ liệu NoSQL dựa trên tài liệu (document-based) cung cấp tính năng truy vấn mạnh mẽ và linh hoạt hơn so với Realtime Database

Authentication: Dịch vụ quản lý xác thực người dùng với hỗ trợ nhiều phương thức đăng nhập như email/password, Google, Facebook, Twitter, và nhiều hơn nữa

Storage: Dịch vụ lưu trữ dữ liệu đa phương tiện như hình ảnh, video, và tệp tin khác trên nền tảng đám mây của Google

Hosting: Dịch vụ cho phép phát triển và triển khai các trang web và ứng dụng web tĩnh một cách dễ dàng

Cloud Functions: Cho phép bạn viết và triển khai các hàm backend mà không cần quản lý máy chủ, dựa trên các sự kiện trong ứng dụng của bạn

Analytics: Cung cấp thông tin chi tiết về hoạt động của người dùng để bạn có thể hiểu và cải thiện trải nghiệm của họ

CHƯƠNG 2 CƠ SỞ LÝ THUYẾT ĐỒ ÁN TỐT NGHIỆP 42

Remote Config: Cho phép bạn điều chỉnh cấu hình ứng dụng mà không cần phải cập nhật lại từng ứng dụng

Cloud Messaging: Cung cấp các dịch vụ thông báo đẩy để giữ cho người dùng của bạn luôn kết nối và thông báo khi cần thiết.

Cách xác định vị trí xe trên bản đồ

Robot tự hành luôn hoạt động ở các môi trường với cấu trúc luôn thay đổi, theo thời gian các dữ liệu bản đồ sẽ không giống như ban đầu, đòi hỏi robot phải luôn thích nghi, tự học để tìm kiếm hướng đi phù hợp và tối ưu cho mình Vì vậy, một trong những yếu tố quan trọng nhất trong quá trình tự hành của mình là robot phải xác định được chính xác vị trí hiện tại trên bản đồ Vậy bằng cách nào mà robot có thể xác định được vị trí của mình? Câu trả lời là nhờ các thông tin từ cảm biến Từng cảm biến sẽ cung cấp 1 thông tin, như cảm biến đo lường chuyển động (IMU) sẽ đưa thông tin về vị trí và hướng quay của robot, cảm biến encoder sẽ đưa thông tin về vận tốc dài và vận tốc quay Kết hợp 2 thông tin từ 2 cảm biến để cập nhật vị trí và hướng quay hiện tại của robot tự hành từ vị trí xuất phát ban đầu phương pháp này gọi là Odometry

2.13.1 Nguyên lý hoạt động của cảm biến đo lường chuyển động (IMU) Đối với xe tự hành sử dụng cảm biến IMU sẽ dựa vào gia tốc kế (accelerometer) được tích hợp trong nó để xác định hướng quay của xe ĐỒ ÁN TỐT NGHIỆP 43

Hình 2.25 Trục x, y, z theo cảm biến IMU

Như ta đã biết, ở mọi nơi trên trái đất đều có 1 gia tốc trọng trường g với giá trị sấp xỉ bằng 9.81(m/s 2 ) và cảm biến IMU cũng sẽ chịu ảnh hường của gia tốc này Có nghĩa là nếu cảm biến ko di chuyển và được đặt bất kì trục nào của nó cùng hướng và phương với gia tốc trọng trường thì gia tốc trên trục đó sẽ bằng 9.81(m/s 2 ) và 2 trục còn lại sẽ bằng 0 Ngoài ra bất kì trường hợp nào khác 3 trường hợp dưới đây sẽ cho ra kết quả khác 9.81 ở

Hình 2.26 3 trường hợp có 1 trong 3 góc đặt cùng phương và hướng với gia tốc trọng trường

Từ gia tốc đo được trên mỗi trục để xác định 3 góc roll, pitch, yaw:

CHƯƠNG 2 CƠ SỞ LÝ THUYẾT ĐỒ ÁN TỐT NGHIỆP 44

- Giả sử với roll khi ta xoay cảm biến quanh trục x

Hình 2.27 Cảm biến IMU khi quay quanh trục X

Sau khi quay được 1 góc cố định ta nhận thấy chiếc hộp đã tạo ra 3 góc lệch so với chiếc hộp ban đầu gọi là góc roll (  roll ) và nó sẽ chịu ảnh hưởng bởi sự thay đổi gia tốc của trục x, y và z theo công thức:

- Góc yaw cũng sẽ cho ra kết quả giống như trên

- Góc pitch khi xoay cảm biến theo trục y ĐỒ ÁN TỐT NGHIỆP 45

Hình 2.28 Cảm biến IMU khi quay quanh trục Y

Sau khi quay được 1 góc cố định ta nhận thấy chiếc hộp đã tạo ra 3 góc lệch so với chiếc hộp ban đầu gọi là góc roll (  pitch ) và nó sẽ chịu ảnh hưởng bởi sự thay đổi gia tốc của trục x, y và z theo công thức:

2.13.2 Nguyên lý hoạt động của cảm biến Encoder

Cảm biến encoder rất phổ biến trong các lĩnh vực liên quan tới điều khiển vận tốc, vị trí Cấu tạo của encoder gồm 2 đĩa quay với nhiều lỗ nhỏ và được đặt lệch nhau 90 độ

CHƯƠNG 2 CƠ SỞ LÝ THUYẾT ĐỒ ÁN TỐT NGHIỆP 46

Hình 2.29 Dạng sóng thu được từ 2 đĩa của pha A và pha B

Từ dạng sóng cho thấy khi pha A chuyển trạng thái từ thấp lên cao thì pha B ở trạng thái thấp và khi pha A chuyển từ cao xuống thấp thì pha B ở mức cao đó là khi động cơ quay từ trái sang phải và ngược lại cho thấy động cơ đang quay từ phải sang trái

Trong Arduino, dữ liệu đọc từ encoder sẽ dùng hàm attachInterrupt(interrupt, ISR, mode) Với:

- Interrupt: chân ngắt encoder dùng để báo sự thay đổi trạng thái của pha A

- ISR: hàm ngắt gọi khi ngắt xảy ra dùng để đếm xung động cơ quay được

- Mode: trạng thái ngắt trong Arduino cho người dùng 4 cách và trong đề tài sử dụng CHANGE Nghĩa là ngắt sẽ được gọi khi pha A thay đổi trạng thái từ thấp lên cao hay ngược lại Ưu điểm của CHANGE so với các mode khác là độ nhạy cao cho phép hệ thống nhận ra bất kì sự thay đổi nào từ đó cập nhật thông tin kịp thời, tính chính xác giúp hệ thống luôn nhận đủ số xung mà động cơ đã thực hiện Đối với động cơ sử dụng trong đề tài là động cơ DC servo GA25-370 với tỉ số truyền là 217:1 nghĩa là muốn tính số xung khi trục chính quay 1 vòng thì phải lấy số xung mà ĐỒ ÁN TỐT NGHIỆP 47 encoder quay 1 vòng nhân cho 217 Và khi đo số xung 1 vòng của động cơ ở trạng thái CHANGE thì số xung thu được là 5050 xung/vòng

Như đã đề cập thì odometry là quá trình thu thập thông tin từ cảm biến, cụ thể là từ IMU và encoder để xác định và cập nhật bất kì sự thay đổi về vị trí của robot tự hành, nhờ đó giúp hệ thống theo sát được robot

Có một vấn đề quan trọng trong quá trình odometry là việc chọn bánh xe Bánh xe chất lượng cao hay thấp đều ảnh hưởng tới quá trình tính toán vị trí bởi nếu bánh xe ko đảm bảo được sự đồng bộ với cảm biến encoder thì sẽ dẫn tới sai số vị trí, làm giảm chất lượng hoạt động

Tuy nhiên, odometry có 1 nhược điểm là số lượng các phép tính khá nhiều nhưng đòi hỏi phải thực hiện trong thời gian ngắn nhằm liên tục cập nhật vị trí mục tiêu trên bản đồ Điều này đòi hỏi cao về phần cứng phải có đủ chất lượng để đảm bảo thực hiện tốt quá trình định vị robot Thêm vào đó, nếu bánh xe không đủ tốt dẫn tới trượt bánh cũng sẽ ảnh hưởng ít nhiều tới quá trình tính toán

Trọng tâm của lí thuyết xác định và cập nhật vị trí của robot tự hành là ở 2 giá trị là quãng đường đi được từ encoder và góc quay từ cảm biến IMU Đối với mô hình xe tự hành trong đồ án, có 2 bánh xe đặt ở trung điểm của 2 bên xe và cách trọng tâm của đế xe mỗi bánh là L = 0.127(m) với bán kính mỗi bánh là R = 0.425(m) và quan trọng 2 bánh này phải được đặt song song với nhau

CHƯƠNG 2 CƠ SỞ LÝ THUYẾT ĐỒ ÁN TỐT NGHIỆP 48

Hình 2.30 Tư thế và các tham số nhằm xác định vị trí và hướng robot trong mặt phẳng XY

Khi xe di chuyển, từ giá trị thu được từ encoder ta sẽ thu được quãng đường mà xe đi được ở bánh trái và phải theo công thức:

Giải thích công thức: Muốn tìm quãng đường đã đi thì ta phải biết 1 vòng bánh lăn được bao nhiêu mét từ công thức tính chu vi bánh 2 3.14   R sau đó từ số xung đo được lấy chia cho số xung 1 vòng bánh lăn để biết bánh lăn được bao nhiêu vòng Lấy 2 dữ liệu chu vi và số vòng lăn để xác định quãng đường đã đi và suy ra quãng đường xe đi bằng công thức:

Và với góc quay thu được từ cảm biến IMU ta xác định được vị trí và hướng của xe trên mặt phẳng x y bằng công thức: cos( ) x = +  x D  +  2  (2.29) sin( ) y = +  y D  +  2  (2.30)

Với  là giá trị hiện tại trừ đi giá trị trước đó của góc lệch

Như vậy, từ những sự tính toán trên hệ thống sẽ có thể liên tục cập nhật được vị trí và hướng hiện tại của robot.

TÍNH TOÁN VÀ THIẾT KẾ

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.15 (m/s)

- Thiết kế bộ điều khiển PID vận tốc động cơ và vị trí cánh tay với sai số xác |exl| < 10% Thời gian xác lập txl < 1(s)

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

Hình 3.1 Sơ đồ khối mô tả hệ thống ĐỒ ÁN TỐT NGHIỆP 53

Hình 3.1 mô tả các thành phần có trong hệ thống và cách chúng tương tác với nhau như thế nào:

+) Máy tính nhúng đóng vai trò như một bộ não giúp xe có thể tự mình đưa ra những quyết định phức tạp như việc tìm đường tới với đúng vị trí yêu cầu trên bản đồ, khả năng quét và xử lí thông tin xuất hiện trên bản đồ và quan trọng nhất đối với yêu cầu cần xử lí ảnh thì yêu cầu phải là máy tính thì mới xử lí nổi

+) Nguồn Jetson nano chính hãng cấp nguồn riêng cho jetson nhằm bảo vệ và hạn chế hư hại Jetson

+) PC đóng vai trò giúp người điều khiển làm việc trên jetson nano và được kết nối với nhau qua Wifi

+) Lidar đóng vai trò như con mắt của xe hỗ trỡ việc định hướng trên bản đồ và được kết nối qua cổng USB với Jetson nano

+) Camera cũng tương tự lidar nhưng là cặp mắt của cánh tay robot hỗ trợ gắp hàng kết nối với Jetson qua USB

+) 2 Arduino đóng vai trò cầu nối từ Jetson để điều khiển bánh xe và cánh tay Chúng được kết nối với Jetson qua USB

+) L298 nhận tính hiệu từ Arduino để điều khiển động cơ của bánh xe và các khớp robot Kết nối với Arduino qua dây bus

+) Động cơ DC servo dùng nguồn 12V được điều khiển bằng L298

+) IMU và encoder đóng vai trò hỗ trợ hệ thống xác định vị trí và hướng của xe

+) Cảm biến tiệm cận giúp Arduino gửi tín hiệu cho relay điều khiển máy bơm giúp cánh tay gắp vật

+) Nguồn 12V cung cấp cho các thành phần liên kết với arduino

CHƯƠNG 3 TÍNH TOÁN VÀ THIẾT KẾ ĐỒ ÁN TỐT NGHIỆP 54

Thiết kế khung xe và cánh tay 3 bậc

Các bản vẽ dưới đây dùng đơn vị mm

Hình 3.2 Bản vẽ và kích thước khung nhôm

- Bản vẽ vỏ mica dày 10mm

+) Bản vẽ thùng xe và vỏ hông xe ĐỒ ÁN TỐT NGHIỆP 55

Hình 3.3 Bản vẽ và kích thước phần thùng chứa hàng và vỏ hông xe

+) Bản vẽ mặt trước của xe

Hình 3.4 Bản vẽ và kích thước mặt trước xe

CHƯƠNG 3 TÍNH TOÁN VÀ THIẾT KẾ ĐỒ ÁN TỐT NGHIỆP 56

Hình 3.5 Bản vẽ và kích thước nóc xe ĐỒ ÁN TỐT NGHIỆP 57 +) Bản vẽ đế xe

Hình 3.6 Bản vẽ và kích thước đế xe

CHƯƠNG 3 TÍNH TOÁN VÀ THIẾT KẾ ĐỒ ÁN TỐT NGHIỆP 58

- Bản vẽ khớp 1 (hình giữa), bên trái là phần dưới,bên phải là phần trên

Hình 3.7 Bản vẽ khung bên ngoài khớp 1

Hình 3.8 tới hình 3.20 là kích thước bản vẽ và mô hình 3D phần dưới khớp 1

Hình 3.8 Kích thước bản vẽ phần dưới khớp 1 ĐỒ ÁN TỐT NGHIỆP 59

Hình 3.9 Độ cao 13.46mm của phần dưới khớp 1

Hình 3.10 Phần nhô cao 2mm

Hình 3.11 Phần khoét sâu 3mm

CHƯƠNG 3 TÍNH TOÁN VÀ THIẾT KẾ ĐỒ ÁN TỐT NGHIỆP 60

Hình 3.12 Phần khoét sâu 3.2mm

Hình 3.20 tới hình 3.27 là kích thước và bản vẽ 3D phần trên khớp 1

Hình 3.13 Kích thước bản vẽ phần trên khớp 1

Hình 3.14 Độ cao 41.15mm phần trên khớp 1 ĐỒ ÁN TỐT NGHIỆP 61

Hình 3.15 Độ cao 30mm phần nhô lên phần trên khớp 1

Hình 3.16 Độ sâu 13.2mm phần khoét

Hình 3.17 Độ sâu 24.2mm khoét mặt phía sau phần trên khớp 1

CHƯƠNG 3 TÍNH TOÁN VÀ THIẾT KẾ ĐỒ ÁN TỐT NGHIỆP 62

Hình 3.18 Độ dày lỗ 2.8mm mặt phía sau phần trên khớp 1

Hình 3.19 Độ cao 2.2mm khoét mặt phía sau phần trên khớp 1 ĐỒ ÁN TỐT NGHIỆP 63

Hình 3.20 Chu vi 82.94mm đường tròn mặt sau phần trên khớp 1

Hình 3.21 tới hình 3.28 là kích thước bánh răng đơn và bánh răng cycloidal khớp 1 Bánh răng đơn

Hình 3.21 Đường kính mặt tròn 13.17mm, độ cao 17mm và lỗ có độ lệch trục 2.3mm trên mặt tròn của bánh răng đơn

CHƯƠNG 3 TÍNH TOÁN VÀ THIẾT KẾ ĐỒ ÁN TỐT NGHIỆP 64

Hình 3.22 Kích thước lỗ của bánh răng đơn

Hình 3.23 Bánh răng đơn xoắn 360 o để khớp với bánh răng cycloidal của khớp 1

Các kích thước cần có để vẽ bánh răng cho driver khớp 1 gồm:

+) Bán kính bánh răng R = 60.417 (mm)

+) Bán kính răng Rr = 6.583 (mm)

+) độ lệch trục E = 2.3 (mm) Áp những thông số này vào công thức (2.15), (2.16) để vẽ bánh răng

+) Trục x ĐỒ ÁN TỐT NGHIỆP 65 sin((1 21)

60.417 sin( ) 6.583sin( arctan arctan 2.30sin(21 )

Hình 3.24 Đường kính mặt tròn nhỏ 54.8mm, mặt tròn lớn 80mm và độ cao 20mm của mặt tròn nhỏ

CHƯƠNG 3 TÍNH TOÁN VÀ THIẾT KẾ ĐỒ ÁN TỐT NGHIỆP 66

Hình 3.25 Độ cao 3mm đường tròn lớn

Hình 3.26 Đường kính mặt tròn 29.8mm và độ cao 7mm của nó ở mặt sau bánh rang khớp 1 ĐỒ ÁN TỐT NGHIỆP 67

Hình 3.27 Đường kính 42.2mm mặt tròn lớn và được khoét sâu 2.2mm mặt sau bánh răng khớp 1

Hình 3.28 Bánh răng với 20 răng nên được xoắn 18 o (360 o /20)

CHƯƠNG 3 TÍNH TOÁN VÀ THIẾT KẾ ĐỒ ÁN TỐT NGHIỆP 68

- Bản vẽ khớp 2 và 3 (hình giữa), bên trái là phần dưới,bên phải là phần trên

Hình 3.29 Hình ảnh thiết kế bên ngoài của driver khớp 2 và 3 ĐỒ ÁN TỐT NGHIỆP 69

Hình 3.30 Các thành phần bên ngoài của driver

Các thành phần trên chia thành phần đứng yên và phần chuyển động Phần nằm ở góc trên bên phải và dưới bên phải gọi là mặt trên và dưới phần đứng yên còn phần nằm ở góc trên bên trái và dưới bên trái gọi là mặt trên và dưới của phần chuyển động

CHƯƠNG 3 TÍNH TOÁN VÀ THIẾT KẾ ĐỒ ÁN TỐT NGHIỆP 70

Hình 3.31 Kích thước các góc nhìn của mặt trên phần đứng yên

Hình 3.32 Kích thước các góc nhìn của mặt dưới phần đứng yên ĐỒ ÁN TỐT NGHIỆP 71

Hình 3.33 Kích thước các góc nhìn mặt dưới của phần chuyển động

Hình 3.34 Kích thước các góc nhìn mặt trên của phần chuyển động

CHƯƠNG 3 TÍNH TOÁN VÀ THIẾT KẾ ĐỒ ÁN TỐT NGHIỆP 72

- Cấu tạo bên trong driver Cycloidal cho khớp 2 và 3

Hình 3.35 Cấu tạo bên trong driver cycloidal cho khớp 2 và 3

Bắt đầu với khớp nối thứ nhất gắn trực tiếp với động cơ, liên kết với nó có 1 khớp nối với độ lệch trục 1mm dùng để xoay bánh răng thứ nhất, có 1 vòng bi giữa khớp nối này với bánh răng giúp bánh rang chuyển động mượt mà Tương tự kết cấu với bánh rang thứ 2 nhưng khớp nối và bánh răng lần này được đặt lệch so với khớp nối và bánh rang thứ nhất

180 độ Thiết kế này nhằm tăng độ chính xác cho chuyển động của driver vì tránh được hiện tưởng rung lắc nếu chỉ có 1 bánh răng và cuối cùng kết thúc với 1 khớp nối không lệch trục như khớp nối động cơ

Hình 3.36 2 bánh răng được đặt lệch nhau 180 o

- Bản vẽ và kích thước các thành phần bên trong driver cycloidal cho khớp 2 và 3 Các kích thước cần có để vẽ bánh răng cho driver khớp 2 và 3 gồm:

+) Bán kính bánh răng R = 30.417(mm)

+) Bán kính răng Rr = 2.583 (mm) ĐỒ ÁN TỐT NGHIỆP 73

+) độ lệch trục E = 1 (mm) Áp những thông số này vào công thức (2.15), (2.16) để vẽ bánh răng

CHƯƠNG 3 TÍNH TOÁN VÀ THIẾT KẾ ĐỒ ÁN TỐT NGHIỆP 74

Hình 3.37 Kích thước khớp nối động cơ và khớp nối trên cùng của driver khớp 2 và 3 ĐỒ ÁN TỐT NGHIỆP 75

Hình 3.38 Kích thước khớp nối của bánh rang với độ lệch trục 1mm

Hình 3.39 Kích thước bánh răng đã được vẽ ở công thức 3.3 và 3.4

CHƯƠNG 3 TÍNH TOÁN VÀ THIẾT KẾ ĐỒ ÁN TỐT NGHIỆP 76

Hình 3.40 Các góc nhìn mô hình khung xe và cánh tay sau khi ghép lại

Hình 3.41 Kích thước 2 tầng của mô hình ĐỒ ÁN TỐT NGHIỆP 77

BỐ TRÍ LINH KIỆN TRÊN XE

Relay Động cơ khí nén

Hình 3.42 Bố trí linh kiện ở tầng 1 và tầng 2 của xe

Tính toán lựa chọn và lựa chọn động cơ cánh tay

3.4.1 Thiết kế khớp 3 của cánh tay 3 bậc Để tính chọn động cơ cho khớp một ta tiến hành ước lượng khối lượng các khâu

CHƯƠNG 3 TÍNH TOÁN VÀ THIẾT KẾ ĐỒ ÁN TỐT NGHIỆP 78

Hình 3.43 Ước lượng khối lượng của khớp 3 và chiều dài khớp mà khớp 3 sẽ kéo

• Khối lượng ước tính: 0.25kg + 0.2kg ( các linh kiện bulong, đai ốc, vòng bi,…)

• Khoảng cách từ trục quay đến điểm tác động: sấp xỉ 150mm = 0.15m

Suy ra moment cần để kéo cho phần trên robot chuyển động là 3.22Nm (nhân thêm 4 – hệ số trừ hao theo kinh nghiệm), nhóm chọn động cơ với moment là 3.22 Nm

3.4.2 Thiết kế khớp 2 của cánh tay 3 bậc Để tính chọn động cơ cho khớp một ta tiến hành ước lượng khối lượng các khâu gồm

2 khớp 3 và các thành phần trên phần chuyển động của khớp 2 ĐỒ ÁN TỐT NGHIỆP 79

Hình 3.44 Ước lượng khối lượng của khớp 1 và 2 và chiều dài 2 khớp mà khớp 1 sẽ kéo

• Khối lượng ước tính: 0.575kg + 0.1( của 1 động cơ) + 0.3kg( các linh kiện bulong, đai ốc, vòng bi,…) = 0.975

• Khoảng cách từ trục quay đến điểm tác động: sấp xỉ 390mm = 0.39m

Suy ra moment cần để kéo cho phần trên robot chuyển động là 11.2 Nm (nhân thêm 3 – hệ số trừ hao theo kinh nghiệm), nhóm chọn động cơ với moment là 11.2 Nm

3.4.3 Thiết kế khớp 1 của cánh tay 3 bậc Để tính chọn động cơ cho khớp một ta tiến hành ước lượng khối lượng các khâu (gần tương đương khớp 2 nhưng hệ số trừ hao là 4) Cánh tay đòn có kích thước tương tự khớp

CHƯƠNG 3 TÍNH TOÁN VÀ THIẾT KẾ ĐỒ ÁN TỐT NGHIỆP 80

Suy ra moment cần để kéo cho phần trên robot chuyển động là 15 Nm (nhân thêm 5 – hệ số trừ hao theo kinh nghiệm), nhóm chọn động cơ với moment là 15 Nm

3.4.4 Chọn động cơ cho từng khớp

Dựa trên những tính toán trên, yêu cầu để cánh tay hoạt động ổn định và chính xác là chọn động cơ có khả năng tạo momen xoắn lớn hơn lí thuyết Kết hợp với trợ lực từ bộ driver giảm tốc cycloidal, từ đó động cơ được chọn là động cơ DC Servo GA25-370 DC Geared Motor

Hình 3.45 động cơ DC Servo GA25-370 DC Geared Motor dùng cho 3 khớp cánh tay

• Tỉ số truyền 217:1 (động cơ quay 217 vòng trục chính hộp giảm tốc quay 1 vòng)

• Dòng chịu đựng tối đa khi có tải: 750mA

• Tốc độ không tải: 39RPM (39 vòng 1 phút)

• Tốc độ chịu đựng tối đa khi có tải: 32RPM (32 vòng 1 phút)

• Lực kéo Moment định mức: 8KG.CM

• Lực léo Moment tối đa: 9KG.CM ĐỒ ÁN TỐT NGHIỆP 81

• Chiều dài hộp số L: 25mm

Với việc momen xoắn trên đầu ra (𝜏 𝑜𝑢𝑡 ) và đầu vào (𝜏 𝑖𝑛 ) có mối quan hệ với nhau thông qua tỉ số truyền động (ratio): in out ratio

 =  (3.1) Đối với cánh tay mỗi khớp có driver với tỉ số truyền là 1:20 và động cơ có momen xoắn là 8(kg.cm) chuyển sang Nm thì có giá trị là 0.78 Vậy ta có momen xoắn đầu ra là:

Với giá trị này thì đã đủ điều kiện để các khớp vận hành ổn định

3.4.5 Tính toán tải trọng tối đa của cánh tay

Tính tải cho cánh tay sẽ tính khi các khớp 2 và 3 của cánh tay đang ở vị trí khớp 1, khớp

2 và 3 chịu trọng lượng lớn nhất như trong hình 3.45 z0,z1 z2 x0 z3 x2 x1 Ɵ1 Ɵ2 Ɵ3 l1 l2 l3

Hình 3.46: Tư thế cánh tay khi khớp 1 chịu trọng lượng lớn nhất

CHƯƠNG 3 TÍNH TOÁN VÀ THIẾT KẾ ĐỒ ÁN TỐT NGHIỆP 82

Trong hình 3.45, khâu 2 của khớp 2 vuông góc với khâu 1 của khớp 1 và khâu của khớp 2 và 3 thẳng hàng với nhau

Tính tải lớn nhất của cánh tay để khớp 1 vẫn có thể hoạt động Theo công thức 3.8, ta có

T1 = 15 (Nm), T3 = 11.2, T3 = 3.22 Với momen tối đa mà động cơ qua driver cung cấp là 15.6 ta có thể tính x1 (tải max khớp 1), x2 (tải max khớp 2), x3 (tải max khớp 3) cho từng khớp như sau

Tính toán và chọn động cơ cho xe tự hành

Tổng khối lượng xe tính thêm cánh tay và một số mạch điều khiển thì sấp xỉ 6kg Để xe có thể di chuyển được đòi hỏi động cơ phải tạo được momen xoắn thắng được lực ma sát do xe tạo ra Đối với xe có 2 bánh chính và 3 bánh phụ thì khối lượng sẽ được chia đều cho 5 bánh vậy mỗi bánh sẽ chịu khoảng 1.2 kg Do đó tính momen xoắn cần cho 2 bánh chính ta tính như sau: Đầu tiên xác định lực ma sát tổng của xe:

• 𝜇 là hệ số ma sát Với bánh cao su và bề mặt gạch thì giá trị là 0.6

• 𝑚 là khối lượng xe với giá trị 6kg

• 𝑔 là gia tốc trọng trường với giá trị 9.81 m/s 2

Vậy hệ số ma sát tổng là:

Vậy hệ số ma sát 1 bánh chính phải chịu là: ĐỒ ÁN TỐT NGHIỆP 83

Từ đó tính momen xoắn cần cho mỗi bánh chính là:

Với R là bán kính bánh chính với giá trị 0.0425(m)

Hình 3.46 Bánh chính với bán kính 85mm

• Model: 85mm Hexagon Motor Coupling 12mm wheel V3

• Chất liệu: Nhựa, mút, cao su

Suy ra momen xoắn cần:

CHƯƠNG 3 TÍNH TOÁN VÀ THIẾT KẾ ĐỒ ÁN TỐT NGHIỆP 84

Với giá trị 0.3(Nm) thì động cơ DC Servo GA25-370 DC Geared Motor giống như cánh tay là phù hợp

Lựa chọn các thiết bị khác cho hệ cánh tay robot di động

3.6.1 Vi điều khiển Arduino Mega 2560 Đối với các đề tài của sinh viên với mục đích nghiên cứu, lập trình, xây dựng các hệ động điều khiển tự động, tạo các sản phẩm từ các linh kiện điện từ,… thì arduino luôn là lựa chọn hàng đầu về giá thành hay phạm vi khả năng những gì nó mang lại Arduino là một mã nguồn mở về cả phần cứng và phần mềm, hỗ trợ cho người dùng có thể lập trình và điều khiển các thiết bị điện tử Vì vậy với đề tài cần điều khiển động cơ với độ chính xác cao về vị trí và tốc độ thì Arduino là cần thiết Thêm nữa với nhiều loại Arduino trên thị trường như hiện nay thì tùy vào yêu cầu đề tài thì sẽ chọn ra loại phù hợp Với đề tài điều khiển động cơ dc có encoder thì việc đảm bảo đủ số chân ngắt và lượng chân digital để kết nối là rất quan trọng và dòng Arduino phù hợp với tiêu chí đó là Arduino Mega 2560

Hình 3.47 Vi điều khiển Arduino Mega 2560

Arduino mega 2560 hỗ trợ lên tới 5 chân ngắt là những chân 2, 3, 18, 19, 20, 21 cùng với lượng chân digital lớn lên tới 53 chân ĐỒ ÁN TỐT NGHIỆP 85

Hình 3.48 Sơ đồ các chân kết nối của Arduino Mega 2560

3.6.2 Mạch cầu H L298N Để điều khiển động cơ thì mỗi Arduino là chưa đủ vì động cơ dc dùng nguồn 12v và Arduino chỉ có thế cấp tín hiệu điều khiển với dòng điện nhỏ Vì vậy L298 xuất hiện với vai trò cầu nối hỗ trợ Arduino điều khiển L298 là mạch điều khiển động cơ phổ biến với giá thành rẻ và dễ sử dụng giúp đơn giản hóa quá trình điều khiển động cơ

CHƯƠNG 3 TÍNH TOÁN VÀ THIẾT KẾ ĐỒ ÁN TỐT NGHIỆP 86

Arduino thông qua L298 điều khiển động cơ bằng cách dùng PWM hay là điều chế độ rộng xung Thông qua chân ENA hoặc ENB Arduino sẽ đưa tin hiệu để thay đổi trạng ở

EN thay đổi liên tục theo 1 tần số nhất định từ đó tạo ra các giá trị điện áp đầu ra cấp cho động cơ, thời gian hay đổi giữa các mức cao và thấp ở EN càng nhanh thì điện áp cấp cho động cơ càng lớn

3.6.3 Webcam Rapoo C260 Đầu tiên là web camera hay webcam, là camera kết nối với máy tính trực tiếp qua cổng USB với kích thước nhỏ gọn, phù hợp để đặt lên cánh tay robot Với đa dạng các loại webcam trên thị trường thì việc kiếm ra 1 sản phẩm phù hợp với đề tài với các yêu cầu đơn giản như hình ảnh tốt có thể phân biệt được các loại màu chính xác, tốc độ khung hình trên giây từ 30 đến 60 và giá thành không quá đắt đỏ cũng như có thể dễ dàng tìm và mua được trong phạm vi khu vực thì nhóm đã lựa chọn webcam

- Model: C260 FullHD 1080p ĐỒ ÁN TỐT NGHIỆP 87

- Độ phân giải: FHD 1080P / HD 720P

- Hiệu chỉnh ánh sáng tự động: Có

- Hệ điều hành tương thích: Windows7/8/10 or above, Mac OS X 10.6 or above,Chrome OS,and Android v5.0 or above

- Đặc điểm nổi bật: Micro đa hướng, ống kính HD 1080p lấy nét tự động, đế / kẹp linh hoạt, cáp USB

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

Xe tự hành như tên gọi là loại xe có khả năng tự đưa ra những quyết định, những hướng đi và giải quyết các vấn đề trong khi đang thực thi 1 nhiệm vụ nào đó Đối với đề tài cánh tay robot di động và gắp hàng theo đơn thì với khối lượng công việc khổng lồ đó thì máy tính nhúng đóng vai trò như một bộ não giúp xe có thể tự mình đưa ra những quyết định phức tạp như việc tìm đường tới với đúng vị trí yêu cầu trên bản đồ, khả năng quét và xử lí thông tin xuất hiện trên bản đồ và quan trọng nhất đối với yêu cầu cần xử lí ảnh thì yêu cầu phải là máy tính thì mới xử lí nổi, và trên thị trường có 1 số hãng phổ biến như Raspberry Pi, mini PC, NVIDIA Jetson,… Trong số đó nổi trội trong khả năng xử lí ảnh khá tốt và điều đó rất cần thiết cho đề tài Jetson Nano là một nền tảng mạnh mẽ với khả năng tính toán cao, được thiết kế để hỗ trợ các ứng dụng AI và Machine Learning Với các tính năng như GPU NVIDIA và bộ xử lý ARM Cortex-A57 quad-core, Jetson Nano có thể xử lý các ứng dụng phức tạp và đòi hỏi nhiều tính toán như ROS

CHƯƠNG 3 TÍNH TOÁN VÀ THIẾT KẾ ĐỒ ÁN TỐT NGHIỆP 88

Hình 3.51 Máy tính AI Jetson Nano Dev Kit With 16GB EMMC

- SKU: 21802 Part Number: JETSON-NANO-DEV-KIT

- Model: Jetson Nano Dev Kit with 16GB EMMC

- Coreboard: Jetson Nano Module with 16GB eMMC by NVIDIA

- Carrier Board: JETSON-IO-BASE-A by Waveshare

- CPU: Quad-core ARM A57 @ 1.43 GHz

- Memory: 4 GB 64-bit LPDDR4 25.6 GB/s

- Video Encode: 250 MP/s 1x 4K @ 30 [HEVC] 2x 1080p @ 60 [HEVC] 4x 1080p

- Video Decode: 500 MP/s 1x 4K @ 60 [HEVC] 2x 4K @ 30 [HEVC] 4x 1080p @

- Camera: 2 x MIPI CSI-2 DPHY lanes

- Connectivity: Gigabit Ethernet, M.2 Key E expansion connector ĐỒ ÁN TỐT NGHIỆP 89

- Display: HDMI and DP USB: 4x USB 3.0, USB 2.0 Micro-B

Nếu đã có bộ não là NVIDIA Jetson Nano thì muốn robot có khả năng tự định hướng, đọc và xử lí thông tin trên bản đồ thì cần có cảm biến giúp robot làm điều đó Và lựa chọn phổ biến nhất chính là cảm biến Lidar Lidar là một công nghệ đo khoảng cách và tạo hình ảnh từ xa bằng cách sử dụng sóng laser Công nghệ này hoạt động dựa trên nguyên lý phát ra các tia laser và đo thời gian mà các tia này phản chiếu lại từ các vật thể xung quanh để tính khoảng cách Cảm biến khoảng cách Lidar RPLIDAR A1M8 360° Laser Range Scanner được sản xuất bởi hãng SLAMTEC sử dụng cho các ứng dụng đo khoảng cách, phát hiện vật cản, lập bản đồ bằng tia Laser trong xe, robot tự hành, hệ thống chống trộm, , cảm biến có độ ổn định và độ chính xác cao Cảm biến khoảng cách Lidar RPLIDAR A1M8 360° Laser Range Scanner sử dụng giao tiếp UART nên có thể dễ dàng giao tiếp với Vi điều khiển, Máy tính nhúng hoặc kết nối máy tính qua mạch chuyển USB-UART và phần mềm đi kèm, cảm biến có khả năng quét xa với khoảng cách 0.15~12m, tốc độ quay 5.5Hz và tần số lấy mẫu lên đến 8000 điểm trên 1 giây

CHƯƠNG 3 TÍNH TOÁN VÀ THIẾT KẾ ĐỒ ÁN TỐT NGHIỆP 90

Hình 3.52 Cảm biến khoảng cách RPLIDAR A1M8

- Laser Range Scanner Ranging method: Triangulation Motor

- Driver: Brushed DC Motor System

- Voltage: 5VDC System Current: 100mA

- Output: UART Serial (3.3 voltage level)

- Range Resolution: ≤1% of the range (≤12m) ≤2% of the range (12~16m)

- Accuracy 1% of the range (≤3m) 2% of the range (3~5m) 2.5% of the range (5~12)

- Recommended applications: Vacuum robot, Home robot ĐỒ ÁN TỐT NGHIỆP 91

3.6.6 Cảm biến góc IMU MPU6050

Cảm biến IMU là một thành phần quan trọng trong công nghệ điều khiển chuyển động và định vị không gian Một trong những module cảm biến IMU phổ biến là module MPU6050 Được thiết kế bởi công ty InvenSense, MPU6050 kết 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 đề tài này vì theo yêu cầu thiết kế robot chỉ di chuyển trên một phẳng cố định trục Z không đổi nên nhóm chỉ quan tâm sử dụng phản hồi góc yaw của cảm biến

Hình 3.53 Cảm biến góc IMU MPU-6050

- Đ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

- 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

CHƯƠNG 3 TÍNH TOÁN VÀ THIẾT KẾ ĐỒ ÁN TỐT NGHIỆP 92

3.6.7 Nguồn cấp cho Jetson Nano

Vì điện áp vào của Jetson Nano là 5V DC nên nhóm sử dụng Waveshare UPS (Uninterruptible Power Supply) Module bao gồm chỗ cắm sạc, tích hợp sẵn khay gắn pin bốn pin cells 18650 Waveshare UPS (Uninterruptible Power Supply) Module đưa ra điện áp ổn định 5V DC sẽ được dùng để cấp cho ngõ vào Jetson Nano Kết nối Jetson qua cổng kết nối I2C 0.91” là kích thước màn hình hiển thị phần trăm pin của Jetson hiện tại đang còn Kích thước là 113mm x 79mm

Hình 3.54 Waveshare UPS (Uninterruptible Power Supply) Module

Waveshare UPS Module có chức năng là bảo vệ chống mất điện đột ngột, đảm bảo hoạt động liên tục, bảo vệ khỏi các biến động điện áp, dự phòng năng lượng di động, hỗ trợ hoạt động trong môi trường khắc nghiệt, tự động tắt thiết bị an toàn

12v10Ah, điện áp sạc 12,6v (12 cell pin mới 100% chính hãng YTH 18650 nối tiếp, phun được 12 bình 20 lít) ĐỒ ÁN TỐT NGHIỆP 93

Công nghệ pin lithium cho tuổi thọ cao gấp 10 lần ắc quy truyền thống, trọng lượng nhẹ giúp tiết kiêm sức lao động

Nhóm dùng máy bơm để dùng cho giác hút chân không, dùng để hút các đồ vật trên kệ hàng, siêu nhỏ chống ăn mòn 12v - 052 là loại máy bơm hút chân không mini tiếng ồn thấp, Bơm khí nén dùng nguồn 12V dòng 2ah trở lên để máy bơm hoạt động ổn định Đường kính vòi phun khí là 5mm, áp suất tích cực tối đa lớn hơn hoặc bằng 100Kpa (750mmHg) Bơm có hiệu suất ổn định, điện áp thấp,…

CHƯƠNG 3 TÍNH TOÁN VÀ THIẾT KẾ ĐỒ ÁN TỐT NGHIỆP 94

Hình 3.56 Máy bơm chân không

Lắp ráp phần cứng

Dưới đây là mô hình hệ cánh tay robot di động thực tế dưới nhiều góc nhìn

Hình 3.57 Mô hình hệ thống thực tế 1 ĐỒ ÁN TỐT NGHIỆP 95

Hình 3.58 Mô hình hệ thống thực tế 2

Hình 3.59 Mô hình hệ thống thực tế 3

CHƯƠNG 3 TÍNH TOÁN VÀ THIẾT KẾ ĐỒ ÁN TỐT NGHIỆP 96

Hình 3.60 Mô hình hệ thống thực tế 4

Hình 3.61 Mô hình hệ thống thực tế 5 ĐỒ ÁN TỐT NGHIỆP 97

THI CÔNG HỆ THỐNG

Thiết lập bản đồ cho robot (Map)

PGM (Portable Gray Map) là một định dạng hình ảnh raster đơn giản, được thiết kế để dễ dàng sử dụng và truyền tải dữ liệu hình ảnh thang độ xám Định dạng này là một phần của bộ định dạng Portable Any Map (PNM), bao gồm PPM (Portable Pixmap) cho hình ảnh màu và PBM (Portable Bitmap) cho hình ảnh nhị phân PGM được sử dụng rộng rãi trong nhiều ứng dụng

CHƯƠNG 4 THI CÔNG HỆ THỐNG ĐỒ ÁN TỐT NGHIỆP 100

Hình 4.2 Map PGM Đặc điểm chính của PGM:

- Thang độ xám: Mỗi pixel trong hình ảnh PGM có giá trị từ 0 đến 255, biểu thị các mức độ xám từ đen (0) đến trắng (255)

- Hai dạng mã hóa: PGM hỗ trợ hai dạng mã hóa: ASCII và nhị phân Dạng ASCII dễ đọc nhưng chiếm nhiều dung lượng hơn, trong khi dạng nhị phân tiết kiệm dung lượng hơn nhưng khó đọc bằng mắt thường

Một file PGM bao gồm hai phần chính: phần tiêu đề và phần dữ liệu

- Magic Number: Để xác định loại file PGM P2 cho ASCII và P5 cho nhị phân

- Kích thước: Chiều rộng và chiều cao của hình ảnh (số pixel theo chiều ngang và chiều dọc)

- Giá trị xám tối đa: Giá trị tối đa của độ xám, thường là 255

Phần dữ liệu (Data): ĐỒ ÁN TỐT NGHIỆP 101

- ASCII: Các giá trị độ xám được viết dưới dạng văn bản, cách nhau bằng khoảng trắng

- Binary: Các giá trị độ xám được viết dưới dạng nhị phân, mỗi giá trị chiếm một byte Đối với đồ án sau khi nhóm quét SLAM map bằng phương pháp Gmapping, sẽ xuất được file bản đồ map.PGM để chạy navigation thông qua phần mềm Rviz

Binary occupancy grid map là một phương pháp biểu diễn không gian trong robot học, sử dụng một lưới 2D để lưu trữ thông tin về môi trường xung quanh robot Mỗi ô lưới có thể ở một trong hai trạng thái: bị chiếm (occupied) hoặc không bị chiếm (free)

CHƯƠNG 4 THI CÔNG HỆ THỐNG ĐỒ ÁN TỐT NGHIỆP 102

Hình 4.4 Binary Occupancy Grid Map được tạo bằng Matlab Đặc điểm:

- Lưới 2D: Môi trường được chia thành các ô vuông nhỏ (cells)

- Trạng thái nhị phân: Mỗi ô lưới có thể có giá trị 0 (free) hoặc 1 (occupied)

Trong một số ứng dụng, các giá trị trung gian có thể được sử dụng để biểu thị trạng thái không xác định hoặc xác suất chiếm dụng

Cấu trúc file Binary Occupancy Grid Map:

- Resolution: Kích thước của mỗi ô lưới (thường tính bằng mét)

- Origin: Tọa độ của gốc bản đồ trong hệ tọa độ thế giới

- Width và Height: Số lượng ô lưới theo chiều rộng và chiều cao của bản đồ Data: Mảng dữ liệu chứa giá trị nhị phân cho mỗi ô lưới ĐỒ ÁN TỐT NGHIỆP 103 Đối với đồ án nhóm sử dụng Binary Occupancy Grid Map để chạy mô phỏng bản đồ với các thuật toán sử dụng để mô phỏng trên Matlab

Tư thế của robot được xác định bởi hệ thống đo đạc từ bộ mã hóa và cảm biến IMU, và khoảng cách với chướng ngại vật được đo bằng cảm biến khoảng cách Dữ liệu từ các cảm biến và bản đồ lưới chiếm chỗ từ SLAM được sử dụng để điều hướng robot

Bản đồ chi phí (costmap) được chia thành hai loại: ‘global_costmap’ cho kế hoạch đường đi toàn cầu và ‘local_costmap’ cho kế hoạch đường đi và tránh chướng ngại vật cục bộ Cả hai loại đều sử dụng giá trị từ 0 đến 255 để biểu diễn các khu vực:

• 001~127: Khu vực có khả năng va chạm thấp

• 128~252: Khu vực có khả năng va chạm cao

• 255: Khu vực bị chiếm chỗ

CHƯƠNG 4 THI CÔNG HỆ THỐNG ĐỒ ÁN TỐT NGHIỆP 104

Hình 4.5 Mối quan hệ giữa khoảng cách đến vật cản và giá trị costmap

Bản đồ chi phí (costmap) biểu diễn vị trí của robot và các chướng ngại vật xung quanh

Mô hình robot nằm ở giữa, và khi đường viền của nó chạm vào tường, robot sẽ va chạm Màu sắc trên bản đồ cho thấy khả năng va chạm, với màu xám đậm biểu thị khả năng va chạm cao, màu hồng là chướng ngại vật thực tế, và màu xanh dương nhạt là điểm mà trung tâm robot có thể đi vào Màu sắc trên bản đồ có thể tùy chỉnh trong RViz

Hình 4.6 Turtlebot3 Costmap ĐỒ ÁN TỐT NGHIỆP 105

Định vị cho Robot và các đặc điểm trạm trên bản đồ có sẵn (Localization)

Định vị robot dựa trên bản đồ có sẵn đã được SLAM trước đó, kết hợp với mô hình chuyển động đo lường Đọc xung từ Encoder và tính toán giá trị vận tốc mỗi bánh để đưa ra ước lượng vị trí robot

Kết hợp thuật toán AMCL, AMCL là thuật toán xác định toàn cục cho robot Sử dụng các hạt để đại diện cho các giả thiết về vị trí, cập nhật chúng dựa trên mô hình chuyển động và quan sát, và tái mẫu để tập trung vào các vùng có xác suất cao AMCL bổ sung các kỹ thuật thích nghi để cải thiện hiệu suất và độ chính xác của quá trình định vị

Sử dụng bộ lọc hạt PF ước lượng tư thế của robot trên bản đồ bằng lý thuyết xác suất (probability theory)

CHƯƠNG 4 THI CÔNG HỆ THỐNG ĐỒ ÁN TỐT NGHIỆP 106

Hình 4.8 Bộ lọc hạt PF

Ban đầu, vị trí robot chưa được xác định, lấy ngẫu nhiên các điểm mẫu trên bản đồ để cập nhật trọng số cho các hạt sau mỗi lần đọc dữ liệu từ laser scan, Sau nhiều lần đọc thì nơi nào có nhiều hạt tập trung thì nơi đó sẽ có xác suất cao nhất cho vị trí của robot trong môi trường, khi robot di chuyển thì các hạt cũng sẽ dời theo (theo thuật toán MCL) Khi robot mất dấu hoặc gặp sự cố, khó khan trong việc khôi phục lại vị trí robot, các hạt sẽ được them vào ngẫu nhiên giúp vị trí robot phục hồi

Trong AMCL các phép biến đổi còn được gọi là Transform đóng vai trò quan trọng trong việc chuyển đổi tọa độ giữa các hệ trục tọa độ để tìm vị trí các điểm trên map Ví dụ chuyển đội từ hệ tọa góc sang hệ tọa độ map ĐỒ ÁN TỐT NGHIỆP 107

Hình 4.9 Hệ tọa độ map và odom

Theo dõi xác suất quan sát từ cảm biến, nếu thấp các hạt hiện tại không phản ánh đúng vị trí thực tế, thêm hạt Số lượng hạt thêm đượ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í Đối với đồ án, nhóm đã chuyển đổi từ hệ tọa độ gốc sang các hệ tọa độ vị trí của các dãy kệ hàng khác trên bản đồ Bởi vì, Hệ trục tọa độ của mobile robot, map, các vị trí mong muốn,… đề được biểu diễn trên hệ tọa độ 2D trên Rviz nên nhóm chỉ xét theo trục x, y của hệ trục tọa độ để tính các vị trí trên bản đồ

Hình 4.10 Hệ trục tọa độ trên Rviz (map C304)

CHƯƠNG 4 THI CÔNG HỆ THỐNG ĐỒ ÁN TỐT NGHIỆP 108

Các hệ trục tọa độ thường vị trí tâm của bản đồ O (0,0,0) sẽ cũng là vị trí đầu tiên khi bắt đầu SLAM map còn được gọi là HOME (vị trí ban đầu)

Từ HOME tọa độ x = 0, y = 0, z = 0 ta tịnh tiến tới các hệ tọa độ khác, với mỗi kệ cách theo trục x là 1 ô tương đương với 1m thực tế, chiều ngang cách giữa các kệ theo trục y là -0.3 đến 0.3, trục z luôn cho bằng 0 Ta được các vị trí:

Hình 4.11 Điểm tọa độ trên bản đồ Rviz (map C304)

Gói AMCL (Adaptive Monte Carlo Localization) của TurtleBot3 là một phần quan trọng trong ROS (Robot Operating System) để định vị robot trong môi trường Dưới đây là một số thông số quan trọng của gói AMCL:

- min_particles: Số lượng hạt tối thiểu trong bộ lọc hạt ĐỒ ÁN TỐT NGHIỆP 109

- max_particles: Số lượng hạt tối đa trong bộ lọc hạt

- update_min_d: Khoảng cách tối thiểu mà robot phải di chuyển trước khi cập nhật định vị

- update_min_a: Góc quay tối thiểu mà robot phải xoay trước khi cập nhật định vị

- resample_interval: Số lần cập nhật sau đó các hạt sẽ được lấy mẫu lại

- transform_tolerance: Thời gian tối đa để chấp nhận một phép biến đổi trong hệ tọa độ

- laser_max_range: Phạm vi tối đa của cảm biến laser

- laser_min_range: Phạm vi tối thiểu của cảm biến laser

- odom_alpha1, odom_alpha2, odom_alpha3, odom_alpha4 và odom_alpha5:

Các thông số này xác định độ không chắc chắn trong mô hình động học của robot (thường là các sai số trong phép đo của hệ thống odometry)

- recovery_alpha_fast và recovery_alpha_slow: Các thông số này xác định tốc độ phục hồi của hạt trong quá trình định vị

- initial_pose_x, initial_pose_y, initial_pose_a: Các giá trị ban đầu của vị trí và hướng của robot khi bắt đầu định vị

- use_map_topic: Nếu đặt là true, gói AMCL sẽ sử dụng bản đồ được phát qua chủ đề /map

- base_frame_id: Tên của khung cơ sở của robot

- odom_frame_id: Tên của khung hệ tọa độ odometry

Các thông số này có thể được cấu hình trong file launch của ROS hoặc trực tiếp trong mã nguồn, tùy thuộc vào yêu cầu của ứng dụng và môi trường hoạt động của robot.

Giải bài toán TSP cho các trạm bằng thuật toán ACO

Sau khi đã có tọa độ các trạm trên bản đồ, nhóm triển khai thuật toán ACO cho các điểm trạm Một điều quan trọng trong việc áp dụng thuật toán là số lượng kiến và điều kiện dừng được chọn phải đủ lớn thì xác suất quần thể kiến thực hiện việc chọn đường dài hơn sẽ

CHƯƠNG 4 THI CÔNG HỆ THỐNG ĐỒ ÁN TỐT NGHIỆP 110 giảm đi Dựa vào cơ sở lý thuyết của thuật toán nhóm đã trình bày ở chương 2 thì dưới đây là lưu đồ của thuật toán ACO cho bài toán của nhóm:

Lấy thông tin tọa độ các trạm

Khởi tạo thông số ban đầu cho quần thể

Khởi tạo trạm ban đầu cho từng con kiến trong quần thể

Xây dựng lộ trình di chuyển cho từng con kiến trong quần thể

Ghi nhận lộ trình tốt nhất

Hình 4.12 Lưu đồ thuật toán tối ưu đàn kiến (ACO)

Mặc dù nhóm đã ràng buộc trạm ban đầu cho quần thể kiến xuất phát là từ trạm Home nhưng về bản chất thuật toán vẫn sẽ tính toán bài toán TSP tổng thể và cho ra một ma trận mùi tổng quát, từ đó sử dụng cho các điểm trạm bắt đầu mà mình muốn ĐỒ ÁN TỐT NGHIỆP 111

Quy hoạch đường đi toàn cục tối ưu cho robot bằng thuật toán Dijsktra

Quy hoạch đường đi ngắn nhất (tối ưu) cho mobile robot trên bản đồ có sẵn, sau khi đã có lộ trình các điểm trạm được tính bởi thuật toán ACO thì ta sẽ tiến hành quy hoạch đường đi tối ưu cho robot di chuyển giữa các điểm trạm trên bản đồ thông qua thuật toán Dijsktra’s Xét trường hợp đi từ trạm Home tới trạm 1:

Giả sử chúng ta có đồ thị G = ( , ) V E với:

V: là tập hợp các đỉnh (các điểm trạm trong nhà kho)

E: là tập hợp các cạnh (các đường đi giữa các điểm)

= : là trọng số các cạnh nối giữa các đỉnh u và v

Mục tiêu là tìm đường đi ngắn nhất từ đỉnh xuất phát s (trạm Home) đến đích t (trạm 1) Hàm mục tiêu có được biểu diễn như sau:

P: là tập hợp các cạnh từ s đến t

= : là trọng số các cạnh u và v

Từ đó theo Dijkstra’s tìm đường đi P sao cho tổng trọng số của các cạnh P là nhỏ nhất Kết quả là đường đi tối ưu từ s đến t

Cứ như vậy, thuật toán sẽ được quy hoạch cho từng cặp trạm theo lộ trình được cho biết trước bởi ACO

Trong ROS, nhóm sử dụng gói navfn có hỗ trợ sử dụng sẵn thuật toán Dijsktra’s Gói này triển khai một hàm điều hướng nhanh và nội suy, được sử dụng để lập kế hoạch di chuyển cho một nền tảng di động thông qua lớp navfn::NavFn Gói phần mềm này còn cung cấp một lớp bao bọc ROS cho lớp trên thông qua đối tượng navfn::NavfnROS, tuân thủ giao

CHƯƠNG 4 THI CÔNG HỆ THỐNG ĐỒ ÁN TỐT NGHIỆP 112 diện nav_core::BaseGlobalPlanner trong gói nav_core Đối tượng navfn::NavfnROS này cũng được sử dụng như một plugin lập kế hoạch toàn cục cho nút move_base.

Sử dụng thuật toán DWA cho robot né tránh vật cản

Thuật toán DWA đã được nhóm giới thiệu ở chương 2, xét trường hợp cho robot di chuyển từ trạm Home đến trạm 1 thực hiện các bước sau:

Bước 1: Xác định trạng thái và mục tiêu:

- Trạng thái hiện tại của robot: Vị trí và hướng hiện tại của robot (Home)

- Mục tiêu: Vị trí của trạm 1 trong nhà kho

Bước 2: Thiết lập các tham số cho DWA:

- Tốc độ tối đa và gia tốc: Các giới hạn vật lý của robot

- Cửa sổ động: Khoảng thời gian mà robot có thể điều chỉnh tốc độ và hướng

Bước 3: Xây dựng hàm mục tiêu (Objective Function):

- Hàm mục tiêu được biểu diễn như sau:

  , , : Là các trọng số theo thứ tự của heading dist vel , ,

 : Làm mượt tổng trọng số của ba thành phần này và dẫn đến việc tạo ra khoảng cách an toàn lớn hơn từ vật cản heading : Thông số này đại diện cho hướng của robot so với mục tiêu và đạt giá trị lớn nhất chỉ khi robot di chuyển trực tiếp hướng đến mục tiêu

 : Là hướng của robot tại vị trí dự đoán ĐỒ ÁN TỐT NGHIỆP 113

 : Là góc giữa robot tại vị trí dự đoán và điểm mục tiêu

Hình 4.13 Đánh giá theo heading dist: Thông số này đại diện cho khoảng cách đến vật cản gần nhất và nó sẽ được chọn để giúp robot đi vòng xung quanh vật cản Nếu không có chướng ngại vật trên độ cong thì giá trị này được đặt thành một hằng số lớn

Hình 4.14 Đánh giá theo dist

CHƯƠNG 4 THI CÔNG HỆ THỐNG ĐỒ ÁN TỐT NGHIỆP 114 vel : Thông số này đại diện cho tiến trình của robot trên quỹ đạo tương ứng Nó chỉ đơn giản là một phép chiếu về vận tốc tịnh tiến của robot, càng lớn thì robot càng di chuyển nhanh hơn

Hình 4.15 Đánh giá theo vel

Từ những tiêu chí đánh giá theo heading dist vel , , sẽ giúp hàm mục tiêu chọn được vận tốc dài và vận tốc góc tối ưu để robot vừa tránh vật cản vừa đến điểm mục tiêu sớm nhất Tất cả ba thông số trên của hàm mục tiêu được chuẩn hóa thành [0;1] ĐỒ ÁN TỐT NGHIỆP 115

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

Bước 4: Lựa chọn các lệnh điều khiển khả thi:

- Dựa trên cửa sổ động và các giới hạn vật lý, xác định các cặp (v,ω) khả thi

Bước 5: Tính toán giá trị hàm mục tiêu cho mỗi cặp (v,ω):

- Sử dụng các mô hình dự đoán để ước lượng hành vi của robot trong khoảng thời gian ngắn

- Tính toán giá trị của hàm mục tiêu cho mỗi cặp (v,ω) dựa trên vị trí dự đoán, khoảng cách tới chướng ngại vật và tốc độ

Bước 6: Chọn lệnh điều khiển tối ưu:

- Lựa chọn cặp (v,ω) có giá trị hàm mục tiêu lớn nhất

Bước 7: Cập nhật trạng thái và lặp lại:

- Robot di chuyển theo lệnh điều khiển tối ưu được chọn

- Cập nhật trạng thái hiện tại của robot và lặp lại quá trình cho đến khi đạt được mục tiêu (trạm 1)

CHƯƠNG 4 THI CÔNG HỆ THỐNG ĐỒ ÁN TỐT NGHIỆP 116

Trong ROS, nhóm sử dụng DWAPlannerROS là một lớp trong gói dwa_local_planner của ROS, thực hiện thuật toán DWA để lập kế hoạch đường đi cục bộ và tránh chướng ngại vật

Các thông số chính của DWA trong ROS

• max_vel_x: Tốc độ tối đa theo trục x của robot (m/s) Đây là tốc độ tiến tối đa mà robot có thể đạt được

• min_vel_x: Tốc độ tối thiểu theo trục x của robot (m/s) Đây là tốc độ tiến tối thiểu mà robot có thể di chuyển

• max_vel_theta: Tốc độ quay tối đa của robot (rad/s) Đây là tốc độ quay tối đa mà robot có thể đạt được

• min_vel_theta: Tốc độ quay tối thiểu của robot (rad/s) Đây là tốc độ quay tối thiểu mà robot có thể đạt được

• acc_lim_x: Giới hạn gia tốc theo trục x (m/s²) Đây là gia tốc tối đa mà robot có thể đạt được theo trục x

• acc_lim_theta: Giới hạn gia tốc quay (rad/s²) Đây là gia tốc quay tối đa mà robot có thể đạt được

• xy_goal_tolerance: Độ chính xác mục tiêu theo trục x và y (m) Khoảng cách mà robot được coi là đã đạt được mục tiêu

• yaw_goal_tolerance: Độ chính xác mục tiêu theo góc quay (rad) Góc quay mà robot được coi là đã đạt được mục tiêu

• sim_time: Thời gian mô phỏng để tính toán các quỹ đạo khả thi (s) Thời gian mà robot sử dụng để tính toán và mô phỏng các quỹ đạo khả thi

• path_distance_bias: Trọng số cho khoảng cách từ đường đi (m) Trọng số này ảnh hưởng đến sự ưu tiên của robot khi chọn đường đi gần với đường đi đã được lập kế hoạch

• goal_distance_bias: Trọng số cho khoảng cách đến mục tiêu (m) Trọng số này ảnh hưởng đến sự ưu tiên của robot khi chọn đường đi trực tiếp đến mục tiêu ĐỒ ÁN TỐT NGHIỆP 117

Thiết kế web server cho khách hàng

4.6.1 Tổng quan về Web Server

Lấy dữ liệu sản phẩm

Sản phẩm n có trong cart hay không?

Cập nhật số lượng hàng tồn trong kho từng sản phẩm

Tìm các giá trị sản phẩm trong

Lấy thông tin giỏ hàng

Chờ đến khi được cập nhật

Cập nhật đơn hàng sau khi đặt hàng thành công

Lấy thông tin giỏ hàng totalPrice += item.price * item.quantity;

Trả về giá trị biến totalPrice

Lấy thông tin giỏ hàng totalQuantity += item.quantity;

Trả về giá trị biến totalQuantity Giá trị ban đầu

Hình 4.17 Lưu đồ hàm chức năng của Web

CHƯƠNG 4 THI CÔNG HỆ THỐNG ĐỒ ÁN TỐT NGHIỆP 118

Lấy thông tin giỏ hàng

Tìm vị trí giỏ hàng productIndex có bằng -1 không?

Sản phẩm đã tồn tại

Sản phẩm chưa tồn tại

Hình 4.18 Lưu đồ xử lý đơn hàng

4.6.2 Trang Signin Đây là trang người mua hàng đăng nhập vào web và người dùng đăng nhập bằng email của mình ĐỒ ÁN TỐT NGHIỆP 119

Sau khi đăng nhập xong thì sẽ chuyển đến trang này, từ trang này người mua hàng chọn Go to Buy Page sẽ được chuyển tiếp đến trang mua hàng chính, hoặc có thể chọn

Logout để đăng xuất nếu muốn

CHƯƠNG 4 THI CÔNG HỆ THỐNG ĐỒ ÁN TỐT NGHIỆP 120

Hình 4.21 Phần giới thiệu sản phẩm và chương trình

Hình 4.22 Phần thông tin và tương tác với khách hàng

Hình 4.23 Phần thông tin và các loại hàng đã đặt ĐỒ ÁN TỐT NGHIỆP 121

Hình 4.24 Xác nhận lại đơn hàng đã đặt

Hình 4.25 Thông tin đơn hàng đã được gửi qua mail của người đặt hàng

Hình 4.26 Thông tin thành viên

Hình 4.27 Thông tin về Trường – Khoa – Lab

CHƯƠNG 4 THI CÔNG HỆ THỐNG ĐỒ ÁN TỐT NGHIỆP 122

4.6.5 Truyền nhận dữ liệu giữa Web Server và GUI

Hình 4.28 Web Server và Gui

Khách hàng sẽ vào trang web và đăng nhập bằng gmail để đặt hàng sau khi đặt hàng thành công thì thông tin đơn hàng sẽ được gửi lên Firebase (Database) Khi đó, dữ liệu đơn hàng sẽ được lưu lên Firebase, từ dữ liệu đó của Firebase thông tin của Firebase sẽ được truyền dữ liệu xuống GUI, thông qua đó Admin sẽ có thể giám sát và quản lí các đơn hàng qua giao diện người dùng Admin có thể thực hiện các tác vụ như cập nhật đơn hàng, xóa đơn hàng,… ĐỒ ÁN TỐT NGHIỆP 123

Quy trình đặt hàng, gửi dữ liệu từ Database theo lưu đồ sau:

Mua hàng và lựa chọn số lượng hàng hóa cần mua

Dữ liệu đơn hàng gửi lên Firebase

Lấy dữ liệu về GUI

Hình 4.29 Quy trình đặt hàng

CHƯƠNG 4 THI CÔNG HỆ THỐNG ĐỒ ÁN TỐT NGHIỆP 124

Thiết kế giao diện người dùng cho người vận hành

4.7.1 Tổng quan về giao diện

Dưới đây là lưu đồ thể hiện chức năng của GUI và 2 chương trình Auto Mode và Manual Mode ĐỒ ÁN TỐT NGHIỆP 125

Xét thông tin đăng nhập

Kết nối camera, arduino Lấy dữ liệu từ Cloud Firebase và chuyển vào danh sách tất cả đơn hàng

Trang About Us Đăng Xuất

Hiển thị thông tin và hình ảnh sản phẩm

Hiển thị danh sách và trạng thái tất cả đơn hàng

Hiển thị thông tin tác giả

Hiển thị thông tin và hình ảnh sản phẩm tiếp theo

Hiển thị thông tin và hình ảnh sản phẩm trước đó Đ

CHƯƠNG 4 THI CÔNG HỆ THỐNG ĐỒ ÁN TỐT NGHIỆP 126

Nút Delete Xét thông tin thanh nhập 1

Xét thông tin ở thanh nhập 1

Xét thông tin ở thanh nhập 1

Hiển thị thông tin đơn hàng

Cập nhật tại thông tin đơn hàng

Xóa đơn hàng Khỏi CSDL

Chạy chương trình Auto Mode

Chạy chương trình Manual Mode

Kiểm tra các đơn hàng đang được xử lý

Chạy xong đơn hàng hiện tại, chuyển đơn hàng vào danh sách các đơn hàng đã xử lý

Xóa toàn bộ danh sách đơn hàng chờ xử lý

Hình 4.30 Lưu đồ tổng quan GUI ĐỒ ÁN TỐT NGHIỆP 127

Cập nhật đơn hàng chưa xử lý vào danh sách đơn hàng chờ xử lý

Hiển thị đơn hàng đang xử lý

Robot di chuyển đến trạm hàng

Cánh tay robot gắp hàng

Xét xem còn trạm nào chưa tới không?

Xét xem có đơn mới không?

Cập nhật đơn mới vào danh sách đơn hàng chờ xử lý

Xét xem có đơn tồn không?

Hình 4.31 Lưu đồ chế độ Auto

CHƯƠNG 4 THI CÔNG HỆ THỐNG ĐỒ ÁN TỐT NGHIỆP 128

Nhập mã đơn ở thanh nhập 2

Xét thông tin ở thanh nhập 2

Hiển thị đơn hàng đang xử lý

Robot di chuyển đến trạm hàng

Cánh tay robot gắp hàng

Xét xem còn trạm chưa tới không?

Xét xem còn đơn nào chưa xử lý không?

Hình 4.32 Lưu đồ chế độ Manual ĐỒ ÁN TỐT NGHIỆP 129

Hình 4.33 Trang Signin Đây là trang đăng nhập cho giao diện người dùng, bao gồm 2 thanh nhập thông tin tài khoản người dùng và mật khẩu Nếu như nhập sai, thông báo người dùng được yêu cầu nhập lại hiện ra

CHƯƠNG 4 THI CÔNG HỆ THỐNG ĐỒ ÁN TỐT NGHIỆP 130

Hình 4.34 Đăng nhập thất bại

Hình 4.35 Đăng nhập thành công

Khi người dùng nhập đúng thì sẽ chuyển đến trang tiếp theo ĐỒ ÁN TỐT NGHIỆP 131

4.7.3 Trang Splash Đây là một trang phụ, chủ yếu để thể hiện việc khởi tạo giao diện người dùng, cập nhật dữ liệu và chuyển đến trang chính

4.7.4 Trang Products Đây là trang thể hiện thông tin các sản phẩm hiện có trong kho hàng Hai nút Back và

Next dùng để chuyển sang thông tin của sản phẩm khác

CHƯƠNG 4 THI CÔNG HỆ THỐNG ĐỒ ÁN TỐT NGHIỆP 132

4.7.5 Trang Database Đây là trang thể hiện thông tin các đơn hàng có trong cơ sở dữ liệu, Status là trạng thái đơn hàng, Order ID là mã đơn hàng, Date là thời gian đơn hàng được khởi tạo, Total Price là giá tiền tổng đơn hàng, Products là danh sách các sản phẩm mà đơn hàng muốn lấy

(theo thứ tự từ trái sang phải: tên sản phẩm, mã sản phẩm, số lượng sản phẩm cần lấy, giá tiền của sản phẩm)

4.7.6 Trang Observation Đây là trang mà nhóm hoạt động chính dùng để điều khiển cho hệ thống ĐỒ ÁN TỐT NGHIỆP 133

Khu vực Data Panel: Dùng để tương tác với cơ sở dữ liệu

- Nút Search: Dùng để tra cứu thông tin đơn hàng có trong database

- Nút Update: Dùng để thay đổi thông tin về số lượng đơn hàng khi người đặt hàng có nhu cầu thay đổi đơn hàng đã đặt

- Nút Delete: dùng để xóa một đơn hàng ra khỏi cơ sở dữ liệu

- Thanh nhập bên phải nút Delete: Dùng để chứa các thông tin cần tương tác, khi nhập xong thì nhấn 1 trong 3 nút để thực hiện yêu cầu

- Thanh [ -Order ID -]: Dùng để sổ danh sách các mã đơn hàng, giúp thuận tiện hơn trong việc tương tác, vì mã đơn hàng dài và không theo quy tắc

Khu vực Control Panel: Dùng để thực hiện việc điều khiển

- Nút Reset Mode: Dùng để thiết lập lại chế độ ban đầu khi muốn chuyển sang một chế độ khác

- Nút Auto Mode: Dùng để kích hoạt chế độ chạy lấy đơn tự động

- Nút Manual Mode: Dùng để kích hoạt chế độ lấy đơn theo ý muốn

- Thanh nhập bên phải nút Manual Mode: Dùng để chúa thông tin mã đơn hàng cần lấy, phục vụ cho chế độ lấy đơn theo ý muốn

CHƯƠNG 4 THI CÔNG HỆ THỐNG ĐỒ ÁN TỐT NGHIỆP 134

- Nút Forward, Backward, Left, Right, Stop: Dùng để điều khiển robot di chuyển theo hướng tiến, lùi, trái, phải và dừng (dùng cho việc test robot)

- Thanh nhập Joint 1, Joint 2, Joint 3: Dùng để cấp góc cho cánh tay robot di chuyển theo ý muốn (dùng cho việc test robot)

- Nút Send: Dùng để gửi dữ liệu góc lấy từ Thanh nhập Joint 1, Joint 2, Joint 3 và chuyển sang cho Arduino xử lý (dùng cho việc test robot)

- Nút On, Off: Dùng để bật và tắt máy bơm chân không, điều khiển việc hút vật (dùng cho việc test robot)

- Nút Home Call: Dùng để gọi robot về vị trí trạm Home (dùng cho việc test robot)

- Thanh Linear Velocity, Angular Velocity: Dùng để hiển thị thông tin về vận tốc tuyến tính và vận tốc góc của xe

Khu vực Camera: Dùng để hiển thị camera sử dụng cho việc gắp đơn hàng

Khu vực Processing Order: Dùng để hiển thị thông tin đơn hàng đang được robot xử lý, bảng gồm các thông tin như Name là tên sản phẩm, ID là mã loại hàng và Quantity là số lượng hàng cần lấy

4.7.7 Trang About Us Đây là trang hiển thị thông tin tác giả dự án ĐỒ ÁN TỐT NGHIỆP 135

Hình 4.40 Trang hiển thị thông tin

Khi nhấn biểu tượng Signout trên thanh menu sẽ hiển thị thông báo đăng xuất như hình dưới đây, chọn Yes hoặc No để xác nhận:

CHƯƠNG 4 THI CÔNG HỆ THỐNG ĐỒ ÁN TỐT NGHIỆP 136

Hình 4.41 Thông báo đăng xuất

KẾT QUẢ THỰC HIỆN

Kết quả mô phỏng

5.1.1 Mô phỏng thuật toán ACO trên phần mềm Matlab

Hình 5.1 Thuật toán ACO giải bài toán TSP cho 5 trạm

Hình 5.2 Thuật toán ACO giải bài toán TSP cho 10 trạm

CHƯƠNG 5 KẾT QUẢ THỰC HIỆN ĐỒ ÁN TỐT NGHIỆP 140

Bộ thông số ban đầu nhóm thiết lập cho thuật toán như sau: Điều kiện dừng miter = 100 , số lượng kiến trong quần thể m0, hệ số điều chỉnh ảnh hưởng của T ij là  =2, hệ số điều chỉnh ảnh hưởng của n ij là  = 4

Khoảng cách giữa các trạm được tính bằng công thức Euclidean

Do tính chất của bài toán TSP khi càng tăng số lượng trạm thì số lượng lời giải và thời gian tính toán cũng sẽ tăng theo, vì thế các kết quả được nhóm đưa ra chỉ đúng trong một số lượng trạm nhất định Việc giới hạn bài toán TSP cho số lượng trạm nhỏ hơn 10 trạm để đảm bảo tính chính xác cũng như mức độ mà đề tài đang thực hiện

5.1.2 Mô phỏng thuật toán Dijkstra’s trên phần mềm Matlab

Hình 5.3 Mô phỏng thuật toán Dijsktra’s trên Matlab khi không có vật cản

Kết quả mô phỏng: Thuật toán Dijkatra’s theo mô phỏng thì sẽ tính đường đi ngắn nhất (các đường thẳng đứt gạch) từ điểm có hình vuông màu đỏ đến điểm hình vuông màu xanh dương Với chi phí là 33.796 là số tốn ít nhất để từ điểm đỏ tới điểm xanh ĐỒ ÁN TỐT NGHIỆP 141

Hình 5.4 Mô phỏng thuật toán Dijsktra’s trên Matlab khi có vật cản

Nếu có vật cản đường đi sẽ được quy hoạch lại đường ngắn nhất, để tránh vật cản đồng thời cost thấp nhất và sẽ thay đổi quỹ đạo di chuyển đến điểm màu xanh

5.1.3 Mô phỏng thuật toán DWA

Mô phỏng Matlab Thuật toán DWA với vận tốc robot v max = 1.0m/s, tốc độ quay tối đa max 20.0 / 180 w =  rad/s, gia tốc a=0.2 m s / 2 , gia tốc góc  max = 50.0 * / 180 rad s / 2 , vị trí ban đầu là vị trí ở hình vuông màu đỏ và vị trí mong muốn là vị trí hình vuông màu xanh dương Từ hình mô phỏng ta thấy robot đã tránh được vật cản là những ô màu đen và đến được điểm mục tiêu cần đến

CHƯƠNG 5 KẾT QUẢ THỰC HIỆN ĐỒ ÁN TỐT NGHIỆP 142

Hình 5.5 Mô phỏng thuật toán DWA

5.1.4 Mô phỏng hệ hai bánh vi sai trên phần mềm Matlab

Mô phỏng hệ Non-holonomic (xe 2 bánh) với Matlab với 1 ô là 1 meters Xe chạy thẳng xe bắt đầu chạy từ điểm (0,0) tới điểm (3.8,3.9) trong thời gian từ 0 tới 5s, bước thời gian là 0.01s

Hình 5.6 Mô phỏng Matlab hệ non-holonomic với xe chạy thẳng ĐỒ ÁN TỐT NGHIỆP 143

Mô phỏng hệ non-holonomic với việc cho 2 bánh xe quay quanh trục chính Trục chính là điểm O(0,0) tại điểm đầu xe quay xung quanh điểm đó và điểm đó cũng là điểm ICC -

Instantaneous Center of Curvature Trong thời gian từ 0 đến 5s,và bước thời gian là 0.01s

Hình 5.7 Mô phỏng Matlab hệ non-holonomic với xe quay tại chỗ

5.1.5 Vẽ bản đồ bằng phương pháp Gmapping trong ROS Để thuận tiện cho việc mô phỏng, nhóm có sử dụng gói TurtleBot3 để thực hiện việc SLAM, kết hợp với package teleop_key để điều khiển robot

Hình 5.8 Bản đồ TurtleBot3 chưa được quét

CHƯƠNG 5 KẾT QUẢ THỰC HIỆN ĐỒ ÁN TỐT NGHIỆP 144

Hình 5.9 Bản đồ TurtleBot3 đã được quét

5.1.6 Bài toán TSP trong ROS

Nhóm cũng sẽ chạy TSP trên map TurtleBot3 đã được quét trước đó

Hình 5.10 Chạy TSP cho 5 trạm (5, 3, 7, 8, 1) trên map TurtleBot3

Hình 5.11 Lộ trình robot di chuyển khi thực hiện chạy TSP xong ĐỒ ÁN TỐT NGHIỆP 145

Ngày đăng: 26/09/2024, 11:07

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
[1] Komoda, K., Sugahara, A., Nakamoto, H., Ogawa, A., &amp; Hatanaka, Y. (2019). Mobile Picking-Robot having wide reach area for shelves. In 2019 IEEE/SICE International Symposium on System Integration (SII) (pp. 1-6). IEEE. DOI: 10.1109/SII.2019.8700409 Sách, tạp chí
Tiêu đề: 2019 IEEE/SICE International Symposium on System Integration (SII)
Tác giả: Komoda, K., Sugahara, A., Nakamoto, H., Ogawa, A., &amp; Hatanaka, Y
Năm: 2019
[3] Bao, L. G., Dang, T. G., &amp; Anh, N. D. (2019). Storage Assignment Policy and Route Planning of AGVS in Warehouse Optimization. In 2019 International Conference on System Science and Engineering (ICSSE) (pp. 1-6). IEEE. DOI:10.1109/ICSSE.2019.8823418 Sách, tạp chí
Tiêu đề: 2019 International Conference on System Science and Engineering (ICSSE)
Tác giả: Bao, L. G., Dang, T. G., &amp; Anh, N. D
Năm: 2019
[4] Nguyen, Q.-N., &amp; Pham, Q.-C. (2023). Planning optimal trajectories for mobile manipulators under end-effector trajectory continuity constraint. In Proceedings of the IEEE International Conference on Robotics and Automation (ICRA 2024). DOI:10.48550/arXiv.2309.12251 Sách, tạp chí
Tiêu đề: Proceedings of the IEEE International Conference on Robotics and Automation (ICRA 2024)
Tác giả: Nguyen, Q.-N., &amp; Pham, Q.-C
Năm: 2023
[5] Melo, L. F. de, &amp; Mangili Junior, J. F. (2010). Trajectory planning for nonholonomic mobile robot using extended Kalman filter. Journal of Control, Automation and Electrical Systems, 21(4), 373-387. DOI: 10.1007/s40313-010-0011-2 Sách, tạp chí
Tiêu đề: Journal of Control, Automation and Electrical Systems
Tác giả: Melo, L. F. de, &amp; Mangili Junior, J. F
Năm: 2010
[6] Yan, J., Zlatanova, S., Lee, J. B., &amp; Liu, Q. (2021). Indoor Traveling Salesman Problem (ITSP) Path Planning. ISPRS Int. J. Geo-Inf., 10(9), 616. DOI: 10.3390/ijgi10090616 Sách, tạp chí
Tiêu đề: ISPRS Int. J. Geo-Inf
Tác giả: Yan, J., Zlatanova, S., Lee, J. B., &amp; Liu, Q
Năm: 2021
[7] Dorigo, M., Maniezzo, V., &amp; Colorni, A. (1996). Ant system: optimization by a colony of cooperating agents. IEEE Trans. Syst. Man Cybern. Part B Cybern., 26(1), 29-41. DOI:10.1109/3477.484436 Sách, tạp chí
Tiêu đề: IEEE Trans. Syst. Man Cybern. Part B Cybern
Tác giả: Dorigo, M., Maniezzo, V., &amp; Colorni, A
Năm: 1996
[10] Fox, D., Burgard, W., &amp; Thrun, S. (1997). The dynamic window approach to collision avoidance. IEEE, pp. 23-33. DOI: 10.1109/100.580977 Sách, tạp chí
Tiêu đề: IEEE
Tác giả: Fox, D., Burgard, W., &amp; Thrun, S
Năm: 1997
[11] Ahmad Abu Hatab, Rached Dhaouadi (2013). "Dynamic Modelling of Differential- Drive Mobile Robots using Lagrange and Newton-Euler Methodologies: A Unified Framework", Adv Robot Autom, vol. 2013, pp. 1-7 Sách, tạp chí
Tiêu đề: Dynamic Modelling of Differential-Drive Mobile Robots using Lagrange and Newton-Euler Methodologies: A Unified Framework
Tác giả: Ahmad Abu Hatab, Rached Dhaouadi
Năm: 2013
[12] Sandeep Kumar Malu &amp; Jharna Majumdar (2014). "Kinematics, Localization and Control of Differential Drive Mobile Robot", Robotics &amp; Nano-Tech, vol. 14, issue 1, version 1.0, Global Journals Inc., pp. 1-7 Sách, tạp chí
Tiêu đề: Kinematics, Localization and Control of Differential Drive Mobile Robot
Tác giả: Sandeep Kumar Malu &amp; Jharna Majumdar
Năm: 2014
[13] Nguyễn Thị Phương Hà và Huỳnh Thái Hoàng (2005). "Lý thuyết điều khiển tự động", Nhà xuất bản Đại học quốc gia, TP. Hồ Chí Minh Sách, tạp chí
Tiêu đề: Lý thuyết điều khiển tự động
Tác giả: Nguyễn Thị Phương Hà và Huỳnh Thái Hoàng
Nhà XB: Nhà xuất bản Đại học quốc gia
Năm: 2005
[14] C. Knospe (2006). "PID control", IEEE Control Systems Magazine, vol. 26, issue 1, February 2006, pp. 30-31. IEEE. DOI: 10.1109/MCS.2006.1580151 Sách, tạp chí
Tiêu đề: PID control
Tác giả: C. Knospe
Năm: 2006
[15] Sumegh Pramod Thale, Mihir Mangesh Prabhu, Pranjali Vinod Thakur, Pratik Kadam (2020). "ROS based SLAM implementation for Autonomous navigation using Turtlebot", Dept. of Electronics Engg, Ramrao Adik Institute of Technology, Navi Mumbai, India Sách, tạp chí
Tiêu đề: ROS based SLAM implementation for Autonomous navigation using Turtlebot
Tác giả: Sumegh Pramod Thale, Mihir Mangesh Prabhu, Pranjali Vinod Thakur, Pratik Kadam
Năm: 2020
[16] Safdar Zaman, Wolfgang Slany, Gerald Steinbauer-Wagner (May 2011). "ROS- based mapping, localization and autonomous navigation using a Pioneer 3-DX robot and their relevant issues", Electronics, Communications and Photonics Conference (SIECPC), 2011 Saudi International, IEEE Xplore, DOI: 10.1109/SIECPC.2011.5876943 Sách, tạp chí
Tiêu đề: ROS-based mapping, localization and autonomous navigation using a Pioneer 3-DX robot and their relevant issues
[17] Haisheng Song, Deyang Zhang (November 2023). "Robot Path Planning Algorithm based on Improved A* and DWA", Frontiers in Computing and Intelligent Systems, vol. 6, issue 1, pp. 37-41. DOI: 10.54097/fcis.v6i1.07 Sách, tạp chí
Tiêu đề: Robot Path Planning Algorithm based on Improved A* and DWA
[19] Minhang Zhou, Nina Gao (2019). "Research on Optimal Path based on Dijkstra Algorithms", 3rd International Conference on Mechatronics Engineering and Information Technology (ICMEIT 2019), Advances in Computer Science Research, vol. 87 Sách, tạp chí
Tiêu đề: Research on Optimal Path based on Dijkstra Algorithms
Tác giả: Minhang Zhou, Nina Gao
Năm: 2019
[20] Yumeng Yan (April 2023). "Research on the A Star Algorithm for Finding Shortest Path", Highlights in Science Engineering and Technology, vol. 46, pp. 154-161. DOI Sách, tạp chí
Tiêu đề: Research on the A Star Algorithm for Finding Shortest Path
[21] Daniel Foead, Alifio Ghifari, Marchel Budi Kusuma, Novita Hanafiah (January 2021). "A Systematic Literature Review of A* Pathfinding", Procedia Computer Science, vol. 179, pp. 507-514. DOI: 10.1016/j.procs.2021.01.034. License: CC BY-NC-ND 4.0 Sách, tạp chí
Tiêu đề: A Systematic Literature Review of A* Pathfinding
[22] Ulrich H.E. Hansmann, Yuko Okamoto (April 1999). "New Monte Carlo algorithms for protein folding", Current Opinion in Structural Biology, vol. 9, issue 2, pp. 177-183 Sách, tạp chí
Tiêu đề: New Monte Carlo algorithms for protein folding
[23] Alexander Sumbatov (January 2002). "Nonholonomic systems", Regular and Chaotic Dynamics, vol. 7, issue 2, pp. x-y. DOI: 10.1070/RD2002v007n02ABEH000206 Sách, tạp chí
Tiêu đề: Nonholonomic systems
[8] Lê Thị Ngọc Vân, Nguyễn Dũng, &amp; Trần Huệ Chi. (2019). Improve the Ant Colony algorithm to solve travelling salesman problem. Khoa Công nghệ Thông tin, Trường Đại Khác

HÌNH ẢNH LIÊN QUAN

Hình 2.8. ROS Computation Graph Level - thiết kế và điều khiển cánh tay robot kết hợp xe tự hành lấy hàng theo đơn trong môi trường nhà kho
Hình 2.8. ROS Computation Graph Level (Trang 50)
Hình 2.19. Mô hình gói Navigation Stack - thiết kế và điều khiển cánh tay robot kết hợp xe tự hành lấy hàng theo đơn trong môi trường nhà kho
Hình 2.19. Mô hình gói Navigation Stack (Trang 64)
Hình 2.23. Giao diện làm việc chính của EmailJS - thiết kế và điều khiển cánh tay robot kết hợp xe tự hành lấy hàng theo đơn trong môi trường nhà kho
Hình 2.23. Giao diện làm việc chính của EmailJS (Trang 68)
Hình 3.3. Bản vẽ và kích thước phần thùng chứa hàng và vỏ hông xe - thiết kế và điều khiển cánh tay robot kết hợp xe tự hành lấy hàng theo đơn trong môi trường nhà kho
Hình 3.3. Bản vẽ và kích thước phần thùng chứa hàng và vỏ hông xe (Trang 83)
Hình 3.20. Chu vi 82.94mm đường tròn mặt sau phần trên khớp 1 - thiết kế và điều khiển cánh tay robot kết hợp xe tự hành lấy hàng theo đơn trong môi trường nhà kho
Hình 3.20. Chu vi 82.94mm đường tròn mặt sau phần trên khớp 1 (Trang 91)
Hình 3.27. Đường kính 42.2mm mặt tròn lớn và được khoét sâu 2.2mm mặt sau bánh - thiết kế và điều khiển cánh tay robot kết hợp xe tự hành lấy hàng theo đơn trong môi trường nhà kho
Hình 3.27. Đường kính 42.2mm mặt tròn lớn và được khoét sâu 2.2mm mặt sau bánh (Trang 95)
Hình 3.30. Các thành phần bên ngoài của driver - thiết kế và điều khiển cánh tay robot kết hợp xe tự hành lấy hàng theo đơn trong môi trường nhà kho
Hình 3.30. Các thành phần bên ngoài của driver (Trang 97)
Hình 3.31. Kích thước các góc nhìn của mặt trên phần đứng yên - thiết kế và điều khiển cánh tay robot kết hợp xe tự hành lấy hàng theo đơn trong môi trường nhà kho
Hình 3.31. Kích thước các góc nhìn của mặt trên phần đứng yên (Trang 98)
Hình 3.33. Kích thước các góc nhìn mặt dưới của phần chuyển động - thiết kế và điều khiển cánh tay robot kết hợp xe tự hành lấy hàng theo đơn trong môi trường nhà kho
Hình 3.33. Kích thước các góc nhìn mặt dưới của phần chuyển động (Trang 99)
Hình 3.37. Kích thước khớp nối động cơ và khớp nối trên cùng của driver khớp 2 và 3 - thiết kế và điều khiển cánh tay robot kết hợp xe tự hành lấy hàng theo đơn trong môi trường nhà kho
Hình 3.37. Kích thước khớp nối động cơ và khớp nối trên cùng của driver khớp 2 và 3 (Trang 102)
Hình 3.38. Kích thước khớp nối của bánh rang với độ lệch trục 1mm - thiết kế và điều khiển cánh tay robot kết hợp xe tự hành lấy hàng theo đơn trong môi trường nhà kho
Hình 3.38. Kích thước khớp nối của bánh rang với độ lệch trục 1mm (Trang 103)
Hình 3.51. Máy tính AI Jetson Nano Dev Kit With 16GB EMMC - thiết kế và điều khiển cánh tay robot kết hợp xe tự hành lấy hàng theo đơn trong môi trường nhà kho
Hình 3.51. Máy tính AI Jetson Nano Dev Kit With 16GB EMMC (Trang 116)
Hình 3.56. Máy bơm chân không - thiết kế và điều khiển cánh tay robot kết hợp xe tự hành lấy hàng theo đơn trong môi trường nhà kho
Hình 3.56. Máy bơm chân không (Trang 122)
Hình 4.8. Bộ lọc hạt PF - thiết kế và điều khiển cánh tay robot kết hợp xe tự hành lấy hàng theo đơn trong môi trường nhà kho
Hình 4.8. Bộ lọc hạt PF (Trang 134)
Hình 4.40. Trang hiển thị thông tin - thiết kế và điều khiển cánh tay robot kết hợp xe tự hành lấy hàng theo đơn trong môi trường nhà kho
Hình 4.40. Trang hiển thị thông tin (Trang 163)

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

  • Đang cập nhật ...

TÀI LIỆU LIÊN QUAN

w