Đồ Án: Thiết Kế Hệ Điều Khiển Xe Tự Hành Bánh Đa Hướng Trên ROS

Đồ án nghiên cứu tốt nghiệp thiết kế hệ điều khiển xe tự hành sử dụng bánh đa hướng trên nền tảng ros, thiết kế chi tiết, tính toán kỹ thuật theo tiêu chuẩn, đánh giá tính khả thi

Người đăng

Ẩn danh

Thể loại

Đồ án tốt nghiệp

2021

74
3
0

Phí lưu trữ

30 Point

Mục lục chi tiết

1. CHƯƠNG 1: TỔNG QUAN ĐỀ TÀI

1.1. Định hướng cho đề tài

1.2. Mục tiêu của đề tài

1.3. Đối tượng và phạm vi nghiên cứu

1.4. Các bước thực hiện đề tài

2. Hệ điều hành ROS (Robot Operating System)

2.1. Giới thiệu tổng quan hệ điều hành ROS

2.2. Các thông tin khác

2.3. Mô hình ROS

2.4. Các package quan trọng của ROS

3. Các kiến thức cơ bản về Robotics

4. SLAM và Navigation

4.1. Định vị robot (Robot Localization)

4.2. Xây dựng bản đồ (Robot Mapping)

5. Thuật toán Dijkstra cho global planner

6. Thuật toán Dynamic Window Approach

6.1. Không gian tìm kiếm

7. Mô hình động học của Robot

7.1. Khung tọa độ gốc (𝑭𝑾) và khung Robot (𝑭𝑹)

7.2. Khung tọa độ Robot và khung bánh xe (𝑭𝒊)

8. THIẾT KẾ CHI TIẾT

8.1. Thiết kế chi tiết phần nguồn

8.1.1. Yêu cầu chức năng

8.1.2. Lựa chọn linh kiện

8.2. Thiết kế chi tiết khối điều khiển trung tâm

8.2.1. Yêu cầu chức năng

8.2.2. Lựa chọn linh kiện

8.2.3. Nguyên lý hoạt động

8.2.4. Phân tích chức năng chi tiết của các package

8.3. Thiết kế chi tiết khối vi điều khiển

8.3.1. Yêu cầu chức năng

8.3.2. Lựa chọn linh kiện

8.3.3. Nguyên lý hoạt động

8.4. Thiết kế khối sensor

8.4.1. Yêu cầu chức năng

8.4.2. Lựa chọn linh kiện và phân tích thiết kế

8.5. Thiết kế chi tiết khối động cơ và bánh xe

8.5.1. Yêu cầu chức năng

8.5.2. Tính toán lựa chọn linh kiện và phân tích thiết kế

9. TRIỂN KHAI VÀ KẾT QUẢ

9.1. Lựa chọn công cụ thực hiện

9.2. Kế hoạch triển khai và kiểm tra

9.2.1. Kiểm tra chất lượng nguồn và acquy

9.2.2. Thực hiện đọc dữ liệu từ cảm biến

9.2.3. Kiểm tra các khả năng của robot

9.3. Kết quả đạt được

9.3.1. Chất lượng nguồn acquy

9.3.2. Dữ liêu đọc được từ cảm biến

9.3.3. Kết quả các hoạt động của xe

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

10.1. ❖ Những việc đã làm được

10.2. ❖ Hướng phát triển của đồ án trong tương lai

TÀI LIỆU THAM KHẢO

Tóm tắt

I. Tổng quan Hướng dẫn Thiết Kế Hệ Điều Khiển Xe Tự Hành ROS

Trong kỷ nguyên công nghiệp 4.0, xe tự hành đã trở thành một trong những lĩnh vực công nghệ tiên tiến và có tiềm năng ứng dụng rộng lớn nhất. Việc thiết kế hệ điều khiển xe tự hành ROS là trọng tâm của nhiều dự án nghiên cứu và phát triển, đặc biệt trong môi trường trong nhà và các ứng dụng công nghiệp. Robot Operating System (ROS) đóng vai trò nền tảng, cung cấp một hệ sinh thái mã nguồn mở với vô vàn công cụ và thư viện, giúp các nhà phát triển dễ dàng xây dựng và thử nghiệm các hệ thống robot phức tạp. ROS giúp giảm đáng kể khối lượng công việc lập trình cơ bản, cho phép tập trung vào các nghiên cứu chuyên sâu về kỹ thuật điều khiển xe tự hành.

Đồ án tốt nghiệp tại Trường Đại học Bách khoa Hà Nội về "Thiết kế hệ điều khiển xe tự hành sử dụng bánh đa hướng trên nền tảng ROS" đã chỉ ra quy trình phát triển một robot di động ROS hoàn chỉnh. Quy trình này bắt đầu từ việc tìm hiểu sâu về hệ điều hành ROS, sau đó tiến hành nghiên cứu và mô phỏng xe tự hành Gazebo ROS để xây dựng bản đồ và điều hướng. Tiếp theo là thiết lập phần cứng di động với vi điều khiển và cài đặt ROS trên máy tính. Việc đọc dữ liệu từ cảm biến Lidar A1 và giao tiếp với phần cứng di động là bước quan trọng để thu thập thông tin môi trường. Cuối cùng, hệ thống được tích hợp để xây dựng bản đồ, điều hướng và hiệu chỉnh các thông số ứng dụng trong môi trường ROS. Mục tiêu cuối cùng là tạo ra một hệ thống có khả năng tự định vị, lập kế hoạch đường đi và tránh vật cản hiệu quả, ứng dụng các thuật toán điều khiển xe tự hành tiên tiến. Điều này đặc biệt quan trọng cho việc phát triển hệ thống tự lái ROS có độ tin cậy cao. Tài liệu này nhấn mạnh tầm quan trọng của việc ứng dụng các thuật toán cơ bản để xây dựng một mô hình hoạt động hoàn thiện, làm tiền đề cho các phát triển phức tạp hơn trong tương lai.

1.1. Robot Operating System ROS Nền tảng cho xe tự hành

Robot Operating System (ROS) là một hệ điều hành mã nguồn mở chuyên dụng cho các ứng dụng robot, được tích hợp nhiều công cụ và thư viện từ cộng đồng học thuật và công nghiệp toàn cầu. ROS có đặc trưng của một hệ điều hành truyền thống, cho phép thực hiện các tác vụ song song, giao tiếp và trao đổi dữ liệu giữa các tác vụ, cùng khả năng quản lý dữ liệu hiệu quả. ROS cung cấp các thư viện và công cụ chuyên biệt cho thu thập dữ liệu, xử lý, hiển thị và điều khiển robot. Một trong những ưu điểm nổi bật của ROS là khả năng giảm thiểu khối lượng công việc kỹ thuật cơ bản, nhờ vào nguồn tài nguyên mã nguồn mở phong phú. Điều này giúp các nhà nghiên cứu tập trung nhiều hơn vào các công việc nghiên cứu chuyên sâu, nâng cao hàm lượng khoa học của đề tài. ROS chạy chủ yếu trên nền tảng Unix, đặc biệt được tối ưu cho Ubuntu và Mac OS X, và có cộng đồng phát triển mạnh mẽ đóng góp vào sự phát triển của hệ thống cùng các công cụ và thư viện đi kèm. Đây là yếu tố cốt lõi giúp robot operating system xe tự lái trở nên mạnh mẽ và được sử dụng rộng rãi.

