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

Thiết kế hệ thống mạch điều khiển và cảm biến định vị robot di động

58 1 0

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

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

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Thiết Kế Hệ Thống Mạch Điều Khiển Và Cảm Biến Định Vị Robot Di Động
Tác giả Nguyễn Thị Thu Thủy
Người hướng dẫn Th.S. Phạm Quyền Anh
Trường học Trường Đại Học Duy Tân
Chuyên ngành Hệ Thống Nhúng
Thể loại Khóa Luận Tốt Nghiệp
Năm xuất bản 2023
Thành phố Đà Nẵng
Định dạng
Số trang 58
Dung lượng 7,36 MB

Cấu trúc

  • CHƯƠNG 1: MỞ ĐẦU (12)
    • 1.1. Lý do chọn đề tài (12)
    • 1.2. Mục đích nghiên cứu (12)
    • 1.3. Đối tượng và phạm vi nghiên cứu (12)
    • 1.4. Phương pháp nghiên cứu (13)
    • 1.5. Ý nghĩa khoa học thực tiễn (13)
    • 1.6. Cấu trúc đề tài (13)
  • CHƯƠNG 2: TỔNG QUAN VỀ ROBOT DI ĐỘNG VÀ HỆ THỐNG ĐIỀU HÀNH DÀNH CHO ROBOT (ROS) (14)
    • 2.1 Robot di động (14)
      • 2.1.1 Giới thiệu về robot di động (14)
      • 2.1.2 Phân loại Robot di động (15)
        • 2.1.2.1 Robot di động trên không (15)
        • 2.1.2.2 Robot di động dưới nước (15)
        • 2.1.2.3 Robot di động sử dụng bánh xe (16)
      • 2.1.3 Ứng dụng của robot di động và tiềm năng phát triển trong tương lai (18)
        • 2.1.3.1 Y học (18)
        • 2.1.3.2 Công nghiệp (18)
        • 2.1.3.3 Ứng dụng quân sự (19)
        • 2.1.3.4 Nông nghiệp (19)
    • 2.2 Hệ điều hành robot ROS (20)
      • 2.2.1 ROS (Robot Operating System) là gì? (20)
      • 2.2.2 Ứng dụng của hệ điều hành ROS (21)
  • CHƯƠNG 3: CÁC THUẬT TOÁN TÌM ĐƯỜNG VÀ ĐIỀU KHIỂN ROBOT (22)
    • 3.1.1 Khái niệm (22)
    • 3.1.2 Ý tưởng thuật toán (22)
    • 3.1.3 Mô tả thuật toán (22)
    • 3.2 Thuật toán A* (23)
      • 3.2.1 Khái niệm (23)
      • 3.2.2 Ý tưởng thuật toán (23)
      • 3.2.3 Mô tả thuật toán (24)
    • 3.3 Thuật toán ưu tiên chiều rộng (BFS) (25)
      • 3.3.1 Khái niệm (25)
      • 3.3.2 Ý tưởng thuật toán (25)
      • 3.3.3 Mô phỏng đồ thị (26)
    • 3.4 Thuật toán Dijkstra (27)
      • 3.4.1 Khái niệm (27)
      • 3.4.2 Ý tưởng thuật toán (27)
      • 3.4.3 Mô tả thuật toán (28)
    • 3.5 So sánh hiệu suất và độ chính xác của các thuật toán trong việc tìm đường đi cho robot (28)
    • 3.6 Odometry (33)
      • 3.6.1 Làm tròn góc (34)
      • 3.6.2 Đạo hàm (35)
      • 3.6.3 Tính toán và đo góc chết (36)
      • 3.6.4 Công thức tính góc chết (37)
      • 3.6.5 Sự tăng tốc (37)
  • CHƯƠNG 4: THIẾT KẾ, CHẾ TẠO HỆ THỐNG ĐIỀU KHIỂN VÀ LẬP TRÌNH CHO ROBOT (39)
    • 4.1 Hệ thống điều khiển của robot (39)
      • 4.1.1 High level control (39)
      • 4.1.2 Các Low level control (40)
        • 4.1.2.1 Động cơ giảm tốc Motor (40)
        • 4.1.2.2 Mạch điều khiển động cơ DC 2 kênh (H – Brigde Motor Controller) (40)
        • 4.1.2.3 Động cơ Encoder (41)
        • 4.1.2.4 Khối điều khiển Main Controller Atmega 2560 (41)
        • 4.1.2.5 Vi điều khiển Atmega328P (42)
        • 4.1.2.6 IMU BNO055 (42)
      • 4.1.3 Robot Eddie (43)
    • 4.2 Thuật toán điều khiển robot (43)
      • 4.2.1 Thuật toán di chuyển đến mục tiêu (43)
      • 4.2.2 Thuật toán di chuyển robot đi thẳng (45)
      • 4.2.3 Thuật toán xoay chuyển robot tới góc (46)
      • 4.2.4 Chương trình phần cứng điều khiển động cơ và xử lý cảm biến (47)
      • 4.2.5 Odometry (48)
    • 4.3 Chương trình xử lý truyền nhận với máy tính (49)
  • CHƯƠNG 5: KẾT QUẢ (51)
    • 5.1 Môi trường và kịch bản mô phỏng (51)
    • 5.2 Kịch bản và thực nghiệm trên thực tế (52)
    • 5.3 Kết quả (53)
      • 5.3.1 Kết quả chạy mô phỏng (53)
      • 5.3.2 Kết quả chạy thực tế (54)

Nội dung

Các robot hoạt động trong các môi trường trong nhà biết trước như cácrobot làm sạch sàn nhà của Lawitzky [3], robot hướng dẫn viên bảo tàng [4], robotchăm sóc người bệnh Evans [5], robot

TỔNG QUAN VỀ ROBOT DI ĐỘNG VÀ HỆ THỐNG ĐIỀU HÀNH DÀNH CHO ROBOT (ROS)

Robot di động

2.1.1 Giới thiệu về robot di động

Robot di động là robot có thể di chuyển từ nơi này đến nơi khác một cách tự động, nghĩa là không có sự trợ giúp từ người vận hành bên ngoài Không giống như phần lớn robot công nghiệp chỉ có thể di chuyển trong một không gian làm việc cụ thể, robot di động có tính năng đặc biệt của việc di chuyển tự do trong không gian làm việc được xác định trước để đạt được mục tiêu mong muốn của mình Khả năng di chuyển này làm cho chúng phù hợp với một lượng lớn ứng dụng trong môi trường có cấu trúc và không cấu trúc[8].

Robot di động trên mặt đất được phân biệt trong robot di động có bánh xe (WMRS) và robot di động có chân (LMRS) Robot di động cũng bao gồm máy bay không người lái (UAV) và phương tiện tự hành dưới nước (UAV) Robot chân thích hợp cho nhiệm vụ ở trong môi trường phức tạp, cầu thang, đống đổ nát, gạch vụn, v.v Robot một chân hiếm có ứng dụng vì chúng chỉ có thể di chuyển bằng cách nhảy Robot di động cũng bao gồm các bộ điều khiển di động (robot có bánh xe hoặc có chân được trang bị một hoặc nhiều bộ điều khiển ánh sáng để thực hiện các nhiệm vụ khác nhau)[8].

Hình 2.1:Ứng dụng Robot di động trong vận chuyển hàng hóa

2.1.2 Phân loại Robot di động

2.1.2.1 Robot di động trên không

