1. Trang chủ
  2. » Luận Văn - Báo Cáo

Thiết kế, chế tạo mobile robot hỗ trợ quảng bá thông tin và giao nhận tài liệu tại các gian hàng trong sự kiện - triển lãm

152 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ế, Chế Tạo Mobile Robot Hỗ Trợ Quảng Bá Thông Tin Và Giao Nhận Tài Liệu Tại Các Gian Hàng Trong Sự Kiện - Triển Lãm
Tác giả Đỗ Ngọc Hiếu, Lê Tiến Đạt, Huỳnh Quốc Dân
Người hướng dẫn ThS. Nguyễn Lê Tường
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 Cơ Điện Tử
Thể loại Đồ Án Tốt Nghiệp
Năm xuất bản 2024
Thành phố TP. Hồ Chí Minh
Định dạng
Số trang 152
Dung lượng 8,2 MB

Cấu trúc

  • CHƯƠNG 1: GIỚI THIỆU (21)
    • 1.1. Lý do chọn đề tài (21)
    • 1.2. Mục tiêu nghiên cứu của đề tài (21)
    • 1.3. Đối tượng, phạm vi nghiên cứu và giới hạn đề tài (21)
      • 1.3.1. Đối tượng nghiên cứu (21)
      • 1.3.2. Phạm vi nghiên cứu (21)
      • 1.3.3. Giới hạn đề tài (22)
    • 1.4. Phương pháp nghiên cứu (22)
    • 1.5. Kết cấu đồ án (22)
  • CHƯƠNG 2: CƠ SỞ LÝ THUYẾT (23)
    • 2.1. Tổng quan Mobile Robot (23)
    • 2.2. Tổng quan về giao tiếp truyền thông (25)
      • 2.2.1. Giao tiếp UART (26)
      • 2.2.2. Giao tiếp I2C (28)
    • 2.3. Giới thiệu về công nghệ LiDAR (31)
    • 2.4. Bộ điều khiển PID (31)
      • 2.4.1. Định nghĩa (31)
      • 2.4.2. Tổng quan sơ đồ điều khiển (32)
      • 2.4.3. Tính toán PID số (32)
    • 2.5. Điều khiển Robot sử dụng ROS (34)
      • 2.5.1. Tổng quan về ROS (34)
      • 2.5.2. Sự cần thiết của ROS (36)
      • 2.5.3. Các cấp độ khái niệm trong ROS (36)
      • 2.5.4. Tạo lập bản đồ với công nghệ SLAM (39)
      • 2.5.5. Định vị và điều hướng Robot ứng dụng ROS Navigation Stack (42)
    • 2.6. Thuật toán sử dụng cho Local và Global Path Planning (45)
      • 2.6.1. Thuật toán Dynamic Window Approach (DWA) (45)
      • 2.6.2. Thuật toán Dijkstra (48)
  • CHƯƠNG 3: TÍNH TOÁN, THIẾT KẾ PHẦN CỨNG HỆ THỐNG (56)
    • 3.1. Yêu cầu đặt ra và các thông số ban đầu (56)
    • 3.2. Tính toán, lựa chọn, thiết kế cơ khí (56)
      • 3.2.1. Lựa chọn cơ cấu di chuyển (56)
      • 3.2.2. Động học cho Robot (60)
      • 3.2.3. Lựa chọn cơ cấu truyền động (64)
      • 3.2.4. Tính toán, lựa chọn động cơ (65)
      • 3.2.5. Tính chọn đường kính trục (69)
      • 3.2.6. Lựa chọn ổ lăn (70)
      • 3.2.7. Tính toán bộ truyền đai (73)
      • 3.2.8. Chọn bánh xe dẫn hướng (75)
      • 3.2.9. Lựa chọn Encoder (76)
      • 3.2.10. Lựa chọn LiDAR (77)
      • 3.2.11. Thiết kế phần đế (78)
      • 3.2.12. Thiết kế phần thân (82)
      • 3.2.13. Thiết kế phần đầu Robot (83)
      • 3.2.14. Thiết kế tổng thể Robot (86)
    • 3.3. Thiết kế hệ thống điện (87)
      • 3.3.1. Yêu cầu đặt ra (87)
      • 3.3.2. Sơ đồ khối tổng quát phần điện (87)
      • 3.3.3. Sơ đồ chi tiết phần điện (96)
      • 3.3.4. Thiết kế bo mạch (98)
  • CHƯƠNG 4: THI CÔNG LẮP RÁP HOÀN THIỆN PHẦN CỨNG ROBOT (106)
    • 4.1. Phần cơ khí (106)
      • 4.1.1. Phần khung (106)
      • 4.1.2. Phần vỏ (108)
    • 4.2. Phần điện (111)
  • CHƯƠNG 5: THIẾT KẾ CHƯƠNG TRÌNH ĐIỀU KHIỂN (113)
    • 5.1. Cách thức hoạt động của Robot (113)
    • 5.2. Chương trình điều khiển trên Raspberry Pi (116)
    • 5.3. Chương trình điều khiển trên STM32 (119)
      • 5.3.1. Nhận dạng động cơ (119)
      • 5.3.2. Thuật toán điều khiển (121)
    • 5.4. Thiết kế giao diện Web Server giao tiếp với Robot và tương tác với người dùng (123)
  • CHƯƠNG 6: KẾT QUẢ THỰC NGHIỆM (129)
    • 6.1. Phần cơ khí (129)
    • 6.2. Phần điều khiển (133)
      • 6.2.1. Thực nghiệm lấy bản đồ (133)
      • 6.2.2. Thực nghiệm độ chính xác từ điểm tới điểm (136)
      • 6.2.3. Thực nghiệm khoảng cách an toàn của Robot so với vật cản (144)
      • 6.2.4. Thực nghiệm quá trình vận hành của Robot phỏng theo môi trường trong sự kiện/triển lãm (145)
    • 6.3. Khảo sát dung lượng nguồn điện - Pin (145)
  • CHƯƠNG 7: KẾT LUẬN - HƯỚNG PHÁT TRIỂN (147)
    • 7.1. Kết luận (147)
    • 7.2. Hướng phát triển (148)
  • TÀI LIỆU THAM KHẢO (150)

Nội dung

i LỜI CAM KẾT Tên đề tài: “Thiết kế, chế tạo Mobile Robot hỗ trợ quảng bá thông tin và giao nhận tài liệu tại các gian hàng trong sự kiện/triển lãm.” Giảng viên hướng dẫn: Th.S Nguyễn L

GIỚI THIỆU

Lý do chọn đề tài

Sự kiện và triển lãm thu hút lượng lớn người tham dự, tạo ra nhu cầu cao về thông tin và tài liệu liên quan đến gian hàng và sản phẩm Tuy nhiên, quy trình dành cho nhà trưng bày thường phức tạp, dẫn đến việc cung cấp thông tin và xử lý tài liệu thủ công trở nên tốn thời gian và công sức, nhưng hiệu quả lại không cao Để giải quyết vấn đề này, nhóm tác giả đã quyết định thực hiện đề tài “Thiết kế, chế tạo”.

Mobile Robot hỗ trợ quảng bá thông tin và giao nhận tài liệu tại các gian hàng trong sự kiện/triển lãm.”

Mục tiêu nghiên cứu của đề tài

- Thiết kế, chế tạo Mobile Robot với mục đích ứng dụng trong sự kiện/triển lãm

- Hoàn thiện Robot về cơ khí, điều khiển, hệ thống điện và phần mềm

- Khả năng di chuyển tự động, tránh né vật cản của Robot trong các điều kiện cụ thể

- Tạo giao diện thân thiện cho phép khách tham quan tham khảo thông tin về hội thảo, sự kiện sắp diễn ra

- Tạo giao diện Web Server thuận tiện để người vận hành dễ dàng thao tác, kiểm tra.

Đối tượng, phạm vi nghiên cứu và giới hạn đề tài

- Môi trường sự kiện/triển lãm - khu vực hoạt động của Robot

- Mobile Robot hai bánh vi sai, về cấu trúc và các thành phần của Robot

- Hệ thống điều khiển và cảm biến LiDAR

- Quy trình cấp phát giấy tờ trong sự kiện/triển lãm

Thiết kế và chế tạo robot di động phục vụ trong các triển lãm, với nhiệm vụ chính là cung cấp thông tin cho người tham quan và phát giấy tờ cho các nhà trưng bày.

- Đề tài không tập trung nghiên cứu cách thức xử lý chống nhiễu cho các cảm biến

- Robot chỉ hoạt động được trên bề mặt bằng phẳng

- Khu vực thực hiện nghiên cứu tại trường Đại học Sư Phạm Kỹ Thuật TP.HCM.

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

- Xác định mục tiêu đề tài

- Nghiên cứu về các cơ sở lý thuyết liên quan

- Thiết kế, chế tạo Robot

- Thiết lập môi trường thử nghiệm

- Thu thập dữ liệu và đưa ra kết luận

- Đề ra phương án cải tiến, phát triển.

Kết cấu đồ án

Nội dung đề tài gồm các phần như sau:

CHƯƠNG 1: GIỚI THIỆU: Giới thiệu tổng quan về đề tài như lý do chọn đề tài, mục tiêu nghiên cứu, đối tượng và phạm vi nghiên cứu, phương pháp nghiên cứu.

CHƯƠNG 2: CƠ SỞ LÝ THUYẾT: Các lý thuyết được ứng dụng trong Robot như bộ điều khiển PID, các chuẩn giao tiếp UART, I2C, điều khiển Robot sử dụng ROS,

CHƯƠNG 3: THIẾT KẾ, THI CÔNG PHẦN CỨNG HỆ THỐNG: Tính toán, lựa chọn linh kiện cho cơ cấu, dựng kết cấu Robot bằng phần mềm Solidworks, thi công lắp ráp Robot

CHƯƠNG 4: THIẾT KẾ CHƯƠNG TRÌNH ĐIỀU KHIỂN: Phát triển chương trình điều khiển Robot và tối ưu hóa khả năng lập bản đồ và di chuyển tự động an toàn trong môi trường thực tế

CHƯƠNG 5: KẾT QUẢ THỰC NGHIỆM: Trình bày những kết quả về phần mềm và phần cứng của Robot.

CHƯƠNG 6: KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN: Kết luận và phương hướng phát triển Robot

CƠ SỞ LÝ THUYẾT

Tổng quan Mobile Robot

Robot di động là một loại máy tự động có khả năng di chuyển trong môi trường của nó, hoạt động tự chủ hoặc được điều khiển từ xa Chúng được ứng dụng rộng rãi trong các lĩnh vực như sản xuất, nông nghiệp, thăm dò, cứu hộ và giải trí.

Hình 2.1 Mobile Robot hỗ trợ các thí nghiệm công nghệ nông nghiệp trên đồng ruộng (Nguồn: PHYSORG)

Các thành phần chính của Mobile Robot

Một Mobile Robot hoàn chỉnh bao gồm nhiều thành phần quan trọng, trong đó không thể thiếu các yếu tố như thân robot, hệ thống điều khiển, cảm biến và cơ cấu chấp hành.

Thân Robot là khung cấu trúc cơ bản của Robot, được thiết kế để:

- Chứa và bảo vệ các thành phần khác của Robot như hệ thống điều khiển, cảm biến, bộ truyền động, nguồn năng lượng

- Cung cấp khung đỡ cho các bộ phận khác hoạt động