1.2. Mục tiêu và phạm vi nghiên cứu của hệ điều khiển xe tự hành

Mục tiêu chính của việc thiết kế hệ điều khiển xe tự hành ROS là xây dựng một robot di động ROS có khả năng tự vận hành hiệu quả trong môi trường thực tế. Điều này đòi hỏi sự hiểu biết sâu sắc về các thuật toán điều khiển xe tự hành và ứng dụng chúng vào việc điều hướng dựa trên bản đồ được xây dựng từ môi trường. Nghiên cứu tập trung vào việc thiết lập một robot di động có khả năng nhận tín hiệu điều khiển và thực thi chính xác yêu cầu từ phần mềm điều hướng. Đồng thời, ứng dụng các cảm biến như Lidar A1 để xây dựng bản đồ và phát hiện vật cản là yếu tố then chốt. Phạm vi nghiên cứu thường giới hạn trong việc thiết kế xe tự hành có thể mang máy tính cá nhân và cảm biến Lidar A1, hoạt động hiệu quả trong môi trường trong nhà. Việc nghiên cứu các thuật toán hoạch định đường đi ngắn nhất và di chuyển theo lộ trình đã định là cực kỳ quan trọng. Ngoài ra, việc thiết lập và xây dựng ứng dụng dựa trên các gói phần mềm có sẵn của cộng đồng ROS, kết hợp với việc phát triển các gói phần mềm tùy chỉnh, giúp tối ưu hóa khả năng của xe tự hành. Các bước này đều hướng tới việc hình thành một hệ thống kỹ thuật điều khiển xe tự hành hoàn chỉnh, từ việc dựng bản đồ, hoạch định đường đi tối ưu đến khả năng phát hiện và tránh vật cản đồng thời.

II. Giải mã thách thức khi Phát Triển Hệ Thống Tự Lái ROS

Việc phát triển hệ thống tự lái ROS mang đến nhiều thách thức phức tạp, đòi hỏi sự kết hợp giữa kiến thức lý thuyết và kinh nghiệm thực tiễn. Một trong những khó khăn lớn nhất là đảm bảo robot có thể hoạt động ổn định và tin cậy trong nhiều điều kiện môi trường khác nhau. Điều này liên quan mật thiết đến kỹ thuật điều khiển xe tự hành, đặc biệt khi đối mặt với các tình huống bất ngờ hoặc môi trường chưa biết trước. Đồ án tốt nghiệp tại Trường Đại học Bách khoa Hà Nội đã đề cập đến sự cần thiết của các chuyên gia có kiến thức và kinh nghiệm để phát triển một hệ thống ổn định và trôi chảy. Khối lượng dữ liệu khổng lồ từ các cảm biến xe tự hành ROS như LiDAR, camera, IMU, và GPS cần được xử lý và tổng hợp một cách hiệu quả, yêu cầu các thuật toán điều khiển xe tự hành phức tạp và khả năng tính toán mạnh mẽ. Việc lập trình xe tự hành ROS đòi hỏi không chỉ kỹ năng lập trình mà còn cả sự hiểu biết sâu sắc về cấu trúc, giao tiếp và mô hình của ROS. Thêm vào đó, việc tích hợp các thành phần phần cứng và phần mềm từ nhiều nhà cung cấp khác nhau cũng là một rào cản lớn. Các vấn đề về đồng bộ hóa, hiệu chuẩn và điều chỉnh các thông số là những công việc tiêu tốn nhiều thời gian và công sức. Việc đảm bảo an toàn cho xe tự hành, đặc biệt là khả năng nhận diện, phát hiện và tránh vật cản, là ưu tiên hàng đầu. Điều này đòi hỏi các hệ thống điều khiển phải có khả năng ra quyết định nhanh chóng và chính xác, đồng thời có cơ chế dự phòng để xử lý các lỗi tiềm ẩn. Cuối cùng, việc mô phỏng xe tự hành Gazebo ROS là công cụ hữu ích để kiểm tra và tối ưu hóa hệ thống trước khi triển khai trên phần cứng thực tế, giúp giảm thiểu rủi ro và chi phí phát triển. Các thách thức này đòi hỏi một phương pháp tiếp cận có hệ thống và đa ngành để thiết kế hệ điều khiển xe tự hành ROS thành công.

2.1. Thách thức trong kỹ thuật điều khiển xe tự hành phức tạp

Kỹ thuật điều khiển xe tự hành đòi hỏi phải xử lý một lượng lớn dữ liệu từ cảm biến và đưa ra các quyết định điều khiển trong thời gian thực. Một trong những thách thức lớn nhất là đảm bảo độ chính xác của vị trí và hướng của robot, đặc biệt khi dựa vào odometry, vốn có thể tích lũy lỗi theo thời gian. Sự không chính xác trong đo lường đường kính bánh xe, kích thước bánh xe khác nhau, hoặc lỗi đếm xung từ bộ mã hóa có thể dẫn đến sai lệch đáng kể. Một thách thức khác là khả năng đối phó với môi trường động, nơi có các vật thể di chuyển bất ngờ. Các thuật toán điều khiển xe tự hành cần phải đủ mạnh mẽ để nhận diện, dự đoán và phản ứng kịp thời với những thay đổi này. Việc tích hợp nhiều loại cảm biến khác nhau (ví dụ: LiDAR, camera, IMU) và fusion cảm biến xe tự hành để có được bức tranh toàn diện và chính xác về môi trường cũng là một vấn đề phức tạp. Mỗi cảm biến có ưu và nhược điểm riêng, và việc kết hợp chúng một cách hiệu quả đòi hỏi sự tinh chỉnh kỹ lưỡng các bộ lọc như Kalman Filter hay Unscented Kalman Filter để tăng cường độ chính xác cho thông tin định vị và môi trường.

2.2. Vấn đề tích hợp phần cứng và phần mềm trong ROS

Việc tích hợp phần cứng và phần mềm là một khía cạnh then chốt trong thiết kế hệ điều khiển xe tự hành ROS. Nền tảng ROS cung cấp một khuôn khổ linh hoạt, nhưng việc kết nối các thành phần vật lý với các gói phần mềm đòi hỏi sự cẩn trọng. Phần cứng di động, ví dụ như vi điều khiển PIC32MK được đề xuất trong đồ án, cần được cấu hình để giao tiếp hiệu quả với máy tính chạy ROS. Điều này bao gồm việc đọc dữ liệu từ các cảm biến xe tự hành ROS như Lidar A1, IMU, GPS và encoder, sau đó truyền chúng đến các node ROS để xử lý. Ngược lại, tín hiệu điều khiển từ các node ROS cần được gửi xuống vi điều khiển để điều khiển động cơ. Các giao thức truyền thông như UART, RS485 hay USB phải được thiết lập chính xác để đảm bảo dữ liệu được trao đổi liên tục và không bị gián đoạn. Bên cạnh đó, việc lựa chọn máy tính trung tâm có đủ khả năng xử lý các thuật toán điều khiển xe tự hành phức tạp và các gói ROS nặng nề (như Navigation Stack) cũng là yếu tố quyết định. Máy tính phải có đủ tài nguyên CPU, RAM và GPU để đảm bảo hiệu suất hoạt động trơn tru của toàn bộ hệ thống. Các vấn đề về tương thích phiên bản ROS, driver phần cứng và cấu hình mạng cũng thường xuyên phát sinh, đòi hỏi kinh nghiệm thực tế trong phát triển hệ thống tự lái ROS.

