VnRobo
Về chúng tôiBảng giáBlogLiên hệ
🇺🇸ENĐăng nhậpDùng thử miễn phí
🇺🇸EN
VnRobo logo

Hạ tầng AI cho robot công nghiệp thế hệ mới.

Sản phẩm

  • Tính năng
  • Bảng giá
  • Kiến thức
  • Dịch vụ

Công ty

  • Về chúng tôi
  • Blog
  • Liên hệ

Pháp lý

  • Chính sách bảo mật
  • Điều khoản sử dụng

© 2026 VnRobo. Bảo lưu mọi quyền.

Được tạo với♥tại Việt Nam
VnRobo
Về chúng tôiBảng giáBlogLiên hệ
🇺🇸ENĐăng nhậpDùng thử miễn phí
🇺🇸EN
  1. Trang chủ
  2. Blog
  3. Giới thiệu ROS 2: Nền tảng lập trình robot thế hệ mới
otherroboticsros2

Giới thiệu ROS 2: Nền tảng lập trình robot thế hệ mới

ROS 2 mang đến kiến trúc phân tán mạnh mẽ, hỗ trợ real-time và bảo mật — lý tưởng cho robot công nghiệp và tự hành.

Nguyễn Anh Tuấn15 tháng 6, 20256 phút đọcCập nhật: 16 thg 6, 2026

ROS 2 là gì?

ROS 2 (Robot Operating System 2) là framework mã nguồn mở được thiết kế lại hoàn toàn từ ROS 1, nhắm đến việc hỗ trợ các ứng dụng robot thương mại và công nghiệp. Không giống như ROS 1 phụ thuộc vào một master node trung tâm (roscore), ROS 2 sử dụng DDS (Data Distribution Service) làm middleware giao tiếp, cho phép kiến trúc phân tán thực sự.

Hiểu đơn giản: nếu ROS 1 như một hệ thống điện thoại cần tổng đài trung tâm, thì ROS 2 như mạng internet — mỗi node có thể giao tiếp trực tiếp với nhau mà không cần "tổng đài".

Kiến trúc phân tán ROS 2 với DDS middleware
Kiến trúc phân tán ROS 2 với DDS middleware

Tại sao nên chuyển sang ROS 2?

1. Hỗ trợ Real-time

ROS 2 được xây dựng trên nền tảng DDS với khả năng QoS (Quality of Service) linh hoạt. Điều này cho phép bạn cấu hình độ tin cậy, độ trễ và băng thông cho từng topic riêng biệt — yếu tố quan trọng trong điều khiển robot công nghiệp.

Ví dụ thực tế: Khi điều khiển cánh tay robot hàn, bạn cần dữ liệu encoder đến trong vòng 1ms. Với ROS 2, bạn set QoS profile RELIABLE + KEEP_LAST(1) cho topic /joint_states để đảm bảo điều này. Trong khi đó, topic camera có thể dùng BEST_EFFORT vì mất vài frame không ảnh hưởng.

2. Bảo mật tích hợp

ROS 2 tích hợp SROS2 (Secure ROS 2) với mã hóa TLS/DTLS cho giao tiếp giữa các node. Trong môi trường nhà máy, đây là yêu cầu bắt buộc khi robot kết nối qua mạng nội bộ.

Thiết lập bảo mật cơ bản:

# Tạo keystore và certificates cho các node
ros2 security create_keystore ~/sros2_keystore
ros2 security create_enclave ~/sros2_keystore /my_robot/camera_node
ros2 security create_enclave ~/sros2_keystore /my_robot/motor_node

# Kích hoạt bảo mật khi chạy
export ROS_SECURITY_KEYSTORE=~/sros2_keystore
export ROS_SECURITY_ENABLE=true
export ROS_SECURITY_STRATEGY=Enforce

3. Đa nền tảng

ROS 2 hỗ trợ chính thức Ubuntu, Windows và macOS. Bạn có thể phát triển trên laptop Windows và deploy lên robot chạy Ubuntu ARM64 mà không cần thay đổi code. Đây là lợi thế lớn so với ROS 1 chỉ hỗ trợ tốt trên Ubuntu.

