ROS 动态参数

客户端实现 dr.cfg

本质上是Python文件

#! /usr/bin/env python
"""
    动态参数客户端:
        1. 导包
        2. 创建一个参数生产器
        3. 往生成器添加参数
        4. 配置节点,并退出
"""
# 导入参数服务器对应的功能包
from dynamic_reconfigure.parameter_generator_catkin import *

    # 2. 创建一个参数生产器
    gen = ParameterGenerator()
    # 3. 往生成器添加参数
    # add(name, paramtype, level, description, default=None, min=None, max=None, edit_method="")
    gen.add("int_param",int_t,0,"整数参数",10,1,100)
    # 4. 配置节点,并退出
    # generate(pkgname, nodename, name)
    exit(gen.generate("demo02_dr","dr_client","dr"))

动态参数服务端 C++

/*
    动态参数服务端流程:
        1. 包含头文件
        2. 初始化操作
        3. 创建服务端对象
        4. 回调函数解析修改后的参数
        5. spin()
*/
#include"ros/ros.h"
#include"dynamic_reconfigure/server.h"
#include"demo02_dr/drConfig.h"

void cb(demo02_dr::drConfig &config, uint32_t level)
{
    ROS_INFO("修改后的整形数据是: %d",config.int_param);
}

int main(int argc, char *argv[])
{
    // 2. 初始化操作
    setlocale(LC_ALL,"");
    ros::init(argc,argv,"dr_server");
    // 3. 创建服务端对象
    dynamic_reconfigure::Server<demo02_dr::drConfig> server;
    // 4. 回调函数解析修改后的参数
    // void setCallback(const boost::function<void (demo02_dr::drConfig &, uint32_t level)> &callback)
    server.setCallback(boost::bind(&cb,_1,_2));
    // 5. spin()
    ros::spin();
    return 0;
}

动态参数服务端 Python

#! /usr/bin/env python
"""
    动态参数服务端: 参数被修改时直接打印
    实现流程:
        1.导包
        2.初始化 ros 节点
        3.创建服务端对象
        4.回调函数解析函数
        5.spin
"""

import rospy
from dynamic_reconfigure.server import Server
from demo02_dr.cfg import drConfig

# 回调函数
def cb(config,level):
    rospy.loginfo("python 动态参数服务解析:%d,%.2f,%d,%s,%d",
            config.int_param,
            config.double_param,
            config.bool_param,
            config.string_param,
            config.list_param
    )
    return config

if __name__ == "__main__":
    # 2.初始化 ros 节点
    rospy.init_node("dr_server_p")
    # 3.创建服务端对象
    # Server(type, callback, namespace="")
    # type是类型 callback 回调函数
    server = Server(drConfig,cb)
    # 4.回调函数解析函数
    # 5.spin
    rospy.spin()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

2021 Nqq

你的鼓励是我学习的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值