动态参数

news/2025/2/5 14:35:45/文章来源:https://www.cnblogs.com/AndyYX/p/18699396

概念

一种可以在运行时更新参数而无需重启节点的参数配置策略。

客户端实现

  1. 新建功能包,添加依赖 roscpp rospy std_msgs dynamic_reconfigure
  2. 新建cfg文件
#! /usr/bin/env python3
"""4生成动态参数 int,double,bool,string,列表5实现流程:6    1.导包7    2.创建生成器8    3.向生成器添加若干参数9    4.生成中间文件并退出
10
"""
# 1.导包
from dynamic_reconfigure.parameter_generator_catkin import *
PACKAGE = "dr_pkg"
# 2.创建生成器
gen = ParameterGenerator()# 3.向生成器添加若干参数
#add(name, paramtype, level, description, default=None, min=None, max=None, edit_method="")
gen.add("int_param",int_t,0,"整型参数",50,0,100)
gen.add("double_param",double_t,0,"浮点参数",1.57,0,3.14)
gen.add("string_param",str_t,0,"字符串参数","hello world ")
gen.add("bool_param",bool_t,0,"bool参数",True)many_enum = gen.enum([gen.const("small",int_t,0,"a small size"),gen.const("mediun",int_t,1,"a medium size"),gen.const("big",int_t,2,"a big size")],"a car size set")gen.add("list_param",int_t,0,"列表参数",0,0,2, edit_method=many_enum)# 4.生成中间文件并退出
exit(gen.generate(PACKAGE,"dr_node","dr"))
  1. 配置CMakeLists
generate_dynamic_reconfigure_options(cfg/dr.cfg
)

服务端实现

C++

  1. 包含头文件
  2. 初始化 ros 节点
  3. 创建服务器对象
  4. 创建回调对象(使用回调函数,打印修改后的参数)
  5. 服务器对象调用回调对象
  6. spin()
#include "ros/ros.h"
#include "dynamic_reconfigure/server.h"
#include "dr_pkg/drConfig.h"/*  动态参数服务端: 参数被修改时直接打印实现流程:1.包含头文件2.初始化 ros 节点3.创建服务器对象4.创建回调对象(使用回调函数,打印修改后的参数)5.服务器对象调用回调对象6.spin()
*/void cb(dr_pkg::drConfig& config, uint32_t level){ROS_INFO("动态参数解析数据:%d,%.2f,%d,%s,%d",config.int_param,config.double_param,config.bool_param,config.string_param.c_str(),config.list_param);
}int main(int argc, char *argv[])
{setlocale(LC_ALL,"");// 2.初始化 ros 节点ros::init(argc,argv,"dr");// 3.创建服务器对象dynamic_reconfigure::Server<dr_pkg::drConfig> server;// 4.创建回调对象(使用回调函数,打印修改后的参数)dynamic_reconfigure::Server<dr_pkg::drConfig>::CallbackType cbType;cbType = boost::bind(&cb,_1,_2);// 5.服务器对象调用回调对象server.setCallback(cbType);// 6.spin()ros::spin();return 0;
}

python

  1. 导包
  2. 初始化 ros 节点
  3. 创建服务对象
  4. 回调函数处理
  5. spin()
#! /usr/bin/env python3
import rospy
from dynamic_reconfigure.server import Server
from dr_pkg.cfg import drConfig"""动态参数服务端: 参数被修改时直接打印实现流程:1.导包2.初始化 ros 节点3.创建服务对象4.回调函数处理5.spin
"""
# 回调函数
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 configif __name__ == "__main__":# 2.初始化 ros 节点rospy.init_node("dr_p")# 3.创建服务对象server = Server(drConfig,cb)# 4.回调函数处理# 5.spinrospy.spin()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/879093.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用ollama运行deepseek-r1模型