4. Lifecycle Node Management

ROS 2 giới thiệu Lifecycle Nodes — cho phép quản lý trạng thái của node (Unconfigured → Inactive → Active → Finalized). Điều này rất quan trọng trong sản xuất: bạn có thể cấu hình tất cả node trước, rồi activate đồng loạt khi robot sẵn sàng.

from rclpy.lifecycle import Node as LifecycleNode

class CameraNode(LifecycleNode):
    def __init__(self):
        super().__init__('camera_node')

    def on_configure(self, state):
        # Khởi tạo camera driver, load calibration
        self.camera = cv2.VideoCapture(0)
        self.get_logger().info('Camera configured')
        return TransitionCallbackReturn.SUCCESS

    def on_activate(self, state):
        # Bắt đầu publish frames
        self.timer = self.create_timer(0.033, self.publish_frame)
        return TransitionCallbackReturn.SUCCESS

    def on_deactivate(self, state):
        # Dừng publish, giữ camera mở
        self.destroy_timer(self.timer)
        return TransitionCallbackReturn.SUCCESS

Kiến trúc cơ bản

Một hệ thống ROS 2 điển hình bao gồm 4 primitives giao tiếp:

Primitive Mô tả Use case
Topic Pub/Sub bất đồng bộ Sensor data, robot state
Service Request/Response đồng bộ Get parameter, trigger action
Action Goal + Feedback + Result Navigation, arm movement
Parameter Key-value runtime config Tuning PID, thay đổi speed

Graph concept

Mỗi node ROS 2 là một process độc lập. Chúng giao tiếp qua DDS network mà không cần biết nhau ở đâu — cùng máy hay khác máy đều hoạt động như nhau. Đây gọi là location transparency.

# Xem toàn bộ graph hiện tại
ros2 node list
ros2 topic list
ros2 topic echo /scan  # Xem dữ liệu LiDAR real-time

ROS 2 computation graph với nodes, topics và services
ROS 2 computation graph với nodes, topics và services

Bắt đầu với ROS 2 Humble

ROS 2 Humble Hawksbill là phiên bản LTS (hỗ trợ đến 2027), phù hợp cho dự án production. Cài đặt trên Ubuntu 22.04:

# Thêm ROS 2 repository
sudo apt update && sudo apt install -y software-properties-common
sudo add-apt-repository universe
sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] http://packages.ros.org/ros2/ubuntu $(. /etc/os-release && echo $UBUNTU_CODENAME) main" | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null

# Cài đặt
sudo apt update
sudo apt install ros-humble-desktop

# Source environment
echo "source /opt/ros/humble/setup.bash" >> ~/.bashrc
source ~/.bashrc

Tạo workspace và package đầu tiên

# Tạo workspace
mkdir -p ~/ros2_ws/src
cd ~/ros2_ws/src

# Tạo Python package
ros2 pkg create --build-type ament_python my_robot_pkg --dependencies rclpy std_msgs

# Build
cd ~/ros2_ws
colcon build --symlink-install

# Source workspace
source install/setup.bash

Publisher node đơn giản

# my_robot_pkg/my_robot_pkg/sensor_publisher.py
import rclpy
from rclpy.node import Node
from std_msgs.msg import Float32

class SensorPublisher(Node):
    def __init__(self):
        super().__init__('sensor_publisher')
        self.publisher = self.create_publisher(Float32, '/temperature', 10)
        self.timer = self.create_timer(1.0, self.timer_callback)
        self.get_logger().info('Sensor publisher started')

    def timer_callback(self):
        msg = Float32()
        msg.data = self.read_temperature()
        self.publisher.publish(msg)

    def read_temperature(self):
        # Đọc từ sensor thực tế hoặc giả lập
        return 25.5

def main():
    rclpy.init()
    node = SensorPublisher()
    rclpy.spin(node)
    node.destroy_node()
    rclpy.shutdown()

