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

thiết kế và chế tạo robot tự hành 2

95 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à chế tạo robot tự hành
Tác giả Phan Hữu Chí, Hồ Duy Khánh, Trương Công Lũy
Người hướng dẫn TS. Nguyễn Phú Sinh
Trường học Đại học Đà Nẵng
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 2023
Thành phố Đà Nẵng
Định dạng
Số trang 95
Dung lượng 9,08 MB

Cấu trúc

  • CHƯƠNG 1: GIỚI THIỆU CHUNG VỀ ĐỀ TÀI (17)
    • 1.1. Tổng quan đề tài (17)
    • 1.2. Mục tiêu luận văn và phương pháp thực hiện (18)
      • 1.2.1. Mục đích thực hiện đề tài luận văn (18)
      • 1.2.2. Mục tiêu luận văn (19)
      • 1.2.3. Phương pháp thực hiện (19)
    • 1.3. Sơ đồ tổng quát hệ thống (20)
  • CHƯƠNG 2: GIỚI THIỆU PHẦN CỨNG HỆ THỐNG (21)
    • 2.1. Mạch Arduino (21)
      • 2.1.1. Giới thiệu về mạch Arduino Mega 2560 R3 (21)
      • 2.1.2. Cấu tạo của Arduino Mega 2560 R3 (22)
      • 2.1.3. Tập lệnh thư viện (24)
    • 2.2. Microstep driver (24)
      • 2.2.1. Giới thiệu Microstep driver (24)
      • 2.2.2. Cài đặt và ghép nối Driver TB6600 (26)
    • 2.3. Encoder (28)
      • 2.3.1. Giới thiệu encoder (28)
      • 2.3.2. Cấu tạo của encoder (29)
      • 2.3.3. Nguyên lí hoạt động (30)
    • 2.4. Động cơ bước (31)
    • 2.5. Cảm biến RP Lidar (35)
      • 2.5.1. Giới thiệu (35)
      • 2.5.2. Kết nối hệ thống (36)
      • 2.5.3. Cơ chế (37)
      • 2.5.4. An toàn và phạm vi (38)
      • 2.5.5. Ứng dụng (38)
  • CHƯƠNG 3: NỘI DUNG VÀ PHƯƠNG PHÁP NGHIÊN CỨU (40)
    • 3.1. Đối tượng nghiên cứu (40)
      • 3.1.1. Chức năng mục tiêu cần đạt (40)
      • 3.1.2. Lựa chọn thiết bị (40)
        • 3.1.2.1. Arduino UNO (40)
        • 3.1.2.2. Microstep driver (41)
        • 3.1.2.3. Động cơ bước (41)
        • 3.1.2.4. Các linh kiện khác (42)
      • 3.1.3. Lựa chọn phần mềm (42)
    • 3.2. Thiết kế phần mềm (45)
      • 3.2.1. Sơ đồ nguyên lý (45)
      • 3.2.2. Công thức tính động học và động lực học của Robot (45)
      • 3.2.3. Lưu đồ thuật toán điều khiển arduino (48)
      • 3.2.4. Chương trình điều khiển động cơ (48)
    • 3.3. Thiết kế phần cứng (55)
  • CHƯƠNG 4: GIỚI THIỆU NỀN TẢNG ROS (59)
    • 4.1. Giới thiệu ROS (59)
    • 4.2. Khái quát về mô hình ROS (0)
      • 4.2.1. ROS Filesystem (60)
      • 4.2.2. ROS Computation Graph (61)
      • 4.2.3. ROS Community (63)
    • 4.3. Áp dụng mô hình ROS (64)
      • 4.3.1. Key Teleop (65)
      • 4.3.2. Twist to motor (66)
      • 4.3.3. Serial Node (66)
      • 4.3.4. Odometry (67)
      • 4.3.5. SLAM/AMCL (69)
      • 4.3.6. Rplidar (70)
      • 4.3.7. Robot State Publisher (70)
      • 4.3.8. Map Server (72)
      • 4.3.9. Move Base (73)
  • CHƯƠNG 5: XÂY DỰNG PHẦN MỀN TRÊN NỀN TẢNG ROS (75)
    • 5.1. Vẽ bản đồ môi trường (75)
      • 5.1.1. Lí do vẽ bản đồ môi trường (75)
      • 5.1.2. Thuật toán vẽ bản đồ Hector SLAM (0)
        • 5.1.2.1. Tổng quan về thuật toán Hector Slam (0)
        • 5.1.2.2. Lưu đồ thuật toán ROS (81)
    • 5.2. Định vị robot trong bản đồ (82)
      • 5.2.1. Mô hình chuyển động (82)
      • 5.2.2. Particle filter (83)
      • 5.2.3. Xác định vị trí robot vs AMCL (84)
        • 5.2.3.1. Thuật toán định vị Adaptive Monte Carlo Localization (84)
        • 5.2.3.2. Bộ lọc thích ghi AMCL (85)
    • 5.3. Tìm đường đi đến đích (87)
      • 5.3.1. Giới thiệu về thuật toán Dijkstra (87)
      • 5.3.5. Thuật toán tránh vật cản xuất hiện ngẫu nhiên (89)
  • CHƯƠNG 6: KẾT QUẢ VÀ THẢO LUẬN (91)
    • 6.1. Môi trường thử nghiệm (91)
    • 6.2. Kết quả vẽ bản đồ với phương pháp Hector SLAM (91)
      • 6.2.1. Mục đích thử nghiệm (91)
      • 6.2.2. Kết quả vẽ bản đồ với phương pháp Hector SLAM (91)
    • 6.3. Thảo luận (92)
      • 6.3.1. Ưu điểm (92)
      • 6.3.2. Nhược điểm (93)
      • 6.3.3. Phương hướng phát triển (93)
  • TÀI LIỆU THAM KHẢO (95)

Nội dung

Nhưng để đáp ứng nhu cầu của cuộc sống thìviệc phát triển và ứng dụng robot tự hành vào đời sống cần được đẩy mạnh hơn nữa.Vì vậy mà nhóm chúng em quyết định chọn đề tài “Xe tự hành tron

GIỚI THIỆU CHUNG VỀ ĐỀ TÀI

Tổng quan đề tài

Với thời đại công nghệ, khoa học kỹ thuật phát triển không ngừng như hiện nay thì trong tương lai gần, mỗi người sẽ cần cho mình một robot cá nhân như cần một máy tính PC hay điện thoại di động Vì thế robot đã và đang đóng vai trò hết sức quan trọng và là một phần không thể thiếu trong cuộc sống Trong đó, robot tự hành là một trong những cánh tay đắc lực giúp sức cho con người trong nhiều lĩnh vực. Đề tài "Thiết kế và chế tạo robot tự hành" là một lĩnh vực nghiên cứu phát triển robot có khả năng hoạt động và ra quyết định độc lập mà không cần sự can thiệp của con người Robot tự hành có thể thực hiện các tác vụ cụ thể mà không cần hướng dẫn chi tiết từ con người.

Quá trình thiết kế và chế tạo robot tự hành bao gồm nhiều bước cơ bản Đầu tiên, các nhà nghiên cứu xác định mục tiêu và yêu cầu cụ thể mà robot cần đáp ứng Sau đó, họ thực hiện việc thiết kế cơ học, điện tử và phần mềm của robot để đảm bảo nó có đủ khả năng di chuyển, cảm nhận và xử lý thông tin.

Các thành phần chính trong một robot tự hành bao gồm:

 Cảm biến: Robot tự hành được trang bị các loại cảm biến như camera, radar, lidar, cảm biến vị trí, cảm biến tiếp xúc, cảm biến hình dạng và cảm biến âm thanh Các cảm biến này giúp robot thu thập thông tin về môi trường xung quanh và tự định vị, định hướng và tránh các vật cản.

 Xử lý thông tin: Robot tự hành sử dụng các công nghệ xử lý thông tin như trí tuệ nhân tạo, học máy và thuật toán để hiểu và phân tích dữ liệu từ các cảm biến Nó có khả năng xử lý thông tin phức tạp, nhận dạng đối tượng, đọc bản đồ, dự đoán và quyết định.

 Hệ thống di chuyển: Robot tự hành có hệ thống di chuyển để tự động điều khiển vận tốc, hướng đi và quỹ đạo di chuyển Nó có thể sử dụng bánh xe,chân robot, cánh tay robot hoặc các hệ thống di chuyển khác tùy thuộc vào ứng dụng cụ thể.

Thiết kế và chế tạo robot tự hành

Robot tự hành có thể được ứng dụng trong nhiều lĩnh vực khác nhau như công nghiệp, y tế, dịch vụ và nông nghiệp Ví dụ, trong công nghiệp, robot tự hành có thể tự động hóa các quy trình sản xuất và vận chuyển Trong y tế, chúng có thể được sử dụng để hỗ trợ trong phẫu thuật và chăm sóc bệnh nhân Trong nông nghiệp, robot tự hành có thể tự động hóa các tác vụ như thu hoạch, tưới nước và kiểm soát cỏ dại.

Tổng quan về đề tài "Thiết kế và chế tạo robot tự hành" là một lĩnh vực rộng và đa dạng, đòi hỏi sự kết hợp giữa nhiều kiến thức và kỹ năng từ các lĩnh vực như cơ khí, điện tử, trí tuệ nhân tạo và lập trình Sự phát triển của robot tự hành có tiềm năng mang lại nhiều lợi ích cho xã hội và đóng góp vào sự tiến bộ của công nghệ tự động hóa.

Hiện tại ở Việt Nam việc sử dụng xe tự hành vẫn còn chưa phổ biến vì còn nhiều khó khăn trong việc tiếp cận công nghệ Nhưng để đáp ứng nhu cầu của cuộc sống thì việc phát triển và ứng dụng robot tự hành vào đời sống cần được đẩy mạnh hơn nữa.

Vì vậy mà nhóm chúng em quyết định chọn đề tài “Xe tự hành trong nhà dùng cảm biến Lidar” để nghiên cứu và học tập nhằm học hỏi thêm nhiều kiến thức cũng như tích lũy thêm kinh nghiệm để hy vọng có thể phát triển lĩnh vực xe tự hành trong tương lai.