Robot di động trên không (UAV) là một loại robot được thiết kế để hoạt động và di chuyển trên không Hay còn gọi là máy bay không người lái, phương tiện bay không người lái thường được gọi ngắn gọn là UAV (Unmanned Aerial Vehicle), chúng tự hoạt động theo chương trình được cài đặt sẵn, hoặc hoạt động có người hỗ trợ lái từ xa[9].

Hình 2.2: Một số dạng phổ biến máy bay không người lái.

2.1.2.2 Robot di động dưới nước

Robot di động dưới nước là một loại robot được thiết kế để thực hiện các nhiệm vụ trong môi trường nước Phương tiện dưới nước không người lái đôi khi được gọi là phương tiện lặn không người lái, là những phương tiện lặn có thể hoạt động dưới nước mà không cần người ngồi bên trong điều khiển trực tiếp Các phương tiện này có thể được chia thành hai loại: phương tiện dưới nước điều khiển từ xa (ROUV) và phương tiện tự hành dưới nước (AUV) ROUV được điều khiển từ xa bởi một người vận hành, còn AUV được tự động hóa và hoạt động độc lập với đầu vào trực tiếp của con người[10].

Robot di động dưới nước có thể được chia thành các loại khác nhau:

AUV là robot tự hành dưới nước, là phương tiện có thể hoạt động dưới nước mà không cần người điều khiển [6] Chúng có khả năng hoạt động hoàn toàn tự động mà không cần sự can thiệp từ con người, chúng được trang bị cảm biến

Hình 2.3: Robot tự hành dưới nước.

 Robot điều khiển từ xa dưới nước ROV.

ROV là một phân lớp của UUV với mục đích chính là thay thế con người cho các nhiệm vụ dưới nước do điều kiện dưới nước khó khăn ROV được thiết kế để thực hiện các nhiệm vụ giáo dục hoặc công nghiệp[11] Cấu trúc của ROV khiến nó không đủ tiêu chuẩn để có thể hoạt động độc lập

2.1.2.3 Robot di động sử dụng bánh xe

Robot có bánh xe là robot di động có chuyển động dựa trên hai bánh xe dẫn động riêng biệt đặt ở hai bên thân robot Do đó, nó có thể thay đổi hướng bằng cách thay đổi tốc độ quay tương đối của các bánh xe và do đó không cần thêm chuyển động lái [12].

Nếu cả hai bánh xe được dẫn động cùng hướng và cùng tốc độ thì robot sẽ đi theo đường thẳng Nếu cả hai bánh xe được quay với tốc độ bằng nhau theo hướng ngược nhau, như thể hiện rõ trong sơ đồ hiển thị, robot sẽ quay quanh điểm trung tâm của trục

Hình 2.5: Robot vận chuyển tự hành AGV có bánh xe giảm xóc.

Vì hướng của robot phụ thuộc vào tốc độ và hướng quay của hai bánh dẫn động nên các đại lượng này cần được cảm nhận và kiểm soát một cách chính xác. Robot được điều khiển bằng vi sai tương tự như các bánh răng vi sai được sử dụng trong ô tô ở chỗ cả hai bánh xe có thể có tốc độ quay khác nhau, nhưng không giống như hệ thống truyền động vi sai, một hệ thống được điều khiển vi sai sẽ có cả hai bánh được dẫn động Robot có bánh vi sai được sử dụng rộng rãi trong chế tạo robot vì chuyển động của chúng dễ lập trình và có thể được điều khiển tốt Hầu như tất cả các robot tiêu dùng trên thị trường hiện nay đều sử dụng vi phân.

Hình 2.6: Bộ điều khiển di động XL-MICO với bánh xe Mecanum.

2.1.3 Ứng dụng của robot di động và tiềm năng phát triển trong tương lai

Robot y học có những ứng dụng quan trọng trong phẫu thuật, vì chúng bù đắp cho những thiếu sót và hạn chế về tính chính xác của con người, vì vậy chúng cải thiện quy trình phẫu thuật

Hình 2.7: Robot phẫu thuật trong y tế.

Việc sử dụng nó trong các liệu pháp phục hồi chức năng cũng đang được nghiên cứu, bao gồm chân tay giả và robot để cung cấp hỗ trợ cá nhân trong bệnh viện

Các ứng dụng trong lĩnh vực được gọi là thế hệ thứ ba rất đa dạng: từ việc di chuyển một mảnh từ vị trí này sang vị trí khác, hoặc tải và dỡ máy, cho đến các hoạt động xử lý nhất định trong đó robot thực hiện công việc trên các mảnh bằng công cụ nào đó Ngành công nghiệp hạt nhân sử dụng robot để xử lý chất phóng xạ thông qua một công nghệ có tên Telequerica, bao gồm một máy điều khiển từ xa hoặc máy điều khiển từ xa do con người điều khiển Sự phát triển này được kích thích bởi sự cần thiết phải hành động từ xa trong những thảm họa xảy ra trong các nhà máy điện hạt nhân.

Trong lĩnh vực này, chúng tôi liên tục làm việc để phát triển các nguyên mẫu thực hiện các nhiệm vụ quân sự hoặc thám hiểm nhằm tránh nguy hiểm đến tính mạng con người

Viện nghiên cứu Úc đã đầu tư rất nhiều tiền và thời gian để phát triển một cỗ máy xén lông cừu Hiện đang làm việc trên một dự án khác bao gồm việc tạo ra một hệ thống tự động của một xưởng Cũng tại Pháp, các ứng dụng thử nghiệm đang được thực hiện ngày hôm nay để bao gồm robot trong việc trồng và cắt tỉa các vườn.

Hình 2.10: Robot tự động thu hoạch rau.

Hệ điều hành robot ROS

2.2.1 ROS (Robot Operating System) là gì?

ROS là một hệ điều hành robot mã nguồn mở dành cho robot Nó cung cấp các dịch vụ mà bạn mong đợi từ một hệ điều hành, bao gồm trừu tượng hóa phần cứng, kiểm soát thiết bị cấp thấp, triển khai chức năng thường được sử dụng, truyền thông báo giữa các tiến trình và quản lý gói Nó cũng cung cấp các công cụ và thư viện để lấy, xây dựng, viết và chạy mã trên nhiều máy tính ROS tương tự ở một số khía cạnh với 'khung robot', chẳng hạn như : Player, YARP, Orocos, Carmen, Orca, Moss và Microsoft Robotics Studio [12] "Biểu đồ" thời gian chạy ROS là một mạng ngang hàng gồm các tiến trình (có khả năng được phân phối trên các máy) được kết nối lỏng lẻo bằng cách sử dụng cơ sở hạ tầng truyền thông ROS ROS triển khai một số kiểu giao tiếp khác nhau, bao gồm giao tiếp kiểu RPC đồng bộ qua các dịch vụ , truyền dữ liệu không đồng bộ qua các chủ đề và lưu trữ dữ liệu trên Máy chủ tham số [12]

Hình 2.11: Hệ điều hành ROS.

ROS không phải là một framework thời gian thực, mặc dù có thể tích hợp ROS với mã thời gian thực Robot Willow Garage PR2 sử dụng hệ thống có tên pr2_etherCAT , vận chuyển các thông điệp ROS vào và ra khỏi quy trình thời gian thực ROS cũng tích hợp liền mạch với Bộ công cụ thời gian thực Orocos.ROS bao gồm các thư viện và công cụ để hỗ trợ các ngôn ngữ lập trình, phần cứng và chương trình khác nhau Trong bài viết này chúng ta chỉ xem xét một số tính năng cơ bản để hiểu những điều cơ bản về ROS ROS cũng cung cấp các công cụ mô phỏng Trong đó có Gazebo để trực quan hóa và điều khiển robot trong không gian ba chiều [13]

