ROS2 调参最烦的就是改个参数要重启节点。参数服务器用好了,调 PID、调滤波器阈值都不用重启:

1. 声明参数时就想好要不要动态改
declare_parameter 的 descriptor 里可以设 read_only=true。凡是运行时可能要调的(PID 增益、速度上限、滤波窗口),别设 read_only,留好动态改的口子。

2. rqt_reconfigure 实时调
ros2 run rqt_reconfigure rqt_reconfigure 打开图形界面,参数列表自动出来,拖动滑块值直接生效。调机械臂 PID、导航代价值的时候,比改 yaml 重启快一个数量级。

3. 调好的值要落盘
rqt 里调好的参数只是内存里的,节点重启就丢。定下来后写回 launch 文件或 yaml:launch 里用 parameters 参数,yaml 文件里分节点写清楚。建议 yaml 按功能分文件,别把所有参数塞一个文件。

4. 参数回调里做合法性检查
on_set_parameters_callback 里校验范围:速度上限不能为负、滤波窗口不能为 0。非法值直接拒绝并打 warning,比让节点带着离谱参数跑要强。

5. 多机/多机器人用命名空间隔离
同一份 launch 起多个机器人,参数用 push_ros_namespace 隔离,不然 A 机器人的调参会把 B 机器人的也改了,现场调试会疯。

你们调导航参数一般用什么工具?rqt 还是直接改 yaml?