Hình 1.1: Một số sản phẩm robot tự hành.

Mục tiêu luận văn và phương pháp thực hiện

1.2.1 Mục đích thực hiện đề tài luận văn:

Mục đích thực hiện đề tài luận văn này là xây dựng một hệ thống xe tự hành trong nhà có khả năng di chuyển và tránh vật cản để đi đến đích mong muốn Để có thể giúp đỡ con người trong các công việc cụ thể sau đây.

Các robot tự hành này sẽ rất hữu ích trong việc vận chuyển hàng hóa trong các kho hàng vì sự linh động khi tránh vật cản so với một số loại robot đi theo đường đi vạch sẵn Bên cạnh đó, đối với sinh hoạt của con người, robot có thể di chuyển tự động trong nhà để mang nước, mang đồ đạc hay thậm chí là có thể quét dọn nhà cửa.

Tích hợp thêm khả năng nhận diện đối tượng và đi đến vị trí của đối tượng đó, những robot này có thể được ứng dụng trong các cửa hàng, siêu thị lớn để giúp người mua hàng đi đến vị trị món hàng mà họ muốn bằng cách đưa cho robot xem đối tượng cần đến.

Hình 1.2: Robot hỗ trợ trong siêu thị

Cùng với đó, robot có khả năng bám theo đối tượng để đi theo người dùng Việc này thực sự rất hữu ích khi người dùng cần robot mang vác các vật nặng trong sân bay hay các siêu thị.

Mục tiêu chính của luận văn là xây dựng robot di động có khả năng di chuyển đến đích và không bị va chạm với vật cản Robot di động này có ứng dụng và tiềm năng rất đa dạng song luận văn chỉ tập chung vào một số tính năng cơ bản được xây dựng trên nền tảng ROS:

 Robot có khả năng lập bản đồ trong môi trường chưa xác định Sau đó robot sẽ tự di chuyển đến đích và tránh vật cản.

 Robot còn tích hợp thêm khả năng bám theo đối tượng bằng cách sử dụng cảm biến Lidar để xác định đối tượng và khoảng cách đến đối tượng.

Dựa vào môi trường hoạt động của robot là ở trong nhà nên nhóm tự thiết kế và

Thiết kế và chế tạo robot tự hành điều hành Linux Laptop thực hiện xử lí dữ liệu nhận được từ vi điều khiển để tính toán vị trí của robot Chương trình xử lí của máy tính hoạt động trên nền tảng ROS, được trình bày trong chương 4 Laptop thực hiện vẽ bản đồ môi trường từ dữ liệu nhận được qua Lidar Sau khi có bản đồ, robot có thể tự di chuyển đến đích và tránh vật cản tự động Robot có khả năng bám theo người ở một khoảng cách cố định với những ứng dụng thực tế Cuối cùng, nhóm thực hiện nghiên cứu robot nhận dạng đối tượng và đi đến vị trí của đối tượng, một ứng dụng giúp người dùng dễ dàng tìm kiếm ở những môi trường có rất nhiều vật dụng khác nhau như siêu thị, nhà sách…

Sơ đồ tổng quát hệ thống

Robot tự hành trong nhà là một hệ thống được thiết kế gồm có khung cơ khí, các ngoại vi và mạch điều khiển đáp ứng các yêu cầu xử lí cảm biến, tự hành tránh vật cản và điều khiển từ xa Từ những yêu cầu như trên, phần cứng robot bao gồm: khung xe, cảm biến Lidar, vi điều khiển giao tiếp với ngoại vi và máy tính, động cơ bước Step, để điều khiển động cơ, mạch đệm giữa ngoại vi và vi điều khiển, nguồn điện cấp cho Microstep driver và máy tính được cài đặt hệ thống ROS trên hệ điều hành Unbutu 18.0.4

Hình 1.3: Sơ đồ tổng quát hệ thống.

GIỚI THIỆU PHẦN CỨNG HỆ THỐNG

Mạch Arduino

2.1.1 Giới thiệu về mạch Arduino Mega 2560 R3:

Arduino Mega là một phiên bản của bo mạch phát triển Arduino, nổi tiếng với khả năng xử lý mạnh mẽ và nhiều chân I/O (input/output) Arduino Mega sử dụng vi điều khiển ATmega2560, cho phép thực hiện các dự án phức tạp và đa chức năng. Arduino Mega có các đặc điểm chính sau: Vi điều khiển: Arduino Mega sử dụng vi điều khiển ATmega2560, có xung nhịp 16 MHz và bộ nhớ Flash 256 KB, trong đó có

8 KB được dùng cho bootloader Chân I/O: Arduino Mega có 54 chân I/O kỹ thuật số,trong đó 15 chân có thể sử dụng làm đầu ra PWM (Pulse Width Modulation), cho phép điều chỉnh mức độ tín hiệu Ngoài ra, nó cũng có 16 chân đầu vào analog và 4 chânUART (Universal Asynchronous Receiver/Transmitter) để giao tiếp với các thiết bị khác Bộ nhớ: Arduino Mega có bộ nhớ SRAM (Static Random-Access Memory) lên đến 8 KB, cho phép lưu trữ và xử lý dữ liệu lớn hơn so với các phiên bản Arduino khác Giao tiếp: Arduino Mega hỗ trợ giao tiếp với máy tính thông qua cổng USB Nó cũng có cổng ICSP (In-Circuit Serial Programming) cho việc nạp firmware trực tiếp lên vi điều khiển Hỗ trợ phần cứng: Arduino Mega có các phần cứng bổ sung như một đèn LED để chỉ trạng thái hoạt động, một nút nhấn để khởi động hoặc điều khiển chương trình, và một nút nhấn để nạp chương trình mới Arduino Mega với ch340 là phiên bản sử dụng chip ch340 để chuyển đổi giao tiếp USB thành giao tiếp UART.Chip ch340 giúp Arduino Mega kết nối dễ dàng với máy tính thông qua cổng USB.Arduino Mega với ch340 là một lựa chọn phổ biến cho các dự án phức tạp và yêu cầu nhiều chân I/O Nó được sử dụng rộng rãi trong robot, điều khiển thiết bị, hệ thống nhúng và các ứng dụng điện tử khác.

Thiết kế và chế tạo robot tự hành

Hình 2 1: Hình dáng mạch Arduino Mega 2560 R3

 Những thông số kỹ thuật và đặc điểm của mạch Arduino Mega 2560 R3:

Mạch Arduino Mega 2560 R3 là một phiên bản nâng cấp của mạch Arduino Uno với các tính năng và chức năng mở rộng hơn Dưới đây là một số thông số kỹ thuật và đặc điểm của mạch Arduino Mega 2560 R3:

 Điện áp đầu vào (recommened): 7-12V

 Điện áp đầu vào (tối đa): 6-20V

 Digital I/O Pins: 54 (trong đó có 15 đầu vào có thể sử dụng PWM)

 Flash Memory: 256 KB (trong đó 8 KB được dành riêng cho bootloader)

2.1.2 Cấu tạo của Arduino Mega 2560 R3:

Arduino Mega 2560 R3 là một phiên bản của bo mạch Arduino Mega Đây là một trong những phiên bản phổ biến và mạnh mẽ của dòng Arduino Dưới đây là cấu trúc và thông số kỹ thuật chính của Arduino Mega 2560 R3:

 Vi xử lý: Arduino Mega 2560 R3 được trang bị vi xử lý ATmega2560, đây là một vi xử lý 8-bit có tốc độ xung nhịp 16 MHz Nó cung cấp đủ tài nguyên và khả năng xử lý để điều khiển các mạch điện tử và thực hiện các tác vụ đa nhiệm.

 Bộ nhớ: Vi xử lý ATmega2560 có bộ nhớ Flash 256 KB, trong đó khoảng 8

KB được dành riêng cho khối bootloader Nó cũng có bộ nhớ SRAM 8 KB và EEPROM 4 KB Bộ nhớ Flash được sử dụng để lưu trữ chương trình Arduino và dữ liệu, trong khi SRAM được sử dụng để lưu trữ dữ liệu tạm thời trong quá trình chạy và EEPROM dùng để lưu trữ dữ liệu không mất đi khi nguồn điện được ngắt.

 Chân kết nối: Arduino Mega 2560 R3 có tổng cộng 54 chân kết nối, bao gồm

15 chân PWM (Pulse Width Modulation) Chân kết nối này được sắp xếp thành các chân số, chân analog, chân PWM và chân ngoại vi khác như UART,

I2C, SPI Các chân này có thể được sử dụng để kết nối các cảm biến, mạch điều khiển và các linh kiện khác Chân kết nối được đánh số từ 0 đến 53.

 Giao diện: Arduino Mega 2560 R3 đi kèm với các giao diện thông dụng như USB, UART, I2C và SPI Nó có một cổng USB để kết nối với máy tính và giao tiếp với môi trường lập trình Arduino. o USB: Arduino Mega 2560 R3 có một cổng USB Type-B để kết nối với máy tính và giao tiếp với môi trường lập trình Arduino. o ICSP: Arduino Mega 2560 R3 có một cổng ICSP (In-Circuit Serial Programming) để nạp chương trình trực tiếp vào vi xử lý. o UART: Arduino Mega 2560 R3 có 4 cổng UART (Universal Asynchronous Receiver-Transmitter) để giao tiếp với các thiết bị ngoại vi như cảm biến, mạch điều khiển, và module khác. o I2C: Có 2 cổng I2C (Inter-Integrated Circuit) cho việc kết nối với các thiết bị I2C như cảm biến và mạch điều khiển. o SPI: Có 1 cổng SPI (Serial Peripheral Interface) để giao tiếp với các thiết bị SPI như mạch nhớ, mạch điều khiển.

 Nguồn điện: Arduino Mega 2560 R3 có thể hoạt động với nguồn điện từ 7V đến 12V thông qua cổng nguồn hoặc từ 6V đến 20V thông qua cổng nguồn