2.2.2 Ứng dụng của hệ điều hành ROS Điều khiển robot cánh tay: ROS hỗ trợ điều khiển robot cánh tay và tay robot thông qua các giao tiếp chuẩn như Joint State Publisher, MoveIt! và ROS Control Điều này cho phép lập trình viên dễ dàng điều khiển các chuyển động của robot cánh tay và thực hiện các tác vụ như nắm đối tượng, đặt vị trí, và thao tác trong không gian.

Xử lý hình ảnh và nhận dạng: ROS tích hợp nhiều thư viện xử lý hình ảnh và nhận dạng như OpenCV và PCL (Point Cloud Library) Điều này cho phép robot nhận dạng và phân loại đối tượng, theo dõi vị trí và di chuyển dựa trên thông tin hình ảnh Giao tiếp và truyền thông: ROS cung cấp các công cụ và giao thức để giao tiếp giữa các thành phần của hệ thống robot, bao gồm giao tiếp qua mạng, giao tiếp nội bộ trên cùng một robot, và giao tiếp với các thiết bị ngoại vi khác

Mô phỏng và môi trường ảo: ROS cung cấp khả năng mô phỏng robot và môi trường ảo để kiểm tra và phát triển ứng dụng mà không cần sử dụng robot thực tế Gazebo và RViz là hai công cụ phổ biến trong ROS để mô phỏng robot và hiển thị đồ họa.

Học máy và trí tuệ nhân tạo: ROS cung cấp các công cụ hỗ trợ học máy và trí tuệ nhân tạo, bao gồm các thư viện như TensorFlow và PyTorch Điều này cho phép robot học và cải thiện khả năng thực hiện các tác vụ thông qua việc phân tích dữ liệu và tương tác với môi trường.

CÁC THUẬT TOÁN TÌM ĐƯỜNG VÀ ĐIỀU KHIỂN ROBOT

Khái niệm

Thuật toán tìm kiếm theo chiều sâu (DFS) là một dạng thuật toán duyệt hoặc tìm kiếm trên cây hoặc đồ thị, được ứng dụng để duyệt hoặc tìm kiếm trên đồ thị.Thuật toán bắt đầu từ một điểm bất kỳ và duyệt qua các đỉnh kề cạnh điểm đó cho đến khi không còn đỉnh nào để duyệt nữa [14] và sau đó đi về lại đỉnh đầu.

Ý tưởng thuật toán

Từ đỉnh (nút) gốc ban đầu: Duyệt đi xa nhất theo từng nhánh, khi nhánh đã duyệt hết, lùi về từng đỉnh để tìm và duyệt những nhánh tiếp theo Quá trình duyệt chỉ dừng lại khi tìm thấy đỉnh cần tìm hoặc tất cả đỉnh đều đã được duyệt qua.

● Open: là tập hợp các đỉnh chờ được xét ở bước tiếp theo theo ngăn xếp (ngăn xếp: dãy các phần tử mà khi thêm phần tử vào sẽ thêm vào đầu dãy, còn khi lấy phần tử ra sẽ lấy ở phần tử đứng đầu dãy).

● Close: là tập hợp các đỉnh đã xét, đã duyệt qua.

● Tập Open chứa đỉnh gốc s chờ được xét.

● Kiểm tra tâp Open có rỗng không: Nếu tập Open không rỗng, lấy một đỉnh ra khỏi tập Open làm đỉnh đang xét p Nếu tập Open rỗng, tiến đến bước 4.

● Đưa đỉnh p vào tập close, sau đó xác định các đỉnh kề với đỉnh p vừa xét.

● Kết luận không tìm ra đỉnh đích cần tìm.

Mô tả thuật toán

Hình 3.1: Đồ thị biểu diễn thuật toán DFS.

Cho đồ thị như Hình 3.1, ta mô tả thuật toán DFS như sau:

Bảng 3.1 Quá trình tìm đường đi của thuật toán DFS.

Lần lặp Đỉnh Open Close

Thuật toán A*

Thuật toán A* là thuật toán tìm kiếm trong đồ thị Thuật toán này tìm một đường đi từ một nút khởi đầu tới một nút đích cho trước (hoặc tới một nút thỏa mãn một điều kiện đích)[13].A* lưu giữ một tập các đường đi qua đồ thị, từ đỉnh bắt đầu đến đỉnh kết thúc, tập các đỉnh có thể đi tiếp được lưu trong tập Open.

3.2.2 Ý tưởng thuật toán. Ý tưởng chính của thuật toán A* là kết hợp giữa hai yếu tố: chi phí đã đi từ điểm bắt đầu đến điểm hiện tại (chi phí g), và ước tính chi phí còn lại từ điểm hiện tại đến điểm đích (chi phí h) Chi phí g được tính từ điểm bắt đầu đến điểm hiện tại thông qua các bước di chuyển đã thực hiện, trong khi chi phí h thường được tính bằng cách sử dụng một hàm heuristic ước tính khoảng cách từ điểm hiện tại đến điểm đích.

Hình 3.2 Đồ thị biểu diễn thuật toán A*.

Theo đồ thị ở Hình 3.2 ta mô tả như sau:

● Ước lượng khoảng cách từ đỉnh hiện tại cho đến đỉnh kết thúc f(x)=g(x)+h(x) trong đó g là khoảng cách ngắn nhất từ đỉnh hiện tại đến đích.

Bảng 3.2: Quá trình tìm đường đi của thuật toán A*.

Bước p Các đỉnh nối với p Open Close

)Cây tìm kiếm ứng với đồ thị trên là:

Hình 3.3: Kết quả tìm kiếm của đồ thị biểu diễn thuật toán A*.

Thuật toán ưu tiên chiều rộng (BFS)

Thuật toán duyệt đồ thị ưu tiên chiều rộng (BFS) là một trong những thuật toán tìm kiếm cơ bản và thiết yếu trên đồ thị Mà trong đó, những đỉnh nào gần đỉnh xuất phát hơn sẽ được duyệt trước Ngoài ra, thuật toán này còn được dùng để tìm các thành phần liên thông của đồ thị, hoặc kiểm tra đồ thị hai phía,… Thuật toán này chọn một nút duy nhất (điểm ban đầu hoặc điểm nguồn) trong biểu đồ và sau đó truy cập tất cả các nút liền kề thông qua nút đã chọn

3.3.2 Ý tưởng thuật toán. Ý tưởng : Với đồ thị không trọng số và đỉnh nguồn S Đồ thị này có thể là đồ thị có hướng hoặc vô hướng, điều đó không quan trọng đối với thuật toán Có thể hiểu thuật toán như một ngọn lửa lan rộng trên đồ thị: Ở bước thứ 0, chỉ có đỉnh nguồn S đang cháy.Ở mỗi bước tiếp theo, ngọn lửa đang cháy ở mỗi đỉnh lại lan sang tất cả các đỉnh kề với nó.Trong mỗi lần lặp của thuật toán, "vòng lửa" lại lan rộng ra theo chiều rộng Những đỉnh nào gần S hơn sẽ bùng cháy trước.

