当前位置:网站首页>ROS 动态参数
ROS 动态参数
2022-08-02 00:00:00 【2021 Nqq】
客户端实现 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()
边栏推荐
猜你喜欢

QML package management

windows sql server 如何卸载干净?
![[Three sons] C language implements simple three sons](/img/96/c3f6c331cbc6d794dc5381cf176ba7.png)
[Three sons] C language implements simple three sons

thinkphp漏洞总结

REST会消失吗?事件驱动架构如何搭建?

Architecture basic concept and nature of architecture

Share an interface test project (very worth practicing)

双队列实现栈?双栈实现队列?

利用“栈”快速计算——逆波兰表达式

使用Ganache、web3.js和remix在私有链上部署并调用合约
随机推荐
如何优雅的消除系统重复代码
yay 报错 response decoding failed: invalid character ‘<‘ looking for beginning of value;
Work for 5 years, test case design is bad?To look at the big case design summary
架构基本概念和架构本质
How to solve the error when mysql8 installs make
很多人喜欢用多御安全浏览器,竟是因为这些原因
控制电机的几种控制电路原理图
如何用Redis实现分布式锁?
The Spark of Sql join on the and and where
[头条]笔试题——最小栈
正则表达式
security CSRF Vulnerability Protection
Detailed explanation of Zadig's self-testing and tuning environment technical solution for developers
thinkphp漏洞总结
DOM 事件及事件委托
为什么要使用MQ消息中间件?这几个问题必须拿下
mysql8安装make报错如何解决
background-image使用
一篇永久摆脱Mysql时区错误问题,idea数据库可视化插件配置
在CentOS下安装MySQL