DC Nó cũng hỗ trợ nguồn điện từ pin ngoài.

 Bootloader: Arduino Mega 2560 R3 đi kèm với một bootloader, cho phép nạp chương trình Arduino thông qua kết nối USB mà không cần sử dụng trình nạp ngoài.

 Hỗ trợ phần mềm: Arduino Mega 2560 R3 có thể được lập trình bằng ngôn ngữ Arduino, một ngôn ngữ lập trình dễ học và dễ sử dụng Nó hỗ trợ môi trường lập trình Arduino IDE, cho phép bạn viết, nạp và gỡ lỗi các chương trình Arduino.

Thiết kế và chế tạo robot tự hành

Hình 2 2: Phần cứng nền tảng của Arduino Mega 2560 R3

Arduino Mega 2560 R3 là một trong những dòng board phổ biến của Arduino với khả năng điều khiển các thiết bị đa dạng Arduino Mega đi kèm với một thư viện lệnh đa dạng và phong phú, cung cấp cho người dùng nhiều tùy chọn để lập trình và điều khiển các thiết bị.

Một số thư viện lệnh phổ biến của Arduino Mega 2560 R3 bao gồm:

1 Wire: Thư viện lệnh để điều khiển các thiết bị giao tiếp I2C như cảm biến, màn hình LCD, EEPROM và các thiết bị khác.

2 SPI: Thư viện lệnh để điều khiển các thiết bị giao tiếp SPI như màn hình TFT,module SD card, radio nRF24L01 và các thiết bị khác.

Microstep driver

Microstep driver là một thành phần quan trọng trong các hệ thống động cơ bước, như động cơ bước đơn hay động cơ bước pha chia Nhiệm vụ của microstep driver là điều khiển chuyển động và vị trí của động cơ bước thông qua việc cung cấp các xung điều khiển chính xác.

Trong động cơ bước thông thường, các bước di chuyển được thực hiện bằng cách chuyển đổi từng bước rời (full step) hoặc nửa bước (half step) Tuy nhiên, việc sử dụng microstep driver cho phép chia nhỏ hơn các bước di chuyển thành các bước nhỏ hơn, gọi là microsteps Kỹ thuật microstep cho phép động cơ bước di chuyển một cách mịn màng hơn và cải thiện độ chính xác và độ mịn trong việc định vị vị trí.

Microstep driver hoạt động bằng cách tạo ra các xung điều khiển với các mức điện áp và mô-men xoắn tương ứng để điều khiển các cuộn dây trong động cơ bước. Các xung điều khiển này được điều chỉnh để tạo ra các microsteps và xác định hướng di chuyển và tốc độ của động cơ.

Microstep driver TB6600 là một trong những loại microstep driver phổ biến được sử dụng để điều khiển động cơ bước Nó cung cấp khả năng chia nhỏ bước di chuyển thành các microsteps, giúp tăng độ mịn và độ chính xác trong việc điều khiển động cơ bước.

Dưới đây là một số đặc điểm và tính năng chính của microstep driver TB6600:

 Điện áp và dòng điều khiển: TB6600 hỗ trợ điện áp nguồn từ 9V đến 42V DC và dòng điều khiển lên đến 4,5A Điều này cho phép nó làm việc với đa số các loại động cơ bước phổ biến.

 Chế độ chia bước: TB6600 cho phép lựa chọn số lượng microsteps, từ 1 đến

32 microsteps Điều này tạo ra độ mịn và độ chính xác cao hơn trong quá trình di chuyển của động cơ bước.

 Chế độ điều khiển: TB6600 hỗ trợ chế độ điều khiển hai pha hoặc bốn pha cho động cơ bước Bạn có thể chọn chế độ điều khiển phù hợp với động cơ của mình.

 Giao diện đơn giản: Microstep driver TB6600 có một số chân kết nối quan trọng nhưng đơn giản để điều khiển và kết nối với các thành phần khác như động cơ, nguồn điện và tín hiệu điều khiển.

 Bảo vệ và tính năng an toàn: TB6600 được tích hợp các tính năng bảo vệ như bảo vệ quá dòng, bảo vệ quá nhiệt và bảo vệ ngắn mạch Điều này giúp bảo vệ động cơ và microstep driver khỏi các tình huống không mong muốn và đảm bảo an toàn trong quá trình hoạt động.

 Ứng dụng đa dạng: Microstep driver TB6600 được sử dụng rộng rãi trong các ứng dụng như máy CNC, máy in 3D, máy khắc laser, robot, máy vị trí, và các hệ thống điều khiển động cơ bước khác.

Microstep driver TB6600 là một giải pháp linh hoạt và mạnh mẽ để điều khiển động cơ bước với độ chính xác cao và độ mịn trong việc điều khiển.

Thiết kế và chế tạo robot tự hành

 Thông số kỹ thuật Driver điều khiển động cơ bước TB6600:

 Dòng cấp tối đa là 4A.

 Ngõ vào có cách ly quang, tốc độ cao.

 Có tích hợp đo quá dòng quá áp.

2.2.2 Cài đặt và ghép nối Driver TB6600:

 Để cài đặt và ghép nối Driver TB6600, làm theo các bước sau:

Chuẩn bị các thành phần cần thiết:

 Nguồn điện DC (9V - 42V) phù hợp với động cơ và driver

 Bộ điều khiển (ví dụ: Arduino, PLC) để tạo tín hiệu điều khiển

 Kiểm tra các chân kết nối trên Driver TB6600:

 VCC: Nối với nguồn điện DC (+)

 GND: Nối với nguồn điện DC (-)

 PUL: Tín hiệu Pulse điều khiển động cơ

 DIR: Tín hiệu Direction điều khiển hướng di chuyển

 ENA: Tín hiệu Enable để bật hoặc tắt động cơ

 Kết nối động cơ bước:

 Xác định các cuộn dây của động cơ bước (thông qua thông số kỹ thuật của động cơ hoặc các hướng dẫn của nhà sản xuất).

 Kết nối các dây cuộn động cơ vào các chân OUT1A, OUT1B, OUT2A, OUT2B trên Driver TB6600 Thứ tự kết nối phụ thuộc vào loại động cơ và cách sắp xếp dây cuộn.

 Nối chân VCC của Driver TB6600 với dây dương (+) của nguồn điện DC.

 Nối chân GND của Driver TB6600 với dây âm (-) của nguồn điện DC.

 Kết nối tín hiệu điều khiển:

 Kết nối chân PUL của Driver TB6600 với chân tương ứng trên bộ điều khiển để tạo xung điều khiển.

 Kết nối chân DIR của Driver TB6600 với chân tương ứng trên bộ điều khiển để xác định hướng di chuyển.

 Nếu muốn tắt động cơ, có thể kết nối chân ENA của Driver TB6600 với mức điện áp thích hợp từ bộ điều khiển.

 Kết nối nguồn điện động cơ:

 Kết nối nguồn điện DC (+) từ nguồn điện đến chân VCC hoặc A+ và B+ của động cơ.

 Kết nối nguồn điện DC (-) từ nguồn điện đến chân GND hoặc A- và B- của động cơ.

 Sơ đồ nối dây mạch điều khiển động cơ bước TB6600:

Thiết kế và chế tạo robot tự hành

Hình 2 4: Sơ đồ nối dây mạch điều khiển động cơ bước TB6600.

Encoder

Encoder là một thiết bị hoặc hệ thống sử dụng để chuyển đổi chuyển động hoặc vị trí của một đối tượng thành tín hiệu điện hoặc dữ liệu số Nó đo và ghi lại thông tin về vị trí, tốc độ và hướng di chuyển của đối tượng đó.

Encoder hoạt động bằng cách sử dụng một cơ chế cảm biến để theo dõi và ghi lại chuyển động hoặc vị trí của đối tượng Cơ chế này có thể dựa trên nhiều nguyên lý khác nhau, bao gồm cơ học, quang học, điện từ hoặc ma trận điểm ảnh.

Các tín hiệu hoặc dữ liệu được tạo ra từ encoder được sử dụng để đo, kiểm soát hoặc theo dõi chuyển động Với các encoder quay, tín hiệu xung và hướng đi được tạo ra để xác định vị trí quay, tốc độ và hướng quay của đối tượng Đối với encoder tuyến tính, tín hiệu hoặc dữ liệu được tạo ra để xác định vị trí tuyệt đối hoặc tương đối của đối tượng trên một đường thẳng.

Encoder được sử dụng rộng rãi trong các ứng dụng đo lường, kiểm soát và theo dõi chuyển động, chẳng hạn như máy móc công nghiệp, hệ thống điều khiển tự động, robot, máy in 3D, thiết bị y tế và nhiều ứng dụng khác Việc sử dụng encoder giúp cung cấp độ chính xác và độ tin cậy trong việc đo lường và điều khiển chuyển động.

Encoder cấu tạo chính gồm:

 Đĩa encoder (Encoder disk): Đây là thành phần quan trọng của encoder quay. Đĩa encoder là một đĩa được gắn trên trục quay của đối tượng cần đo vị trí. Đĩa encoder có một hoặc nhiều vòng xung quang học hoặc khe nhỏ trên bề mặt Các vòng xung hoặc khe này tương ứng với các vị trí quay khác nhau của đối tượng.

 Cảm biến quang học (Optical sensor): Cảm biến quang học được sử dụng để đọc thông tin từ đĩa encoder Cảm biến này thường bao gồm một cặp đèn LED và photodiode được sắp xếp theo cặp hoặc nhiều cặp xung quanh đĩa encoder. Đèn LED chiếu sáng lên đĩa encoder và photodiode nhận tín hiệu ánh sáng phản xạ từ đĩa Bằng cách phân tích sự thay đổi ánh sáng phản xạ, cảm biến quang học tạo ra tín hiệu điện tương ứng với các xung hoặc vị trí quay của đối tượng.

 Bộ điều khiển (Control unit): Bộ điều khiển là một mạch điện được tích hợp trong encoder để xử lý tín hiệu từ cảm biến quang học và tạo ra tín hiệu đầu ra.

Bộ điều khiển thường bao gồm bộ xử lý, bộ nhớ và các phần tử điện tử khác để xử lý tín hiệu và tạo ra đầu ra mong muốn.

 Giao diện đầu ra (Output interface): Giao diện đầu ra của encoder quay thường