Hình 3.4: Đồ thị biểu diễn thuật toán BFS.

Theo hình đồ thị Hình 3.4 ta mô tả như sau:

Xét đồ thị C Hình 3.4, với đỉnh nguồn S = 1:

Bảng 3.3: Quá trình tìm đường đi của thuật toán BFS.

Các đỉnh v kề u mà chưa đánh dấu

Hàng đợi sau khi đẩy những đỉnh v vào

Thuật toán Dijkstra

Thuật toán Dijkstra, là một thuật toán giải quyết bài toán đường đi ngắn nhất từ một đỉnh đến các đỉnh còn lại của đồ thị có hướng không có cạnh mang trọng số không âm Thuật toán thường được sử dụng trong định tuyến với một chương trình con trong các thuật toán đồ thị hay trong công nghệ Hệ thống định vị toàn cầu (GPS)

Thuật toán Dijkstra có thể giải quyết bài toán tìm đường đi ngắn nhất trên đồ thị vô hướng lẫn có hướng miễn là trọng số không âm Ý tưởng cơ bản của thuật toán như sau:

Bước 1: Từ đỉnh gốc, khởi tạo khoảng cách tới chính nó là 0, khởi tạo khoảng cách nhỏ nhất ban đầu tới các đỉnh khác là +∞ Ta được danh sách các khoảng cách tới các đỉnh

Bước 2: Chọn đỉnh a có khoảng cách nhỏ nhất trong danh sách này và ghi nhận Các lần sau sẽ không xét tới đỉnh này nữa.

Bước 3: Lần lượt xét các đỉnh kề b của đỉnh a Nếu khoảng cách từ đỉnh gốc tới đỉnh b nhỏ hơn khoảng cách hiện tại đang được ghi nhận thì cập nhật giá trị và đỉnh kề a vào khoảng cách hiện tại của b.

Bước 4: Sau khi xét tất cả đỉnh kề b của đỉnh a Lúc này ta được danh sách khoảng cách tới các điểm đã được cập nhật Quay lại Bước 2 với danh sách này Thuật toán kết thúc khi chọn được khoảng cách nhỏ nhất từ tất cả các điểm.

Hình 3.5 Đồ thị biểu diễn thuật toán Dijkstra.

Cho đồ thị như Hình 3.5 ta mô tả đồ thị như sau:

Bảng 3.4 Quá trình tìm đường đi của thuật toán Dijkstra.

So sánh hiệu suất và độ chính xác của các thuật toán trong việc tìm đường đi cho robot

Các thuật toán sẽ có cùng 1 bản đồ có kích thước 25x25 pixel, điểm bắt đầu các thuật toán, điểm kết thúc, cũng như các chướng ngại vật hoàn toàn giống nhau. Chúng em đã mô phỏng 5 lần để xem trung bình thuật toán nào là thuật toán tìm đường tốt nhất Chúng ta dựa vào bước đếm và khoảng cách của các thuật toán đếm được để so sánh.

Công thức tính khoảng cách giữa các điểm như sau:

Mô phỏng 1: Biểu diễn trên đồ thị bắt đầu vị trí (0,0) kết thúc ở vị trí (25,25) và bắt đầu chạy các thuật toán tìm đường thu được kết quả ở Bảng 3.5.

Bảng 3.5: Kết quả mô phỏng lần 1.

Khoảng cách Bước đếm Thứ tự thuật toán

Khoảng cách là 34 pixel, thuật toán về đầu tiên là DFS với 531 bước đếm, có số bước đếm ít nhất trong 4 thuật toán Về thứ 2 là thuật toán A* với 541 bước đếm, hơn thuật toán DFS 10 bước Cuối cùng, hai thuật toán BFS và Dijkstra cùng về thứ

3 với 3871 bước đếm, số bước đếm nhiều gấp 7 lần so với bước đếm của hai thuật toán DFS và A*.

Mô phỏng 2: Biểu diễn trên đồ thị bắt đầu vị trí (14,0) kết thúc ở vị trí (25,25) và bắt đầu chạy các thuật toán tìm đường thu được kết quả ở Bảng 3.6.

Bảng 3.6: Kết quả mô phỏng lần 2.

Khoảng cách Bước đếm Thứ tự thuật toán

Có chút thay đổi về khoảng cách, khoảng cách lần này là 24 pixel, ngắn hơn so với mô phỏng lần 1 với 10 pixel Thuật toán DFS lại tiếp tục dẫn đầu, tìm kiếm điểm kết thúc với 531 bước đếm, và về thứ 2 cũng là thuật toán A* với 931 bước đếm, lần này đường mở rộng tìm kiếm bước đếm của A* tăng lên rất nhiều, so với mô phỏng lần 1 thì lần 2 này tăng hơn 400 bước đếm Trong khi đó bước đếm của hai thuật toán BFS và Dijkstra lại giảm gần 400 bước đếm và vị trí thứ 3 Số bước đếm các thuật toán có sự dao động do khoảng cách được giảm xuống 10 pixel.

Mô phỏng 3: Biểu diễn trên đồ thị bắt đầu vị trí (24,12) kết thúc ở vị trí (7,14) và bắt đầu chạy các thuật toán tìm đường thu được kết quả ở Bảng 3.7

Bảng 3.7: Kết quả mô phỏng lần 3.

Khoảng cách Bước đếm Thứ tự thuật toán

Khoảng cách lần này là 17 pixel, ngắn hơn rất nhiều so với 2 lần mô phỏng trên Lần này thuật toán tìm kiếm về đầu tiên là A* với 411 bước đếm, cùng về thứ

2 là BFS và Dijkstra có 2541 bước đếm Tìm kiếm về cuối cùng là DFS với số bước đếm 3421 bước Mô phỏng lần này có sự thay đổi rất lớn về vị trí thuật toán, thuật toán DFS dẫn đầu lần 1 và 2, sang lần 3 đã đứng cuối cùng, thay vào đó thuật toán A* từ vị trí 2 lên vị trí 1, cũng như hai thuật toán còn lại cũng có sự dao động về vị trí.

Mô phỏng 4: Biểu diễn trên đồ thị bắt đầu vị trí (15,8) kết thúc ở vị trí (9,19) và bắt đầu chạy các thuật toán tìm đường thu được kết quả ở Bảng 3.8

Bảng 3.8: Kết quả mô phỏng lần 4.

Khoảng cách Bước đếm Thứ tự thuật toán

Khoảng cách tiếp tục được giảm xuống, với khoảng cách lần này là 13 pixel. Thuật toán A* lại tiếp tục dẫn đầu với 911 bước đếm và vị trí thứ 2 là DFS với 912 bước đếm, DFS cách A* chỉ với 1 bước đếm Với lần mô phỏng này đủ để cho chúng ta thấy rằng vị trí giữa các điểm xa hay gần đóng vai trò rất quan trọng trong việc tìm kiếm đường đi nhanh nhất của các thuật toán.

Mô phỏng 5: Biểu diễn trên đồ thị bắt đầu vị trí (13,12) kết thúc ở vị trí (11,15) và bắt đầu chạy các thuật toán tìm đường thu được kết quả ở Bảng 3.9

Bảng 3.9: Kết quả mô phỏng lần 5.

Khoảng cách Bước đếm Thứ tự thuật toán

Với mô phỏng lần cuối này, khoảng cách ngày các rút ngắn, với khoảng cách

