Các thuật ngữ cơ bản trong hệ điều hành ROS

hệ điều hành ROS

Trong bài viết trước, chúng ta đã tìm hiểu cơ bản về hệ điều hành ROS là gì và dùng để làm gì?. Trong bài viết này mình sẽ giới thiệu về một số thuật ngữ cơ bản khi làm việc với ROS.

Tham khảo: Bộ chuyển đổi tín hiệu RS232 / RS485 sang Wifi cho ứng dụng AGV, robot

Package

Package là thành phần cơ bản trong tổ chức của hệ điều hành ROS. Một package là một thư mục bao gồm các nodes, thư viện, dữ liệu, các file cấu hình như file .launch, file .xml.

Stack

Một stack bao gồm nhiều package để thực hiện một chức năng nào đó. Ví dụ như “navigation stack” có chức năng dẫn đường. Một stack sẽ bao gồm nhiều thư mục packages con và một file cấu hình manifest.xml

ROS navigation stack

Nodes

Trong một dự án ROS sẽ bao gồm nhiều nodes thực thi cùng lúc. Khi thực thi mỗi nodes sẽ phải khai báo với Master. Ví dụ một node sẽ làm chức năng thu thập dữ liệu từ cảm biến như encoder. Node này sẽ gửi dữ liệu encoder sang một node khác để tính toán bộ điều khiển PID và gửi lệnh điều khiển sang một node khác có chức năng giao tiếp với động cơ.

Với cách thức tổ chức này, chương trình sẽ dễ dàng phân chia các khối chức năng giúp giảm thời gian phát triển, tăng khả năng tái sử dụng và bảo trì code.

ROS node and master

Master

Hệ điều hành ROS hoạt động theo mô hình tập trung. Master hoạt động như một dịch vụ đăng kí và khai báo các nodes. Các nodes có thể tìm thấy nhau và trao đổi dữ liệu thông qua Master. Master được thực hiện qua cơ chế XMLRPC.

Topic

Trong hệ điều hành ROS, dữ liệu được trao đổi không đồng bộ theo topic và đồng bộ thông qua một service (dịch vụ).

Topic là một hệ thống truyền tải dữ liệu dựa trên một hệ thống publish / subcribe. Một hoặc nhiều node có thể publish dữ liệu cho một topic và một hoặc nhiều nút có thể subcribe để nhận dữ liệu về topic đó. Theo một cách nào đó, topic là một bus thông báo không đồng bộ, giống như một nguồn cấp dữ liệu RSS.

Message

Message là một cấu trúc dữ liệu mà các nodes sẽ trao đổi với nhau. Message bao gồm sự kết hợp của nhiều kiểu dữ liệu. Các gói thư viện của ROS đã bao gồm nhiều kiểu Message cơ bản như std_msgs, sensor_msgs

Nếu bạn muốn xây dựng một loại message riêng, nó sẽ được đặt trong package_name / msg / myMessageType.msg.

ROS Header Message

Service

Topic là một phương thức giao tiếp không đồng bộ được sử dụng cho giao tiếp nhiều – nhiều (many – many). Trong khi đó, mỗi Service đáp ứng một loại nhu cầu khác nhau; để giao tiếp đồng bộ giữa hai nodes. Ý tưởng này tương tự như một cuộc gọi thủ tục từ xa (RPC).

Mô tả về Service được lưu trữ trong package_name / srv / myServiceType.srv. File này mô tả cấu trúc dữ liệu cho các yêu cầu và phản hồi của một service

ROS Topic and Service

Bag

Bag là định dạng để lưu trữ và phát lại dữ liệu message. Toàn bộ các message được truyền nhận theo các topic sẽ được lưu lại. Ví dụ, cơ chế này có thể thu thập dữ liệu được đo bằng cảm biến và sau đó phát lại nhiều lần nếu muốn để mô phỏng dữ liệu thực. Nó cho phép chúng ta xây dựng và kiểm tra thuật toán với các dữ liệu thực đã thu được từ file bag trước đó. Nó cũng rất hữu ích trong quá trình tìm kiếm lỗi sau khi sự kiện đã xảy ra.

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

zalo-icon
facebook-icon
phone-icon