Chinaunix首页 | 论坛 | 博客
  • 博客访问: 5677049
  • 博文数量: 1321
  • 博客积分: 12961
  • 博客等级: 上将
  • 技术积分: 15754
  • 用 户 组: 普通用户
  • 注册时间: 2009-01-09 11:25
个人简介

偷得浮生半桶水(半日闲), 好记性不如抄下来(烂笔头). 信息爆炸的时代, 学习是一项持续的工作.

文章分类

全部博文(1321)

文章存档

2020年(105)

2019年(192)

2018年(81)

2017年(80)

2016年(70)

2015年(52)

2014年(41)

2013年(51)

2012年(85)

2011年(45)

2010年(231)

2009年(287)

分类: 其他平台

2020-08-07 11:08:12

ROS1 中存在一个参数服务器, 统一管理着所有node导入或设置的参数, 这些参数可以被其他的任意节点访问. 即所谓的黑板模式. 好处是访问和修改灵活, 问题是难以保证命名的正确性以及参数的私密性.
所以ROS2采用了另外一种模式.
https://design.ros2.org/articles/ros_parameters.html 

1. 参数和node绑定, 参数只能由此node访问, 参数生命周期与node一致. node可以保存参数.以便于下次重启加载.
2. 参数将由两个元素来寻址: 完整的节点名称和参数名称。
3. 支持的数据类型 
  • bool
  • int64
  • float64
  • string
  • byte[]
  • bool[]
  • int64[]
  • float64[]
  • string[]
4. 参数访问方式
    List Parameters     Describe Parameters     Get Parameters  Set Parameters
5. 多个节点内进行参数访问. 那就只能用 service了
    

点击(此处)折叠或打开

  1. $ ros2 service list  ## 查看是否存在服务.
  2. /motor_node/describe_parameters
  3. /motor_node/get_parameter_types
  4. /motor_node/get_parameters
  5. /motor_node/list_parameters
  6. /motor_node/set_parameters
  7. /motor_node/set_parameters_atomically
  8. ....
##查看节点发布的参数
  1. $ ros2 service call /motor_node/list_parameters rcl_interfaces/srv/ListParameters "prefixes: ['chasiss_sv']"#10"depth: 1"
  2. requester: making request: rcl_interfaces.srv.ListParameters_Request(prefixes=['chasiss_sv'], depth=0)

  3. response:
  4. 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']))


  5. ## 获取某个参数
  6. $ ros2 service call /motor_node/get_parameters rcl_interfaces/srv/GetParameters "names: [chasiss_sv.min_angular]"
  7. requester: making request: rcl_interfaces.srv.GetParameters_Request(names=['chasiss_sv.min_angular'])

  8. response:
  9. 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=[])])


  10. ## 获取多个参数
  11. $ ros2 service call /motor_node/get_parameters rcl_interfaces/srv/GetParameters "names: [chasiss_sv.min_angular, chasiss_sv.max_angular]"
  12. requester: making request: rcl_interfaces.srv.GetParameters_Request(names=['chasiss_sv.min_angular', 'chasiss_sv.max_angular'])


  13. response:
  14. 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=[])])




阅读(1449) | 评论(0) | 转发(0) |
0

上一篇:STM32 IAP example

下一篇:ROS2 param 的用法

给主人留下些什么吧!~~