3 pixel này, thuật toán về đầu tiên vẫn là A*, cùng về thứ 2 là thuật toán BFS và Dijkstra, cuối cùng là thuật toán DFS.

Sau 5 lần mô phỏng cho thấy rằng hiệu suất của hai thuật toán A* và DFS tốt hơn BFS và Dijkstra A* và DFS chúng luôn đứng vị trí 1 và 2, chúng ta dễ dàng thấy vị trí càng xa thì DFS làm việc nhanh hơn các thuật toán khác và ngược lại vị trí càng gần thì DFS tìm kiếm khá lâu, thậm chí đường mở rộng tìm kiếm hết cả bản đồ mới tìm được điểm kết thúc Còn A* dù vị trí xa hay gần, thuật toán luôn tìm đến điểm kết thúc nhanh nhất có thể BFS và Dijkstra hai thuật toán có cách tìm kiếm rất giống nhau nhưng so với A* và DFS thì khá là yếu.

Odometry

Odometry hay còn được gọi là hệ thống lái vi sai đôi khi được gọi không vi sai được sử dụng trong nhiều robot Vì vậy, hầu hết chúng ta đều có khả năng nắm bắt trực quan cách thức hoạt động của nó Nếu cả hai bánh dẫn động cùng quay thì robot sẽ chuyển động theo đường thẳng Nếu một bánh xe quay nhanh hơn bánh kia, robot sẽ đi theo một đường cong hướng vào bánh xe chậm hơn Nếu các bánh xe quay với tốc độ bằng nhau nhưng ngược chiều nhau thì robot sẽ quay Vì vậy, việc điều khiển robot chỉ là vấn đề thay đổi tốc độ của các bánh dẫn động.

Trước khi vào mô hình lái vi sai, chúng ta hãy xem xét vấn đề bố trí một robot có khả năng quay 90 độ quanh góc của hành lang hoặc đường Cho robot đi vòng qua góc cua, đi theo vòng cung tròn trong khi vẫn duy trì tốc độ ổn định Để đạt được đến vấn đề này, chúng ta tăng tốc độ của bánh xe bên ngoài đồng thời giảm tốc độ của bánh xe bên trong Nếu hai bánh xe quay cùng tốc độ không đổi nhưng khác nhau thì robot thực sự đi theo một đường tròn hay không ?

Tham khảo Hình 3.11, quan sát các mối quan hệ:

Hình 3 11 Đường đi của bánh xe qua một chỗ rẽ.

Trong đó, S L , S R cho chuyển vị (quãng đường di chuyển) tương ứng của bánh xe bên trái và bên phải, r là bán kính quay vòng của bánh xe (trái), b là khoảng cách giữa các bánh xe ( từ tâm đến tâm dọc theo chiều dài của trục), và theta () là góc quay radian S M là vận tốc tại tâm trục chính.

Trong phần tham khảo ở trên, chúng ta xem xét vấn đề cố gắng chọn tốc độ bánh xe dựa trên đường đi mong muốn Về cơ bản đây là một vấn đề được gọi là động học thuật, kỹ thuật dự đoán hành vi của một hệ thống cơ học dựa trên các đầu vào của hệ thống đó Việc phát triển một mô hình cho hệ thống lái vi sai không khó nhưng đòi hỏi phải sử dụng các phép tính và chương trình vi phân Bây giờ chúng ta quan tâm tọa độ x, y( và hướng) thay đổi như thế nào theo thời gian Tại bất kỳ ở thời điểm nào, tọa độ x, y của điểm trung tâm robot đều thay đổi dựa trên tốc độ và hướng của nó Chúng ta xem coi hương là một góc theta được đo bằng radian, ngược chiều kim đồng hồ tính từ trục x Vecto chỉ hướng chuyển động ch về phía trước cho robot sẽ đơn giản là (cos , sin ) Tọa đo x, y cho điểm trung tâm của robot sẽ thay đổi tùy theo tốc độ chuyển động của nó dọc theo vecto đó Những quan sát cho thấy rằng, lấy m(t) và (t) làm các hàm phụ thuộc thời gian cho tốc độ và hướng của robot, giải pháp cho chúng ta sẽ có dạng:

Tham khảo Hình 3.12, lưu ý rằng khi robot thay đổi vị trí, tất cả các điểm trên robot có thể chuyển động Để xây dựng phương trình động thuận cho chuyển động của hệ thống lái vi sai, chúng ta bắt đầu xác ddingj hệ quy chiếu trong đó một điểm được chọn tùy ý được coi là đứng yên Tất cả các điểm khác trong hệ thống được coi là chuyển động so với điểm tham chiếu.

Hình 3.12: Bánh xe ở các vận tốc khác nhau. Điểm mà chúng ta chọn làm tham chiếu là điểm giữa của bánh xe bên trái Đây là điểm mà bánh xe lý tưởng tiếp xúc với sàn Mọi chuyển động trong hệ quy chiếu vuông góc với trục nên chuyển động của nó trong hệ quy chiếu tuân theo một cung tròn có bán kính tương ứng với chiều dài của trục (từ tâm trục đến tâm trục)