2.3. Đảm bảo an toàn và độ tin cậy của xe tự hành ROS

An toàn và độ tin cậy là những yếu tố tối quan trọng trong việc thiết kế hệ điều khiển xe tự hành ROS. Một hệ thống tự hành phải có khả năng nhận diện và tránh các vật cản một cách chính xác để ngăn ngừa va chạm, đảm bảo an toàn cho cả robot và môi trường xung quanh. Điều này liên quan đến việc triển khai các thuật toán điều khiển xe tự hành mạnh mẽ, bao gồm cả lập kế hoạch đường đi toàn cục và cục bộ. Hệ thống cần có khả năng xử lý các tình huống không lường trước được, như sự xuất hiện đột ngột của vật cản hoặc sự thay đổi trong môi trường. Việc sử dụng Costmap 2D trong ROS Navigation Stack là một phương pháp hiệu quả để xây dựng bản đồ chi phí, giúp robot xác định các khu vực an toàn và nguy hiểm. Ngoài ra, việc thiết kế các cơ chế dự phòng, như hệ thống phanh khẩn cấp hay khả năng chuyển sang chế độ điều khiển thủ công, là cần thiết. Độ tin cậy của phần cứng, đặc biệt là các thiết bị nhúng xe tự hành và các cảm biến, cũng phải được kiểm tra và đảm bảo kỹ lưỡng. Các lỗi phần mềm hoặc phần cứng có thể gây ra hậu quả nghiêm trọng, do đó quá trình kiểm thử và hiệu chỉnh phải được thực hiện một cách tỉ mỉ và toàn diện.

III. Cách Kiến Trúc ROS Tối Ưu cho Hệ Điều Khiển Xe Tự Hành

Để thiết kế hệ điều khiển xe tự hành ROS hiệu quả, việc hiểu rõ kiến trúc và các thành phần cốt lõi của ROS là không thể thiếu. ROS được xây dựng trên mô hình mô-đun hóa, cho phép các chức năng riêng biệt được đóng gói thành các node, giao tiếp với nhau qua các topic, service hoặc action. Kiến trúc này giúp cho việc phát triển và bảo trì hệ thống trở nên linh hoạt hơn. Một trong những thành phần quan trọng nhất là ROS Master, đóng vai trò trung tâm trong việc đăng ký và tra cứu thông tin giữa các node. Hiểu biết về cách các gói (packages) được tổ chức, các file cấu hình (manifests), và các thư viện hỗ trợ (client libraries như roscpp, rospy) là nền tảng để lập trình xe tự hành ROS. ROS Navigation Stack là một ví dụ điển hình về việc tận dụng các gói ROS để tạo ra một hệ thống dẫn đường ROS Navigation Stack mạnh mẽ, cho phép robot di chuyển tự động trong môi trường phức tạp. Stack này tích hợp các chức năng từ định vị, lập bản đồ đến hoạch định đường đi và điều khiển chuyển động, tối ưu hóa quá trình phát triển hệ thống tự lái ROS. Việc cấu hình đúng đắn các tham số trong Navigation Stack, như Costmap 2D hay các thuật toán local/global planner, là chìa khóa để đạt được hiệu suất mong muốn. Bên cạnh đó, việc sử dụng TF (Transform Frame) để quản lý mối quan hệ giữa các khung tọa độ trong hệ thống robot là rất quan trọng, đảm bảo rằng tất cả các cảm biến và bộ chấp hành đều hoạt động trên cùng một hệ quy chiếu. Một kiến trúc ROS cho xe tự hành tối ưu sẽ cho phép tích hợp dễ dàng các cảm biến mới, triển khai các thuật toán tiên tiến như AI trong xe tự hành ROS hay machine learning xe tự lái ROS, và mở rộng khả năng của robot trong tương lai.

3.1. Hiểu rõ mô hình ROS Filesystem và Computation Graph

Mô hình ROS được cấu trúc thành ba tầng chính: Filesystem, Computation Graph và Community. Tầng Filesystem quản lý tài nguyên ROS được lưu trữ trên hệ thống, bao gồm các packages (đơn vị tổ chức phần mềm chính chứa các node, thư viện, dữ liệu), manifests (thông tin về package), và stacks (tập hợp các package phối hợp chức năng). Tầng này cũng định nghĩa các kiểu message (msg) và service (srv) để chuẩn hóa cấu trúc dữ liệu. Tầng Computation Graph là mạng lưới nơi các quy trình ROS được kết nối, bao gồm Nodes (đơn vị thực hiện lệnh tính toán), Master (lưu trữ thông tin đăng ký), Parameter Server (lưu trữ dữ liệu theo từ khóa), Messages (cấu trúc dữ liệu để node giao tiếp), Topics (kênh truyền dữ liệu publish/subscribe), Services (giao tiếp request/reply), và Bags (định dạng lưu trữ dữ liệu message). Sự tương tác linh hoạt giữa các thành phần này là nền tảng cho việc thiết kế phần mềm xe tự hành hiệu quả. Việc hiểu rõ cách các node hoạt động và giao tiếp là điều cần thiết để lập trình xe tự hành ROS thành công, đặc biệt khi triển khai các chức năng phức tạp như vision cho xe tự hành ROS hay nhận diện vật thể xe tự lái.

3.2. Khám phá Navigation Stack Trái tim của hệ thống dẫn đường ROS

ROS Navigation Stack là tập hợp các gói phần mềm mạnh mẽ, cung cấp khả năng điều hướng tự động cho robot. Nó lấy thông tin từ odometry, dữ liệu cảm biến và vị trí đích mong muốn để tạo ra các lệnh vận tốc gửi đến robot. Để sử dụng Navigation Stack, robot cần phải chạy ROS, có cây biến đổi TF (Transform Frame) được cấu hình chính xác và gửi dữ liệu cảm biến theo đúng kiểu message của ROS. Stack này bao gồm các thành phần quan trọng như move_base, cung cấp một hành động để robot đạt đến một điểm mục tiêu trên bản đồ. Trong move_base, có Global Planner chịu trách nhiệm lập kế hoạch đường đi toàn cục (sử dụng thuật toán như A* hoặc Dijkstra) trên bản đồ chi phí toàn cục (global_costmap), và Local Planner (ví dụ: Dynamic Window Approach - DWA) điều hướng robot theo từng đoạn nhỏ của lộ trình toàn cục dựa trên bản đồ chi phí cục bộ (local_costmap) và dữ liệu cảm biến gần. Việc cấu hình Costmap 2D đúng cách là chìa khóa để Navigation Stack có thể phát hiện và tránh vật cản hiệu quả, làm cho việc phát triển hệ thống tự lái ROS trở nên khả thi và an toàn.