Chất liệu chế tạo thân Robot thường là kim loại (nhôm, thép), nhựa hoặc composite Thiết kế thân Robot phụ thuộc vào nhiều yếu tố như:

- Loại Robot (Robot bánh xe, Robot chân, Robot bay, v.v.)

- Môi trường hoạt động (mặt đất, nước, không khí)

- Khả năng di chuyển (nhanh, chậm, leo dốc, v.v.)

- Tải trọng (mang vác vật liệu, người)

Hệ thống điều khiển là "bộ não" của Robot, chịu trách nhiệm:

- Thu thập thông tin từ các cảm biến về môi trường xung quanh

- Xử lý thông tin và đưa ra quyết định điều khiển phù hợp

- Gửi tín hiệu điều khiển đến các bộ truyền động để Robot vận hành

Hệ thống điều khiển thường bao gồm:

- Vi xử lý (Microcontroller hoặc Computer): Chịu trách nhiệm thực hiện các phép tính và đưa ra quyết định

- Phần mềm điều khiển: Cung cấp các thuật toán để xử lý thông tin và điều khiển Robot

- Giao diện người dùng: Cho phép người dùng điều khiển Robot, cung cấp hoặc giám sát thông tin Robot

Cảm biến là thiết bị quan trọng giúp Robot thu thập thông tin về môi trường xung quanh, từ đó nhận thức vị trí, hướng di chuyển, vật cản và các yếu tố khác Trong Mobile Robot, có nhiều loại cảm biến khác nhau được sử dụng để nâng cao khả năng hoạt động và tương tác với môi trường.

- Camera: Chụp ảnh và video để Robot nhận biết hình ảnh và vật thể

- Cảm biến LiDAR (Light Detection and Ranging): Sử dụng tia laser để đo khoảng cách đến các vật thể

- Cảm biến siêu âm: Sử dụng sóng âm thanh để đo khoảng cách đến các vật thể

- Cảm biến IMU (Inertial Measurement Unit): Đo lường gia tốc, tốc độ và hướng di chuyển của Robot

- Cảm biến lực (Loadcell): Đo lường lực tác động lên Robot

- Cảm biến nhiệt độ: Đo lường nhiệt độ môi trường

• Bộ truyền động, cơ cấu chấp hành:

Bộ truyền động là thiết bị quan trọng giúp Robot di chuyển và thực hiện các hành động khác nhau Trong Mobile Robot, có nhiều loại bộ truyền động khác nhau được sử dụng để tối ưu hóa hiệu suất và khả năng hoạt động.

- Động cơ điện: Cung cấp lực để di chuyển Robot

- Servo: Điều khiển chuyển động của các khớp Robot với độ chính xác cao

- Van thủy lực hay khí nén: Điều khiển chuyển động của các khớp Robot sử dụng lực thủy lực hoặc lực khí nén

- Cánh quạt: Tạo lực đẩy để Robot bay hoặc bơi

Nguồn cung cấp năng lượng cho tất cả các thành phần của Robot hoạt động

Có nhiều loại nguồn năng lượng khác nhau được sử dụng trong Mobile Robot, bao gồm: Pin, Ắc quy, Điện lưới, Pin năng lượng mặt trời, [2]

Tổng quan về giao tiếp truyền thông

Trong lĩnh vực điện tử, giao tiếp truyền thông là quá trình trao đổi dữ liệu giữa các thiết bị hoặc hệ thống, bao gồm việc gửi, nhận và xử lý tín hiệu điện hoặc kỹ thuật số Quá trình này đảm bảo truyền tải thông tin một cách chính xác và hiệu quả, và có thể được thực hiện thông qua các phương pháp có dây và không dây.

Giao tiếp có dây là phương pháp sử dụng cáp như Ethernet, USB và các giao thức truyền thông serial như UART, SPI, I2C Những giao thức này quy định cách dữ liệu được mã hóa, truyền tải và nhận giữa các thiết bị, đảm bảo sự đồng bộ và chính xác trong quá trình giao tiếp.

Giao tiếp không dây sử dụng sóng điện từ như Wi-Fi, Bluetooth và NFC để truyền dữ liệu mà không cần dây dẫn Phương pháp này cho phép kết nối các thiết bị ở khoảng cách xa, nâng cao tính di động và tiện lợi trong việc sử dụng công nghệ.

Hiệu quả của giao tiếp truyền thông điện tử phụ thuộc vào tốc độ truyền tải, độ tin cậy và khả năng chống nhiễu của hệ thống Các hệ thống phức tạp như mạng IoT, hệ thống điều khiển công nghiệp và thiết bị thông minh hiện đại đều dựa vào giao tiếp truyền thông để vận hành hiệu quả.

2.2.1 Giao tiếp UART a Tổng quan

UART (Bộ nhận/Truyền không đồng bộ phổ quát) là một giao thức truyền nhận điểm đến điểm phổ biến, cho phép truyền dữ liệu liên tục giữa các thiết bị chỉ với hai dây dẫn Giao thức UART hoạt động với một tốc độ truyền duy nhất cho cả thiết bị gửi và nhận, mà không cần sử dụng xung clock.

The UART protocol requires a transmitter, receiver, and connecting wires to function effectively The transmitter converts parallel data from the system into a continuous serial signal, transmitting it bit by bit Meanwhile, the receiver captures this data one bit at a time through the connection, identifies the boundaries between data frames, and converts the data back into parallel format for the system's use.

Hình 2.2 Sơ đồ nối dây trong giao thức UART

7 c Định dạng khung dữ liệu trong UART

Hình 2.3 Khung dữ liệu trong giao thức UART

Trong giao tiếp UART, một gói dữ liệu thường có kích thước một byte, kèm theo các bit bổ sung để hỗ trợ đồng bộ dữ liệu và xử lý lỗi Trước khi gói dữ liệu được gửi, dây dẫn sẽ ở trạng thái mặc định mức cao.

• Start bit: Có 1 bit Chuyển đổi từ mức cao sang mức thấp Bit này có vai trò báo hiệu sự bắt đầu của gói dữ liệu được truyền

Trong giao tiếp UART, dữ liệu thường được truyền dưới dạng các bit, thường là 7, 8 hoặc 9 bit Những bit này chứa thông tin có ý nghĩa và được gửi đi liên tiếp, với bit có trọng số thấp được truyền trước.

Bit chẵn lẻ, hay còn gọi là parity bit, là một bit không bắt buộc nhưng có vai trò quan trọng trong việc phát hiện lỗi trong quá trình giao tiếp Cách thức đặt bit này phụ thuộc vào loại bộ kiểm tra chẵn lẻ được sử dụng.

Stop bits có thể là 1 hoặc nhiều bit, được chuyển từ mức thấp lên mức cao hoặc giữ trạng thái cao, phù hợp với trạng thái mặc định của dây dẫn Chúng đóng vai trò như khoảng chờ để Bộ nhận tín hiệu sẵn sàng nhận gói dữ liệu tiếp theo trong giao thức UART.

Giao thức UART hoạt động mà không cần xung clock, mà thay vào đó, tốc độ truyền của cả bộ phận nhận và phát tín hiệu được thiết lập giống nhau Tốc độ truyền được đo bằng bit trên giây, với một số tốc độ truyền phổ biến thường được sử dụng trong giao thức UART.

4800, 9600, 19200, 57600, 115200 Tốc độ cao nhất có thể truyền với UART có thể lên tới 1500000 bit/s e Ưu và nhược điểm của giao thức UART Ưu điểm:

• Giá thành không đắt Dễ thay đổi, sửa chữa

• Chỉ yêu cầu 2 dây kết nối

• Khoảng cách truyền tải không được xa do chống nhiễu kém

• Dễ dẫn đến lỗi về đồng bộ hóa do không sử dụng xung tín hiệu

• Tốc độ truyền tải khá chậm khi so với các kiểu giao tiếp khác

2.2.2 Giao tiếp I2C a Tổng quan về giao thức I2C

Giao thức I2C là một chuẩn giao tiếp sử dụng xung đồng bộ, cho phép kết nối nhiều thiết bị điều khiển chỉ với hai dây dẫn, do đó rất phổ biến trong giao tiếp giữa vi điều khiển và các thiết bị ngoại vi I2C sử dụng xung clock để đồng bộ hóa dữ liệu truyền giữa các thiết bị, với hai dây nối chính là SDA (dữ liệu) và SCL (tín hiệu xung đồng bộ).

Hình 2.4 Nối dây trong giao tiếp I2C

Trong mạng I2C, có thể có nhiều thiết bị điều khiển (master) và thiết bị tớ (slave) được kết nối qua hai dây dẫn Thiết bị điều khiển thực hiện vai trò xuất xung đồng bộ trên dây SCL, trong khi cả thiết bị điều khiển và thiết bị tớ đều có khả năng gửi dữ liệu trên dây SDA Cả hai dây SDA và SCL đều được nối với nguồn chung thông qua điện trở.

9 b Khung dữ liệu trong giao thức I2C

Hình 2.5 Khung địa chỉ và dữ liệu trong giao tiếp I2C

Quy trình giao tiếp I2C bắt đầu khi thiết bị điều khiển kéo đường dữ liệu (SDA) xuống thấp trước, sau đó kéo đường đồng hồ (SCL) xuống thấp Hành động này cho phép thiết bị điều khiển chiếm quyền sử dụng bus I2C mà không gặp xung đột với các thiết bị điều khiển khác.

Truyền Địa chỉ Thiết bị:

Mỗi thiết bị I2C có một địa chỉ I2C riêng biệt, cho phép thiết bị điều khiển giao tiếp với thiết bị đích cụ thể bằng cách sử dụng địa chỉ này để gửi hoặc nhận dữ liệu Địa chỉ I2C gồm 7 bit, hỗ trợ tối đa 128 địa chỉ khác nhau trên bus, nhưng một số địa chỉ được dành riêng cho các mục đích đặc biệt, do đó số lượng thiết bị kết nối thực tế có thể bị hạn chế Trong quá trình truyền dữ liệu, địa chỉ được gửi qua đường SDA như dữ liệu, trong khi SCL cung cấp xung nhịp.

Xác nhận Truyền Dữ Liệu:

Giới thiệu về công nghệ LiDAR

LiDAR (Light Detection and Ranging) là công nghệ sử dụng tia laser để đo khoảng cách và tạo hình ảnh 2 chiều của môi trường Bằng cách phát tia laser và đo thời gian phản xạ từ các bề mặt, LiDAR cung cấp dữ liệu chính xác về vị trí và khoảng cách của các đối tượng.

Hệ thống LiDAR phát ra hàng ngàn tia laser mỗi giây, và khi các tia này va chạm với vật thể, chúng sẽ phản xạ trở lại máy thu Thời gian giữa việc phát tia và nhận phản xạ được sử dụng để tính toán khoảng cách từ nguồn phát đến đối tượng Ứng dụng của công nghệ này rất đa dạng.

Công nghệ LiDAR có nhiều ứng dụng trong các lĩnh vực khác nhau:

LiDAR là công nghệ tiên tiến được áp dụng trong địa lý và khảo sát, cho phép tạo ra bản đồ địa hình chi tiết Nhờ vào đó, các nhà khoa học và kỹ sư có thể lập kế hoạch và quản lý đất đai một cách hiệu quả hơn.

