Nếu bạn đang chạy robot ROS 2 trong production — hoặc thậm chí chỉ test trong lab — sớm muộn gì cũng gặp cùng bức tường: làm sao biết robot đang làm gì khi bạn không đứng trước nó? Một con robot ngồi trong warehouse, một con quadruped ở nhà máy khách hàng, một drone cách xa 50 km — tất cả đều cần giám sát. Mở terminal SSH vào từng con? Không scale. Xây dashboard custom? Mất hàng tháng.
Bài này hướng dẫn setup monitoring từ xa cho robot ROS 2 trong dưới 10 phút bằng agent thực tế, production-ready. Cuối bài, bạn sẽ thấy battery, CPU, trạng thái ROS node, và metrics custom stream từ robot lên dashboard cloud — từ bất kỳ đâu trên thế giới.
Bạn sẽ xây được gì
Cuối tutorial:
- Robot ROS 2 (hoặc laptop giả làm robot) gửi telemetry lên dashboard cloud mỗi 30 giây
- Pin, CPU, RAM, uptime, trạng thái ROS node đều xem được từ xa
- Alert bắn khi robot offline hoặc pin tụt dưới ngưỡng
- Chạy trên bất kỳ mạng nào — Wi-Fi văn phòng, 4G, internet nhà
- Setup 10 phút, không phải 10 tuần
Bạn cần gì
- Robot hoặc máy tính chạy ROS 2 Humble, Iron, Jazzy, hoặc Rolling (Ubuntu 22.04+)
- Python 3.10+
- Kết nối internet (phía robot)
- Tài khoản VnRobo miễn phí (3 robots free, không cần thẻ)
Nếu chưa có robot thật, bất kỳ laptop Ubuntu nào cũng được. Bạn vẫn sẽ thấy telemetry thật chạy.
Vì sao không SSH hay tự xây Flask dashboard?
Trước khi đi sâu, reality check vì sao người ta chọn nền tảng chuyên dụng:
| Cách | Thời gian setup | Scale 10+ robots? | Có alert không? | Chi phí bảo trì |
|---|---|---|---|---|
| SSH vào từng robot | 0 phút | ❌ | ❌ | Cao |
| Custom Flask + Grafana | 2-4 tuần | ⚠️ Mong manh | Tự làm | Rất cao |
| InfluxDB + Telegraf | 1-2 tuần | ✅ | Tự làm | Cao |
| Fleet SaaS (VnRobo etc.) | 10 phút | ✅ | ✅ | Thấp |
Nếu có 1 robot và thích Flask: ok, tự xây. Nếu có 3+ robot và quý cuối tuần: dùng SaaS.
Bước 1: Tạo tài khoản VnRobo
Vào app.vnrobo.com/sign-up. Đăng ký bằng email hoặc Google. Không cần thẻ. Bạn sẽ vào dashboard với 0 robot.
Bấm "Add Robot" → đặt tên (ví dụ test-robot-01) → bạn sẽ nhận 2 giá trị:
ORG_ID— ID tổ chứcROBOT_TOKEN— token riêng cho robot này
Copy 2 cái này. Cần cho bước sau.
Bước 2: Cài agent ROS 2
Trên robot (hoặc laptop):
pip install vnrobo-agent
Đúng vậy — không cần apt repo, không config systemd ngay, không quản lý secrets phức tạp. Bên trong, lệnh này cài Python package đọc psutil cho system metrics và ping trạng thái ROS 2 node.
Yêu cầu: agent cần Python 3.10+ và ROS 2 đã source trong shell (source /opt/ros/humble/setup.bash hoặc tương tự).
Bước 3: Khởi tạo agent
Chạy 1 lần để link robot với tài khoản:
vnrobo init \
--org YOUR_ORG_ID \
--token YOUR_ROBOT_TOKEN \
--name test-robot-01
Lệnh này tạo config tại ~/.vnrobo/config.yaml. Không commit lên git.
Bước 4: Start vòng lặp heartbeat
Chạy daemon monitoring:
vnrobo run
Bạn sẽ thấy:
[vnrobo] Connected to cloud
[vnrobo] Sending heartbeat every 30s
[vnrobo] battery=0.87 cpu=12% mem=34% nodes=8
Quay lại dashboard VnRobo trong browser. Trong vòng 30 giây, robot xuất hiện với chấm xanh — ONLINE. Click vào để xem metrics live: pin, CPU, RAM, danh sách ROS node.
Thế là xong mức tối thiểu. Bạn đã có remote monitoring.
Bước 5: Gửi metric custom từ code ROS 2
Default metrics (pin, CPU, RAM) hữu ích, nhưng có lẽ bạn muốn track thứ domain-specific: mission hiện tại, nhiệt độ động cơ, sức khỏe LIDAR, bất cứ gì.
Cách push metric custom từ node ROS 2 Python:
import rclpy
from rclpy.node import Node
from vnrobo import Heartbeat
class MissionNode(Node):
def __init__(self):
super().__init__('mission_node')
self.hb = Heartbeat()
self.timer = self.create_timer(5.0, self.report)
def report(self):
self.hb.send({
"mission_id": 42,
"motor_temp_c": 47.3,
"lidar_fps": 15,
"current_task": "picking",
"battery": 0.72,
})
def main():
rclpy.init()
node = MissionNode()
rclpy.spin(node)
rclpy.shutdown()
if __name__ == "__main__":
main()
Lưu thành mission_node.py, chạy song song với vnrobo run. Mọi cặp key-value gửi lên đều hiển thị tự động trong dashboard — không cần đổi schema, không migration database.
Bước 6: Setup alerts
Alert là tính năng giá trị cao nhất của remote monitoring. Robot offline 6 giờ trước là vô dụng; robot offline 30 giây trước là vấn đề bạn có thể fix.
Trong dashboard, click Alerts → New Alert:
Ví dụ: pin thấp
- Condition:
battery < 0.20 - Thông báo: email + webhook Slack
- Cooldown: 5 phút (đừng spam)
Ví dụ: robot offline
- Condition: không có heartbeat 2 phút
- Thông báo: email + webhook
- Tự resolve khi robot kết nối lại
Ví dụ: động cơ quá nhiệt
- Condition:
motor_temp_c > 80 - Thông báo: gọi kỹ sư on-call
Bước 7: Chạy như systemd service
Cho production, bạn muốn agent tự start khi boot và restart nếu crash. Tạo /etc/systemd/system/vnrobo-agent.service:
[Unit]
Description=VnRobo Agent
After=network-online.target
[Service]
Type=simple
User=robot
Environment="ROS_DOMAIN_ID=0"
ExecStart=/usr/bin/bash -lc 'source /opt/ros/humble/setup.bash && vnrobo run'
Restart=always
RestartSec=10
[Install]
WantedBy=multi-user.target
Enable và start:
sudo systemctl enable vnrobo-agent
sudo systemctl start vnrobo-agent
sudo systemctl status vnrobo-agent
Giờ agent sống sót qua reboot, crash, và mất mạng.
Bước 8: Thêm robot khác
Cho mỗi robot mới:
- Click Add Robot trong dashboard → nhận token mới
pip install vnrobo-agenttrên máy đóvnrobo init --org YOUR_ORG_ID --token NEW_TOKEN --name robot-02- Start systemd service
Free tier chạy được 3 robots. Thêm hơn, plan Pro $29/tháng cho 25 robots.
Các vấn đề thường gặp và cách fix
"Connection refused" khi chạy vnrobo run
Check internet trên robot: curl https://api.vnrobo.com/health. Nếu bị block, firewall đang lọc HTTPS outbound. Whitelist api.vnrobo.com port 443.
ROS node không hiện
Đảm bảo ROS 2 đã source trong shell đang chạy agent. Check bằng ros2 node list — nếu rỗng, agent không có gì để báo.
Dashboard hiện last heartbeat 5 phút trước nhưng robot đang chạy
Vấn đề mạng giữa robot và cloud. Agent queue heartbeat local và flush khi connection trở lại. Đợi 2 phút. Nếu vẫn, check journalctl -u vnrobo-agent.
Nhiều robot hiện thành 1
Mỗi robot cần token riêng. Đừng dùng chung token giữa các máy.
Vượt qua basic — làm gì tiếp
Khi đã có remote monitoring cơ bản:
- Thêm GPS tracking — push
lat/lontrong heartbeat, dashboard vẽ trên map - Stream rosbag metadata — log trajectory để debug sau
- Tích hợp với CI/CD — alert khi rollout fleet fail
- Xây dashboard custom — dùng API VnRobo pull data vào tool của bạn
So sánh với alternative khác
Ngắn gọn: nếu muốn tool monitoring drop-in cho < 25 robot và quan tâm chi phí, VnRobo là đường nhanh nhất. Nếu cần video live và compliance enterprise, xem Formant hoặc Freedom Robotics. Nếu AWS RoboMaker là setup cũ, đây là hướng dẫn migration đầy đủ.
Kết luận
Remote monitoring cho ROS 2 không cần là dự án engineering 3 tháng. Cài agent, init, run. 10 phút từ zero đến dashboard cloud hoạt động. Thêm metric custom trong vài dòng Python. Quy tắc alert bằng click, không phải YAML war.
Nếu setup này hợp, thử miễn phí 3 robot — không cần thẻ. Nếu gặp issue, docs VnRobo cover edge cases bỏ qua ở đây (tune offline detection, config proxy, multi-org setup).