Atlas Robotics
Bài 9/9 · khoảng 45 phút

Bài tập: temperature_monitor

Tự viết lại từ đầu để nhớ kiến thức, không copy ros2_basics rồi đổi tên. Mục tiêu là hiểu, không phải chạy đúng từng dòng.

Bạn cần làm

  • temp_sensor: publish nhiệt độ mỗi giây, kiểu std_msgs/Float64, có parameter giá trị nền
  • temp_alert: subscribe topic đó, log WARN khi vượt threshold_celsius (mặc định 28.0), ngược lại log INFO
  • Launch file chạy cả hai, cho phép đổi ngưỡng qua tham số dòng lệnh

Hình dung luồng dữ liệu

Trước khi viết, hãy vẽ ra giấy: node nào publish, topic tên gì, node nào subscribe, và tham số nào nằm ở đâu. Đối chiếu với mô hình dưới để kiểm tra.

Gợi ý

  • Đọc threshold_celsius một lần hay mỗi lần trong callback? Trả lời được câu này cần hiểu bài Parameter.
  • Muốn test nhanh mà không viết temp_sensor, dùng tạm sensor_publisher và đổi base_temperature bằng ros2 param set để vượt ngưỡng.

Tự kiểm tra

Đã xong khi

  • ros2 run chạy được từng node riêng lẻ
  • ros2 launch chạy cả hai cùng lúc, đổi threshold_celsius:= thì hành vi đổi theo
  • Nhiệt độ vượt ngưỡng thì log hiện WARN, không phải INFO
  • Giải thích được vì sao nhiệt độ liên tục dùng topic, không dùng service

Làm xong bài này là kết thúc Module 1. Module 2 sẽ dạy cách biểu diễn vị trí và hướng của robot trong không gian (TF2).