3.3. Sử dụng TF để quản lý khung tọa độ trong kiến trúc ROS

TF (Transform Frame) là một gói quan trọng trong kiến trúc ROS cho xe tự hành, cho phép người dùng theo dõi và quản lý nhiều khung tọa độ theo thời gian. Trong một hệ thống robot thông thường, có nhiều khung tọa độ 3D thay đổi liên tục, ví dụ như khung thế giới (world frame), khung cơ sở robot (base frame), khung cảm biến (sensor frame), v.v. TF duy trì mối quan hệ giữa các khung tọa độ này trong một bộ đệm cấu trúc cây, cho phép chuyển đổi điểm, vector giữa bất kỳ hai khung tọa độ nào tại bất kỳ thời điểm nào. Hai tác vụ chính của TF là broadcasting transforms (phát đi tư thế tương đối và tọa độ lên hệ thống) và listening transforms (truy vấn các biến đổi đã được phát đi). Đồ án tốt nghiệp đã đề cập đến việc sử dụng static_transform_publisher để khai báo các phép biến đổi tĩnh trong file launch, ví dụ như mối quan hệ giữa base_linkbase_laser. Việc cấu hình chính xác các mối quan hệ TF là thiết yếu để đảm bảo rằng dữ liệu từ các cảm biến xe tự hành ROS được giải thích đúng đắn và các lệnh điều khiển được áp dụng chính xác cho các bộ chấp hành, đóng góp vào sự ổn định và hiệu quả của toàn bộ hệ điều khiển xe tự hành ROS.

IV. Bí quyết Tích Hợp Cảm Biến SLAM trong Xe Tự Hành ROS

Việc tích hợp hiệu quả các cảm biến và thuật toán SLAM ROS là bí quyết cốt lõi để xây dựng một hệ điều khiển xe tự hành ROS thông minh và đáng tin cậy. Các cảm biến xe tự hành ROS đóng vai trò là "mắt" và "tai" của robot, thu thập dữ liệu về môi trường xung quanh. Từ dữ liệu thô này, các thuật toán xử lý sẽ biến đổi chúng thành thông tin có ý nghĩa để robot có thể định vị và lập bản đồ SLAM ROS đồng thời. Quá trình này rất quan trọng vì robot không thể điều hướng an toàn mà không biết vị trí hiện tại của mình và cấu trúc của môi trường. Thuật toán SLAM giải quyết "vấn đề gà và trứng" bằng cách đồng thời xây dựng bản đồ môi trường và ước tính vị trí của robot trong bản đồ đó. Điều này đặc biệt phức tạp trong các môi trường động hoặc không xác định. Việc fusion cảm biến xe tự hành là một kỹ thuật tiên tiến, kết hợp dữ liệu từ nhiều loại cảm biến khác nhau (ví dụ: LiDAR, camera, IMU, GPS) để tăng cường độ chính xác và độ tin cậy của thông tin định vị và nhận diện vật thể. Ví dụ, dữ liệu từ IMU và GPS có thể được kết hợp với odometry từ encoder để cải thiện độ chính xác định vị thông qua các bộ lọc như Extended Kalman Filter (EKF) hoặc Unscented Kalman Filter (UKF), như được trình bày trong đồ án. Ngoài ra, vision cho xe tự hành ROS sử dụng camera để nhận diện vật thể xe tự lái và các đặc điểm môi trường, bổ sung cho dữ liệu từ LiDAR. Bằng cách tích hợp các công nghệ này, phát triển hệ thống tự lái ROS có thể đạt được khả năng nhận thức môi trường toàn diện và chính xác hơn, từ đó đưa ra các quyết định điều khiển an toàn và hiệu quả. Các thiết bị nhúng xe tự hành đóng vai trò quan trọng trong việc thu thập và xử lý dữ liệu cảm biến tại chỗ.

4.1. Các loại cảm biến xe tự hành ROS và phương pháp tích hợp

Trong thiết kế hệ điều khiển xe tự hành ROS, việc lựa chọn và tích hợp các loại cảm biến xe tự hành ROS là vô cùng quan trọng. Các cảm biến phổ biến bao gồm LiDAR (Light Detection and Ranging) để quét và xây dựng bản đồ 3D hoặc 2D, camera để thu thập hình ảnh và thực hiện vision cho xe tự hành ROS, IMU (Inertial Measurement Unit) để đo gia tốc và vận tốc góc, và GPS (Global Positioning System) để cung cấp vị trí tuyệt đối. Tài liệu gốc đề cập đến việc sử dụng cảm biến Lidar A1 để xây dựng bản đồ và phát hiện vật cản. Việc tích hợp các cảm biến này vào ROS thường thông qua các node riêng biệt, mỗi node đọc dữ liệu từ cảm biến và publish lên một topic ROS. Ví dụ, node MPU6050_serial_to_imu đọc dữ liệu từ IMU MPU6050 và gửi lên topic /imu/data. Dữ liệu này cần được chuẩn hóa về đơn vị và định dạng theo quy ước của ROS (ví dụ: gia tốc theo m/s^2, vận tốc góc theo rad/s). Để tăng cường độ chính xác, các dữ liệu thô thường được xử lý qua bộ lọc (ví dụ: bộ lọc Kalman) trước khi được sử dụng bởi các gói cao hơn như robot_localization. Quá trình này đảm bảo rằng các thông tin về môi trường và vị trí robot là chính xác nhất, hỗ trợ hiệu quả cho việc phát triển hệ thống tự lái ROS.

4.2. Thuật toán SLAM ROS Định vị và lập bản đồ đồng thời

SLAM (Simultaneous Localization and Mapping) là một trong những thuật toán nền tảng trong robot operating system xe tự lái, cho phép robot đồng thời xây dựng bản đồ môi trường và xác định vị trí của chính nó trong bản đồ đó. Đây là một vấn đề phức tạp bởi vì việc xây dựng bản đồ đòi hỏi phải biết vị trí chính xác của robot, trong khi việc xác định vị trí lại cần có một bản đồ đã biết. SLAM giải quyết "vấn đề con gà và quả trứng" này bằng cách ước lượng cả hai trạng thái một cách đồng thời. Các ứng dụng của định vị và lập bản đồ SLAM ROS rất đa dạng, từ robot hút bụi trong nhà, giám sát san hô dưới nước, đến các ứng dụng thăm dò không gian. Để thực hiện SLAM, robot sử dụng dữ liệu từ các cảm biến xe tự hành ROS như LiDAR và camera để quét môi trường, phát hiện các đặc điểm (features) và xây dựng một biểu diễn bản đồ. Khi robot di chuyển, nó liên tục cập nhật vị trí của mình dựa trên dữ liệu cảm biến và đồng thời cải thiện độ chính xác của bản đồ. Các gói ROS như gmapping, Cartographer hoặc Hector_SLAM là những công cụ phổ biến được sử dụng để triển khai SLAM ROS, giúp cho việc thiết kế hệ điều khiển xe tự hành ROS trở nên khả thi và mạnh mẽ hơn.

