Skip to content

Giới thiệu về Robot Operating System

Nếu bạn chỉ muốn thiết kế những robot đồ chơi hoặc sản phẩm gia dụng đơn giản trên thị trường cả chục năm nay, thực tế, bạn chỉ cần học một vài thứ nhỏ như Pygame, hay mô-đun điều khiển, hay một thư mục như OpenCV là đủ. Tuy nhiên chúng ta không ở đây để dừng lại mức đó, chúng ta cần robot với việc giao tiếp giữa các sensor, camera, di chuyển phức tạp, có khả năng tự hành, trí thông minh của AI, thì bạn cần một tập hợp các thư viện phức tạp. Dĩ nhiên các tập đoàn lớn như Tesla họ sẽ tự xây dựng riêng bộ thư viện của họ vì là bí mật kinh doanh, nhưng hầu như các công ty nổi tiếng khác đều sử dụng Robot Operating System trong mục đích mô phỏng, thiết kế robot.

Tại sao là Robot Operating System :

Là một opensource nhưng ROS (Robot Operating System) cung cấp khá đồ sộ những công cụ và khả năng customize, mở rộng rất cao là ưu điểm lớn.

So sánh giũa Ros và việc tự implement bằng Python/OpenCV/...

Tính năng Robot Operating System Tự customize Python/OpenCV/...
Giao tiếp phân tán Có sẵn (Nodes, Topics, DDS) Không có – phải tự viết
Điều khiển real-time Hỗ trợ tốt Khó đạt
Kết nối phần cứng linh hoạt Có hardware interface sẵn Phải tự code driver
Mô phỏng robot Tích hợp RViz, Gazebo Không hỗ trợ trực tiếp
Điều hướng tự hành Navigation2, SLAM2D, MoveIt2 Phải tự code
Quan sát dữ liệu realtime rqt, RViz, Foxglove Studio Phải tự viết UI
Cộng đồng hỗ trợ Rất mạnh vì không có lựa chọn khác Không chuyên dụng

Quan trọng : Thời điểm viết khóa học này ROS đã release phiên bản khá ổn định là ROS2 Jazzy thế nên từ sau đây, mặc định các nội dung hay thuật ngữ của tôi sẽ áp dụng từ phiên bản này trở đi!

Các thành phần chính trong ROS 2

[ Sensor / Motor / Camera ]
        ↓
[ Hardware Interface ]  <--- Kết nối driver phần cứng
        ↓
[ Controller Manager ]  <--- Quản lý PID, trajectory, velocity...
        ↓
[ ROS Nodes ]           <--- Perception, Planning, Control
        ↓
[ Topic / Service / Action / TF ]
        ↓
[ Visualization / GUI / Web / AI / SLAM ]

Mỗi thành phần chính sẽ tách thành bài học nhỏ đảm bảo bạn không bị khủng hoảng, và tôi cũng cố gắng thay đổi cách tiếp cận của các khóa học từ nước ngoài. Lộ trình học này có thể khác biệt nhưng theo tôi nó sẽ giúp bạn tự tin từng bước và cảm giác liên tục đạt được những thành tựu và hạn chế sự bỏ cuộc.

Danh sách các thành phần chính trong ros2:

Thành phần Mô tả Bài học
Hardware Interface Giao tiếp phần cứng qua C++ --
URDF/XACRO Mô tả hình học và khớp nối robot --
TF2 Quản lý hệ trục tọa độ động --
Gazebo Mô phỏng vật lý 3D --
RViz Visualization 3D dữ liệu robot --
Nodes Đơn vị xử lý độc lập, chạy song song, giao tiếp qua topics/services/actions --
Lifecycle nodes Cho phép kiểm soát vòng đời của node (inactive, active...) --
Parameters Cấu hình động cho nodes --
Launch system Tự động khởi tạo nodes, cấu hình hệ thống --
Executors Điều phối việc thực thi các callbacks trong nodes --
Topics Kênh truyền dữ liệu kiểu publish/subscribe --
Services Giao tiếp 2 chiều kiểu request/response --
Actions Thực hiện các tác vụ dài hạn có thể theo dõi trạng thái --
Controller Manager Quản lý các controller (PID, joint, velocity, effort...) --
ros2_control Framework điều khiển phần cứng thời gian thực --
ros2_controllers Bộ sưu tập các controller tiêu chuẩn --
Navigation2 Điều hướng và SLAM --
AI/ML/Deep Learning ROS có thể tích hợp mô hình AI như YOLOv5, Detectron2, LLMs, thông qua ROS Nodes sử dụng Python/C++ để inference từ camera, lidar... --

Rất nhiều người khi mới học ROS 2 đều cảm thấy hoang mang, kể cả những người đã biết lập trình lâu năm. Đây là lĩnh vực vừa dính đến code, vừa dính đến robot học, real-time, lại còn hệ thống phân tán nữa — cho nên khó là chuyện bình thường.

Giờ chúng ta chính thức xuất phát nhé!