Thiết kế và chế tạo robot tự hành

Các thành phần này hoạt động cùng nhau để đo và ghi lại vị trí quay của đối tượng Khi đối tượng quay, đĩa encoder quay cùng với nó Cảm biến quang học đọc thông tin từ đĩa và tạo ra tín hiệu điện tương ứng, mà sau đó được xử lý bởi bộ điều khiển để tạo ra tín hiệu đầu ra thích hợp Tín hiệu đầu ra này có thể được sử dụng để đo vị trí quay, tính toán góc quay, vận tốc hoặc hướng quay của đối tượng.

Hình 2 6: Cấu tạo của encoder

Nguyên lý hoạt động của encoder quay (rotary encoder) dựa trên sự sử dụng cảm biến quang học để đo và ghi lại chuyển động quay của một đối tượng Có hai loại nguyên lý hoạt động chính trong encoder quay: incremental encoder (encoder tăng dần) và absolute encoder (encoder tuyệt đối).

 Incremental encoder tạo ra một chuỗi xung khi đối tượng quay Chuỗi xung này được gọi là tín hiệu đầu ra Nó bao gồm hai loại xung chính: xung tín hiệu (A và B) và xung đồng bộ (Z).

 Xung tín hiệu (A và B): Đây là hai tín hiệu xung điện mà encoder tạo ra khi đối tượng quay Hai tín hiệu này có pha chênh lệch 90 độ (có thể gọi là xung

90 độ) Khi đối tượng quay, các xung A và B sẽ thay đổi tương ứng với hướng và tốc độ quay.

 Xung đồng bộ (Z): Đây là một tín hiệu xung điện bổ sung Nó cung cấp một tín hiệu xác định một vị trí thực tế nhất định trong vòng quay, thường là một vị trí khởi đầu hoặc vị trí đặc biệt.

 Bằng cách đếm số lượng xung và phân tích sự thay đổi trong pha của các xung A và B, bạn có thể tính toán góc quay, tốc độ và hướng quay của đối tượng.

 Absolute encoder cung cấp thông tin vị trí quay tuyệt đối của đối tượng Mỗi vị trí quay tương ứng với một giá trị mã hóa duy nhất Khi đối tượng quay, encoder sẽ tạo ra một chuỗi các mã hoặc tín hiệu điện mà biểu thị vị trí tuyệt đối.

Động cơ bước

2.4.1 Giới thiệu về động cơ bước: Động cơ bước (động cơ bước) là một loại động cơ điện vận hành dựa trên nguyên tắc bậc thang (bước và hướng) Điều này có nghĩa là động cơ chuyển đổi tín hiệu đầu

Thiết kế và chế tạo robot tự hành với một bước chuyển cụ thể.

Hình 2 8: Động cơ bước Để điều khiển động cơ bước, thông thường sử dụng các tín hiệu điều khiển kỹ thuật số tín hiệu được gửi từ một bộ điều khiển đặc biệt Tín hiệu này bao gồm tín hiệu

"bước" (bước) để thực hiện bước chuyển hướng và tín hiệu "hướng" (hướng) để xác định chiều quay của động cơ Bằng cách thay đổi bước tín hiệu và hướng theo một thứ tự nhất định, ta có thể điều khiển bước chuyển động cơ theo các bước cố định. Động cơ bước có nhiều ưu điểm, bao gồm:

 Độ chính xác cao: Động cơ bước có khả năng chuyển đổi chính xác theo bước số và không cần hệ thống phản hồi về vị trí.

 Dễ dàng điều khiển: Động cơ bước chỉ cần tín hiệu kỹ thuật số đơn giản để điều khiển và không cần bộ điều khiển phức tạp.

 Khả năng giữ vị trí: Động cơ bước có khả năng giữ vị trí thiết bị ngay cả khi mất nguồn điện.

Tuy nhiên, động cơ bước cũng có một số chế độ hạn chế, bao gồm:

 Giới hạn tốc độ: Tốc độ tối đa của động cơ bước thông thường khá hạn chế so với các loại động cơ khác.

 Rung động: Trong một số trường hợp, động cơ bước có thể gây ra rung động nhất định khi vận hành ở tốc độ cao.

2.4.2 Cấu tạo: Động cơ bước (Stepper motor) là một loại động cơ điện mà chuyển động của nó được điều khiển bằng cách tạo ra các xung điện tín hiệu để kích hoạt các cuộn dây đặt xung quanh rotor Cấu tạo chính của động cơ bước bao gồm các thành phần sau:

 Rotor (Cánh động cơ): Rotor là phần quay của động cơ bước Nó thường được cấu tạo bằng một nam châm vĩnh cửu hoặc một cấu trúc từ điện từ Rotor có thể được chia thành các cặp cánh từ hoặc nam châm để tạo ra các cặp cực mang tính từ của động cơ.

 Stator (Cánh đứng): Stator là phần không quay của động cơ bước và chứa các cuộn dây dẫn điện Các cuộn dây này được sắp xếp theo cấu trúc cố định và tạo thành các pha cuộn dây khác nhau Số lượng pha cuộn dây có thể khác nhau tùy thuộc vào loại động cơ bước, ví dụ như 2 pha, 3 pha hoặc 5 pha.

 Cuộn dây (Coil): Động cơ bước có các cuộn dây được quấn quanh stator Mỗi cuộn dây tương ứng với một pha cuộn dây và có thể được kết nối thành các cặp dây A-B, A-C, B-C hoặc A-B-C Các cuộn dây này được điều khiển bằng cách tạo ra các xung điện tín hiệu để kích hoạt từng pha cuộn dây một cách tuần tự.

 Đầu ra trục (Output shaft): Đầu ra trục là phần mà động cơ bước truyền động để tạo ra chuyển động Nó có thể là một trục đơn giản hoặc được kết nối với các cơ cấu truyền động khác nhau để thực hiện công việc cần thiết.

 Trình điều khiển (Driver): Trình điều khiển là một mạch điện đặc biệt được sử dụng để điều khiển động cơ bước Nó nhận tín hiệu điều khiển và tạo ra các xung điện tương ứng để kích hoạt từng pha cuộn dây của động cơ.

Cấu tạo này cho phép động cơ bước hoạt động bằng cách kích hoạt từng pha cuộn dây một cách tuần tự, tạo ra một chuyển động bước rõ ràng và chính xác Quá trình này được lặp lại để đạt được chuyển động liên tục hoặc di chuyển theo các bước cố định tùy thuộc vào tín hiệu điều khiển được cung cấp cho động cơ bước.

Thiết kế và chế tạo robot tự hành

Hình 2 9: Cấu tạo động cơ bước

Nguyên lý hoạt động của động cơ bước (stepper motor) dựa trên sự sử dụng các cuộn dây và từ tính để tạo ra chuyển động bước rời. Động cơ bước thường có cấu trúc stator và rotor Stator bao gồm các cuộn dây được quấn quanh và tạo thành các pha cuộn dây khác nhau, trong khi rotor thường có cấu trúc từ tính hoặc nam châm.

Khi một xung điện tín hiệu được cấp vào các cuộn dây của động cơ bước, từ tính được tạo ra trong stator Tương tác giữa từ tính của stator và từ tính của rotor tạo ra một lực từ tính đẩy hoặc kéo rotor.

Các cuộn dây được kích hoạt tuần tự theo một thứ tự nhất định, tạo ra các cực từ của từ tính trong rotor di chuyển theo chiều xác định Bằng cách thay đổi thứ tự kích hoạt các cuộn dây, chuyển động của rotor có thể được điều khiển để quay theo các bước nhất định hoặc quay theo hướng cố định.

Nguyên lý hoạt động này được thực hiện thông qua việc sử dụng một trình điều khiển (driver) đặc biệt Trình điều khiển tạo ra các xung điện tín hiệu đúng thứ tự và xác định độ dài và tốc độ các xung, điều khiển chuyển động bước rời của động cơ bước.

Việc điều khiển chính xác các xung và thứ tự kích hoạt các cuộn dây cho phép động cơ bước di chuyển với độ chính xác cao, đồng thời giữ vững vị trí khi không có lực ngoại tác. Động cơ bước được sử dụng rộng rãi trong các ứng dụng yêu cầu chuyển động chính xác và kiểm soát vị trí như máy in 3D, máy CNC, robot, thiết bị tự động hóa và nhiều ứng dụng khác.

Hình 2 10: Nguyên lý hoạt động của động cơ bước.

Cảm biến RP Lidar

RPLIDAR A1 là giải pháp quét laze 360 độ 2D (LIDAR) chi phí thấp được phát triển của SLAMTEC Hệ thống có thể thực hiện quét 360 độ trong phạm vi 6 mét Các dữ liệu đám mây điểm 2D được tạo ra có thể được sử dụng trong lập bản đồ, bản địa hóa và mô hình đối tượng/môi trường.

Thiết kế và chế tạo robot tự hành không cần ánh sáng mặt trời.

RPLIDAR A1 chứa hệ thống máy quét phạm vi và hệ thống động cơ Sau khi bật nguồn mỗi hệ thống con, RPLIDAR A1 bắt đầu quay và quét theo chiều kim đồng hồ. Người dùng có thể nhận được dữ liệu quét phạm vi thông qua giao diện truyền thông (Cổng nối tiếp/USB).

Hình 2 12: Thành phần hệ thống RPLidar A1

RPLIDAR A1 đi kèm với hệ thống thích ứng và phát hiện tốc độ hệ thống sẽ điều chỉnh tần số của máy quét laser tự động theo tốc độ động cơ Và hệ thống máy chủ có thể nhận được tốc độ thực của RPLIDAR A1 thông qua giao diện truyền thông.

Sơ đồ cung cấp điện đơn giản giúp tiết kiệm chi phí BOM của hệ thống LIDAR và tạo ra RPLIDAR A1 dễ sử dụng hơn nhiều Thông số kỹ thuật chi tiết về công suất và giao diện truyền thông có thể được tìm thấy trong các phần sau.

