当前位置:网站首页>ROS dynamic parameters
ROS dynamic parameters
2022-08-02 00:18:00 【2021 Nqq】
客户端实现 dr.cfg
本质上是Python文件
#! /usr/bin/env python
"""
Dynamic parameter client:
1. 导包
2. Create a parameter producer
3. Add parameters to the generator
4. 配置节点,并退出
"""
# Import the function package corresponding to the parameter server
from dynamic_reconfigure.parameter_generator_catkin import *
# 2. Create a parameter producer
gen = ParameterGenerator()
# 3. Add parameters to the generator
# 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"))
Dynamic parameter server C++
/* Dynamic parameter server process: 1. 包含头文件 2. 初始化操作 3. 创建服务端对象 4. The callback function parses the modified parameters 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("The modified integer data is: %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. The callback function parses the modified parameters
// 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;
}
Dynamic parameter server Python
#! /usr/bin/env python
""" Dynamic parameter server: Print directly when the parameter is modified 实现流程: 1.导包 2.初始化 ros 节点 3.创建服务端对象 4.Callback function parsing function 5.spin """
import rospy
from dynamic_reconfigure.server import Server
from demo02_dr.cfg import drConfig
# 回调函数
def cb(config,level):
rospy.loginfo("python Dynamic parameter service resolution:%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.Callback function parsing function
# 5.spin
rospy.spin()
边栏推荐
猜你喜欢
Quick solution for infix to suffix and prefix expressions
众筹DAO“枯萎”的缩影:曾拍下《沙丘》未出版手稿的Spice DAO解散
Using the "stack" fast computing -- reverse polish expression
Play NFT summer: this collection of tools is worth collecting
玩转NFT夏季:这份工具宝典值得收藏
Keepalived 高可用的三种路由方案
ES中SQL查询详解
security跨域配置
面试高频考题解法——栈的压入弹出序列、有效的括号、逆波兰表达式求值
扑克牌问题
随机推荐
OpenCV DNN blogFromImage() detailed explanation
async/await 原理及执行顺序分析
Collection of NFT tools
基于数据驱动的变电站巡检机器人自抗扰控制
SphereEx Miao Liyao: Database Mesh R&D Practice under Cloud Native Architecture
Win11内存管理错误怎么办?
Unknown CMake command “add_action_files“
零基础如何学习单片机,一位入门者的进阶路径,可参考
单片机遥控开关系统设计(结构原理、电路、程序)
短视频seo搜索优化主要内容
How to find new potential projects?Tools recommended
How to reinstall Win11?One-click method to reinstall Win11
Interview high-frequency test questions solution - stack push and pop sequence, effective parentheses, reverse Polish expression evaluation
【无标题】
Zadig 面向开发者的自测联调子环境技术方案详解
easy-excel 解决百万数据导入导出,性能很强
短视频SEO优化教程 自媒体SEO优化技巧方法
含外部储能的电力系统暂态稳定分布式控制
Wincc报表教程(SQL数据库的建立,wincc在数据库中保存和查询数据,调用Excel模板把数据保存到指定的位置和打印功能)
PHP从txt文件中读取数据的方法