Parameter
Parameter là cơ chế cấu hình gắn với từng node: một giá trị (số, chuỗi, bool, danh sách...) khai báo bằng declare_parameter() trong code, có tên và giá trị mặc định, nhưng đọc/ghi được từ bên ngoài khi node đang chạy — qua CLI (ros2 param), qua launch file, hoặc từ node khác gọi service.
Khác hằng số viết cứng trong code, parameter cho phép đổi hành vi của node (ngưỡng cảnh báo, tần số publish, tên topic...) mà không cần build lại hay sửa mã nguồn.
Điều dễ nhầm nhất: đọc một lần hay đọc lại?
Khi ros2 param set đổi giá trị, parameter server cập nhật ngay. Nhưng node có nhận được hay không còn tùy cách code đọc giá trị đó.
Hai cách viết trong code
# Cách A: đọc 1 lần lúc khởi tạo. Sau đó param set không có tác dụng.
self.speed = self.get_parameter('speed').value
# Cách B: đọc lại mỗi lần dùng. Param set có tác dụng ngay.
def timer_callback(self):
speed = self.get_parameter('speed').value
...
Cách A nhanh và đơn giản. Cách B theo kịp thay đổi nhưng gọi thêm một lần đọc. Chọn theo nhu cầu: tham số cấu hình ít đổi thì A; tham số cần chỉnh giữa chừng (ngưỡng cảnh báo, tốc độ) thì B.
Thử ngay
Cần 2 terminal (đã source install/setup.bash, xem Module 0):
# Terminal 1 — để chạy, đừng tắt; xem log base_temperature in ra
ros2 launch ros2_basics demo.launch.py
# Terminal 2
ros2 param list /sensor_publisher
ros2 param get /sensor_publisher base_temperature
ros2 param set /sensor_publisher base_temperature 30.0
Chạy ros2 param set rồi nhìn sang Terminal 1: log sensor_publisher đổi theo giá trị mới ngay (đọc lại mỗi lần — Cách B ở trên).