LiDAR đóng vai trò quan trọng trong giao thông và phương tiện tự lái, giúp xe tự lái nhận diện chướng ngại vật và môi trường xung quanh, từ đó nâng cao khả năng điều hướng và đảm bảo an toàn.

• Kiến trúc và xây dựng: LiDAR hỗ trợ việc thiết kế và quản lý các công trình xây dựng bằng cách cung cấp dữ liệu 3D chính xác.

Bộ điều khiển PID

PID (Proportional Integral Derivative) is a feedback control mechanism widely used in modern industrial control systems.

Bộ điều khiển PID thường được ứng dụng trong các hệ thống điều khiển vòng kín với tín hiệu phản hồi Chức năng chính của PID là tính toán giá trị sai số, được xác định bằng hiệu số giữa giá trị đo thực tế và giá trị đặt mong muốn.

Bộ thiết bị này tối ưu hóa việc giảm sai số bằng cách điều chỉnh giá trị điều khiển đầu vào Để đạt hiệu quả mong muốn từ thông số PID, cần thực hiện điều chỉnh phù hợp với tính chất của hệ thống.

Hình 2.6 Tổng quan đáp ứng của bộ điều khiển PID (Nguồn: Medium)

2.4.2 Tổng quan sơ đồ điều khiển

Bộ điều khiển PID sử dụng ba thông số chính: tỉ lệ (P), tích phân (I) và đạo hàm (D) Tỉ lệ xác định ảnh hưởng của sai số hiện tại, tích phân tính toán tổng các sai số trong quá khứ, và đạo hàm đo lường tốc độ thay đổi của sai số Ba yếu tố này kết hợp để điều chỉnh quá trình thông qua các thiết bị như van điều khiển hoặc bộ nguồn của phần tử gia nhiệt.

Hình 2.7 Tổng quan sơ đồ khối bộ điều khiển PID (Nguồn: Processinstruments)

Khâu P, hay còn gọi là độ lợi, là yếu tố quyết định sự thay đổi của giá trị đầu ra dựa trên giá trị sai số hiện tại Tỉ lệ đáp ứng có thể được điều chỉnh bằng cách nhân sai số với một hằng số nhất định.

Kp, được gọi là độ lợi tỉ lệ

Khâu D là tích phân của thời gian sai lệch khi lấy mẫu, cho thấy tổng sai số tức thời theo thời gian và tích lũy trong quá khứ Khi thời gian lấy mẫu T càng nhỏ, tác động điều chỉnh của tích phân càng mạnh.

Khâu I: Là vi phân của sai lệch Tạo ra tín hiệu điều chỉnh cho tỉ lệ với tốc độ thay đổi sai lệch đầu vào Thời gian càng lớn thì phạm vi điều chỉnh càng mạnh

Có 3 cách để tính cho khâu I:

• Tích phân lùi (a), tích phân tiến (b) và tích phân hình thang (c)

Hình 2.8 Cách tính cho khâu I a) Tích phân lùi:

Điều khiển Robot sử dụng ROS

ROS (Robot Operating System) là một hệ điều hành mã nguồn mở, cung cấp dịch vụ tương tự như các hệ điều hành truyền thống, hỗ trợ phát triển phần mềm cho robot Khác với Windows, Linux hay Mac, ROS hoạt động như một phần mềm trung gian, giúp cấu hình và tương tác giữa các thiết bị.

Hình 2.9 Logo hệ điều hành ROS (Nguồn: ROS)

Vào năm 2007, ROS lần đầu tiên được áp dụng để cải tiến Robot PR1, một sản phẩm được phát triển bởi Keenan Wyrobek và Eric Berger dưới sự hướng dẫn của giáo sư Kenneth Salisbury tại Đại học Stanford, California Robot PR1 được thiết kế như một nền tảng để phát triển các nghiên cứu liên quan đến thao tác di động linh hoạt.

Hình 2.10 Robot PR1 (Nguồn: Robotsguide)

Robot PR2, một trong những robot tiên tiến nhất, được phát triển tại phòng nghiên cứu Willow Garage, nhằm thực hiện các nhiệm vụ như dọn bàn, gấp khăn và lấy đồ uống từ tủ lạnh Robot này ứng dụng ROS trong quy trình vận hành và đã được phát hành cho mục đích thương mại vào tháng 9 năm 2010.

Hình 2.11 Robot PR2 (Nguồn: Robotsguide)

Có 2 phiên bản chính của ROS được phát hành là ROS 1 và ROS 2 Phiên bản ROS

Phiên bản đầu tiên của ROS, mang tên ROS 0.4 (Mango Tango), được phát hành vào năm 2009, đánh dấu sự khởi đầu cho một loạt các phiên bản tiếp theo Các phiên bản này được phân loại theo các loại rùa, bao gồm Box Turtle vào tháng 3 năm 2010, C Turtle vào tháng 8 năm 2010, Diamondback vào tháng 3 năm 2011, và phiên bản mới nhất, cũng là phiên bản cuối cùng của ROS 1, là ROS Noetic Ninjemys.

Hình 2.12 ROS Noetic Ninjemys (Nguồn ROS)

Vào tháng 4 năm 2012, Willow Garage thành lập Quỹ Robot mã nguồn mở (OSRF) và trở thành nhà bảo trì phần mềm chính cho ROS vào tháng 2 năm 2013 OSRF đã đề xuất ROS 2, một API hỗ trợ lập trình thời gian thực cho ROS Phiên bản đầu tiên của ROS 2 mang tên Alpha được phát hành vào tháng 8 năm 2015, tiếp theo là phiên bản Beta vào tháng 12 năm 2016, và cuối cùng là phiên bản chính thức đầu tiên.

Ardent Apalone, phiên bản ROS 2 được phát hành vào ngày 8 tháng 12 năm 2017, là một bước tiến quan trọng trong phát triển phần mềm Đến nay, phiên bản mới nhất là Rolling Ridley, được phát hành vào tháng 6 năm 2023.

Hình 2.13 ROS Rolling Ridley (Nguồn ROS)

2.5.2 Sự cần thiết của ROS

ROS là nền tảng thiết yếu trong phát triển Robot, mang lại tính linh hoạt và khả năng tích hợp cao Được thiết kế để người dùng có thể tận dụng các công cụ và thư viện sẵn có, ROS giúp xây dựng ứng dụng Robot nhanh chóng và hiệu quả Hỗ trợ nhiều ngôn ngữ lập trình như Python, C++, và Lisp, ROS tạo điều kiện thuận lợi cho người dùng với nền tảng kiến thức đa dạng Do đó, ROS không chỉ là công cụ hữu ích mà còn là cơ sở hạ tầng quan trọng cho ngành công nghiệp Robot trong tương lai.

2.5.3 Các cấp độ khái niệm trong ROS a Cấp hệ thống tệp tin (ROS Filesystem Level)

ROS có hệ thống tệp tin được sắp xếp một cách cụ thể theo sơ đồ dưới [12]:

Hình 2.14 Sơ đồ cấp hệ thống tệp tin trong ROS

Giải thích sơ bộ các khối trong sơ đồ:

Packages là thành phần quan trọng trong ROS, bao gồm nhiều chương trình con (nodes), thư viện và tệp cấu hình dưới định dạng launch, yaml Mục đích chính của Packages là cung cấp chức năng cho các chương trình khác, cho phép tái sử dụng chúng cho các mục đích cụ thể.

• Package Manifest: là file nằm trong Package, có dạng xml, chứa các thông tin cơ bản như tên Package, phiên bản, tác giả và các gói phụ thuộc (dependencies)

• Metapackages: là một bộ các Package có chung mục đích, chức năng và nhiệm vụ

Messages là nội dung thông tin và dữ liệu được trao đổi giữa các nodes, với nhiều kiểu Message khác nhau được thực hiện trên các biến như int và string Người dùng cũng có thể tự định nghĩa kiểu dữ liệu của Message thông qua thư mục msg trong Package (myPackage/msg/myCustomMessageType.msg).

• Services: là kiểu dữ liệu truyền nhận được định nghĩa trong thư mục srv nằm trong Package (myPackage/srv/myCustomServiceType.srv)

Cấp lược đồ tính toán (ROS Computation Graph Level) là giai đoạn mà ROS xử lý dữ liệu và thiết lập một mạng lưới giao tiếp P2P (peer-to-peer), kết nối tất cả các quá trình với nhau Các thành phần cơ bản tại cấp độ này được biểu diễn qua đồ thị.

Hình 2.15 Sơ đồ cấp lượt đồ tính toán trong ROS

Trong hệ thống ROS, các Node là những tiến trình nhỏ hoạt động như chương trình con, thực hiện các chức năng và nhiệm vụ riêng biệt Sự tồn tại của nhiều Node giúp phân chia công việc và tối ưu hóa hiệu suất của hệ thống.

• Master: Hoạt động như một máy chủ có chức năng kết nối các Node với nhau

• Parameter Server: Là một phần của Master, cho phép data được lưu trữ dưới dạng hằng số

Các Node giao tiếp thông qua Message, là một cấu trúc dữ liệu chứa các trường được định sẵn như số nguyên (int) và số thực (float).

• Topics: Các Message được gửi nhận (publish / subscribe) thông qua Topic, bản chất là một tên được dùng để định danh nội dung trong Message gửi đi

• Services: Là giao tiếp đồng bộ hai chiều giữa dịch vụ khách (service client) và dịch vụ chủ (service server)

• Bags: Là tập tin lưu trữ và phát lại dữ liệu của các Message có dạng “file.bag”

19 c Cấp cộng đồng (ROS Community Level) Đây là cấp tài nguyên của ROS, cho phép trao đổi thông tin phần mềm và kiến thức trong cộng đồng, bao gồm [12]:

• Distributions: Là tập hợp các gói phần mềm với các phiên bản khác nhau để có thể dễ dàng cài đặt

• Repositories: Là nơi cho phép các tổ chức khác nhau lưu trữ, phát triển và phát hành các phần mềm Robot của riêng mình

ROS Wiki là diễn đàn chính thức cung cấp thông tin về Robot Operating System (ROS) Tại đây, người dùng có thể dễ dàng đăng ký tài khoản và đóng góp tài liệu, tạo ra một nguồn tài nguyên phong phú cho cộng đồng.

• Bug ticket system: Đây là tính năng để người dùng có thể phản hồi về lỗi trong phần mềm hoặc yêu cần thêm những tính năng mới

• Mailing lists: Là kênh cộng đồng chính cập nhật những thông tin mới về ROS, cũng như là diễn đàn để người dùng trao đổi về ROS

• ROS Answers: Là trang web để người dùng đăt câu hỏi về ROS

• Blog: Blog ROS cập nhật tin tức, thông tin liên quan đến cộng đồng ROS

2.5.4 Tạo lập bản đồ với công nghệ SLAM a Giới thiệu về SLAM

SLAM (Simultaneous Localization And Mapping) là công nghệ hiện đại giúp robot và xe tự hành tạo ra bản đồ môi trường xung quanh và xác định vị trí của chúng trên bản đồ đó Công nghệ này đặc biệt hữu ích trong các dự án liên quan đến việc lập bản đồ trong những môi trường không xác định hoặc có sự thay đổi.

Hình 2.16 Bản đồ 2D phòng LAB IoTVision được tạo nên từ công nghệ SLAM b Nguyên lí hoạt động của SLAM

