# 1.ROS参数通信原理介绍 ROS2的参数其实是用服务实现的,小鱼是怎么知道的呢? 随意运行一个节点,你使用下面的指令,就可以看到多出来很多的参数相关的服务。 ``` ros2 service list ``` 比如启动乌龟模拟器 ``` ros2 run turtlesim turtlesim_node ``` ![img](1.ROS%E5%8F%82%E6%95%B0%E9%80%9A%E4%BF%A1%E5%8E%9F%E7%90%86/imgs/v2-dd607e84db92b9b8bd955a7a0ae8aab9_720w.webp) 多出来的这些服务就是用于操作这个节点的参数的 ```shell /turtlesim/describe_parameters /turtlesim/get_parameter_types /turtlesim/get_parameters /turtlesim/list_parameters /turtlesim/set_parameters /turtlesim/set_parameters_atomically ``` 我们如何使用服务查看参数呢? 手动调一下服务就行了~ ```shell ros2 service call /turtlesim/list_parameters rcl_interfaces/srv/ListParameters "{prefixes: [],depth: 0}" ``` ![img](1.ROS%E5%8F%82%E6%95%B0%E9%80%9A%E4%BF%A1%E5%8E%9F%E7%90%86/imgs/v2-ee1a807a9be19ede27ce2e6b9092cf49_720w.webp) 这里可以看到结果里的四个参数 ``` names=['background_b', 'background_g', 'background_r','use_sim_time'] ``` 采用`ros2 param list`再看看对不对 ``` ros2 param list ``` 是不是长的一样 ### 总结 通过上面的实验告诉我们ROS2的参数操作其实就是通过服务通信方式实现的,获取参数列表,set和get操作就是操作相应的服务 -------------- 技术交流&&问题求助: - **微信公众号及交流群:鱼香ROS** - **小鱼微信:AiIotRobot** - **QQ交流群:139707339** - 版权保护:已加入“维权骑士”(rightknights.com)的版权保护计划