RPLIDAR dựa trên nguyên tắc phạm vi tam giác laser và sử dụng tốc độ cao phần cứng thu thập và xử lý tầm nhìn được phát triển bởi SLAMTEC Hệ thống đo dữ liệu khoảng cách trong hơn 2000 lần 'mỗi giây và với tốc độ cao đầu ra khoảng cách độ phân giải (setBaud(57600); nh.initNode(); nh.subscribe(sub_cmd_vel); pinMode(L_PUL, OUTPUT); pinMode(L_DIR, OUTPUT); pinMode(L_EN, OUTPUT); pinMode(L_ENCA, INPUT_PULLUP); pinMode(L_ENCB, INPUT_PULLUP); attachInterrupt(digitalPinToInterrupt(L_ENCA), do_Left_ENCA, CHANGE); attachInterrupt(digitalPinToInterrupt(L_ENCB), do_Left_ENCB, CHANGE); nh.advertise(Pub_L_ENCPOS); pinMode(R_EN, OUTPUT); pinMode(R_PUL, OUTPUT); pinMode(R_DIR, OUTPUT); pinMode(R_ENCA, INPUT_PULLUP); pinMode(R_ENCB, INPUT_PULLUP); attachInterrupt(digitalPinToInterrupt(R_ENCA), do_Right_ENCA, CHANGE); attachInterrupt(digitalPinToInterrupt(R_ENCB), do_Right_ENCB, CHANGE); nh.advertise(Pub_R_ENCPOS);