SLAM hoạt động bằng cách thu thập dữ liệu từ các cảm biến như LIDAR, camera, cảm biến siêu âm, encoder và IMU Dữ liệu này được lọc qua các thuật toán như Extended Kalman Filter và Particle Filter để loại bỏ nhiễu từ môi trường và phần cứng Kết quả là tạo ra bản đồ ảo bằng phần mềm RViz và lập kế hoạch đường đi cho các ứng dụng robot di động.

Hình 2.17 Ứng dụng SLAM vào Robot hút bụi (Nguồn: Mathworks)

Thuật toán sử dụng cho Local và Global Path Planning

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

Thuật toán Dynamic Window Approach (DWA) là một phương pháp lập kế hoạch đường đi trong thời gian thực, lý tưởng cho robot di động hoạt động trong môi trường có nhiều chướng ngại vật DWA tối ưu hóa hành vi di chuyển của robot bằng cách phân tích các trạng thái động dựa trên tốc độ mẫu và môi trường xung quanh Thuật toán này sử dụng một "cửa sổ động" để mô phỏng và đánh giá các chuyển động khả thi trong khoảng thời gian ngắn, từ đó lựa chọn chuyển động tốt nhất theo các tiêu chí đã định.

Hình 2.23 Mô tả cách thức hoạt động của thuật toán DWA (Nguồn: ROS)

Cách thức hoạt động của thuật toán DWA [18]:

Lấy mẫu tốc độ trong không gian điều khiển của Robot bao gồm các thông số tốc độ tuyến tính (dx, dy) và tốc độ góc (dtheta) Mỗi mẫu tốc độ này sẽ tạo ra một quỹ đạo dự đoán cho Robot.

Đối với mỗi tốc độ mẫu, chúng ta thực hiện mô phỏng tiến lên từ trạng thái hiện tại của Robot để dự đoán các diễn biến có thể xảy ra khi áp dụng tốc độ mẫu trong một khoảng thời gian ngắn.

Đánh giá quỹ đạo được thực hiện bằng cách cho điểm các quỹ đạo dựa trên kết quả mô phỏng, tập trung vào các yếu tố quan trọng như khoảng cách đến vật cản, khoảng cách đến mục tiêu, sự phù hợp với đường đi toàn cục và tốc độ di chuyển.

• Loại bỏ các quỹ đạo không hợp lệ (những quỹ đạo gây va chạm với vật cản)

• Chọn quỹ đạo có điểm số cao nhất và gửi tốc độ tương ứng đến Robot

• Lặp lại các quy trình trên

Hình 2.24 Vùng giới hạn mẫu thử tốc độ

Robot hoạt động trong mặt phẳng với vận tốc dài v và vận tốc góc ω, tạo thành một hình vuông xung quanh, được gọi là cửa sổ động (Dynamic Window) Cửa sổ động này chứa các cặp giá trị (v, ω) mà Robot có thể sử dụng để lập kế hoạch di chuyển trong khoảng thời gian ngắn.

Robot hoạt động trong một mặt phẳng với vận tốc dài v và vận tốc góc ω, được mô tả qua hình vuông xung quanh Robot, gọi là cửa sổ động (Dynamic Window) Cửa sổ động chứa các cặp giá trị (v, ω) cho phép Robot di chuyển mà không va chạm với vật cản trên đường đi tương ứng với vận tốc đó Vận tốc cho phép này được định nghĩa rõ ràng để đảm bảo sự an toàn trong quá trình di chuyển của Robot.

• V a là tập hợp các cặp giá trị vận tốc cho phép mà Robot không va chạm với vật cản

• dist(v, ω) là khoảng cách gần nhất của Robot so với vật cản trên đường cong khi di chuyển với cặp giá trị (v, ω) đó

Trong cửa sổ động, robot thực hiện tính toán với nhiều cặp vận tốc Để giảm bớt khối lượng tính toán, cần giới hạn các cặp vận tốc trong khoảng thời gian ngắn (Δt) dựa trên giá trị gia tốc.

• h là thời gian lấy mẫu (hay Δt)

• 𝑣 𝑐 , 𝜔 𝑐 là vận tốc dài và vận tốc góc tức thời

Từ V a và V d , kết hợp với cặp vận tốc tính toán từ mô hình động học của Robot (V s ), ta thu được tất cả các vận tốc có thể chấp nhận được trong cửa sổ động, hình thành nên không gian tìm kiếm V r [19]: r s a d

Thuật toán Dijkstra là phương pháp hiệu quả để tìm đường đi ngắn nhất giữa hai điểm trong đồ thị có trọng số không âm, được đặt theo tên của nhà khoa học máy tính Edsger Dijkstra Thuật toán này được ứng dụng rộng rãi trong các lĩnh vực như định tuyến, hệ thống GPS và lập trình Robot di động Cách thức hoạt động của thuật toán Dijkstra dựa trên việc khám phá các đỉnh của đồ thị theo thứ tự từ điểm bắt đầu đến điểm đích, đảm bảo tìm ra lộ trình ngắn nhất.

Để tìm đường ngắn nhất từ đỉnh A đến các đỉnh còn lại trong đồ thị các Node được đánh thứ tự A, B, C, D, E với các trọng số giữa các Node, cần thực hiện các giai đoạn sau: đầu tiên, xác định các trọng số và cấu trúc của đồ thị; sau đó, áp dụng thuật toán tìm đường ngắn nhất, như Dijkstra hoặc Bellman-Ford, để tính toán khoảng cách từ đỉnh A đến từng đỉnh khác; cuối cùng, phân tích và trình bày kết quả để xác định đường đi ngắn nhất cho từng đỉnh.

Hình 2.25 Đồ thị mẫu ứng dụng thuật toán Dijkstra

Danh sách V_Node chứa những Node đã được truy cập, trong khi UV_Node là danh sách các Node chưa được truy cập từ một Node cố định Hàm cost(x) đại diện cho giá trị đường đi ngắn nhất từ Node x đến đích, và d(x, y) là khoảng cách một chiều giữa hai đỉnh x và y.

- V_Node = [] (danh sách các đỉnh đã đi qua ban đầu rỗng)

- UV_Node = [A, B, C, D, E] (danh sách các đỉnh chưa đi qua ban đầu chứa tất cả các đỉnh)

Bước 2: Đặt giá trị ban đầu cho các đỉnh:

- cost(x) = ∞ (vô cùng) cho các đỉnh ngoại trừ đỉnh gốc khi bắt đầu (đỉnh bắt đầu có ‘cost’ bằng 0)

Bước 3: Chọn đỉnh bắt đầu, giả sử là ‘s’: cost(s) = 0

Bước 4: Lặp lại các bước sau cho đến khi UV_Node rỗng:

- ‘cost’ của đỉnh liền kề ‘s’ (N) = cost(s) + khoảng cách từ đỉnh đang được chọn đến điểm liền kề đó

- Nếu hướng từ đỉnh này qua đỉnh kia đã thực hiện trước đó thì không xét lại

- Nếu đỉnh liền kề (u) đang có ‘cost’ thì so sánh:

Nếu N < cost(u) thì cost(u) = N Ngược lại giữ nguyên cost(u)

- Đưa đỉnh gốc đang xét vào danh sách V_Node

Chọn đỉnh cố định tiếp theo có 'cost' nhỏ nhất và không nằm trong danh sách UV_Node Thực hiện quy trình giải lưu đồ để xác định khoảng cách từ Node A đến các Node còn lại.

Chọn A là Node cố định để bắt đầu di chuyển (cost(A) = 0), xét các điểm liền kề với Node cố định là A:

Hình 2.26 Các Node liền kề với Node cố định A

• Khi đó thu được các khoảng cách lần lượt:

31 d(A, D) = 1.5 => cost(D) = cost(A) + 1.5 = 0 + 1.5 = 1.5 d(A, C) = 1.3 => cost(C) = cost(A) + 1.3 = 0 + 1.3 = 1.3 d(A, B) = 2.0 => cost(B) = cost(A) + 2.0 = 0 + 2.0 = 2.0

• Vì các Node liền kề chưa có ‘cost’ nên bỏ qua bước so sánh

• Vì đã chọn A là Node cố định nên khi này A sẽ thuộc vào danh sách V_Node, là danh sách những Node đã đi qua:

Chọn Node C là điểm tiếp theo cố định do nó có 'cost' thấp nhất và chưa nằm trong danh sách các Node đã được thăm Tiếp theo, cần xem xét các đỉnh liền kề với Node C.

Hình 2.27 Các Node liền kề với Node cố định C

• Vì cost(D) đã có giá trị trước đó (bằng 1.5) nên:

Vì N > cost(D) (2.3 > 1.5) nên cost(D) giữ nguyên

• Vì đã chọn C là Node cố định nên khi này BC sẽ thuộc vào danh sách V_Node, là danh sách những Node đã đi qua:

Tiếp theo chọn D làm Node cố định vì nó có ‘cost’ thấp nhất và không thuộc danh sách Node đã đi qua, xét các đỉnh liền kề với D:

Hình 2.28 Các Node liền kề với Node cố định D

Vì N > cost(E) (4.0 > 2.3) nên giữ nguyên cost(E)

• Vì đã chọn D là Node cố định nên khi này D sẽ thuộc vào danh sách V_Node, là danh sách những Node đã đi qua:

Tiếp theo chọn B làm Node cố định vì nó có ‘cost’ thấp nhất và không thuộc danh sách Node đã đi qua, xét các đỉnh liền kề với B:

Hình 2.29 Các Node liền kề với Node cố định B

Vì N > cost(E) (4.5 > 2.3) nên giữ nguyên cost(E)

• Vì đã chọn B là Node cố định nên khi này B sẽ thuộc vào danh sách V_Node, là danh sách những Node đã đi qua:

Cuối cùng chọn E là Node cố định, xét các điểm liền kề:

Hình 2.30 Các Node liền kề với Node cố định E

• Vì không còn hướng nào để xét nên cost(E) = 2.3

• Vì đã chọn E là Node cố định nên khi này E sẽ thuộc vào danh sách V_Node, là danh sách những Node đã đi qua:

• Vì UV_Node đã rỗng nên chương trình kết thúc, thu được khoảng cách từ Node A đến các điểm khác lần lượt:

TÍNH TOÁN, THIẾT KẾ PHẦN CỨNG HỆ THỐNG

Yêu cầu đặt ra và các thông số ban đầu

Dựa vào mục tiêu, môi trường hoạt động và một số điều kiện ràng buộc nhóm tác giả quyết định thiết kế theo các tiêu chí sau:

• Là một mô hình hoàn chỉnh với kích thước ước tính 500x460x1200mm

• Trọng lượng tối đa ước tính: 12 kg

• Di chuyển trên bề mặt bê tông khô hoặc thảm với điều kiện bằng phẳng

• Thời gian hoạt động liên tục trong điều kiện bình thường khoảng 3h

• Tốc độ tối đa của Robot: 0.3m/s.

Tính toán, lựa chọn, thiết kế cơ khí

Để xây dựng một bản thiết kế cơ khí hoàn chỉnh cho Robot, nhóm tác giả đã dựa vào yêu cầu và ứng dụng thực tế của Robot Họ đã sử dụng phần mềm vẽ 3D và 2D để dựng lên khung cơ bản, sau đó điều chỉnh và tối ưu thiết kế Nhóm đã xác định các bộ phận quan trọng, trong đó phần đế Robot là thiết yếu, không chỉ chịu tải chính mà còn quyết định phương pháp di chuyển, kích thước và hình dáng tổng thể của Robot.