4.3. Fusion cảm biến xe tự hành Nâng cao độ chính xác nhận diện

Fusion cảm biến xe tự hành là kỹ thuật kết hợp dữ liệu từ nhiều loại cảm biến khác nhau để tạo ra một cái nhìn toàn diện và chính xác hơn về môi trường và trạng thái của robot. Trong bối cảnh thiết kế hệ điều khiển xe tự hành ROS, việc sử dụng kết hợp LiDAR, camera, IMU và GPS là rất phổ biến. Mỗi cảm biến có những hạn chế riêng: odometry từ encoder có lỗi tích lũy, GPS có thể không chính xác trong nhà hoặc bị nhiễu, camera bị ảnh hưởng bởi điều kiện ánh sáng, và LiDAR có thể bỏ sót các vật thể nhỏ hoặc vật liệu hấp thụ ánh sáng. Bằng cách kết hợp dữ liệu từ chúng thông qua các thuật toán fusion cảm biến xe tự hành như bộ lọc Kalman mở rộng (EKF) hoặc bộ lọc Kalman không mùi (UKF) (như gói robot_localization trong ROS), hệ thống có thể khắc phục được những hạn chế của từng cảm biến đơn lẻ. Ví dụ, dữ liệu định vị từ GPS và IMU có thể được tích hợp với dữ liệu odometry để hiệu chỉnh lỗi tích lũy và cung cấp ước tính vị trí chính xác hơn. Điều này không chỉ nâng cao độ tin cậy của việc định vị và lập bản đồ SLAM ROS mà còn cải thiện khả năng nhận diện vật thể xe tự lái và hỗ trợ các quyết định điều khiển an toàn, làm nền tảng vững chắc cho phát triển hệ thống tự lái ROS tiên tiến.

V. Phương pháp Tối Ưu Thuật Toán Điều Khiển Xe Tự Hành ROS

Việc tối ưu hóa các thuật toán điều khiển xe tự hành là trọng tâm để đạt được hiệu suất cao và an toàn trong thiết kế hệ điều khiển xe tự hành ROS. Các thuật toán này chịu trách nhiệm hoạch định đường đi, điều khiển chuyển động và tránh vật cản, đảm bảo robot di chuyển mượt mà và hiệu quả. Trong hệ thống Navigation Stack của ROS, có hai loại hoạch định chính: hoạch định toàn cục (global planning) và hoạch định cục bộ (local planning). Global planner sử dụng các thuật toán tìm kiếm đường đi tối ưu như Dijkstra hoặc A* để xác định lộ trình dài nhất từ điểm xuất phát đến điểm đích trên bản đồ đã biết. Sau khi có lộ trình toàn cục, local planner sẽ chịu trách nhiệm điều khiển robot đi theo lộ trình đó, đồng thời xử lý các vật cản bất ngờ trong môi trường gần. Dynamic Window Approach (DWA) là một thuật toán local planner phổ biến, cho phép robot đưa ra các lệnh vận tốc an toàn và hiệu quả dựa trên động học của chính nó và thông tin từ các cảm biến xe tự hành ROS.

Đồ án tốt nghiệp đã mô tả chi tiết về thuật toán Dijkstra và DWA, nhấn mạnh cách chúng giúp robot đưa ra quyết định điều khiển thông minh. Ngoài ra, việc hiểu rõ mô hình động học của robot là cần thiết để điều khiển chính xác các bánh xe, đặc biệt đối với xe sử dụng bánh đa hướng Mecanum. Việc lập trình xe tự hành ROS với các thuật toán này đòi hỏi sự hiểu biết về cách các lệnh vận tốc được chuyển đổi thành chuyển động thực tế của robot. Việc mô phỏng xe tự hành Gazebo ROS trở thành công cụ đắc lực để thử nghiệm và điều chỉnh các thuật toán mà không cần phần cứng thực, giúp các nhà phát triển tinh chỉnh các tham số để đạt được kết quả tối ưu. Tối ưu hóa kỹ thuật điều khiển xe tự hành không chỉ cải thiện tốc độ và hiệu quả di chuyển mà còn nâng cao khả năng an toàn của robot, biến nó thành một phần không thể thiếu của quá trình phát triển hệ thống tự lái ROS.

5.1. Hoạch định đường đi với thuật toán Dijkstra và Global Planner

Trong hệ thống dẫn đường ROS Navigation Stack, Global Planner chịu trách nhiệm hoạch định một đường đi toàn cục tối ưu từ vị trí hiện tại của robot đến điểm đích. Một trong những thuật toán điều khiển xe tự hành phổ biến được sử dụng cho mục đích này là thuật toán Dijkstra. Thuật toán Dijkstra tìm đường đi ngắn nhất giữa các đỉnh trong một đồ thị có trọng số không âm, rất phù hợp để tìm đường đi tối ưu trên bản đồ chi phí (costmap). Quá trình này bắt đầu bằng việc khởi tạo chi phí đường đi từ điểm nguồn đến tất cả các đỉnh khác là vô cùng lớn, trừ điểm nguồn là 0. Sau đó, thuật toán lặp lại, mở rộng các đỉnh đã xét và cập nhật chi phí đường đi cho các đỉnh kề, cho đến khi tìm thấy đường đi ngắn nhất đến tất cả các đỉnh hoặc đến đỉnh đích. Đồ án tốt nghiệp đã minh họa chi tiết các bước của thuật toán Dijkstra. Việc triển khai Global Planner trong thiết kế hệ điều khiển xe tự hành ROS đảm bảo rằng robot luôn có một kế hoạch tổng thể để đạt được mục tiêu, làm nền tảng cho việc điều khiển cục bộ tiếp theo.

5.2. Điều khiển chuyển động cục bộ với Dynamic Window Approach DWA

Khi Global Planner đã đưa ra một lộ trình tổng thể, Local Planner, đặc biệt là thuật toán Dynamic Window Approach (DWA), sẽ chịu trách nhiệm điều khiển chuyển động cục bộ của robot. DWA là một thuật toán điều khiển xe tự hành mạnh mẽ, được sử dụng để tìm ra tín hiệu điều khiển vận tốc hợp lý (vận tốc thẳng và vận tốc góc) gửi xuống robot nhằm mục đích điều khiển nó đến đích một cách an toàn và nhanh chóng, dựa trên lộ trình toàn cục đã được hoạch định. DWA hoạt động bằng cách cắt giảm không gian tìm kiếm vận tốc (search space) thành một "cửa sổ động" (dynamic window), chỉ chứa các vận tốc có thể đạt được trong khoảng thời gian tiếp theo, đồng thời đảm bảo an toàn bằng cách loại bỏ các vận tốc có thể dẫn đến va chạm với vật cản gần nhất. Thuật toán sau đó tối ưu hóa một hàm mục tiêu bao gồm các yếu tố như hướng tới đích (target heading), khoảng trống an toàn (clearance) và vận tốc di chuyển. Việc triển khai DWA hiệu quả trong lập trình xe tự hành ROS cho phép robot tránh vật cản động, điều hướng trong không gian hẹp và di chuyển linh hoạt, tăng cường khả năng của phát triển hệ thống tự lái ROS trong các môi trường phức tạp.