Hệ sinh thái ROS 2

Sức mạnh thật sự của ROS 2 nằm ở hệ sinh thái packages:

  • Nav2 (Navigation2): Navigation stack hoàn chỉnh cho AMR — SLAM, path planning, obstacle avoidance
  • MoveIt2: Motion planning cho robot arm — inverse kinematics, collision detection, trajectory optimization
  • ros2_control: Hardware abstraction layer — viết controller 1 lần, chạy trên mọi robot
  • Gazebo / Isaac Sim: Simulation — test code trước khi chạy trên robot thật
  • micro-ROS: Chạy ROS 2 trên microcontroller (ESP32, STM32) — kết nối tầng embedded

So sánh ROS 1 vs ROS 2

Tiêu chí ROS 1 ROS 2
Middleware Custom (TCPROS) DDS (chuẩn công nghiệp)
Master node Bắt buộc (roscore) Không cần
Real-time Không hỗ trợ QoS profiles
Bảo mật Không có SROS2 (TLS/DTLS)
Multi-robot Khó (namespace) Dễ (DDS domain)
OS Ubuntu only Ubuntu, Windows, macOS
Lifecycle Không có Lifecycle nodes

Kết luận

ROS 2 đã trưởng thành đủ để sử dụng trong sản xuất. Với hệ sinh thái phong phú (Navigation2, MoveIt2, ros2_control), đây là lựa chọn hàng đầu cho bất kỳ dự án robot nào từ nghiên cứu đến thương mại.

Bước tiếp theo:

  • Cài đặt ROS 2 Humble và thử chạy demo turtlesim
  • Đọc bài SLAM và Navigation để hiểu cách robot tự hành
  • Khám phá Micro-ROS để kết nối microcontroller với ROS 2
  • Tìm hiểu lập trình điều khiển robot với Python cho ROS 2

Bài viết liên quan

  • SLAM và Navigation: Cách robot tự định vị và di chuyển
  • Micro-ROS: Kết nối microcontroller với hệ sinh thái ROS 2
  • LiDAR và 3D Mapping: Xây dựng bản đồ môi trường cho robot
NT

Nguyễn Anh Tuấn

Robotics & AI Engineer. Building VnRobo — sharing knowledge about robot learning, VLA models, and automation.

Khám phá VnRobo

Fleet MonitoringROS 2 IntegrationAMR Solutions

Bài viết liên quan

Tutorial
Robotics
ros2roboticstutorial
other

Viết Hardware Interface cho ros2_control

Hướng dẫn tạo custom hardware interface — kết nối ros2_control với motor driver qua serial/CAN bus.

18/3/202610 phút đọc
NT
Micro-ROS: Kết nối microcontroller với hệ sinh thái ROS 2
roboticsros2embedded
other

Micro-ROS: Kết nối microcontroller với hệ sinh thái ROS 2

Micro-ROS cho phép chạy ROS 2 trên microcontroller như ESP32 và STM32, mở rộng hệ sinh thái ROS 2 xuống tầng embedded.

15/9/20254 phút đọc
NT
Tutorial
Robotics
ros2monitoringrobot-fleet
other

Cách giám sát robot ROS 2 từ xa: Hướng dẫn đầy đủ 2026

Hướng dẫn từng bước giám sát robot ROS 2 từ bất kỳ đâu — pin, CPU, trạng thái, heartbeat, alerts. Code chạy được, setup 10 phút. Miễn phí 3 robots.

14/4/20267 phút đọc
NT
VnRobo logo

Hạ tầng AI cho robot công nghiệp thế hệ mới.

Sản phẩm

  • Tính năng
  • Bảng giá
  • Kiến thức
  • Dịch vụ

Công ty

  • Về chúng tôi
  • Blog
  • Liên hệ

Pháp lý

  • Chính sách bảo mật
  • Điều khoản sử dụng

© 2026 VnRobo. Bảo lưu mọi quyền.

Được tạo với♥tại Việt Nam