Ollama是一个功能强大的本地大语言模型的运行框架,用户可以非常简单地运行使用各种LLM。最最主要的是它完全免费,本地可以离线运行; 1. 最简单的安装:curl https://ollama.ai/install.sh | sh 2.也可以访问ollam.com直接点击下载安装3. 安装完成之后,ollama list一下可以看…

【python应用】Python也能使用动态链接库

前言 动态链接库(DLL)想必大家都不陌生了吧,C/C++编程经常会用到,那么,它跟我们的Python有什么关系?要说关系恐怕也就是Python是用C写的了,不过,还有一点更重要的关系,那就是Python可以调用C函数,这一点,在Pywin32中有所体现。下面我们就来详细了解下到底Python使用动…

ERP+PLM+MDM

ERP+PLM+MDM 新一代汽车数字工厂PLM+PLM+MDM集成解决方案专为汽车整车行业设计,通过整合企业业务流程和优化关键数据管理,实现了设计制造一体化。该方案以业务流程为导向,围绕整车项目研发、快速变型设计、产品配置和装配工艺设计四大业务场景,提供全面的数据管理和流程控制…

AI应用示例:用AI通过单张面部照片预测您的职业与受教育程度

AI 生成的图像 | Flux Labs AI 制作想象一下,你走进一场面试,还没开口,AI 面试官就已经根据你的脸对你做出评估。这是不是 “以貌取人 2.0”?这算是歧视吗?还是 AI 正在推动一种新的 “面相主义”(face-ism)? 最近,来自多所大学的研究人员进行了一项研究,他们声称 AI…

电脑本地部署deepseek教程

Ollama:本地大模型运行指南奇舞精选2024-04-2814,445阅读11分钟关注 智能总结 复制 重新生成 这篇文章主要介绍了本地大模型运行框架 Ollama。包括其简介、安装方法(下载安装及大模型下载)、终端对话(如显示帮助、模型信息等命令)、API 调用(generate 和 chat 两…

可能是对春节假期的一些总结

写在前面2603 字 | 总结 | 经历 | 思考 | 感触未经允许,禁止转载。 正文「我一直都应该知道,听到别人说出她的名字,我还是会心里一跳。」过年与我当初预计的完全不同。我当初的计划,春节七八天,写很多很多文章,极速推进今年年度计划的写作一项。为此还专门订阅了一个月的…

搜狗录音笔c1折腾

1.买的pdd厂家帮我整好了大部分(应该刷过固件) 2.遇到的问题就是c to c的线...它没有协商,得插电脑usb-a口上才能识别到 3.厂家提供的搜狗录音笔助手这个软件是有点小处理的不是原软件(指解锁登录,其他的没看出问题,至少软件没报毒)

task3

任务二:Smiling-Weeping-zhr/Travel-assistant 自建项目链接,有关大模型关于大模型解答旅游相关

1.4 条件分支和循环机制

程序的流程分为顺序执行、条件分支和循环三种 顺序执行是按照地址内容的顺序执行指令。 条件分支是根据条件执行任意地址的指令。 循环是指重复执行同一地址的指令。 顺序执行每执行一个指令程序计数器的值自动加1条件分支和循环中使用的跳转指令,会参照当前执行的运算结果来判…

vue3使用flv.js播放flv直播流

目前有个需求是:管理直播机有一个列表需要查看每个直播机的实时内容,所以需要在后台加这个功能。 效果:我用ffmpeg模拟推流: 如何用ffmpeg模拟推流请看我上一篇文章 网页: 如上是可以正确再网页端拉流,这个功能费了一天的时间,在这里免费分享出来。 首先安装flv.js(用n…

DeepSeep本地部署

1、浏览器搜索引擎更改 2、搜索:Ollama操作下载: 也可直接进入下载路径:https://ollama.com/download/windows ollama run deepseek-r1 本文来自博客园,作者:他还在坚持嘛,转载请注明原文链接:他还在坚持嘛 https://www.cnblogs.com/brf-test/p/18699050