5.3. Mô hình động học của robot và bánh xe đa hướng Mecanum

Mô hình động học của robot là yếu tố cốt lõi trong kỹ thuật điều khiển xe tự hành, đặc biệt khi làm việc với các loại robot có cấu hình bánh xe đặc biệt như bánh đa hướng Mecanum. Xe sử dụng bánh Mecanum có khả năng chuyển động theo bất kỳ hướng nào (x, y) và xoay góc θ theo trục z trong không gian 2D, mang lại sự linh hoạt vượt trội. Để thiết kế hệ điều khiển xe tự hành ROS cho loại robot này, việc hiểu rõ các phương trình động học thuận (từ tốc độ bánh xe đến vận tốc robot) và nghịch (từ vận tốc robot đến tốc độ bánh xe) là bắt buộc. Đồ án tốt nghiệp đã trình bày chi tiết các khung tọa độ (khung gốc, khung robot, khung bánh xe) và phương trình động học nghịch đảo cho mô hình xe Mecanum 4 bánh. Các tham số như góc của con lăn (γi), khoảng cách từ tâm robot đến tâm bánh xe (li) và bán kính bánh xe (r) đều ảnh hưởng đến các phương trình này. Việc tính toán chính xác các tốc độ góc của từng bánh xe dựa trên vận tốc mong muốn của robot là cần thiết để thuật toán điều khiển xe tự hành hoạt động hiệu quả. Điều này đòi hỏi sự tích hợp chặt chẽ giữa phần mềm ROS và khối vi điều khiển (như PIC32MK) để điều khiển động cơ.

VI. Ứng dụng Hướng Phát Triển Hệ Điều Khiển Xe Tự Hành ROS

Việc thiết kế hệ điều khiển xe tự hành ROS không chỉ dừng lại ở lý thuyết mà còn được thể hiện qua các ứng dụng thực tiễn và kết quả nghiên cứu cụ thể. Dự án tại Trường Đại học Bách khoa Hà Nội đã minh chứng khả năng triển khai một hệ thống xe tự hành sử dụng bánh đa hướng trên nền tảng ROS. Thành công này mở ra nhiều hướng phát triển tiềm năng cho phát triển hệ thống tự lái ROS trong tương lai. Để triển khai một hệ thống như vậy, cần có sự kết hợp hài hòa giữa phần cứng và phần mềm. Các thiết bị nhúng xe tự hành đóng vai trò quan trọng trong việc thu thập và xử lý dữ liệu cảm biến tại chỗ, đồng thời điều khiển các bộ chấp hành như động cơ. Máy tính trung tâm (ví dụ: Asus FX505GD hoặc Intel Nuc) chịu trách nhiệm chạy các gói ROS phức tạp và thực thi các thuật toán điều khiển xe tự hành tiên tiến.

Kết quả đạt được từ các nghiên cứu thường bao gồm chất lượng nguồn cung cấp, dữ liệu chính xác từ cảm biến xe tự hành ROS (như Lidar A1, IMU, GPS), khả năng tạo kế hoạch đường đi và tránh vật cản, cũng như độ chính xác của odometry. Những kết quả này là cơ sở để đánh giá hiệu suất của hệ thống và xác định các lĩnh vực cần cải tiến. Hướng phát triển của xe tự hành ROS trong tương lai sẽ tập trung vào việc tích hợp sâu hơn AI trong xe tự hành ROSmachine learning xe tự lái ROS. Điều này bao gồm việc phát triển các thuật toán học sâu cho vision cho xe tự hành ROS để nhận diện vật thể phức tạp hơn, dự đoán hành vi của người đi bộ và các phương tiện khác. Việc tối ưu hóa kiến trúc ROS cho xe tự hành để hỗ trợ ROS 2, với các cải tiến về hiệu suất và khả năng tương tác, cũng là một xu hướng quan trọng. Mục tiêu cuối cùng là tạo ra những hệ thống xe tự hành ngày càng thông minh, an toàn và có khả năng hoạt động trong các môi trường phức tạp và không định trước, mở rộng ứng dụng từ công nghiệp đến đời sống hàng ngày.

6.1. Triển khai phần cứng và thiết bị nhúng xe tự hành thực tế

Việc triển khai phần cứng là một giai đoạn quan trọng trong quá trình thiết kế hệ điều khiển xe tự hành ROS. Đồ án tốt nghiệp đã chi tiết hóa việc lựa chọn linh kiện và thiết kế các khối chức năng, bao gồm khối nguồn, khối điều khiển trung tâm (máy tính), khối vi điều khiển (PIC32MK1024MCF064), khối cảm biến và khối động cơ/bánh xe. Khối nguồn phải đảm bảo cung cấp điện áp và dòng ổn định cho toàn bộ hệ thống, với yêu cầu duy trì hoạt động ít nhất 2 giờ. Khối điều khiển trung tâm, như máy tính Asus FX505GD, cần có khả năng xử lý nhanh các thuật toán điều khiển xe tự hành phức tạp và chạy các gói ROS. Các thiết bị nhúng xe tự hành như vi điều khiển PIC32MK đóng vai trò cầu nối, thu thập dữ liệu từ encoder, cảm biến siêu âm, IMU, GPS và gửi về máy tính, đồng thời nhận tín hiệu điều khiển từ máy tính để điều khiển bốn động cơ. Thiết kế mạch điều khiển động cơ và mạch thu thập tín hiệu cảm biến là các bước chi tiết để đảm bảo sự tương thích và hoạt động hiệu quả của toàn bộ hệ thống. Sự thành công trong việc tích hợp các phần cứng này là nền tảng vững chắc cho phát triển hệ thống tự lái ROS.

6.2. Kết quả đạt được và đánh giá hiệu suất hệ thống tự lái ROS

Kết quả của quá trình phát triển hệ thống tự lái ROS thường được đánh giá qua nhiều tiêu chí khác nhau, minh chứng cho hiệu suất và độ tin cậy của hệ thống. Đồ án tốt nghiệp đã trình bày các kết quả đạt được, bao gồm: chất lượng nguồn acquy ổn định, dữ liệu chính xác từ các cảm biến xe tự hành ROS như Lidar A1 và IMU, khả năng tạo kế hoạch đường đi và tránh vật cản, cùng với độ chính xác của Odometry. Dữ liệu từ encoder và các cảm biến được thu thập và xử lý để ước tính vị trí và hướng của xe. Khả năng định vị và lập bản đồ SLAM ROS được kiểm chứng qua việc robot có thể xây dựng bản đồ môi trường và điều hướng trên đó. Các bài kiểm tra về khả năng hoạch định đường đi, tránh vật cản và đi theo quỹ đạo đã định được thực hiện để đánh giá kỹ thuật điều khiển xe tự hành. Độ chính xác của Odometry là một chỉ số quan trọng, thể hiện khả năng tự định vị tương đối của robot. Những kết quả này không chỉ khẳng định tính khả thi của việc thiết kế hệ điều khiển xe tự hành ROS mà còn cung cấp cơ sở để nhận diện các điểm cần cải thiện, từ đó nâng cao hiệu suất tổng thể của hệ thống.