3.2.1 Lựa chọn cơ cấu di chuyển

Để đảm bảo Robot di chuyển ổn định, chịu tải cao và có tính thẩm mỹ khi hoạt động trong không gian hội chợ triển lãm, nhóm tác giả đã lựa chọn cơ cấu di chuyển bằng bánh xe (Wheel Mechanism) Mỗi loại bánh xe sẽ đi kèm với một cơ cấu cơ khí riêng biệt, và một số loại bánh xe phổ biến nhất trong lĩnh vực Robot di động bao gồm:

Bánh xe thường có hình dáng dạng đĩa, khung bằng nhựa cứng hoặc kim loại và được bọc ngoài bằng cao su, lắp trên một trục cố định Đây là loại bánh xe thông dụng và phổ biến nhất trong lĩnh vực robot di động Cấu trúc phổ biến cho bánh xe này là cơ cấu vi sai với 2 bánh chủ động và 1 bánh điều hướng, hoặc 2 bánh chủ động cùng 2 bánh điều hướng.

Hình 3.1 Cơ cấu vi sai (Differential drive) sử dụng 2 bánh dẫn động và 1 bánh điều hướng (Nguồn: STEMpedia) Ưu điểm:

• Dễ lắp đặt, thay thế, bảo dưỡng

• Dễ dàng tính toán cho việc di chuyển, cũng như dễ dàng điều khiển

• Khả năng chịu tải lớn

• Chỉ có thể di chuyển trên 1 trục cố định, dẫn đến khả năng di chuyển kém linh hoạt

• Để hệ thống hoạt động chính xác đòi hỏi sự chính xác đến từ cơ khí đảm bảo

2 bánh xe dẫn động phải song song Các cảm biến phải ổn định và chính xác

Bánh xe Mecanum là loại bánh xe có thiết kế đặc biệt với một bánh chính và các con lăn được bố trí ở góc 45° so với trục bánh chính, cho phép tạo ra chuyển động đa hướng tùy thuộc vào tốc độ và chiều quay của từng bánh Robot sử dụng bánh xe Mecanum thường có cấu trúc 4 bánh, được sắp xếp theo hình vuông hoặc hình chữ nhật.

Hình 3.2 Cơ cấu Robot sử dụng bánh Mecanum (Nguồn: Cyberspaceandtime) Ưu điểm:

Robot có khả năng di chuyển linh hoạt theo nhiều hướng như trái, phải, tiến, lùi, quay tròn và theo đường chéo mà không cần thay đổi hướng của thân Điều này giúp tăng cường khả năng điều hướng trong các không gian hẹp.

• Do kết cấu phức tạp nên chi phí cực kì cao, khả năng sửa chữa bảo trì là không thể, khi hỏng chỉ có thể thay thế

• Khả năng chịu tải thấp

• Tính toán, điều khiển phức tạp

• Đòi hỏi di chuyển trên bề mặt bằng phẳng không gồ ghề

Bánh xe Omni là một loại bánh xe có thiết kế phức tạp, tương tự như bánh xe Mecanum Cấu trúc của bánh xe Omni bao gồm một bánh chính và các con lăn được bố trí xung quanh chu vi bánh Điểm đặc biệt của bánh xe này là cơ cấu thường sử dụng 3 bánh đặt lệch nhau một góc 120° hoặc 4 bánh đặt lệch nhau một góc 90 độ, cho phép di chuyển linh hoạt hơn.

Hình 3.3 Cơ cấu Robot sử dụng bánh Omni (Nguồn: noDNA) Ưu điểm:

• Có thể di chuyển linh hoạt theo nhiều hướng mà không cần thay đổi hướng thân của Robot

• Cấu trúc không quá phức tạp nên chi phí cũng phù hợp so với khả năng mà nó mang lại

• Khó sửa chữa, bảo trì

• Khả năng chịu tải thấp

• Tính toán, điều khiển phức tạp

• Giới hạn bề mặt có thể di chuyển, khả năng di chuyển, hiệu suất có thể bị ảnh hưởng khi di chuyển trên các bề mặt gồ ghề

Dựa trên các đặc điểm, ưu điểm và nhược điểm của những loại bánh xe phổ biến, nhóm tác giả đã xem xét các yêu cầu thực tế như di chuyển ổn định, khả năng chịu tải hợp lý, tốc độ đáp ứng, khả năng linh hoạt chuyển hướng vừa phải, chi phí hợp lý và khả năng bảo trì đơn giản Cuối cùng, nhóm đã quyết định chọn cơ cấu vi sai (Differential drive) với 2 bánh chủ động và 2 bánh dẫn hướng phía trước và phía sau.

Để đảm bảo Robot hoạt động ổn định với trọng tâm không quá cao, nhóm tác giả đã quyết định chọn bánh xe chủ động có đường kính 100mm Để đáp ứng yêu cầu về độ cứng vững khi chịu tải trọng, vành bánh xe được làm bằng kim loại, cụ thể là nhôm Để tăng cường độ ma sát và giúp Robot di chuyển ổn định mà không bị trượt, vỏ bánh xe được bọc cao su Tóm lại, bánh xe được lựa chọn là bánh nhôm bọc cao su với đường kính 100mm.

Hình 3.4 Bánh xe nhôm 100mm (Nguồn: roboconshop)

Gọi u, v, r là các chuyển vị của Robot theo trục tịnh tiến, trục ngang và trục xoay Mô hình tổng quát của Robot được thiết lập trong hệ trục tọa độ Oxy, như thể hiện trong hình ảnh minh họa.

Hình 3.5 Mô hình tổng quát Robot trong hệ tọa độ Oxy

• 𝑂𝑋 𝑔 𝑌 𝑔 là hệ trục tọa độ bao quát

• 𝑋 𝐿 , 𝑌 𝐿 là tọa độ của Robot trong hệ trục

• 𝑢, 𝑣, 𝑟 lần lượt là chuyển vị thẳng, chuyển vị ngang, chuyển vị xoay của Robot

• 𝜃 là góc hợp giữa phương tịnh tiến và phương ngang của trục tọa độ 𝑂𝑋 𝑔 𝑌 𝑔

• 𝜔 𝐿 , 𝜔 𝑅 lần lượt là vận tốc góc của bánh xe trái và bánh xe phải

• 𝑉 𝐿 , 𝑉 𝑅 lần lượt là vận tốc dài của bánh xe trái và bánh xe phải

• 𝑟 𝐿 , 𝑟 𝑅 lần lượt là bán kính bánh xe trái và bánh xe phải

• 𝐿 là khoảng cách tính từ 2 tâm của bánh xe

Tư thế của Robot trong không gian làm việc được xác định bởi các thông số x, y, θ Để tính toán vận tốc tức thời của Robot trên hệ trục tọa độ Oxy, ta đạo hàm các thông số này theo thời gian t (giây), từ đó thu được các giá trị vận tốc 𝑥̇, 𝑦̇, 𝜃̇.

Phân tích vector 𝑢⃗ , ta có: 𝑢⃗⃗⃗⃗ , 𝑢 𝑥 ⃗⃗⃗⃗ 𝑦

Biểu diễn dưới dạng ma trận, ta thu được : cos( ) sin( ) 0 sin( ) cos( ) 0

Xét 3 điểm A, B, C lần lượt là trọng tâm bánh trái (B), trọng tâm bánh phải (A) và trọng tâm Robot (C):

Hình 3.6 Vị trí tâm Robot, bánh xe trái và bánh xe phải trong mô hình tổng quát

Với điều kiện bánh lăn không trượt, ta có phương trình:

Biểu diễn dưới dạng ma trận ta thu được:

Từ (3.2) và (3.5) ta thu được phương trình động học Robot:

Bên cạnh đó từ chiều quay của 2 bánh xe mà ta có được các hướng di chuyển của robot như sau:

Hình 3.7 Các hướng di chuyển của Robot dựa vào chiều quay của 2 bánh xe

• Tiến về phía trước: cả bánh xe trái lẫn phải sẽ quay cùng chiều kim đồng hồ về phía trước theo hướng thân của robot

• Lùi về phía sau: Cả bánh xe trái lẫn phải sẽ quay ngược chiều kim đồng hồ về phía sau theo hướng thân của robot

Khi xoay trái, bánh xe trái của robot sẽ quay ngược chiều kim đồng hồ về phía sau, trong khi bánh xe phải sẽ quay cùng chiều kim đồng hồ về phía trước, theo hướng di chuyển của thân robot.

Khi xoay phải, bánh xe trái sẽ quay theo chiều kim đồng hồ về phía trước, trong khi bánh xe phải sẽ quay ngược chiều kim đồng hồ về phía sau, theo hướng của thân robot.

3.2.3 Lựa chọn cơ cấu truyền động

Cơ cấu truyền động là một hệ thống cơ khí thiết yếu cho việc chuyển đổi và truyền năng lượng từ động cơ đến bánh xe hoặc các bộ phận chuyển động khác trong robot Hệ thống này đóng vai trò quan trọng trong việc kiểm soát tốc độ, mô-men xoắn và hướng di chuyển của robot, đảm bảo hiệu suất hoạt động tối ưu.

Dưới đây là ba cơ cấu truyền động phổ biến giữa động cơ và bánh xe trong robot, kèm theo ưu điểm và nhược điểm của chúng Một trong những cơ cấu là truyền động trực tiếp (Direct Drive), với ưu điểm nổi bật là khả năng truyền lực mạnh mẽ và độ chính xác cao trong việc điều khiển chuyển động.

• Đơn giản trong thiết kế và lắp ráp

• Hiệu suất cao do ít mất mát năng lượng

• Phản ứng nhanh với thay đổi điều khiển

• Đòi hỏi động cơ mạnh để tạo lực xoay đủ lớn

• Giới hạn trong việc điều chỉnh tốc độ và mô-men xoắn b Truyền động bằng dây đai (Belt Drive) Ưu điểm:

• Giảm rung động và tiếng ồn

• Có khả năng điều chỉnh tỷ lệ truyền động dễ dàng

• Bảo vệ động cơ khỏi các va chạm bất ngờ nhờ sự đàn hồi của dây đai

• Mất năng lượng do ma sát và độ trượt của dây đai

• Dây đai có thể bị giãn hoặc đứt, cần bảo trì định kỳ c Truyền động bằng bánh răng (Gear Drive) Ưu điểm:

• Độ bền cao và đáng tin cậy

• Hiệu suất truyền động tốt với tỷ lệ truyền động ổn định

• Khả năng chịu tải cao

• Phức tạp trong thiết kế và lắp ráp

• Có thể gây ra tiếng ồn và rung động

• Cần bôi trơn định kỳ để duy trì hiệu suất

Sau khi đánh giá các ưu và nhược điểm của từng loại cơ cấu truyền, nhóm tác giả đã quyết định chọn cơ cấu truyền đai Lựa chọn này đáp ứng các yêu cầu như vận hành êm ái, không gây ồn, có khả năng điều chỉnh tỉ số truyền linh hoạt để tối ưu hóa công suất, dễ dàng lắp ráp và bảo trì, đồng thời hoạt động hiệu quả với tải trọng vừa phải.

Thiết kế hệ thống điện

