ROS2 中没有一个像ROS 1 那样的集中式参数服务器。==ROS 2 的参数是与每个节点绑定的,每个节点都有自己的参数管理系统==。也就是说 节点私有: 参数与节点相关联,而不是全局共享。节点可以声明、获取和更新自己的参数,也可以通过客户端库(SyncParametersClient
或 AsyncParametersClient
)访问和修改其他节点的参数,从而实现参数共享。参数可以在节点运行时动态地获取和更新,方便配置和调试.
ROS 2 提供了参数接口,可以用于在节点之间共享参数,实现参数的动态更新和访问。
- ros2 param list
- ros2 param describe
1 | ros2 param describe /turtlesim background_r |
ros2 param get node_name parameter_name
1 | ros2 param get /turtlesim background_r |
ros2 param set (省略)
ros2 run + param
ros2 run
—ros-args —params-file
- 设置参数
1 | node->declare_parameter("my_string_param", "default_value"); |
- 获得参数
1 | // Retrieve the parameter |
但是有时候参数类型不一定就是string
,可能是string
的vector,可以用get_type_name
查看类型。
如果是vector<std::string>
,其size仅为1,实际不如就让类型为string,这应当是ROS2的一个缺陷。
1 | template<typename ParameterT > |
获取参数值,如果未设置,则获取alternative_value
,并将其赋给value
。
- 删除参数
1 | this->remove_parameter("example_param"); |