6.3. Tiềm năng tích hợp AI và Machine Learning xe tự lái ROS

Tương lai của thiết kế hệ điều khiển xe tự hành ROS gắn liền với sự phát triển và tích hợp của AI trong xe tự hành ROSmachine learning xe tự lái ROS. Các công nghệ này mang lại khả năng học hỏi và thích nghi cho robot, giúp chúng hoạt động hiệu quả hơn trong các môi trường phức tạp và không định trước. Việc sử dụng các mô hình học sâu (deep learning) có thể cách mạng hóa vision cho xe tự hành ROS, cho phép nhận diện vật thể xe tự lái chính xác hơn, phân loại vật thể, và dự đoán hành vi của các tác nhân khác trong môi trường giao thông. Ví dụ, mạng nơ-ron tích chập (CNN) có thể được triển khai để xử lý dữ liệu hình ảnh từ camera, phát hiện biển báo giao thông, làn đường, hoặc người đi bộ. Học tăng cường (reinforcement learning) có thể được ứng dụng để phát triển các thuật toán điều khiển xe tự hành tự động học cách điều hướng và ra quyết định trong các tình huống phức tạp. Hướng phát triển này đòi hỏi sự nghiên cứu sâu hơn về cách tích hợp các khung làm việc AI/ML với kiến trúc ROS cho xe tự hành, đặc biệt là với ROS 2, vốn được thiết kế để hỗ trợ tốt hơn cho các ứng dụng hiệu năng cao và phân tán. Tiềm năng này hứa hẹn sẽ đưa xe tự hành ROS lên một tầm cao mới về khả năng tự chủ và trí thông minh.

27/09/2025

Trích đoạn nội dung tài liệu

CHƯƠNG 1. TỔNG QUAN ĐỀ TÀI 1.1 Định hướng cho đề tài Robot tự hành là robot có khả năng tự di chuyển, tự vận động theo một quỹ đạo được xác định trước hoặc chưa biết trước và được thực hiện một công việc được giao. Robot có thể hoạt động ở nhiều môi trường khác nhau như trên không, trên mặt đất, dưới nước hay thậm chí là ngoài vũ trụ. Đây là một hướng đi có tính ứng dụng rất lớn trên nhiều lĩnh vực từ dân sự, quân sự, vũ trụ và đang được nghiên cứu phát triển rộng rãi từ các công ty lớn, những phòng nghiên cứu ở khắp nơi thế giới.

Một trong những yếu tố quan trọng của robot phải đảm bảo về mặt năng lượng cho nó hoạt động đủ lâu trong thời gian thực hiện nhiệm vụ và có thể tự giải quyết các vấn đề nằm ngoài dự tính như khả năng nhận diện, phát hiện và tránh vật cản hoặc đi vào môi trường chưa biết. Robot tự hành được thiết kế dựa trên hệ điều hành dành cho robot (Robot Operating System, là nền tảng cho việc thiết kế phần mềm dành cho robot). Bằng việc ứng dụng ROS cho robot, ta có thể điều khiển robot một cách dễ dàng hơn so với việc chúng ta tự xây dựng thuật toán điều khiển cho robot, giúp cho robot có thể tự định vị và xử lý được các tình huống trong môi trường thực tế. Robot có thể tự định hướng và xác định vị trí hiện tại, ta cần phải mô phỏng lại bản đồ khoảng không gian di chuyển của robot – việc này ta gọi là mapping.

Từ việc có được bản đồ của khoảng không gian di chuyển, ta cần phải xác định vị trí của nó trong khoảng không gian ấy – việc này gọi là localization. Sau những công việc trên, ta sẽ xác định đường đi cho robot và điều khiển để robot đi theo đúng quỹ đạo của đường đi mà ta sẽ vẽ - việc này gọi là path-planning. Bài toán cho vấn đề trên thực hiện dựa trên bài toán Simultaneous Localization and Mapping – SLAM đang được nghiên cứu rộng rãi và tạo ra một cộng đồng phát triển rất mạnh. Để xây dựng một hệ thống hoàn thiện thì đây là một đề tài khá rộng và cần có những chuyên gia có kiến thức, kinh nghiệm để có thể phát triển một hệ thống ổn định, hoạt động trôi chảy trên nhiều điều kiện môi trường khác nhau.

Vì tính ứng dụng rộng lớn và tính phức tạp của vấn đề, luận văn chỉ ở mức tìm hiểu thuật toán và ứng dụng các thuật toán cơ bản để có thể xây dựng được mô hình hoạt động hoàn thiện.2 Mục tiêu của đề tài • Hiểu được cơ bản các thuật toán trong điều hướng cho xe tự hành dựa trên bản đồ đã dựng từ môi trường thực tế. • Thiết lập được một robot di động để nhận tín hiệu điều khiển và thực thi đúng với yêu cầu do phần mềm điều hướng điều khiển. • Ứng dụng được chương trình phần mềm trên máy tính và dùng cảm biến lidar A1 để xây dựng bản đồ và phát hiện vật cản. • Hiểu và thực hiện các quá trình để xây dựng một xe tự hành hoàn chỉnh từ công việc dựng bản đồ, hoạch định đường đi ngắn nhất, đi theo đường đi đã hoạch định đồng thời phát hiện và tránh các vật cản.3 Đối tượng và phạm vi nghiên cứu • Thiết xe tự hành có thể mang được máy tính cá nhân cảm biến lidar A1 và hoạt động trong môi trường trong nhà.

• Nghiên cứu thuật toán hoạch định đường đi ngắn nhất và di chuyển theo đường đi đã hoạch định. • Thiết lập và xây dựng ứng dụng dựa trên các gói phần mềm có sẵn trên cộng đồng ROS. Bên cạnh đó, tự xây dựng các gói phần mềm khác để phù hợp với yêu cầu bài toán của luận văn đưa ra.4 Các bước thực hiện đề tài • Tìm hiểu hệ điều hành ROS. • Nghiên cứu và mô phỏng quá trình xây dựng bản đồ và điều hướng trên bản đồ có sẵn thông qua Gazabo kết hợp với ROS.