Dựa trên quan những quan sát này, chúng ta có thể rút ra một phương trình vi phân mô tả sự thay đổi hướng theo thời gian Định nghĩa một góc tính bằng radian là độ dài của một cung tròn chia cho bán kính của đường tròn đó Vận tốc tương đối của bánh xe bên phải cho chúng ta có dộ dài cng đó trên một đơn vị thời gian Chiều dài từ bánh xe đến điểm trung tâm cho chúng ta bán kính Kết hợp những sự thật này, chúng ta có: d/dt= ( v R −v L ¿/b (3.3)

Tích phân (3.3), và lấy hướng ban đầu của robot là (0) = , ta tìm được hàm tính hướng cho robot là hàm của vận tốc bánh xe và thời gian:

(t) = ( v R −v L ¿/b +  (3 4) Như đã lưu ý ở trên, sự thay đổi hướng này cũng áp dụng cho hệ quy chiếu tuyệt đối Chuyển sự chú ý của chúng ta trở lại hệ quy chiếu tuyệt đối, chúng ta nhớ lại từ [3.2] ở trên rằng chuyển động tổng thể của robot phụ thuộc vào vận tốc tại điểm trung tâm của nó (điểm giữa của trục) Vận tốc đó chỉ đơn giản là giá trị trung bình của vận tốc đó của hai bánh, hoặc ( v R +v L ¿/2 Chúng ta kết hợp thực tế này với những gì chúng ta biết về định hướng như một hàm số của thời gian và thu được các phương trình vi phân sau: d x d t =[(v¿¿R+v L )/2]cos⁡((t))¿d y d t =[(v¿¿R+v L )/2]sin((t))(3.5) ¿ Lưu ý rằng các phương trình trong [3.5] có dạng tương tự như trong [3.2] Tích phân và áp dụng vị trí ban đầu của robot x (0)= x 0 , y(0)=y 0 , ta có: ¿

Lưu ý rằng các phương trình trong [3.6] xác nhận khẳng định trước đó rằng, khi các bánh xe quay với vận tốc cố định, robot sẽ đi theo một đường tròn Thuật ngữ này 2(v b (v R + v L ) ¿¿R−v L )¿ thực chất là bán kính quay vòng của quỹ đạo tròn ở tâm robot. Khi sử dụng [3.6] trong ứng dụng máy tính, cần thực hiện xử lý đặc biệt đối với các trường hợp tốc độ bánh xe gần bằng nhau và v R −v L 0

3.6.3 Tính toán và đo góc chết

Khi chúng ta có [3.6], đó là một bước nhỏ để có thể thực hiện tính toán chết Trong hàng không hoặc hàng hải truyền thống, thuật ngữ "tính toán chết" có nghĩa là ước tính vị trí mà không cần tham khảo bên ngoài Vị trí được xác định chính xác bằng cách sử dụng kiến thức về đường đi và tốc độ của phương tiện trong một khoảng thời gian Trong chế tạo robot, thông tin cần thiết thường thu được bằng cách đo số vòng quay của bánh xe Các thiết bị được gọi là bộ mã hóa được ghép nối với các bánh dẫn động của robot và hoạt động giống như máy đo đường kỹ thuật số Mặc dù mọi thứ có thể không ổn (chẳng hạn như khi rô-bốt "quay" trên sàn trơn), bộ mã hóa thường cung cấp ước tính tốt về chuyển vị tương ứng cho bánh xe bên phải và bên trái Ngược lại, các giá trị dịch chuyển này có thể được sử dụng để xác định vị trí dựa trên các phép tính đo đường.

Các phương trình trong [3.6] có thể được sử dụng để tính toán bằng cách thay thế s R , s L các số hạng v R , v L và bỏ đi giá trị thời gian t, sau đó giải các giá trị x, y, và  Khi sử dụng các phương trình, bạn cần cẩn thận trong các trường hợp robot di chuyển theo đường gần như đường thẳng và các chuyển vị s R , s L gần như bằng nhau dẫn đến các giá trị gần bằng 0 ở mẫu số.

3.6.4 Công thức tính góc chết

Việc thêm gia tốc vào mô hình chỉ đơn giản là thay thế các phương trình phụ thuộc thời gian thích hợp cho vận tốc của bánh xe vào [3.3] và [3.5] Thật không may, các phương trình vi phân thu được thường không thể giải được mà phải được đánh giá bằng phương pháp số Hãy xem xét một ví dụ đơn giản trong đó các bánh xe trải qua một tốc độ tăng tốc cố định Cho phép

(3.8) đưa ra vận tốc của bánh xe bên phải và bên trái trong đó a R , a L đưa ra các giá trị gia tốc(hoặc giảm tốc) không đổi và w R , w L đưa ra vận tốc ban đầu Thay vào [3.3] và [3.5] ta có:

THIẾT KẾ, CHẾ TẠO HỆ THỐNG ĐIỀU KHIỂN VÀ LẬP TRÌNH CHO ROBOT

Hệ thống điều khiển của robot

Hình 4.1: Sơ đồ khối của robot.

Hệ thống điều khiển của robot bao gồm 2 phần chính: HIGH LEVEL CONTROL và CÁC LOW LEVEL CONTROL Trong đó phần HIGH LEVEL CONTROL: được cài đặt hệ điều hành robot ROS để thực hiện các tính toán phực tạp từ thuật toán tìm đường, xử lý cảm biến và xác định vị trí Khối LOW LEVEL CONTROL bộ điều khiển động cơ, xử lý tín hiệu cảm biến IMU và encoder gửi lên HIGH LEVEL CONTROL.

Máy tính cá nhân – được cài đặt hệ điều hành ROS.

Hình 4.2 Máy tính cá nhân.

4.1.2.1 Động cơ giảm tốc Motor

 Điện áp nằm trong phạm vi từ 9V đến 15V.

 Điện áp định mức là 12V.

 Dòng không tải tối đa là 2.5.

 Tốc độ không tải là 75±10.

 Dòng tải định mức tối đa là 10.

 Momen tải định mức là 3.0.

 Tốc độ tải định mức là 50±10.

 Momen đứng yếu ít nhất là 10.0.

 Dòng đứng yếu tối đa là 25.

Hình 4.3: Động cơ giảm tốc Motor.

4.1.2.2 Mạch điều khiển động cơ DC 2 kênh (H – Brigde Motor Controller)

Hình 4.4: Mạch động cơ điều khiển DC 2 kênh.

 Hỗ trợ điện áp từ 5V đến 30VDC.

 Dòng điện liên tục 10A và 30A peak(10s) cho mỗi kênh.

 Hỗ trợ 3.3V và 5V logic level input( tín hiệu PWM và DIR), tương thích với Adruino và Raspberry Pi.

 Điều khiển tốc độ với sóng PWM lên tới 20KHz

 Hỗ trợ tín hiệu PWM Loked-Antiphase và Sign-Magnitude.

 Điện áp hoạt động: DC5-24V.

 Tốc độ cơ khí tối đa 6000 vòng/phút.

 Tần số ứng đáp ứng điện 20K/s

4.1.2.4 Khối điều khiển Main Controller Atmega 2560

 Vi điều khiển chính: ATmega2560

 Nguồn nuôi mạch: 5VDC từ cổng USB hoặc nguồn ngoài cắm từ giắc tròn DC (khuyên dùng 7-9VDC để đảm bảo mạch hoạt động tốt Nếu bạn cắm 12V thì

IC ổn áp rất dễ chết và gây hư hỏng mạch).

 Số chân Digital: 54 (15 chân PWM)

 Giao tiếp UART : 4 bộ UART

 Giao tiếp SPI : 1 bộ ( chân 50 -> 53 ) dùng với thư viện SPI của Arduino

 Bộ nhớ Flash: 256 KB, 8KB sử dụng cho Bootloader

 Điện áp hoạt động tối thiểu và tối đa từ 1.8V DC đến 5.5V DC.

 Tổng số kênh PWM là 6.

 Tốc độ xung nhịp 16 megahz.

 Tổng số chân ngõ vào Analog là 6.

 Tổng số chân I/O kỹ thuật số là 14 chân.

- Nhiệt độ làm việc tối thiểu: -40 độ C

- Điện áp cấp nguồn tối thiểu 2.4V

- Dòng cấp nguồn vận hành 13.7 mA

Thiết kế trên nền tảng với nhiều không gian cho thiết bị điện tử và truy cập máy tính xách tay lập trình khi đang di chuyển.

Phần khung cơ khí của robot trong đồ án này sử dụng là Robot Eddie được thiết kế bởi công ty Microsoft.

- Kích thước Robot Eddie có bán kính 25cm.

- Hai bánh dẫn động với động cơ 12V.

- Bánh xe lốp kép phía trước và phía sau giúp ổn định nền tảng, lốp cao su khí nén bền bỉ dễ dàng đi qua sàn cứng và thảm.

Thuật toán điều khiển robot

4.2.1 Thuật toán di chuyển đến mục tiêu

Trong thuật này, sử dụng hai thuật toán khác: quay góc và di chuyển thẳng sẽ được trình bày ở phần sau Bắt đầu chương trình sẽ cập nhật vị trí hiện tại của robot truyền vào sẽ tính toán góc lệch hiện tại với của điểm mục tiêu so với góc của robot hiện tại và khoảng các đến mục tiêu là bao nhiêu Khi góc mục tiêu đã gần đúng với góc robot hiện tại thì sử dụng hàm đi thẳng để điều khiển robot di chuyển theo khoảng cách đã tính Trường hợp góc lệch giữa robot và vị trí mục tiêu lớn thì tiến hành hàm xoay theo góc sau đó mới sử dụng hàm đi thẳng.

Hình 4 10 Lưu đồ thuật toán chương trình di chuyển robot đến mục tiêu.

4.2.2 Thuật toán di chuyển robot đi thẳng

Thuật toán này sẽ giúp cho robot di chuyển đi thẳng theo một gốc cố định và đúng khoảng cách truyền vào Từ tọa độ của mục tiêu, vị trí của robot sẽ được cập nhật liên tục để tính toán khoảng cách và góc lệch Trường hợp góc lệch lớn hơn góc lệch cho phép tức là robot đang đi lệch khỏi quỹ đạo nên cần điều chỉnh cho robot di chuyển vào quỹ đạo Nếu robot bị lệch sang trái thì điều khiển robot qua phải và ngược lại Khi góc lệch không đáng kể thì điều khiển robot đi thẳng cho đến khi khoảng cách đến đích nhỏ hơn khoảng cách cho phép.

4.2.3 Thuật toán xoay chuyển robot tới góc.

Thuật toán này sẽ giúp cho robot xoay đến khoảng cách truyền vào Từ góc mục tiêu, vị trí của robot sẽ được cập nhật liên tục để tính toán góc lệch, hướng xoay và sai số Trường hợp sai số lớn hơn 15 độ thì thì robot sẽ xoay với vận tốc được truyền vào, nếu sai số bé hơn 15 độ và lớn hơn sai số cho phép thì robot sẽ xoay với vận tốc chậm hơn tốc độ truyền vào vì lúc này robot đã xoay gần tới góc truyền vào nên cần giảm tốc độ xoay lại, robot sẽ xoay cho đến khi nào sai số bé hơn hoặc bằng sai số cho phép thì sẽ dừng lại.

Hình 4.12 Lưu đồ thuật toán chương trình xoay robot tới góc.

4.2.4 Chương trình phần cứng điều khiển động cơ và xử lý cảm biến

Chương trình này là chương trình điều khiển động cơ với vận tốc nhận được sau khi tính toán, nếu nút auto không được nhấn robot sẽ được điều khiển bằng tay PS2 để di chuyển với tốc độ cố định, còn nếu nút auto được nhấn thì robot sẽ di chuyển dựa vào tốc độ nhận được Trường hợp không bắt được sự kiện serial thì robot sẽ không di chuyển, còn nếu có thì chương trình sẽ lấy dữ liệu từ serial sau đó xử lý dữ liệu nhận được để chuyển sang từ tốc độ m/s sang pwm/0.5s sau đó sẽ truyền vào động cơ rồi gửi lại dữ liệu encoder lên serial để tiếp tục tính toán tốc độ.

Hình 4.13 Chương trình phần cứng điều khiển động cơ và xử lý cảm biến.

Hình 4.14 Lưu đồ thuật toán Odometry

Chương trình này sẽ tính toán vị trí và tốc độ tuyến tính, tốc độ xoay của robot và truyền về chương trình phần cứng điều khiển động cơ để di chuyển robot Đầu tiên chương trình sẽ nhận 2 tham số là encoder trái và encoder phải từ serial, sau đó sẽ tính số lỗ encoder đã đi được, tính khoảng cách đã đi, thời gian đi Trường hợp số lỗ encoder đã đi được của 2 động cơ bằng nhau thì lúc này robot đang đi thẳng, khoảng cách xoay bằng 0 và cập nhật tọa độ hiện tại, nếu không bằng nhau thì tính khoảng cách xoay và cập nhật tọa độ hiện tại Nếu d_time bé hơn 0.000001 thì tốc độ tuyến tính và tốc độ xoay bằng 0, ngược lại thì tính tốc độ bằng khoảng cách chia thời gian sau đó gửi tốc độ lên serial để điều khiển động cơ.

Mục đích: Mục đích của chương trình odometry là ước lượng và theo dõi vị trí và hướng của robot dựa trên dữ liệu từ cảm biến bánh xe (encoders) Tính toán tốc độ tuyến tính và tốc độ xoay để di chuyển robot đến vị trí mong muốn

Thông tin đầu vào: Các giá trị encoder từ bánh trái (enc_left) và bánh phải

(enc_right) Các thông số khác như TICKS_PER_METER (số encoder đọc được trên 1 mét), BASE_WIDTH (khoảng cách giữa 2 bánh xe) để chuyển đổi giá trị encoder thành khoảng cách và góc quay.

- Tính toán số ticks mới và cập nhật giá trị encoder trước đó.

- Chuyển đổi số ticks thành khoảng cách đã đi (dist_left, dist_right) và tính khoảng cách tổng cộng (dist).

- Tính thời gian delta (d_time) giữa các lần đọc encoder.

- Dựa vào sự chênh lệch giữa dist_right và dist_left, tính góc quay (d_theta).

- Tính toán vị trí mới (cur_x, cur_y) và cập nhật hướng (cur_theta) của robot.

- Tính vận tốc tuyến tính và góc của robot.

Kết quả: Xác định được vị trí và góc hiện tại của robot.Tính toán được vận tốc tuyến tính và vận tốc xoay của robot để di chuyển đến vị trí mong muốn.

Chương trình xử lý truyền nhận với máy tính

- Truyền dữ liệu encoder lên serial với cấu trúc: "E" + encoderLeft + "+" + encoderRight + "#" Trong đó E là kí tự đánh dấu bắt đầu chuỗi, encoderLeft và encoderRight là dữ liệu cần truyền, dấu + là kí tự phân biệt 2 dữ liệu cần truyền, và

- Truyền dữ liệu từ python xuống enconder với cấu trúc: "L" + vl + "+" + "R" +vr +

"#" Trong đó L là kí tự đánh dấu bắt đầu của vận tốc trái, R là kí tự đánh dấu bắt đầu của vận tốc phải, vl và vr là dữ liệu cần truyền, # là kí tự đánh dấu kết thúc chuỗi

- Xử lý dữ liệu encoder nhận được từ serial: kiểm tra bắt đầu bằng kí tự bắt đầu "E"

- Xử lý dữ liệu tốc độ nhận được từ serial: kiểm tra nếu chuỗi kết thúc bằng "#" thì đánh dấu biến stringComplete = true, nếu chưa thì stringComplete = false và cộng dồn kí tự nhận được vào biến inputString -> kiểm tra biến inputString có bắt đâì bằng L và R không, nếu đúng thì loại bỏ kí tự đầu và dấu # ở cuối, loại bỏ dấu + để chỉ còn lại dữ liệu là tốc độ -> chuyển tốc độ m/s sang encoder/0.5s

- Truyền dữ liệu từ IMU lên serial với cấu trúc: "Y" + góc euler + "#" Trong đó Y là kí tự đánh dấu bắt đầu chuỗi, góc euler là dữ liệu cần truyền, và # là kí tự đánh dấu kết thúc chuỗi

- Xử lý dữ liệu IMU nhận được từ serial: kiểm tra nếu chuỗi bắt đầu bằng "Y" và kết thúc bằng "#" thì mới xử lý tiếp, nếu đúng thì loại bỏ kí tự đầu và cuối -> chuyển dữ liệu nhận được từ String sang FLoat để tính toán

KẾT QUẢ

Môi trường và kịch bản mô phỏng

Khu vực thử nghiệm của robot được thiết lập trên mặt phẳng lát gạch có kích thước 4m x 3m, với bố trí các vật cản như trong Hình 5.1a Bản đồ mô phỏng ở Hình 5.1b được xây dựng dựa trên thực tế ở Hình 5.1a với các thông số như sau:

- Khoảng cách giữ các điểm trong bản đồ là 40 pixel

- Các điểm có màu đỏ là vị trí vật cản: tường và các khối hộp

- Các điểm có màu trắng là vị trí robot có thể đi qua.

- Vị trí màu xanh là vị trí bắt đầu của robot.

Môi trường và thiết bị sử dụng:

- Máy tính Asus, Intel Core i7 – 11800H.

- Ngôn ngữ lập trình Python3

- Visual Studio VS Visual Studio Code.

Hình 5.1: Bản đồ thực tế và mô phỏng.

Bản đồ được biểu diễn lại dưới dạng ma trận như sau với vị trí có vật cản có giá trị bằng 1 và vị trí trống có giá trị bằng 0:

Hình 5.2: Ma trận quy đổi từ bản đồ.

Kịch bản mô phỏng 1: Thiết lập bản đồ như Hình 5.1b, có ma trận tương ứng được mô tả như Hình 5.2 Vị trí của robot bắt đầu ở tọa độ (1:1) và chạy thuật toán DFS để robot tìm đường và di chuyển qua hết các điểm trống, rồi quay lại vị trí ban đầu.

Kịch bản mô phỏng 2: Thiết lập bản đồ như Hình 5.1b, có ma trận tương ứng được mô tả như Hình 5.2 Vị trí của thuật toán bắt đầu ở tọa độ (1:1) và chạy kết hợp hai thuật toán DFS và A* để robot tìm đường và di chuyển qua hết các điểm trống, rồi tìm lại vị trí ban đầu.

Kịch bản và thực nghiệm trên thực tế

Đặt robot tại điểm xuất phát (0,0) để robot di chuyển đi qua hết các vùng trống trên bản đồ Thay đổi độ chính xác của hàm xoay để so sánh.

Kết quả

5.3.1 Kết quả chạy mô phỏng

Kết quả mô phỏng 1: Chạy thuật toán DFS.

Hình 5.3 Mô phỏng thuật toán DFS.

Với mô phỏng Hình 5.3, robot chạy thuật toán DFS, robot bắt đầu di chuyển qua các nút và khi trở về vị trí xuất phát robot cũng đi lại các nút đó.

Kết quả mô phỏng 2: Chạy thuật toán DFS kết hợp thuật toán A*.

Hình 5.4 Mô phỏng thuật toán DFS kết hợp với thuật toán A*

Với mô phỏng Hình 5.4, robot chạy hai thuật toán DFS và A*, robot bắt đầu di chuyển qua các nút bằng thuật toán DFS và khi trở về điểm xuất phát bằng thuật toán A*

5.3.2 Kết quả chạy thực tế

Hình 5.5 Kết quả chạy thực tế 1.

Kết quả chạy lần 1, với sai số là 0.7 độ, robot chỉ di chuyển ổn định lúc đầu xuất phát và khi chuẩn bị trở về lại vị trí ban đầu thì có thể thất trên bản đồ, đường di chuyển của robot rất xấu và không ổn định.

Hình 5.6 Kết quả chạy thực tế 2.

Kết quả chạy lần 2, với sai số là 0,6 độ, robot di chuyển khá là ổn định, những vẫn có những khúc robot di chuyển không ổn định, ví dụ như ở tọa độ (6,9) robot xoay góc không ổn định

Hình 5.7 Kết quả chạy thực tế 3.

Kết quả chạy lần 3, với sai số là 0.5 độ, có thể thấy trên bản đô, robot di chuyển rất là mượt mà và ổn định qua tất cả các nốt, tránh vật cản chuẩn, cũng như hướng xoay góc của robot cũng rất chuẩn.

Bảng 5.1 Bảng đánh giá kết quả chạy thực tế mô hình robot.

Lần chạy Sai số Thời gian Độ chính xác

Nhận xét chung: Độ sai số của Robot càng thấp thì độ chính xác của Robot càng cao và ngược lại.

KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN

Tóm tắt lại những điểm quan trọng nhất của nghiên cứu

Kết quả: Chúng em đã đạt được những kết quả quan trọng trong việc thiết kế hệ thống mạch điều khiển và cảm biến định vị cho robot di động, nhằm giải quyết bài toán tìm đường đi tốt nhất để tiết kiệm năng lượng Dưới đây là những kết quả đạt được dựa trên mục đích nghiên cứu đã đề ra:

 Đánh Giá Thuật Toán Tìm Đường: Chúng em đã tiến hành đánh giá và so sánh một số thuật toán tìm đường cho robot

 Mô Phỏng Thuật Toán Tìm Đường:Chúng em đã xây dựng chương trình mô phỏng sử dụng thuật toán tìm đường DFS kết hợp với thuật toán A*

 Thiết Kế Hệ Thống Mạch Điều Khiển và Cảm Biến Định Vị: Chúng em đã tiến hành trong việc thiết kế và xây dựng hệ thống mạch điều khiển và cảm biến định vị cho robot di động

 Thực Nghiệm Trên Môi Trường Thực Tế: Chúng em đã thực nghiệm robot di chuyển trên môi trường thực tế, đánh giá hiệu suất thực tế của hệ thống

Gắn thêm Lidar để định vị chính xác vị trí của robot hơn, vẽ bản đồ 3d môi trường xung quanh robot để lập kế hoạch đường đi tối ưu hơn, giúp robot phát hiện và tránh các vật cản ngẫu nhiên trong quá trình di chuyển

[1] Mester, G (2006, April) Applications of mobile robots In Proc International Conference on Food Science.

[2] Gasparetto, A., & Scalera, L (2019) From the unimate to the delta robot: the early decades of industrial robotics In Explorations in the History and Heritage of

Machines and Mechanisms: Proceedings of the 2018 HMM IFToMM Symposium on History of Machines and Mechanisms (pp 284-295) Springer International

[3] Lawitzky G (2001), “A navigation system for service robots: from research to products”, Proceedings of the 3rd International Conference on

[4] Thrun S., Bucken A., Burgard W., Fox D., Frohlingshaus T., Hennig D.,

Hofman T., Krell M., and Schmidt Timo (1998), “Map learning and high-speed navigation in RHINO”, AI based Mobile Robots, MIT Press, pp 100-124.

[5] Evans J M (1994), “HelpMate: An autonomous mobile robot courier for hospitals”, Proceedings of the IEEE International Conference on Intelligent

[6] Makela H (2001), “Overview of LHD navigation without artificial beacons”,

Robotics and Autonomous Systems Vol 36 (1), pp 21-35.

[7] Roberts J M., Duff E S., Corke P I., Sikka P., Winstanley G J., and

Cunningham J (2000), “Autonomous control of underground mining vehicles using reactive navigation”, Proceedings of the 2000 IEEE International

Conference on Robotics & Automation, pp 3790-3795.

[8] Tzafestas, S G (2013) Introduction to mobile robot control Elsevier.

[9] Acevedo, J J., Arrue, B C., Maza, I., & Ollero, A (2013) Cooperative large area surveillance with a team of aerial mobile robots for long endurance missions Journal of Intelligent & Robotic Systems, 70, 329-345.

[10] Michał Ciszewski, Łukasz Mitka, Piotr Kohut, Tomasz Buratowski & Mariusz

Ngày đăng: 17/03/2024, 23:01

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

TÀI LIỆU LIÊN QUAN

w