• ROS 学习应用篇(六)参数的使用与编程


     node可能不在一个电脑里但是这些服务的参数信息是共享的,因为话题Topic是异步的所以只有服务Service有实时参数信息可以调用。

    接下来将演示服务参数信息的调用与修改。

    创建功能包(工作空间src文件夹下)

    catkin_create_pkg learning_parameter roscpp rospy std_srvs

    想要运行下面这些代码首先要先开启一个rosmaster

    • rosparam list % 列出当前包有多少参数
    • rosparam get param_key % 显示某一个参数的值
    • rosparam set param_key  param_value % 更改param_key的值为param_value
    • rosparam dump file_name % 保存参数到file_name文件,应该是.yaml格式
    • rosparam load file_name % 读入file_name文件中的参数
    • rosparam delete param_key %删除某一个参数
    • rosparam add param_key % 添加某一个参数,没有这个指令,应该是因为这些指令都要在rosmaster开启通信的状态下进行,这个过程是不能添加参数的。

    以小海龟为例,打开一个小海龟节点

    rosrun turtlesim turtlesim_node

    rosparam list %结果如下:

    获取某一个参数

    rosparam get /turtlesim/background_b % 要按照给出的目录级别来输入参数。

    更改参数

    rosparam set /turtlesim/background_g 255

    清除旧版设置

    只有清除旧版的设置才能改变小海龟的北背景颜色。


    保存参数

    rosparam dump param.yaml% 可以在文件名字前添加制定的文件目录,如果没加就是保存到当前的目录下。

    也可以修改yaml文件,然后通过load加载命令加载,同样需要再输入一次clear命令才会更新更改后的参数。

    接下来是以代码的方式获取参数、更改参数、上传参数。

    引入库

    C++                                                                                 Python

    这里的empty是用来送入空服务以实现刷新功能的包

    节点初始化

    C++                                                                                 Python

    参数读取

    C++                                                                                 Python

    参数修改

    C++                                                                                 Python

     参数再次读取

    C++                                                                                 Python

     调用服务

    调用服务送入空数据以实现刷新

     C++                                                                                 Python

    确定主函数段

    C++                                                                                 Python

    CMakelist.tx

    备注

    所有的参数前要加/turtlesim ,因为我的版本是ros1,我的小海龟的参数是有一个前缀文件夹的要不补齐,背景才会变色。

    更多内容见Parameter Server - ROS Wiki

  • 相关阅读:
    基于OXC的光电联动全光网组网方案研究与实践
    大数据Spark教程从入门到精通第四篇:Spark快速上手
    Spring XmlBeanFactory 容器的基本实现
    [附源码]JAVA毕业设计流行病调查平台(系统+LW)
    java-php-python-ssm-养老机构服务信息管理-计算机毕业设计
    useRef 定义的 ref 在控制台可以打印但是页面不生效?
    Shellshock 远程命令注入 (CVE-2014-6271)漏洞复现
    【C++】LeetCode 160 相交链表
    刷爆 LeetCode 周赛 339,贪心 / 排序 / 拓扑排序 / 平衡二叉树
    Meta Llama 3 RMSNorm(Root Mean Square Layer Normalization)
  • 原文地址:https://blog.csdn.net/qq_42087574/article/details/134435246