• Thiết lập phần cứng di động cho hệ thống dùng vi điều khiển PIC32MK. • Thiết lập hệ điều hành Ubuntu, ROS trên máy tính cá nhân • Đọc cảm biến lidar A1 và giao tiếp với phần cứng di động • Tích hợp hệ thống để xây dựng bản đồ và điều hướng trên bản đồ đã dựng dựa trên hệ thống đã xây dựng. • Hiệu chỉnh các thông số của gói ứng dụng đã thiết lập trong môi trường ROS.1 Hệ điều hành ROS (Robot Operating System) Giới thiệu tổng quan hệ điều hành ROS ROS là gì? ROS là một hệ điều hành mã nguồn mở dùng cho các ứng dụng robot ,về cơ bản ROS có đặc trưng của một hệ điều hành như khả năng thực hiễn các tác vụ (task) song song, giao tiếp, trao đổi dữ liệu với nhau giữa các tác vụ, quản lý dữ liệu,… Hơn thế nữa, ROS có thể ứng dụng trong lĩnh vực robotics, ROS còn được phát triển riêng biệt về các thư viện, công cụ dành cho việc thu thập, xử lý, hiển thị, điều khiển,… ROS có thể kết hợp, tương tác với nhiều robot framework khác như Player, YARP, Orocos, CARMEN, Orca, Moos và Microsoft Robotics Studio.1 Biểu tượng của ROS ROS là hệ điều hành được phát triển chuyên dụng cho các ứng dụng điều khiển robot, với ROS ta có thể lập trình, biên dịch, chạy thực thi chương trình điều khiển qua nhiều máy tính và nhiều hệ thống robot khác nhau. Graph trong ROS có thể được hiểu như cây (tree graph) biểu diễn quan hệ giữa các thành phần trong hệ điều hành này như nodes, topics, messages, services v.v (các khái niệm này sẽ được giải thích rõ hơn trong mục 2.

Về mặt trao đổi dữ liệu và giao tiếp trong ROS: ROS tích hợp một vài chuẩn giao tiếp khác nhau, bao gồm giao tiếp đồng bộ theo chuẩn RPC qua các services, truyền dữ liệu bất đồng bộ qua topics và lưu trữ dữ liệu trên các Parameter Server. Ưu điểm của ROS: Xây dựng ứng dụng robotics trên nền tảng ROS sẽ giảm đi một lượng đáng kể các công việc lập trình, thiết kế hệ thống. Nhưng phần này có thể tận dụng nguồn tài nguyên mã nguồn mở vô cùng phong phú của cộng đồng. Theo [ROS5], ta có thể so sánh khối lượng công việc kỹ thuật cơ bản (required engineering) và khối lượng nghiên cứu khoa học nòng cốt (Core Research) như sau: Từ đó ta thấy rằng, với sự hiệu quả từ ROS, thời gian dành cho các công việc kỹ thuật cơ bản sẽ được giảm xuống rất đáng kể, và do đó, tăng thời gian cho công việc nghiên cứu chuyên sâu, hàm lượng khoa học đạt được trong đề tài sẽ lớn hơn nhiều lần.

3 Một số đặc điểm làm cho ROS là một hệ điều hành nên được sử dụng: • ROS là hệ điều hành mã nguồn mở. • Các tài liệu kỹ thuật, tài liệu hướng dẫn và các kênh hỗ trợ đầy đủ. Một trong những vấn đề cốt lõi nhất khiến ROS trở nên mạnh mẽ đó là tính cộng đồng rất lớn. Nguồn tài nguyên được cộng đồng đóng góp hầu như được xây dựng, phát triển từ những viện nghiên cứu và những trường đại học hàng đầu.

Những tài nguyên được cung cấp từ ROS thể hiện được sức mạnh trong các lĩnh vực robotics như là: ✓ Visualization ✓ Object recognition ✓ Navigation ✓ Manipulation/ grasping ✓ Plugging in Các thông tin khác ROS chạy trên nền tảng Unix. Phần mềm cho ROS chủ yếu được thử nghiệm trên Ubuntu và Mac OS X. Cho đến nay cộng đồng ROS cũng đã bắt đầu xây dựng cho Fedora, Gentoo, Arch Linux và các nền tảng Linux khác. ROS hiện nay đã được hỗ trợ trên Microsoft Windows nhưng có phần chưa được tối ưu.

Hệ điều hành ROS cùng với các công cụ và thư viện hỗ trợ thường được phát hành ở dạng ROS Distribution, tương tự như Linux distribution, cung cấp một bộ phần mềm để người dùng sử dụng, xây dựng và phát triển. ROS là hệ điều hành mã nguồn mở, do đó thu hút được sự quan tâm đóng góp của cộng đồng để phát triển hệ thống cũng như các công cụ và thư viện kèm theo. Cộng đồng ROS tham gia đóng góp mã nguồn ngày càng phát triển, tuy vậy vẫn tập trung chủ yếu ở Hoa Kỳ, Tây Âu, ngoài ra còn có Nhật Bản. Mô hình ROS Mô hình ROS gồm có 3 tầng: Filesystem, Computation Graph, và Community.

Bên cạnh đó, ROS định nghĩa hai kiểu đặt tên (Names): Package Resource Names và Graph Resource Names. Tầng ROS Filesystem Filesystem là nguồn tài nguyên ROS được lưu trữ trên bộ nhớ hệ thống, bao gồm những thành phần như: 4 Hình 2.2 Cấu trúc Filesystem của ROS • Packages: gói dữ liệu là đơn vị chính trong tổ chức phần mềm của hệ điều hành ROS. Một package có thể chứa các lệnh thực thi của ROS (các nodes), một thư viện phụ thuộc ROS, tập dữ liệu, các file cấu hình, hoặc các dữ liệu cần thiết khác trong hệ thống, mục đích của package là để tạo ra tập hợp chương trình có kích thước nhỏ nhất để có thể dễ dàng sử dụng lại.3 Cấu trúc chung của ROS packages Cấu trúc điển hình của ROS packages : Hình 2.3 mô tả các file và thư mục cơ bản bên trong một package: - config: Tất cả các file cấu hình được sử dụng trong ROS packages được giữ trong thư mục này. Thư mục này được tạo bởi người dùng và cũng là thủ tục chung đặt tên cho thư mục config để giữ các tệp cấu hình trong đó.

- include / package_name: Thư mục này bao gồm các tiêu đề và thư viện cần sử dụng bên trong package. - scripts: Thư mục này lưu giữ các script Python thực thi. - src: Thư mục này lưu trữ các srouce code C ++. - launch: Thư mục này giữ các launch file được sử dụng để khởi chạy một hoặc nhiều node ROS.

5 - msg: Thư mục này chứa các định nghĩa message. - srv: Thư mục này chứa các định nghĩa service. - Action: Thư mục này chứa các định nghĩa hành động.xml: Đây là package manifest file của gói này.txt: Đây là build Cmake file của gói này. • Manifests: là bảng kê khai thông tin dữ liệu package (manifest.xml), cung cấp cơ sở dữ liệu về package đó, bao gồm điều kiện cho phép (license) và những yếu tố phụ thuộc của gói dữ liệu đó.

Manifest còn chứa thông tin về đặc trưng của ngôn ngữ lập trình ví dụ như các cờ báo (flags) của trình biên dịch. • Stacks: là tập hợp các packages phối hợp với nhau để thực hiện một chức năng cụ thể, chẳng hạn như “navigation stack” là tập hợp các package dẫn hướng cho robot. Stack còn mô tả cách thức phần mềm ROS được xây dựng và chứa thông tin về phiên bản ROS đang sử dụng.

Nội dung được bảo vệ bản quyền — Tải xuống đầy đủ