Việc thiết kế hệ thống điện đóng vai trò quan trọng không kém so với thiết kế cơ khí trong một hệ thống Để tối ưu hóa thiết kế điện, cần xác định rõ yêu cầu toàn bộ hệ thống, từ đó lập kế hoạch và tính toán lựa chọn linh kiện phù hợp Đồng thời, việc xác định chuẩn giao tiếp và cách kết nối là cần thiết để xây dựng sơ đồ khối, giúp hướng dẫn quá trình thi công hoàn thiện.

- Điều khiển được chính xác tốc độ và vị trí của 2 động cơ đã chọn

- Đọc được giá trị trả về của các cảm biến

- Xử lý được tín hiệu trả về từ LiDAR để dựng bản đồ, thực hiện vẽ đường đi, di chuyển tránh vật cản

- Kết nối giao tiếp được với màn hình hiển thị

- Lựa chọn nguồn đáp ứng công suất tổng, thời gian hoạt động đặt ra là khoảng

3.3.2 Sơ đồ khối tổng quát phần điện

Nguồn công suất Động cơ

Hình 3.24 Sơ đồ khối tổng quát phần điện

Sơ đồ được thiết lập dựa trên các yêu cầu cụ thể và có thể được chia thành bốn phần chính: phần nguồn, phần điều khiển, phần công suất, và phần cảm biến, hiển thị cùng với SIM.

Để xử lý tín hiệu từ cảm biến LiDAR nhằm lặp bản đồ, xác định lộ trình và tránh vật cản kết hợp với ROS, cần một hệ thống điều khiển mạnh mẽ Máy tính nhúng là lựa chọn tối ưu cho dự án này, và với các yếu tố như chi phí và phần mềm, nhóm tác giả đã quyết định sử dụng máy tính nhúng Raspberry Pi 3B cho đồ án.