{ currentMillis = millis(); if (currentMillis - previousMillis >= 10)

{ previousMillis = currentMillis; demand_speed_left = demandx - (demandz*0.1425); demand_speed_right = demandx + (demandz*0.1425);

Control_L_Wheel(demand_speed_left*192.35);

Control_R_Wheel(demand_speed_right*192.35);

Thiết kế và chế tạo robot tự hành else L_ENCPOS.data ;

{ if (digitalRead(L_ENCB) == HIGH) L_ENCPOS.data++; else L_ENCPOS.data ;

{ if (digitalRead(L_ENCA) == HIGH) L_ENCPOS.data++; else L_ENCPOS.data ;

{ if (digitalRead(L_ENCA) == LOW) L_ENCPOS.data++; else L_ENCPOS.data ;

{ if (digitalRead(R_ENCB) == LOW) R_ENCPOS.data++; else R_ENCPOS.data ;

{ if (digitalRead(R_ENCB) == HIGH) R_ENCPOS.data++; else R_ENCPOS.data ;

{ if (digitalRead(R_ENCA) == HIGH) R_ENCPOS.data++; else R_ENCPOS.data ;

{ if (digitalRead(R_ENCA) == LOW) R_ENCPOS.data++; else R_ENCPOS.data ;

Thiết kế phần cứng

Với chức năng chính của robot là tự hành tránh vật cản trong nhà và có thể đặt lên một laptop có khối lượng 2,2 kg, robot được thiết kế hình chữ nhật, kích thước 40x40 cm Với hình dạng đối xứng như vậy xe có thể dễ tính toán khoảng cách đến vật cản

Thiết kế và chế tạo robot tự hành

 Tầng trên của xe được làm hình chữ nhật có kích thước bằng với tầng dưới.

Do cảm biến LIDAR yêu cầu có một không gian rộng, tránh để gần các linh kiện khác sẽ ảnh hưởng đến góc quét của cảm biến Nên LIDAR sẽ được gắn ở phía trước của tầng trên Laptop dùng để lấy dữ liệu và điều khiển hành vi của xe cũng được đặt ở tầng trên.

Tổng tải trọng đặt lên khung xe lên đến hơn 8 kg Từ đó, vật liệu được sử dụng làm khung robot được lựa chọn là nhôm

Hình 3 11: Thiết kế tầng trên và dưới của robot

Bộ cảm biến: Robot tự hành cần được trang bị các bộ cảm biến để cảm nhận môi trường và thu thập thông tin Cảm biến Lidar sẽ giúp robot nhận biết và định vị vật cản, phát hiện đường đi và tương tác với môi trường xung quanh Động cơ: Robot tự hành được trang bị động cơ bước để thực hiện chuyển động và di chuyển Động cơ được điều khiển bằng các tín hiệu điện từ các bộ điều khiển động cơ và có thể được kết nối với bánh xe hoặc hệ thống truyền động để thực hiện chuyển động và điều khiển hướng.

Hệ thống truyền động giúp chuyển động từ động cơ sang bánh xe.

Vi xử lý và điều khiển: Robot tự hành cần một vi xử lý thông tin từ các cảm biến và thực hiện các thuật toán và quyết định điều khiển đó là Arduino mega 2560 R3 Nó sẽ nhận thông tin từ cảm biến, tính toán các bước tiếp theo và điều khiển các động cơ và hệ thống truyền động để điều hướng robot.

Nguồn điện: Robot tự hành cần một nguồn điện để cung cấp năng lượng cho hoạt động của nó và ở đây chúng em đã dùng nguồn điện tổ ong

Sử dụng phần mềm Creo 5 để thiết kế khung của robot Bộ khung của robot cơ bản gồm 2 tầng như đã trình bày

Hình 3 12: Mẫu thiết kế khung 3D tổng quát của robot

Thiết kế và chế tạo robot tự hành

Hình 3 13.: Bản vẽ 2D của robot

Hình 3 14: Bản vẽ phân rã

Hình 3 15: Bản vẽ sơ đồ mạch điện tổng quát của hệ thống

Hình 3 16: Hình ảnh robot thực tế.

GIỚI THIỆU NỀN TẢNG ROS

Giới thiệu ROS

ROS (Robot Operating System) là một framework phần mềm mã nguồn mở được phát triển bởi Willow Garage vào năm 2007 Ban đầu, ROS được tạo ra nhằm hỗ trợ nghiên cứu và phát triển robot tại Trung tâm Nghiên cứu Robot Willow Garage, nhưng sau đó đã trở thành một dự án mã nguồn mở được quản lý bởi Open Robotics.

ROS cung cấp một cơ sở hạ tầng phần mềm mạnh mẽ để xây dựng ứng dụng robot Nó cung cấp các công cụ, thư viện và thứ nguyên (packages) tiêu chuẩn để giúp nhà phát triển dễ dàng xây dựng, kiểm thử và triển khai các chương trình robot ROS hỗ trợ nhiều tính năng như điều khiển động cơ, xử lý hình ảnh, xử lý văn bản, giao tiếp, điều hướng và phân tích môi trường.

Một trong những điểm đặc biệt của ROS là kiến trúc phân tán Một ứng dụng robot trong ROS được chia thành nhiều phần nhỏ gọi là nodes, chạy trên các máy tính khác nhau và giao tiếp với nhau bằng cách truyền các thông điệp Các nodes có thể chạy độc lập và kết hợp với nhau để tạo thành các hệ thống phức tạp Kiến trúc phân tán này giúp tăng tính linh hoạt, khả năng mở rộng và khả năng chịu lỗi của hệ thống robot.

ROS hỗ trợ nhiều hệ điều hành như Linux, macOS và cả Windows thông qua WSL (Windows Subsystem for Linux) Nó cũng hỗ trợ nhiều ngôn ngữ lập trình như C++, Python, Java và lisp, cho phép nhà phát triển sử dụng ngôn ngữ ưa thích của mình để viết mã

Cộng đồng ROS rất lớn và tích cực, với hàng ngàn người dùng và đội ngũ phát triển trên toàn thế giới Các người dùng ROS chia sẻ và đóng góp mã nguồn, công cụ và thư viện thông qua hệ thống quản lý gói ROS Điều này tạo ra một môi trường phát triển mở và phong phú, giúp tăng tốc quá trình phát triển robot và cho phép tái sử dụng các thành phần đã được phát triển trước đó.ROS đã được sử dụng trong nhiều dự án robot thực tế trên toàn thế giới, bao gồm robot di động, robot công nghiệp, robot y tế và robot nghiên cứu Nó được coi là một công cụ quan trọng trong lĩnh vực robot học

Khái quát về mô hình ROS

hướng thông điệp được sử dụng để xây dựng và điều khiển các ứng dụng robot Mô hình này giúp tách biệt các thành phần của hệ thống robot và cho phép chúng giao tiếp thông qua việc truyền đi các thông điệp. Ở mô hình ROS, một ứng dụng robot được chia thành các thành phần nhỏ gọi là nodes Mỗi node chạy trên một máy tính riêng biệt và thực hiện một nhiệm vụ cụ thể trong hệ thống Các nodes có thể gửi và nhận thông điệp để truyền tải dữ liệu và lệnh điều khiển.

Các nodes trong ROS giao tiếp thông qua việc sử dụng các topic, service và action Các topic là các kênh truyền thông điệp không đồng bộ, nơi các nodes có thể gửi và nhận thông điệp một cách độc lập Các service là các phương thức đồng bộ, cho phép nodes gửi yêu cầu và nhận kết quả trả về từ các nodes khác Các action tương tự như service, nhưng cho phép xử lý bất đồng bộ trong các nhiệm vụ dài hơn.

Mô hình ROS cung cấp một hệ thống quản lý gói (package management system) để tổ chức và chia sẻ mã nguồn, công cụ và thư viện Người dùng ROS có thể tạo ra các package riêng để đóng gói và chia sẻ các thành phần tái sử dụng, giúp tiết kiệm thời gian và nỗ lực trong quá trình phát triển robot.Mô hình ROS cũng hỗ trợ các công cụ và thư viện phong phú để xử lý các nhiệm vụ thường gặp trong robot học và điều khiển robot, bao gồm điều khiển động cơ, xử lý hình ảnh, xử lý văn bản, giao tiếp và điều hướng Các công cụ này giúp giảm độ phức tạp và tăng tính linh hoạt trong việc xây dựng và triển khai ứng dụng robot.

Mô hình ROS cũng được hỗ trợ và phát triển một cách tích cực bởi cộng đồng người dùng và nhà phát triển trên toàn thế giới Người dùng ROS chia sẻ mã nguồn, kiến thức và kinh nghiệm của mình thông qua các diễn đàn, hướng dẫn và dự án mã nguồn mở Điều này tạo ra một môi trường phát triển đa dạng và sáng tạo, giúp thúc đẩy sự tiến bộ và ứng dụng của ROS trong lĩnh vực robot học và điều khiển robot.

Hệ thống tệp ROS (ROS file system) là một cấu trúc tổ chức thư mục và tệp tin được sử dụng trong Robot Operating System (ROS) Hệ thống này giúp quản lý các thành phần của một dự án ROS và cung cấp phương pháp truy cập và quản lý tài nguyên trong ROS.

Hệ thống tệp ROS bao gồm các thành phần chính sau đây:

1 Packages (Gói): Gói là thành phần cơ bản của ROS Mỗi gói chứa các tệp và thư mục liên quan đến một chức năng cụ thể trong hệ thống Gói bao gồm các tệp tin mã nguồn, tệp tin cấu hình, tệp tin biên dịch và các tài nguyên khác liên quan.

2 Metapackages (Gói siêu): Gói siêu là một tập hợp các gói liên quan đến nhau được nhóm lại theo một chủ đề chung Gói siêu không chứa tệp mã nguồn, mà chỉ chứa thông tin về các gói con liên quan và phụ thuộc của chúng.

3 Manifests (Manifest): Manifest là một tệp XML chứa thông tin về một gói, bao gồm tên gói, phiên bản, tác giả, mô tả và danh sách các phụ thuộc.

4 CMakeLists.txt: Đây là tệp tin CMakeLists.txt, được sử dụng để xây dựng gói ROS Nó chứa các chỉ thị CMake để xác định các tệp và thư mục cần thiết để xây dựng gói.

5 Catkin Workspace: Catkin là một công cụ quản lý và xây dựng gói trong

ROS Catkin Workspace là một thư mục gốc chứa tất cả các gói và tệp tin liên quan đến một dự án ROS cụ thể Nó cung cấp một cách tiện lợi để tổ chức và quản lý các gói ROS trong một môi trường làm việc.

Hệ thống tệp ROS đảm bảo một sự cấu trúc tổ chức rõ ràng và tiện lợi để xây dựng, quản lý và sử dụng các thành phần trong một dự án ROS Nó cung cấp sự linh hoạt và khả năng mở rộng trong việc phát triển các ứng dụng robot sử dụng ROS.

Hình 4 1: Mô hình ROS File System

Thiết kế và chế tạo robot tự hành

Hình 4 2: Mô hình giao tiếp cơ bản trong ROS

ROS Computation Graph là một khái niệm quan trọng trong Robot Operating System (ROS) để hiểu cách các nodes (các thành phần chạy độc lập trong ROS) tương tác với nhau trong hệ thống.

ROS Computation Graph mô tả sự kết nối và truyền thông điệp giữa các nodes trong một ứng dụng ROS Nó biểu diễn cấu trúc và tương với quyết định việc chia sẻ thông tin giữa các nodes thông qua các topic, service và action.

Cụ thể, Computation Graph gồm có các thành phần sau:

1 Nodes: Là các thành phần chạy độc lập trong ROS, mỗi node thực hiện một nhiệm vụ cụ thể Ví dụ, có thể có một node để đọc dữ liệu từ cảm biến, một node để xử lý hình ảnh, một node để điều khiển robot, và nhiều node khác nữa Các nodes được kết nối và giao tiếp với nhau thông qua Computation Graph.

2 Topics: Là các kênh truyền thông điệp không đồng bộ (asynchronous) được sử dụng để truyền tải dữ liệu giữa các nodes Một node có thể gửi thông điệp lên một topic và các node khác có thể nhận thông điệp từ topic đó Ví dụ, một node cảm biến có thể gửi dữ liệu từ cảm biến lên một topic, và các node khác có thể đăng ký để nhận dữ liệu từ topic đó để xử lý.

3 Services: Là các phương thức đồng bộ (synchronous) được sử dụng để gửi yêu cầu và nhận kết quả trả về giữa các nodes Một node có thể cung cấp một dịch vụ và các node khác có thể gửi yêu cầu đến dịch vụ đó để lấy kết quả Ví dụ, một node điều khiển robot có thể cung cấp một dịch vụ để di chuyển robot, và các node khác có thể gửi yêu cầu đến dịch vụ đó để điều khiển robot theo ý muốn.

Áp dụng mô hình ROS

Áp dụng mô hình ROS vào robot tự hành là một trong những ứng dụng phổ biến của ROS Mô hình này giúp tạo ra một hệ thống robot tự động có khả năng lập bản đồ môi trường, định vị và điều hướng tự động.

1 Lập bản đồ môi trường: Sử dụng các nodes trong ROS để thu thập dữ liệu từ cảm biến như lidar, camera hoặc Kinect để xây dựng bản đồ môi trường xung quanh robot Các nodes xử lý dữ liệu cảm biến và gửi thông tin về bản đồ tới một node quản lý bản đồ.

2 Định vị: Sử dụng các phương pháp định vị như SLAM (Simultaneous

Localization and Mapping) để xác định vị trí của robot trong bản đồ Các nodes trong ROS có thể sử dụng dữ liệu từ cảm biến và bản đồ để ước tính vị trí và hướng di chuyển của robot.

3 Điều hướng: Sử dụng các thuật toán điều hướng trong ROS để điều khiển chuyển động của robot dựa trên bản đồ và mục tiêu di chuyển Các nodes trong ROS có thể tính toán đường đi tối ưu và điều khiển động cơ, bánh xe hoặc các cơ cấu khác của robot để di chuyển đến đích được chỉ định.

4 Giao tiếp và tương tác: ROS cung cấp các cơ chế giao tiếp như topic và có thể nhận lệnh từ người dùng thông qua giao diện người dùng hoặc các thiết bị đầu vào khác và thực hiện các tác vụ như di chuyển đến vị trí xác định, thực hiện nhiệm vụ cụ thể và truyền lại thông tin về trạng thái hoạt động của robot.

5 Xử lý dữ liệu và nhận dạng: ROS cung cấp các thư viện và công cụ xử lý hình ảnh, xử lý văn bản và nhận dạng đối tượng để robot có thể nhận biết và tương tác với các đối tượng trong môi trường.

Với mô hình ROS, việc phát triển và triển khai một hệ thống robot tự hành trở nên linh hoạt, mở rộng và dễ dàng tái sử dụng các thành phần đã có sẵn.

Hình 4 4 : Mô hình Robot với nền tản ROS

Key Teleop là một công cụ trong ROS (Robot Operating System) được sử dụng để điều khiển robot từ bàn phím của máy tính Nó cho phép người dùng điều khiển các chuyển động của robot bằng cách nhấn các phím trên bàn phím.

Key Teleop cung cấp một giao diện đơn giản để gửi các tín hiệu điều khiển từ bàn phím tới robot Khi người dùng nhấn một phím trên bàn phím, Key Teleop sẽ tạo ra các tín hiệu điều khiển tương ứng và gửi chúng đến robot thông qua ROS.

Các phím điều khiển thường được sử dụng trong Key Teleop bao gồm:

1 Phím di chuyển: Sử dụng các phím mũi tên (lên, xuống, trái, phải) để điều khiển chuyển động tương ứng của robot, chẳng hạn như di chuyển thẳng, quay

Thiết kế và chế tạo robot tự hành

3 Phím tăng tốc: Sử dụng một phím để tăng tốc độ di chuyển của robot, cho phép nhanh chóng điều khiển tốc độ di chuyển.

4 Phím giảm tốc: Sử dụng một phím để giảm tốc độ di chuyển của robot, giúp điều khiển chính xác và đáng tin cậy hơn.

Key Teleop là một công cụ hữu ích trong quá trình phát triển và kiểm thử robot, cho phép người dùng kiểm soát robot một cách thuận tiện và trực quan Nó cũng có thể được tùy chỉnh và mở rộng để phù hợp với yêu cầu điều khiển cụ thể của mỗi ứng dụng robot.

Twist to motor là một quá trình chuyển đổi từ thông tin về vận tốc và góc quay (twist) của robot thành tín hiệu điều khiển cho động cơ Trong ROS, twist được biểu diễn bằng geometry_msgs/Twist message, trong đó bao gồm linear và angular components, tương ứng với vận tốc tuyến tính và góc quay. Để chuyển đổi twist thành tín hiệu điều khiển cho động cơ, cần phải xác định một bộ chuyển đổi (mapping) giữa twist và động cơ Quá trình này thường liên quan đến việc tính toán và điều chỉnh các thông số điều khiển như tốc độ, gia tốc, và lực tác động lên động cơ.

Có nhiều phương pháp và thuật toán khác nhau để thực hiện twist to motor Một phương pháp phổ biến là sử dụng điều khiển PID (Proportional-Integral-Derivative) để điều chỉnh tốc độ và vị trí của động cơ dựa trên thông tin twist Các thông số PID có thể được tinh chỉnh để đạt được hiệu suất và đáp ứng mong muốn.

Ngoài ra, còn có các phương pháp điều khiển khác như điều khiển động cơ bằng đồng hồ PID (Proportional-Integral-Derivative) hoặc sử dụng các thuật toán điều khiển tối ưu như điều khiển điểm đến (waypoint navigation) hoặc điều khiển tốc độ tuyến tính (linear velocity control).

Quá trình twist to motor là một bước quan trọng trong điều khiển robot di động và đóng vai trò quan trọng trong việc chuyển đổi từ thông tin về chuyển động thành tín hiệu điều khiển cho các động cơ hoạt động.

Serial Node là một node trong ROS (Robot Operating System) được sử dụng để giao tiếp với các thiết bị thông qua kết nối Serial (cổng COM) Serial Node cho phép truyền và nhận dữ liệu qua kết nối Serial giữa máy tính và các thiết bị như cảm biến, động cơ, bộ điều khiển, và nhiều thiết bị khác.

XÂY DỰNG PHẦN MỀN TRÊN NỀN TẢNG ROS

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

5.1.1 Lí do vẽ bản đồ môi trường

Việc vẽ bản đồ môi trường trong robot học và điều khiển robot là một bước quan trọng và cần thiết Dưới đây là một số lí do quan trọng:

1 Định vị và định hướng: Một bản đồ môi trường cho phép robot xác định vị trí của mình trong không gian và định hướng di chuyển Robot có thể sử dụng thông tin từ bản đồ để xác định vị trí tương đối và tuyệt đối, giúp nó biết nơi mình đang đứng và cách di chuyển đến các mục tiêu.

2 Lập kế hoạch di chuyển: Bản đồ môi trường cung cấp thông tin về các vật thể, vật cản và cấu trúc trong môi trường Robot có thể sử dụng thông tin này để lập kế hoạch di chuyển thông minh và an toàn Bằng cách phân tích bản đồ, robot có thể tìm ra đường đi tối ưu để đến đích mà tránh va chạm với các vật cản.

3 Điều khiển chuyển động: Bản đồ môi trường cung cấp thông tin về cấu trúc và đặc điểm của môi trường xung quanh robot Điều này cho phép robot điều khiển chuyển động của mình dựa trên thông tin từ bản đồ Robot có thể điều chỉnh tốc độ, hướng di chuyển và phương thức di chuyển để phù hợp với môi trường và mục tiêu.

4 Tránh va chạm và đảm bảo an toàn: Bản đồ môi trường giúp robot tránh va chạm với các vật cản trong quá trình di chuyển Robot có thể sử dụng thông tin từ bản đồ để phát hiện và tránh các vật thể, ngăn chặn va chạm không mong muốn và đảm bảo an toàn cho cả robot và môi trường xung quanh.

5 Nghiên cứu và phân tích: Bản đồ môi trường cung cấp dữ liệu quan trọng cho việc nghiên cứu và phân tích môi trường Nó cho phép các nhà nghiên cứu và nhà phát triển robot hiểu rõ hơn về cấu trúc môi trường, tìm hiểu các đặc điểm và khía cạnh quan trọng của nó Bản đồ môi trường cũng cung cấp dữ liệu để

Thiết kế và chế tạo robot tự hành

SLAM phổ biến trong lĩnh vực robot học và điều khiển robot Nó được sử dụng để xây dựng bản đồ môi trường và định vị robot đồng thời trong thời gian thực.

Thuật toán Hector SLAM sử dụng một cặp cảm biến gồm cảm biến đo khoảng cách laser (như Lidar) và cảm biến đo tốc độ (encoders) để thu thập dữ liệu từ môi trường xung quanh robot.

Cách thức hoạt động của Hector SLAM bao gồm các bước sau:

1 Xử lý dữ liệu laser: Dữ liệu từ cảm biến laser được xử lý để trích xuất thông tin về khoảng cách và góc quét của các điểm trong môi trường Các điểm dữ liệu này sau đó được sử dụng để xây dựng bản đồ môi trường.

2 Xử lý dữ liệu từ encoders: Dữ liệu từ cảm biến encoders được sử dụng để tính toán sự di chuyển và tọa độ của robot trong không gian Điều này giúp định vị robot và xác định vị trí ban đầu của nó trong bản đồ.

3 Tạo bản đồ môi trường: Dựa trên dữ liệu từ cảm biến laser và thông tin vị trí từ encoders, Hector SLAM sử dụng phương pháp lọc Bayes (Bayesian filtering) để xây dựng bản đồ môi trường Thuật toán sử dụng một kỹ thuật gọi là Occupancy Grid Mapping để đại diện cho môi trường dưới dạng một lưới ô, trong đó mỗi ô chỉ định mức độ chiếm dụng của không gian.

4 Định vị robot: Hector SLAM sử dụng thông tin từ cảm biến laser và encoders để định vị robot trong môi trường đã xây dựng Thuật toán sử dụng một phương pháp gọi là Particle Filter để ước lượng vị trí của robot dựa trên dữ liệu cảm biến và thông tin bản đồ.

Hector SLAM cho phép robot xây dựng và cập nhật bản đồ môi trường trong thời gian thực trong khi định vị chính xác vị trí của nó Thuật toán này thích hợp cho các ứng dụng robot tự hành, robot di động và robot hợp tác trong các môi trường không cấu trúc và động, như trong các khu vực trong nhà, ngoài trời hoặc trong môi trường công nghiệp.

Hình 5 1: Sơ đồ quá trình vẽ bản đồ

Hình 5.1 cho thấy quá trình vẽ bản đồ bằng Hector SLAM như sau :

Bước 1: Khởi tạo : Quá trình bắt đầu bằng việc khởi tạo một bản đồ trống Tại thời điểm ban đầu, không có thông tin nào về môi trường.

Hình 5 2: Bảng đồ được vẽ từ các điểm Lidar thu được

Bước 2 Phát hiện đặc trưng : Robot được trang bị cảm biến như lidar (Laser

Imaging Detection and Ranging) để thu thập dữ liệu từ môi trường xung quanh Cảm biến lidar sẽ gửi ra các tia laser và đo thời gian mà tia laser phản xạ lại từ các vật thể trong môi trường Dữ liệu này được sử dụng để phát hiện các đặc trưng như điểm, cạnh và góc trong không gian 3D

Bước 3: Qua mỗi vòng lặp, Hector SLAM sử dụng phương pháp tối ưu hóa như phương pháp quy hoạch tuyến tính để cải thiện độ chính xác của bản đồ và ước tính vị trí Quá trình tối ưu hóa này cố gắng điều chỉnh các ước tính vị trí và hình dạng của bản đồ sao cho tốt nhất phù hợp với dữ liệu thu thập được từ cảm biến lidar.

Thiết kế và chế tạo robot tự hành

Hình 5 3: Cập nhật bản đồ khi di chuyển cảm biến lidar

Định vị robot trong bản đồ

Mô hình chuyển động [3] mô tả xác suất biến đổi trạng thái p(xt | xt-1, ut), đó là bước dự đoán trạng thái trong quá trình lọc Trạng thái của robot thường được biểu diễn bằng ba biến (x, y, z) trong không gian Cartesius và ba biến (roll, pitch, yaw) trong hệ góc Euler Trong trường hợp robot hoạt động trong mặt phẳng, chúng ta chỉ cần sử dụng vector sau để biểu diễn trạng thái:

Trong đó (x, y) là vị trí của robot và θ là góc quay của robot tại vị trí đó Vì các yếu tố đã được trình bày trước đó, không thể sử dụng một vector đơn lẻ để mô tả trạng thái của robot tại thời điểm t Thay vào đó, trạng thái được biểu diễn bằng một phân phối xác suất như được hiển thị trong hình 5.8.

Hình 5 8:Trạng thái của robot theo mô hình xác xuất

Trạng thái ban đầu của robot là xt-1, sau khi nhận được điều khiển ut, robot sẽ di chuyển đến một trong các vị trí xt(i) được biểu thị bởi các điểm màu xanh dương Tuy nhiên, robot chỉ có thể đọc một giá trị từ bộ mã hóa (encoder) để suy ra vị trí, được biểu thị bởi điểm màu đỏ Mỗi vị trí xt(i) có thể xảy ra được gọi là một hạt (particle)

Có hai mô hình chuyển động chính được sử dụng trong quá trình dự đoán trạng thái Mô hình thứ nhất xem điều khiển ut là vận tốc điều khiển của động cơ, làm cho robot di chuyển Mô hình này hữu ích trong việc tránh vật cản vì ước lượng chuyển động xảy ra trước khi lệnh điều khiển được truyền xuống động cơ Tuy nhiên, hiệu quả của mô hình này phụ thuộc vào sai số của vận tốc điều khiển, và yêu cầu sai số này nhỏ để đạt được độ chính xác cao Mô hình thứ hai xem điều khiển ut là giá trị đọc từ bộ mã hóa (Encoder) của động cơ Mô hình có độ chính xác cao Tuy nhiên, robot phải hoàn thành quá trình di chuyển trước khi có thể ước lượng giá trị từ bộ mã hóa(Encoder) Trong luận văn, đã chọn mô hình dự đoán trạng thái dựa trên thông tin từ bộ mã hóa(Encoder).

Particle filter còn được gọi là thuật toán Monte Carlo Localization, là một thuật toán lọc Bayes đệ quy được sử dụng để ước lượng trạng thái trong các hệ thống có sự không chắc chắn Nó thường được sử dụng trong robotics và các ứng dụng điều hướng, như theo dõi vị trí và hướng của robot hoặc ước lượng vị trí của một đối tượng di động.

Thuật toán bộ lọc hạt biểu diễn phân phối xác suất hậu nghiệm của trạng thái hệ thống bằng cách sử dụng một tập hợp các hạt có trọng số Mỗi hạt đại diện cho một giả thuyết về trạng thái của hệ thống Các hạt được lan truyền qua thời gian bằng cách sử dụng bước dự đoán dựa trên động lực hệ thống và được cập nhật bằng cách sử dụng các đo đạc từ các cảm biến.

Các bước chính trong một thuật Particle filter thông thường:

1 Khởi tạo: Thuật toán bắt đầu bằng cách khởi tạo một tập hợp các hạt với trạng thái ngẫu nhiên hoặc được xác định trước Mỗi hạt được gán một trọng số đại diện cho tầm quan trọng của nó.

2 Dự đoán: Trong bước dự đoán, các hạt được lan truyền qua thời gian dựa trên động lực hệ thống Thường là áp dụng một mô hình chuyển động mô tả cách trạng thái của hệ thống phát triển theo thời gian Độ nhiễu Gaussian hoặc các phương pháp xác suất khác có thể được sử dụng để tính toán sự không chắc chắn trong mô hình chuyển động.

3 Cập nhật đo đạc: Khi có thông tin đo đạc mới từ cảm biến, các hạt được cập nhật dựa trên khả năng phù hợp của chúng với các đo đạc Trọng số của mỗi hạt được điều chỉnh để phản ánh mức đồng ý giữa trạng thái của nó và các đo đạc từ cảm biến Tầm quan trọng của mỗi hạt phụ thuộc vào khả năng giải thích các đo đạc.

4 Lấy mẫu lại: Để tập trung tài nguyên tính toán vào các hạt có khả năng cao hơn, bước lấy mẫu lại được thực hiện Các hạt có trọng số cao có khả năng được chọn nhiều lần, trong khi các hạt có trọng số thấp có thể bị loại bỏ hoặc được chọn ít thường xuyên hơn Bước này nhằm duy trì một tập hợp các hạt đại diện thể hiện gần với phân phối xác suất hậu nghiệm.

Thiết kế và chế tạo robot tự hành

Thuật toán bộ lọc hạt linh hoạt và có thể xử lý các hệ thống phi tuyến và phi Gaussian Tuy nhiên, nó đòi hỏi một số lượng hạt đủ để đại diện chính xác cho phân phối hậu nghiệm và có thể đòi hỏi tài nguyên tính toán lớn, đặc biệt là với không gian trạng thái có số chiều lớn Có nhiều phần mở rộng và tối ưu hóa đã được phát triển để giải quyết những thách thức này, như lấy mẫu lại thông minh, ước lượng mật độ quan trọng và các kỹ thuật xử lý song song.

5.2.3 Xác định vị trí robot vs AMCL

5.2.3.1 Thuật toán định vị Adaptive Monte Carlo Localization

Bộ lọc Monte Carlo (Monte-Carlo Filter) [6] được sử dụng để xác định vị trí của robot trong không gian dựa trên một bản đồ đã biết trước Quá trình của bộ lọc Monte Carlo bao gồm hai bước chính: lấy mẫu vị trí từ mô hình chuyển động và đánh giá trọng số dựa trên mô hình quan sát, sau đó thực hiện việc lấy mẫu lại từ các mẫu quan trọng.

Ví dụ, khi robot di chuyển và quan sát các vật cản, bộ lọc Monte Carlo được sử dụng để xác định vị trí của robot Trong quá trình lấy mẫu, các vị trí tiềm năng của robot được sinh ngẫu nhiên dựa trên mô hình chuyển động của nó Các mẫu này có thể được đại diện bằng các hạt (particles) Sau đó, trong bước đánh giá trọng số, mô hình quan sát được sử dụng để so sánh dữ liệu quan sát thực tế với các giả định vị trí của robot, từ đó tính toán trọng số cho mỗi hạt dựa trên độ tương thích Các hạt có trọng số cao thể hiện khả năng cao là vị trí thực tế của robot.

Cuối cùng, trong bước lấy mẫu lại, các hạt được lấy mẫu lại từ các hạt có trọng số cao, trong khi các hạt có trọng số thấp có thể bị loại bỏ hoặc được lấy mẫu lại ít lần.Quá trình này tạo ra một tập hợp mới của các hạt, đại diện cho các vị trí tiềm năng của robot dựa trên dữ liệu quan sát và mô hình chuyển động Việc lặp lại các bước này cho phép ước lượng vị trí của robot dựa trên thông tin quan sát và các giả định về chuyển động.

Hình 5 9: Vị trí của Robot và quan sát vật cản khi di chuyển

5.2.3.2 Bộ lọc thích ghi AMCL

Thường thì tại một thời điểm, tập hợp các hạt X={x t 1 , x t 2 ,… x t M } sẽ tập trung trong một vùng lân cận của một điểm Tuy nhiên, khi robot dịch chuyển xa hơn vùng lân cận này hoặc gặp vấn đề trong việc định vị toàn cục, bộ lọc Monte Carlo có thể không khôi phục lại vị trính chính xác từ tập hạt hiện tại

Thiết kế và chế tạo robot tự hành

Tìm đường đi đến đích

5.3.1 Giới thiệu về thuật toán Dijkstra

Thuật toán Dijkstra là một thuật toán tìm đường đi ngắn nhất trong đồ thị có trọng số không âm Thuật toán này được đặt theo tên của nhà toán học người Hà Lan, Edsger W Dijkstra, và đã được phát triển vào năm 1956.

Thuật toán Dijkstra hoạt động bằng cách duyệt qua các đỉnh của đồ thị từ đỉnh xuất phát và cập nhật các giá trị khoảng cách từ đỉnh xuất phát đến các đỉnh khác trong đồ thị Thuật toán duy trì một tập hợp các đỉnh đã được xem xét và không xem xét, cập nhật khoảng cách từ đỉnh xuất phát đến các đỉnh khác thông qua các cạnh của đồ thị. Thuật toán Dijkstra được thực hiện theo các bước sau:

1 Đặt khoảng cách từ đỉnh xuất phát đến chính nó là 0 và khoảng cách từ đỉnh xuất phát đến tất cả các đỉnh khác là vô cùng.

2 Chọn đỉnh xuất phát làm đỉnh hiện tại.

3 Duyệt qua tất cả các đỉnh kề với đỉnh hiện tại và cập nhật khoảng cách từ đỉnh xuất phát đến các đỉnh đó nếu có giá trị khoảng cách mới nhỏ hơn giá trị hiện tại.

4 Đánh dấu đỉnh hiện tại là đã xem xét và chọn đỉnh có khoảng cách nhỏ nhất chưa xem xét làm đỉnh hiện tại.

5 Lặp lại bước 3 và 4 cho đến khi tất cả các đỉnh trong đồ thị được xem xét hoặc không còn đỉnh nào có thể đến được từ đỉnh xuất phát.

Sau khi thuật toán Dijkstra kết thúc, ta có thể xác định khoảng cách ngắn nhất từ đỉnh xuất phát đến tất cả các đỉnh khác trong đồ thị và tìm đường đi ngắn nhất từ đỉnh xuất phát đến một đỉnh cụ thể.

Thuật toán Dijkstra là một thuật toán quan trọng trong lĩnh vực tối ưu hóa và

Thiết kế và chế tạo robot tự hành

3 Update(u,v) // Cập nhật khoản cách đến các Nodes

4 If d[v] > d[u] + c(u,v) // c(u,v) khoản cách từ u đến v

8 Q=Tập hợp các nút ở trong biểu đồ

5.3.3 Tính Toán giải thuật Dijkstra

Ta có một đồ thị Graph gồm các nút và các và các trọng số đường đi như sau :

Bài toán đặt ra là tìm đường đi ngắn nhất từ A-Z bằng thuật toán Dijkstra qua các nodes

Xét các node mà A cần đi qua để đến Z ta có các đường đi như sau

Khoản cách từ A-C là nhỏ nhất nên ta xét node C, Tính tổng khoản cách từ node

C đến các nút liền kề.

Khoản cách từ A-C-F ta vẫn giữ nguyên đường đi là A-C-F

Tương tự như vậy cho các node còn lại thì ta được kết quả đường đi ngắn nhất từ A-Z là phải qua các node A- C-F-Z

5.3.4 Sử dụng giải thuật cho robot

Thuật toán Dijkstra được sử dụng để tìm đường đi ngắn nhất cho robot trong một bản đồ môi trường đã được lập sẵn Bản đồ môi trường được biểu diễn dưới dạng một đồ thị, trong đó các nút đại diện cho các pixel trên bản đồ Nếu một pixel biểu thị vật cản, tường hoặc trở ngại khác, thì khoảng cách từ các pixel lân cận đến pixel đó được coi là vô hạn (∞).

Thuật toán Dijkstra sẽ tính toán khoảng cách từ vị trí ban đầu của robot đến tất cả các pixel trên bản đồ Quá trình này sẽ tạo ra một bảng khoảng cách, trong đó mỗi pixel có giá trị khoảng cách tương ứng Các giá trị khoảng cách này cho biết khoảng cách ngắn nhất từ vị trí ban đầu đến các điểm trên bản đồ.

Dựa vào bảng khoảng cách, thuật toán Dijkstra tìm đường đi ngắn nhất từ vị trí ban đầu đến điểm đích Quá trình này được thực hiện bằng cách lựa chọn các điểm kế tiếp có khoảng cách nhỏ nhất và dần dần xây dựng đường đi ngắn nhất.

Tổng quát, thuật toán Dijkstra là một phương pháp tìm kiếm đường đi chính xác và tối ưu trong một đồ thị Áp dụng cho việc điều hướng robot trên bản đồ môi trường, thuật toán này tính toán khoảng cách từ vị trí ban đầu đến tất cả các pixel trên bản đồ và tìm ra đường đi ngắn nhất từ vị trí ban đầu đến điểm đích.

5.3.5 Thuật toán tránh vật cản xuất hiện ngẫu nhiên

Môi trường hoạt động trong đề tài là môi trường trong nhà, như kho hàng, siêu thị, hộ gia đình, v.v Trong môi trường này, khi robot di chuyển, không thể tránh được việc gặp phải nhiều vật cản xuất hiện ngẫu nhiên mà không được xác định trước trên bản đồ Khi robot di chuyển theo đường đi được tìm thấy bằng thuật toán Dijkstra, có thể xảy ra tình huống vật cản ngẫu nhiên gây tắc ngẽn đường đi đến đích. Để giải quyết vấn đề này, một chuỗi hành vi đã được quy ước để robot có thể xử

Thiết kế và chế tạo robot tự hành

Hình 5 11: Quá trình tránh vật cản xuất hiện ngẫu nhiên

Ngày đăng: 06/09/2024, 14:37

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
[2] Ming-Yi Ju, Yu-Jen Chen, and Wei-Cheng Jiang,“Implementation of Odometry with EKF in Hector SLAM Methods”, March 1, 2018 Sách, tạp chí
Tiêu đề: Implementation of Odometry with EKF in Hector SLAM Methods
[3] S. Thrun, W. Burgard, D.Fox, "Robot Motion," in Probabilistic Robotics, The MIT Press, 2005, pp. 91-119 Sách, tạp chí
Tiêu đề: Robot Motion
[4] S. Thrun, W. Burgard, D. Fox, "Measurements," in Probabilistic Robotics, The MIT Press, 2005, pp. 121-157 Sách, tạp chí
Tiêu đề: Measurements
[5] S. Thrun, W. Burgard, D. Fox, "The Particle Filter," in Probabilistic Robotics, The MIT Press, 2005, pp. 77-89 Sách, tạp chí
Tiêu đề: The Particle Filter
[6] S. Thrun, W. Burgard, D. Fox, "Monte Carlo Localization," in Probablilistic Robotics, The MIT Press, 2005, pp. 200-209 Sách, tạp chí
Tiêu đề: Monte Carlo Localization

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

TÀI LIỆU LIÊN QUAN

w