所以ROS2采用了另外一种模式.
1. 参数和node绑定, 参数只能由此node访问, 参数生命周期与node一致. node可以保存参数.以便于下次重启加载.
2. 参数将由两个元素来寻址: 完整的节点名称和参数名称。
3. 支持的数据类型
- bool
- int64
- float64
- string
- byte[]
- bool[]
- int64[]
- float64[]
- string[]
List Parameters Describe Parameters Get Parameters Set Parameters
5. 多个节点内进行参数访问. 那就只能用 service了
点击(此处)折叠或打开
-
$ ros2 service list ## 查看是否存在服务.
-
/motor_node/describe_parameters
-
/motor_node/get_parameter_types
-
/motor_node/get_parameters
-
/motor_node/list_parameters
-
/motor_node/set_parameters
-
/motor_node/set_parameters_atomically
-
....
##查看节点发布的参数
-
$ ros2 service call /motor_node/list_parameters rcl_interfaces/srv/ListParameters "prefixes: ['chasiss_sv']"#10"depth: 1"
-
requester: making request: rcl_interfaces.srv.ListParameters_Request(prefixes=['chasiss_sv'], depth=0)
-
-
response:
-
rcl_interfaces.srv.ListParameters_Response(result=rcl_interfaces.msg.ListParametersResult(names=['chasiss_sv.max_angular', 'chasiss_sv.max_linear', 'chasiss_sv.min_angular', 'chasiss_sv.min_linear'], prefixes=['chasiss_sv']))
-
-
- ## 获取某个参数
-
$ ros2 service call /motor_node/get_parameters rcl_interfaces/srv/GetParameters "names: [chasiss_sv.min_angular]"
-
requester: making request: rcl_interfaces.srv.GetParameters_Request(names=['chasiss_sv.min_angular'])
-
-
response:
-
rcl_interfaces.srv.GetParameters_Response(values=[rcl_interfaces.msg.ParameterValue(type=3, bool_value=False, integer_value=0, double_value=-2.8435, string_value='', byte_array_value=[], bool_array_value=[], integer_array_value=[], double_array_value=[], string_array_value=[])])
-
-
-
## 获取多个参数
-
$ ros2 service call /motor_node/get_parameters rcl_interfaces/srv/GetParameters "names: [chasiss_sv.min_angular, chasiss_sv.max_angular]"
-
requester: making request: rcl_interfaces.srv.GetParameters_Request(names=['chasiss_sv.min_angular', 'chasiss_sv.max_angular'])
-
-
-
response:
- rcl_interfaces.srv.GetParameters_Response(values=[rcl_interfaces.msg.ParameterValue(type=3, bool_value=False, integer_value=0, double_value=-2.8435, string_value='', byte_array_value=[], bool_array_value=[], integer_array_value=[], double_array_value=[], string_array_value=[]), rcl_interfaces.msg.ParameterValue(type=3, bool_value=False, integer_value=0, double_value=2.8435, string_value='', byte_array_value=[], bool_array_value=[], integer_array_value=[], double_array_value=[], string_array_value=[])])