Hình 3.25 Máy tính nhúng Raspberry Pi 3B (Nguồn: https://www.cytrontech.vn/p-raspberry-pi-3-model-b)

- Kiến trúc: ARM Cortex-A53 64-bit, bốn lõi, xung nhịp 1.2GHz

- 4 cổng USB 2.0, hỗ trợ dòng điện đầu ra lên đến 1.2A

- 1 cổng 4 chân 3.5mm cho âm thanh analog và video

- 1 cổng xuất hình HDMI full-size

• Lưu trữ: MicroSD dùng để chạy hệ điều hành và lưu trữ dữ liệu

- 40 chân GPIO có thể mở rộng

- Các giao diện ngoại vi cấp thấp bao gồm:

- Các chân cấp nguồn +3.3V và +5V

• Đề xuất cấp nguồn: 5V/2.4A tương đương 12W qua cổng MicroUSB với yêu cầu nguồn cấp phải ổn định, công suất nguồn nên lớn hơn 20 đến 30%

• Kích thước: 85mm x 56mm x 17mm

Để thực hiện các nhiệm vụ như đọc tín hiệu từ cảm biến và tính toán các thông số PID để điều khiển động cơ, cần một vi điều khiển mạnh mẽ Nhóm tác giả đã chọn vi điều khiển STM32F407VET6 vì nó có tốc độ xử lý nhanh, khả năng kết nối và xử lý nhiều ngoại vi đồng thời, cùng với giá thành hợp lý.

Hình 3.26 Vi điều khiển STM32F407VET6

- Loại vi xử lý: ARM® Cortex®-M4

• Kết nối: Các giao thức kết nối như CAN, DCMI, EBI/EMI, Ethernet, I²C, IrDA, LIN, SPI, UART/USART, USB OTG

- Phát hiện/Mở lại khi sụt áp (Brown-out Detect/Reset)

- Điều khiển truy cập trực tiếp bộ nhớ (DMA)

- Giao tiếp âm thanh kỹ thuật số (I²S)

- Điều khiển màn hình LCD

- Mở lại khi mất nguồn (POR)

- Điều khiển độ rộng xung (PWM)

- Bộ đếm thời gian giám sát (WDT)

- Dung lượng bộ nhớ: 512KB (512K x 8)

- Bộ nhớ EEPROM: Không có

• Điện áp cung cấp (Vcc/Vdd): 1.8V đến 3.6V

• Bộ chuyển đổi dữ liệu:

- A/D: 16 kênh, độ phân giải 12-bit

- D/A: 2 kênh, độ phân giải 12-bit

• Loại dao động: Dao động nội b Phần công suất:

Để điều khiển hai động cơ thực hiện các chuyển động tiến, lùi và xoay, cần có sự phối hợp chiều quay của cả hai động cơ, điều này yêu cầu sử dụng mạch cầu H Ngoài ra, việc điều chỉnh tốc độ quay thông qua điện áp cấp cho động cơ cũng rất quan trọng Động cơ được chọn có điện áp hoạt động là 12V, với dòng hoạt động ổn định là 4.71A và dòng hoạt động tối đa.

IC cầu H BTS7960B được nhóm tác giả lựa chọn sau khi tham khảo thị trường, với khả năng đáp ứng hoàn toàn yêu cầu lên đến 38A.

- Loại động cơ: Động cơ DC

- Cấu hình ngõ ra: Half Bridge

- Giao tiếp điều khiển: Logic

- Dòng điện ngõ ra tối đa: 40A

- Điện áp cung cấp: 5.5V đến 27.5V

- Nhiệt độ hoạt động: -40°C đến 150°C

- Kiểu chân: Dán bề mặt (Surface Mount)

Để đảm bảo tín hiệu điều khiển không bị ảnh hưởng bởi nhiễu từ hoạt động, cần có một bộ phận cách ly giữa tín hiệu điều khiển và tín hiệu công suất, đồng thời duy trì độ chính xác và ổn định ở tần số cao Nhóm tác giả đã chọn IC OPTO cách ly tốc độ cao HCPL2631 cho mục đích này.

Hình 3.28 Opto cách ly tốc độ cao HCPL 2631

- Tốc độ chuyển đổi tín hiệu cao: 10Mbit/s

- Loại ngõ ra: Open Collector

- Dòng ngõ ra / kênh: 50mA

- Điện áp tín hiệu vào: 1.4V

- Dòng điện tín hiệu vào: 30mA

- Điện áp hoạt động: 4.5V đến 5.5V

- Kiểu chân: Xuyên lỗ (Through Hole) c Phần cảm biến, hiển thị và sim

Bên cạnh Encoder và LiDAR, IMU (Inertial Measurement Unit) là cảm biến thiết yếu để xác định góc quay của Robot trong quá trình di chuyển Sự kết hợp giữa IMU và Encoder giúp đồng bộ hóa vị trí thực tế của Robot với bản đồ, từ đó nâng cao độ chính xác trong việc điều khiển Do đó, nhóm tác giả đã lựa chọn module cảm biến MPU6050.

Hình 3.29 Cảm biến gia tốc và góc quay MPU6050

• Chip: MPU-6050 (Cảm biến đo góc 3 trục và gia tốc 3 trục)

• Điện áp hoạt động: 3V đến 5V

• Độ phân giải ADC: 16 bit

• Độ phân giải góc: ± 250, 500, 1000, 2000 độ/s

• Độ phân giải gia tốc: ±2, ±4, ±8, ±16g

Về phần hiển thị nhóm đã chọn được màn hình cảm ứng 14 inch như đã chọn ở mục (3.3.12)

Hiện nay, sóng 2G đã bị các nhà mạng ngừng cung cấp, khiến các module SIM như SIM800 và SIM800L không còn khả năng gọi điện Mục đích tích hợp module SIM vào Robot là để tự động gọi đến số điện thoại của gian hàng khi di chuyển, do đó cần lựa chọn module hỗ trợ sóng 3G hoặc 4G Sau khi cân nhắc, nhóm đã quyết định chọn module A7680C.

• Nguồn cấp: từ 3.7 đến 4VDC

• Băng tần: LTE-CAT 1 10Mbps

• Kết nối: UART/ USB serial port

• Phương thức điều khiển: tập lệnh AT

• Loại SIM hỗ trợ: Micro

Để đáp ứng yêu cầu tự hành cho Robot, cần một nguồn điện lưu trữ riêng, và nhóm tác giả đã chọn pin Lipo để tiết kiệm không gian Ngoài ra, để cách ly tín hiệu điều khiển và tín hiệu công suất, nhóm đã quyết định sử dụng hai viên pin Lipo 3S, mỗi viên bao gồm ba pin mắc nối tiếp.

Jack XT60 được kết nối để tạo ra nguồn điện 5V, phục vụ cho các linh kiện cần thiết Nhóm tác giả đã lựa chọn sử dụng IC giảm áp LM2596S-5V cho ứng dụng này.

Hình 3.32 IC hạ áp cố định 5V LM2596S

• Dải điện áp đầu vào: 4.5V đến 40V

• Dải điện áp đầu ra: 1.23V đến 37V (điều chỉnh được)

• Dòng đầu ra: Lên đến 3A

• Tần số chuyển mạch: 150 kHz

Để cung cấp nguồn cho vi điều khiển STM32F407VET6 với ngưỡng điện áp từ 1.8V đến 3.6V, cần sử dụng một IC hạ áp từ 5V xuống 3.3V IC hạ áp 3.3V RT9193 được lựa chọn vì tính phổ biến và dễ sử dụng.

Hình 3.33 IC hạ áp 3.3V RT9193

• Điện áp đầu vào: 2.5V đến 5.5V

• Dòng đầu ra tối đa: 500mA

• Dropout Voltage: Điện áp chênh lệch rất thấp (thường khoảng 300mV ở dòng 500mA)

• Độ chính xác điện áp đầu ra: ±2%

3.3.3 Sơ đồ chi tiết phần điện

Từ những linh kiện, module đã chọn nhóm tiến hành dựng lên sơ đồ khối tống chi tiết hệ thống điện cho Robot như sau:

Máy tính nhúng Raspberry Pi 3B

Cảm biến la bàn MPU6050

Màn hình hiển thị cảm ứng 15.6 inch

Vi điều khiển STM32F407VET6

IC cầu H BTS7960 (R) Động cơ hành tinh

Hình 3.34 Sơ đồ chi tiết phần điện

Hệ thống bao gồm ba phần chính: Nguồn, Cảm biến và Cơ cấu chấp hành, Phần điều khiển.

- Pin LiPo 3S (12V) cung cấp nguồn điện chính cho toàn bộ hệ thống

- Công tắc ON/OFF công suất dùng để bật/tắt nguồn điện từ pin

- IC giảm áp RT9193 cung cấp điện áp ổn định 3.3V cho vi điều khiển STM32

- IC giảm áp LM2596 (5V) cung cấp điện áp ổn định 5V cho các thành phần cần thiết

- Module giảm áp và ổn áp 5V, 5A cung cấp nguồn điện 5V công suất cao và ổn định cho Raspberry Pi và màn hình hiển thị

• Cảm biến và Cơ cấu chấp hành

- Động cơ bánh tính DC M5-55VC (L/R) điều khiển chuyển động của hệ thống

IC cầu H BTS7960 và Opto cách ly HCPL2631 là giải pháp lý tưởng để điều khiển động cơ, mang lại khả năng điều khiển dòng điện lớn và đảm bảo an toàn cách ly giữa phần điều khiển và công suất.

- Encoder (L/R) cung cấp phản hồi về tốc độ và vị trí của động cơ cho vi điều khiển

- Vi điều khiển STM32F407VET6 nhận phản hồi từ encoder, điều khiển động cơ qua các tín hiệu PWM

Máy tính nhúng Raspberry Pi 3B có khả năng xử lý dữ liệu từ các cảm biến như LiDAR A1M8 và IMU MPU6050, đồng thời thực hiện các tác vụ trong ROS và hiển thị thông tin trên màn hình.

• Hoạt động của hệ thống

Khi bật hệ thống bằng công tắc ON/OFF, pin LiPo 3S (12V) cung cấp điện cho các IC giảm áp, tạo ra các mức điện áp cần thiết Vi điều khiển STM32F407VET6 điều khiển động cơ thông qua IC cầu H BTS7960 và nhận phản hồi từ encoder qua tín hiệu PWM Các tín hiệu điều khiển từ vi điều khiển được cách ly với công suất thông qua opto cách ly HCPL2631.

THI CÔNG LẮP RÁP HOÀN THIỆN PHẦN CỨNG ROBOT

Phần cơ khí

Sau khi hoàn tất quá trình lựa chọn và kiểm nghiệm, nhóm tác giả bắt tay vào thi công và lắp ráp Robot Công đoạn đầu tiên tập trung vào phần cơ khí, bao gồm khung và vỏ của Robot.

Nhóm tác giả đã đặt gia công CNC mặt đế theo kích thước đã thiết kế Kết quả:

Hình 4.1 Mặt đế Robot sau khi đặt gia công CNC

Hình 4.2 Mặt đế sau khi lắp ráp các bộ phận

Hình 4.3 Bố trí phần điện cho Robot b Phần thân

Các thanh nhôm định hình cho khung được cắt bằng máy chuyên dụng, đảm bảo bề mặt cắt mịn và vuông góc, tăng độ chính xác khi lắp ráp Ngoài ra, các chi tiết như ke góc nhôm 20x20mm, ke góc chịu lực và ốc cũng được sử dụng để nâng cao tính ổn định và độ bền của sản phẩm.

88 đai ốc cũng được lựa chọn cho phù hợp đảm bảo sai số thấp nhất có thể và mang lại độ cứng cáp cao

Hình 4.4 Khung Robot sau khi lắp ráp hoàn chỉnh

Nhóm tác giả đã chọn phương pháp in 3D để gia công phần vỏ của đế, nhằm đạt được độ thẩm mỹ cao với những đường cong phức tạp, điều mà khó có thể thực hiện bằng phương pháp thủ công.

Vỏ ngoài phần đế được gia công bằng công nghệ in 3D, trong khi phần thân sử dụng vật liệu xốp formex để tiết kiệm chi phí Các khay chứa tài liệu được gia cố nhiều lớp ở bề mặt dưới nhằm đảm bảo khả năng chịu tải Cuối cùng, phần vỏ sẽ được trang trí bằng sơn và cố định vào khung bằng keo.

Hình 4.6 Các khay sau khi gia công

Hình 4.7 Vỏ mặt trước sau khi gia công xong

Hình 4.8 Vỏ hộp màn hình sau khi gia công xong

Phần điện

Sau khi hoàn tất tính toán thiết kế, nhóm tiến hành thi công phần điện cho Robot, bao gồm gia công bo mạch, hàn linh kiện lên bo, kiểm tra và test bo mạch để phát hiện lỗi, cũng như đấu nối dây nguồn và dây tín hiệu.

Hình 4.9 Bo mạch hoàn chỉnh sau khi đặt gia công, tự hàn tay linh kiện

Hình 4.10 Đấu nối phần điện

THIẾT KẾ CHƯƠNG TRÌNH ĐIỀU KHIỂN

Cách thức hoạt động của Robot

Hình 5.1 Sơ đồ tổng quát cách thức hoạt động

Robot có hai chức năng chính là giao tài liệu và quảng cáo Để sử dụng, người dùng cần bật công tắc nguồn và khởi động chương trình trên màn hình chính, sau đó truy cập vào trình duyệt với địa chỉ IP local tương ứng với mạng WiFi mà Robot kết nối Tại màn hình chính, người dùng chọn chế độ hoạt động: giao tài liệu hoặc quảng cáo Trong chế độ giao tài liệu, Robot sẽ tự động tránh vật cản và di chuyển đến đích nhanh nhất có thể, đồng thời gọi điện thoại đến số đã được nhập khi đến nơi Ngược lại, trong chế độ quảng cáo, Robot sẽ dừng lại khi gặp vật cản và chỉ tiếp tục di chuyển khi vật cản hoặc khách tham quan rời đi Cuối cùng, Robot sẽ quay về vị trí ban đầu sau khi hoàn thành các nhiệm vụ của mình.

Hình 5.2 Lưu đồ hoạt động chế độ chạy giao tài liệu

Hình 5.3 Lưu đồ hoạt động chế độ quảng cáo

Chương trình điều khiển trên Raspberry Pi

Hình 5.4 Lưu đồ điều khiển Robot trên Raspberry Pi

Robot hoạt động với hai chế độ: tránh né vật cản và không tránh né vật cản, phục vụ những mục đích khác nhau Trong chế độ tránh né vật cản, Robot giao tài liệu cho các gian hàng tại sự kiện/triển lãm, gọi điện và nhắn tin để nhân viên đến nhận tài liệu Ngược lại, ở chế độ không tránh né vật cản, Robot di chuyển trong sự kiện để phát bảng tin quảng cáo trên màn hình khi có khách tham quan ở phía trước.

Hình 5.5 Lưu đồ hàm chạy chế độ tránh vật cản trên Raspberry Pi

Hình 5.6 Lưu đồ hàm chạy chế độ không tránh vật cản trên Raspberry Pi

Robot hoạt động dựa trên tín hiệu vận tốc được tính toán bằng các thuật toán tìm đường Dijkstra và DWA Tín hiệu này bao gồm vận tốc dài 𝒗 và vận tốc xoay ⍵, được xác định thông qua mô hình động học của robot di động.

2 bánh vi sai để suy ra lần lượt vận tốc bánh trái và vận tốc bánh phải theo công thức sau:

• 𝑣, 𝜔 là vận tốc dài (m/s) và vận tốc góc (rad/s) được tính toán dựa trên các thuật toán tìm đường

• 𝑣 𝑙 , 𝑣 𝑟 là vận tốc dài của bánh trái và bánh phải (m/s)

• L là khoảng cách tính từ tâm của 2 bánh xe (m)

Vận tốc 2 bánh sau đó được gửi về cho vi điều khiển STM32 từ Raspberry Pi3 thông qua giao thức UART.

Chương trình điều khiển trên STM32

Trong cơ cấu truyền động, động cơ Mabuchi DC Motor được lựa chọn với tốc độ 114RPM và điện áp 12VDC Nhóm tác giả đã tiến hành khảo sát nguồn cấp và đáp ứng tốc độ quay của động cơ, từ đó xác định được hàm truyền của động cơ.

Hình 5.7 Khảo sát đầu vào và đầu ra của hệ thống

• u1 là đầu vào hệ thống (-1000 tới 1000 ứng với -12V đến 12V)

• y1 là đầu ra hệ thống (tốc độ động cơ)

Từ những số liệu thu được, sử dụng công cụ systemIdentification của Matlab tìm ra hàm truyền xấp xỉ của động cơ không trễ như sau:

Chia tử mẫu cho 0.9589 để thu được dạng gốc:

Vì Robot cần điều khiển vận tốc, nên chọn bộ điều khiển PI, hàm truyền dùng để tính

(5.7) Đưa bộ số trên vào mô phỏng đáp ứng, thu được:

Hình 5.8 Đáp ứng vận tốc với PID

Qua đồ thị nhận thấy với thông số PID được chọn, đường biểu diễn tốc độ đáp ứng của động cơ khá ổn định

Hình 5.9 Lưu đồ điều khiển trên vi điều khiển STM32

Hình 5.10 Lưu đồ hàm điều khiển PID

Sau khi khởi động, vi điều khiển STM32 khởi tạo các ngoại vi cần thiết như UART, I2C và bộ Timer 5ms để lấy mẫu Khi nhận giá trị vận tốc từ Raspberry Pi qua giao thức UART, STM32 sử dụng bộ điều khiển PID để xuất tín hiệu điều khiển xung PWM, giúp động cơ đáp ứng chính xác giá trị vận tốc đã gửi.

Thiết kế giao diện Web Server giao tiếp với Robot và tương tác với người dùng

Nhóm tác giả đã phát triển một trang Web điều khiển ứng dụng Flask để tương tác dễ dàng với Robot, sử dụng ngôn ngữ lập trình Python, nhằm hỗ trợ việc xây dựng Web hiệu quả.

Giao diện Web được phát triển bằng HTML, CSS và Javascript, cung cấp các tính năng cơ bản như trang điều khiển thủ công, trang điều khiển tự động, chế độ hiển thị quảng cáo, chế độ giao tài liệu, thông tin Robot và nút tắt nguồn Để sử dụng Web điều khiển, Robot cần được kết nối với mạng WiFi chung với điện thoại và máy tính server, và nguồn của Robot cần được khởi động trước khi truy cập vào Web điều khiển.

Hình 5.12 Giao diện Web Server khi truy cập bằng thiết bị di động

Các mục được thể hiện bao gồm:

• SCREEN MODE: Chế độ này có 2 lựa chọn là Advertise và Check out, ứng với 2 chức năng là quảng cáo và nhập check-out code cho các gian hàng

Hình 5.13 Hai chế độ chọn ở SCREEN MODE

- Chức năng Advertise cho phép chạy những quảng cáo được tải lên từ người dùng, mỗi quảng cáo được chuyển tiếp 5 giây 1 lần

Hình 5.14 Các nút trong chức năng Advertise

- Chức năng Check-out dùng để các gian hàng nhập mã code được phân phát để có thể lấy tài liệu ở trên khay của Robot

Hình 5.15 Chế độ cho Admin và nhân viên quầy hàng

Để truy cập vào chức năng Admin, người dùng cần nhập mật khẩu, mật khẩu mặc định là “1234” Trong khi đó, chức năng Screen có thể truy cập một cách bình thường Khi vào chức năng Screen, người dùng sẽ thấy Animation khuôn mặt cùng với nút để nhập Code Check-out.

Hình 5.16 Animation ở chức năng Check-out

- Còn khi vào chế độ Admin, người dùng có thể thêm danh sách Code để các gian hàng có thể nhập

Hình 5.17 Các chức năng của Admin

• CONTROL: Chọn chế độ hoạt động tự động của Robot

Với mỗi chế độ Robot cần cung cấp thêm một số thông tin chi tiết để Robot tự hoạt động được là Navigation hoặc Stop on Obstacle

Hình 5.18 Hai chế độ chạy của điều khiên tự động

- Chế độ Navigation: Robot sẽ di chuyển theo các điểm được chọn và tránh vật cản trong quá trính di chuyển

Chế độ Stop on Obstacle cho phép robot di chuyển đến các điểm đã chọn và tự động dừng lại khi gặp vật cản Khi không còn vật cản trên đường đi, robot sẽ tiếp tục hành trình của mình.

• MANUAL: Chế độ điều khiển thủ công Người dùng có thể dùng các nút mũi tên trên màn hình để điều khiển hướng di chuyển của robot

Mũi tên trái và phải cho phép người dùng điều khiển hướng xoay tại chỗ với tốc độ xoay mặc định là 23.8 độ/s, trong khi mũi tên lên và xuống được sử dụng để điều khiển tiến và lùi với tốc độ mặc định là 0.1m/s.

- Nút Stop để dừng Robot

Robot có tốc độ mặc định là 0.1m/s, và người dùng có thể điều chỉnh tốc độ này bằng cách nhấn nút Speed Up hoặc Speed Down Mỗi lần nhấn nút Speed Up sẽ tăng tốc độ di chuyển của mỗi bánh lên 0.01m/s, trong khi nhấn nút Speed Down sẽ giảm tốc độ tương ứng.

Hình 5.19 Giao diện điều khiển Robot thủ công

• INFORMATION: Hiển thị thông tin nhóm tác giả

Hình 5.20 Giao diện màn hình thông tin nhóm tác giả

• SHUTDOWN: Tắt nguồn máy tính nhúng Raspberry Pi

KẾT QUẢ THỰC NGHIỆM

Phần cơ khí

Nhóm tác giả đã hoàn thiện lắp ráp cơ khí của Robot, bao gồm khung sườn, phần vỏ ngoài, phần đề, màn hình và khay đựng

Hình 6.1 Hình ảnh Robot hoàn thiện nhìn từ trước ra sau

Hình 6.2 Hình ảnh Robot hoàn thiện nhìn từ sau ra trước

Hình 6.3 Hình ảnh Robot hoàn thiện nhìn từ trái sang

Tổng chi phí để thi công toàn bộ Robot rơi vào khoảng xấp xỉ 9.200.000 VNĐ

Phần điều khiển

6.2.1 Thực nghiệm lấy bản đồ

Nhóm tác giả thực hiện tạo bản đồ khu vực trước phòng 3DVisionLab

Hình 6.4 Khu vực thử nghiệm thực tế

Hình 6.5 Kích thước thực tế của khu vực chạy thực nghiệm

Bằng công cụ Rviz, thực hiện tạo bản đồ 5 lần, mỗi lần 5 phút

Để so sánh sai số giữa các lần tạo bản đồ và lần tạo đầu tiên, nhóm đã thực hiện 5 lần thử nghiệm và sử dụng thư viện OpenCV để phân tích ảnh Các bước thực hiện bao gồm việc so sánh các bản đồ được tạo ra nhằm đánh giá độ chính xác và hiệu quả của quy trình.

- Chuyển ảnh sang dạng nhị phân (Binary) để dễ dàng so sánh

- Sử dụng hàm “cv2.absdiff()” để tính sự khác biệt tuyệt đối giữa 2 ảnh với nhau

- Đếm số lượng điểm ảnh khác biệt để suy ra phần trăm sai lệch, dùng hàm

“sum” của thư viện Numpy

- Lấy số lượng điểm ảnh khác biệt chia cho tổng số điểm ảnh của hình tạo lần 1 để suy ra phần trăm sai số

- Dùng thư viện Matplotlib để hiển thị

Hình 6.7 So sánh sai lệch giữa lần đo 1 và 4 lần đo sau đó

Từ tính toán trên, sai số trong quá trình tạo bản đồ cao nhất là 0.71%, đáp ứng với tiêu chí đề ra (không quá 2%)

6.2.2 Thực nghiệm độ chính xác từ điểm tới điểm a Thử nghiệm sai số về quãng đường và thời gian đáp ứng khi không có tải Để khảo sát sai lệch về quãng đường và đo lường thời gian của Robot khi không có tải, nhóm thực hiện thả điểm từ công cụ Rviz, một ô lưới trên Rviz ứng với 1 mét

Hình 6.8 Thử nghiệm sai số về quãng đường và thời gian đáp ứng ở khoảng cách 3 và 4 mét

Hình 6.9 Quá trình thử nghiệm 3m, 4m không tải, không vật cản trên công cụ Rviz

• 3m không tải, không vật cản

Bảng 6.2 Số liệu thu được khi chạy thực nghiệm 3m không vật cản

STT Quãng đường (mét) Thời gian (giây) Vận tốc (m/s) Sai số quãng đường (%)

Biểu đồ 6.1 Sai lệch vị trí chạy 3m không tải, không vật cản

Trong một thí nghiệm đo độ chính xác của Robot khi di chuyển quãng đường 3m mà không có vật cản và không mang tải, vận tốc trung bình đạt được là 0.24892m/s Sai số về quãng đường trung bình được ghi nhận là 2.466%, nằm trong giới hạn cho phép.

Lần đo 1 Lần đo 2 Lần đo 3 Lần đo 4 Lần đo 5

Q uã ng đường đo được (m )

Biểu đồ sai lệch vị trí chạy 3m không vật cản, không tải

Quãng đường thực Quãng đường mong muốn

• 4m không tải, không vật cản

Bảng 6.3 Số liệu thu được khi chạy thực nghiệm 4m không tải, không vật cản

STT Quãng đường (mét) Thời gian (giây) Vận tốc (m/s) Sai số quãng đường (%)

Biểu đồ 6.2 Sai lệch vị trí chạy 4m không tải, không vật cản

Trong một thí nghiệm đo sai lệch vị trí của Robot khi di chuyển quãng đường 4m mà không có vật cản và không có tải, vận tốc trung bình đạt được là 0.264m/s Sai số về quãng đường trung bình là 2.05%, và mức sai số này nằm trong phạm vi cho phép.

Lần đo 1 Lần đo 2 Lần đo 3 Lần đo 4 Lần đo 5

Biểu đồ sai lệch vị trí chạy 4m không tải không vật cản

Quãng đường thực Quãng đường mong muốn

• 4m không tải, có vật cản

Hình 6.10 Thử nghiệm sai số về quãng đường và thời gian đáp ứng ở khoảng cách 4 mét không tải, có vật cản trước Robot 2 mét

Bảng 6.4 Số liệu thu được khi chạy thực nghiệm 4m không có tải có vật cản

STT Quãng đường (mét) Thời gian (giây) Vận tốc (m/s) Sai số quãng đường (%)

Biểu đồ 6.3 Sai lệch vị trí chạy 4m không tải, có vật cản

Kết quả thực nghiệm cho thấy khi Robot di chuyển quãng đường 4m không có vật cản và không có tải, vận tốc trung bình đạt 0.2212m/s Sai số về quãng đường trung bình là 3.35%, nằm trong giới hạn cho phép.

Lần đo 1 Lần đo 2 Lần đo 3 Lần đo 4 Lần đo 5

Biểu đồ sai lệch vị trí chạy 4m không tải, có vật cản

Quãng đường thực Quãng đường mong muốn

Để khảo sát sai lệch về quãng đường và thời gian đáp ứng của Robot khi có tải, nhóm tác giả đã thực hiện thí nghiệm với các tải trọng lần lượt 1kg, 1kg và 2kg, tổng khối lượng là 4kg Việc đo lường khoảng cách di chuyển được thực hiện bằng công cụ Rviz, tương tự như cách đo khi Robot không có tải.

Hình 6.11 Phân bố tải 4kg trên các khay của Robot

• 4m có tải, không vật cản

Bảng 6.5 Số liệu thu được khi chạy thực nghiệm 4m có tải không có vật cản

STT Quãng đường (mét) Thời gian (giây) Vận tốc (m/s) Sai số quãng đường (%)

Biểu đồ 6.4 Sai lệch vị trí chạy 4m có tải, không có vật cản

Trong một thí nghiệm đo sai lệch vị trí của Robot khi di chuyển quãng đường 4m mà không có vật cản và không tải, vận tốc trung bình đạt 0.1928m/s Sai số về quãng đường trung bình là 3.5%, và mức sai số này nằm trong phạm vi cho phép.

Lần đo 1 Lần đo 2 Lần đo 3 Lần đo 4 Lần đo 5

Sai lệch vị trí chạy 4m có tải, không có vật cản

Quãng đường thực Quãng đường mong muốn

• 4m có tải, có vật cản

Hình 6.12 Quá trình thử nghiệm 4m có tải, có vật cản trên công cụ Rviz

Bảng 6.6 Số liệu thu được khi chạy thực nghiệm 4m có tải có vật cản

Biểu đồ 6.5 Sai lệch vị trí chạy 4m có tải, có vật cản

Thực nghiệm đo sai lệch vị trí khi Robot di chuyển quãng đường 4m không có vật cản và tải cho thấy vận tốc trung bình đạt 0.1854m/s Sai số về quãng đường trung bình là 4.1%, nằm trong phạm vi cho phép.

6.2.3 Thực nghiệm khoảng cách an toàn của Robot so với vật cản

Thực hiện thả điểm cho Robot di chuyển trên một đường thẳng và bất ngờ đưa vật cản vào đường đi của Robot Kết quả thu được khoảng cách an toàn giữa Robot và vật cản, được trình bày trong bảng.

Bảng 6.7 Số liệu thu được về khoảng cách an toàn của Robot so với vật cản

Lần thử Khoảng cách với vật cản (cm)

Lần đo 1 Lần đo 2 Lần đo 3 Lần đo 4 Lần đo 5

Sai lệch vị trí chạy 4m có tải, có vật cản

Quãng đường thực Quãng đường mong muốn

Khoảng cách an toàn giữa Robot và vật cản là khoảng 5-7 cm khi Robot dừng lại để thực hiện việc tránh vật cản Khoảng cách này đáp ứng tiêu chí an toàn đã đề ra là 20 cm.

6.2.4 Thực nghiệm quá trình vận hành của Robot phỏng theo môi trường trong sự kiện/triển lãm

Robot hoạt động ở chế độ đa điểm, mô phỏng chức năng phát giấy Khi đến vị trí đã định, như một gian hàng, Robot sẽ dừng lại và gọi điện cho nhà trưng bày để yêu cầu họ ra nhận giấy Thời gian chờ và số điện thoại tại mỗi gian hàng có thể được nhập vào chương trình điều khiển trước khi Robot di chuyển.

HÌnh 6.13 Robot di chuyển đến những điểm được đặt trên map

Khảo sát dung lượng nguồn điện - Pin

Thực nghiệm đã được thực hiện bằng cách cho Robot hoạt động trong nhiều chế độ điều khiển khác nhau, bao gồm quét bản đồ và di chuyển để tránh vật cản, từ khi đầy pin cho đến khi cần sạc lại Kết quả thu được cho thấy hiệu suất hoạt động của Robot trong suốt quá trình này.

Bảng 6.8 Thời lượng sử dụng Pin

STT Khoảng thời gian Pin động cơ (V) Pin Board điều khiển (V)

Biểu đồ 6.6 Biểu đồ mức điện áp (V) của Pin theo thời gian

Ngưỡng điện áp của pin LiPo trong robot được xác định là 11.1V và 12.6V Khi pin giảm xuống dưới ngưỡng này, khả năng sạc lại sẽ bị mất Thời gian sử dụng pin từ mức đầy (12.6V) đến 11.3V cho board và 11.9V cho động cơ là khoảng 2 giờ 55 phút Thời gian này nằm trong giới hạn cho phép so với tiêu chí sử dụng ban đầu là 3 giờ.

9:50:00 PM 10:25:00 PM 10:50:00 PM 11:50:00 PM 12:17:00 AM 12:45:00 AM

Biểu đồ mức điện áp (V) của Pin theo thời gian

Pin động cơ Pin Board

Ngày đăng: 20/12/2024, 15:21

TRÍCH ĐOẠN

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

TÀI LIỆU LIÊN QUAN

w