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
WARNkhi vượtthreshold_celsius(mặc định 28.0), ngược lại logINFO - 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_celsiusmộ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ạmsensor_publishervà đổibase_temperaturebằngros2 param setđể vượt ngưỡng.
Tự kiểm tra
Đã xong khi
ros2 runchạy được từng node riêng lẻros2 launchchạy cả hai cùng lúc, đổithreshold_celsius:=thì hành vi đổi theo- Nhiệt độ vượt ngưỡng thì log hiện
WARN, không phảiINFO - 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).