Bạn biết gì về ROS?

Bạn biết gì về ROS?

Chào mừng bạn đến bài viết đầu tiên trong chuỗi bài viết về ROS và ứng dụng của nó trong lập trình và chế tạo Robot. Các hướng dẫn và trình tự thực hiện trong chuỗi bài viết này được dựa trên kinh nghiệm mà mình đã và đang thực hiện dự án. Mình sẽ cố gắng trình bày các bài viết tối giản nhất để mọi người có thể ứng dụng dễ dàng trong các dự án của chính mình 🙂

Robot và mô hình robot trên Rviz mà mình đang nghiên cứu và phát triển

Robot operating system (ROS) là một hệ thống phần mềm có tính linh hoạt và chuyên dụng cao dùng để lập trình và điều khiển robot. ROS bao gồm các thư viện, công cụ hỗ trợ lập trình, công cụ đồ họa, các công cụ hỗ trợ giao tiếp điều khiển trực tiếp với phần cứng cũng như các thư viện hỗ trợ việc lấy dữ liệu từ các cảm biến và các thuật toán phổ biến trong lập trình điều khiển robot.

Ví dụ mô hình ROS đơn giản

ROS giúp đơn giản và tiết kiệm thời gian việc lập trình các hành vi phức tạp của robot. ROS như là một mạng lưới điểm (node) được kết nối bởi nhiều node mà mỗi node có nhiệm vụ riêng tương ứng với các thành phần cấu tạo nên robot. Mỗi node riêng có thể được tùy chỉnh phát triển và lập trình theo ý tưởng của người phát triển mà không cần quan tâm đến việc phải thống nhất sử dụng cùng một ngôn ngữ lập trình, điều đó có nghĩa là node này bạn phát triển trên ngôn ngữ C++ nhưng node khác bạn có thể phát triển trên ngôn ngữ Python. Python và C++ là hai ngôn ngữ nền tảng mà bạn cần phải học trước khi làm quen với ROS.

ROS chạy trên nền Ubuntu, do đó bạn phải cài ROS trên nền Ubuntu. Hiện tại có hai phiên bản phổ biến là ROS Melodic và ROS Kinetic, phiên bản Melodic tương thích và chạy trên Ubuntu 18 trong khi đó Kinetic chạy trên nền Ubuntu 16. Các bạn có thể dễ dàng cài đặt ROS theo hướng dẫn trên trang chủ của ROS, tuy nhiên mình sẽ viết bài hướng dẫn và sẽ lưu ý trong bài viết tiếp theo.

ROS bao gồm các cấu thành bởi các thành phần như hình sau

Nodes: là đơn vị cơ bản nhằm hỗ trợ giao tiếp với các thành phần cấu thành nên robot. Vì dụ như một con robot thường có các node như Laser scanner, Camera, Node gửi vận tốc đến thiết bị điều khiển động cơ. Các nodes này có thể giao tiếp và tương tác với nhau qua Master.

Master: đóng vai trò kết nối các node với nhau. Do đó, master luôn được khởi động đầu tiên bằng cầu lệnh roscore sau đó thì bạn có thể gọi bất kỳ các node nào trong hệ thống. Sau khi gọi xong, các node có thể kết nối và tương tác với nhau.

Parameter Server: Là một cấu trúc nhiều tham số có thể truy cập trong lúc chạy ROS. Các node sử dụng cấu trúc này nhằm lưu trữ và truy xuất các thông số trong thời gian chạy. Do nó không có hiệu suất cao nên thường dùng với kiểu dữ liệu tĩnh, chẳng hạn như các thông số cấu hình, thời gian hệ thống.

Message: Đây là cấu trúc dữ liệu được các node sử dụng để trao đổi với nhau tương tự như các kiểu dữ liệu double, int trong các ngôn ngữ lập trình. Các node tương tác với nhau bằng cách send và receive ROS message.

Topics: là phương pháp giao tiếp trao đổi dữ liệu giữa hai node, nó bao gồm nhiều cấp bậc thông tin mà chúng có thể giao tiếp thông qua ROS message. Hai phương thức trong topic bao gồm publish và subscribe.

Services: Là một giao tiếp trao đổi dữ liệu/ thông tin giữa hai node thông qua phương thức request và response. Thường được áp dụng trong trường hợp việc thực hiện một lệnh cần nhiều thời gian xử lý nên dữ liệu tính toán được lưu ở server và sẽ dùng khi cần xử lý.

Bags: là một định dạng tệp trong ROS dùng để lưu trữ dữ liệu message với phần mở rộng là .bag có vai trò quan trọng và có thể được xử lý, phân tích bởi các công cụ mô phỏng trong ROS như Rviz.

Trên đây là một số giới thiệu sơ bộ về ROS và các phần cấu thành nên nó. Hy vọng sẽ mang lại cho bạn một cái nhìn tổng thể về ROS.

Cảm ơn các bạn đã dành thời gian đọc bài viết này

Chat Zalo