ROS2的参数实现居然是服务,一起来做个实验试一试

大家好,我是吹着空调裹着被子的小鱼。

ROS2的参数其实是用服务实现的,小鱼是怎么知道的呢?

随意运行一个节点,你使用下面的指令,就可以看到多出来很多的参数相关的服务。

ros2 service list
复制代码

比如启动乌龟模拟器

ros2 run turtlesim turtlesim_node
复制代码

图片

多出来的这些服务就是用于操作这个节点的参数的

/turtlesim/describe_parameters/turtlesim/get_parameter_types/turtlesim/get_parameters/turtlesim/list_parameters/turtlesim/set_parameters/turtlesim/set_parameters_atomically
复制代码

我们如何使用服务查看参数呢?

手动调一下服务就行了~

ros2 service call /turtlesim/list_parameters rcl_interfaces/srv/ListParameters "{prefixes: [],depth: 0}"
复制代码

图片

这里可以看到结果里的四个参数

names=['background_b', 'background_g', 'background_r','use_sim_time']
复制代码

采用ros2 param list再看看对不对

ros2 param list
复制代码

图片

是不是长的一样

总结

通过上面的实验告诉我们ROS2的参数操作其实就是通过服务通信方式实现的,获取参数列表,set和get操作就是操作相应的服务。

我是小鱼,欢迎关注公众号《鱼香ROS》加入技术交流群!一起学习ROS2机器人~

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享