当前位置:网站首页>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()
边栏推荐
- Axure tutorial - the new base (small white strongly recommended!!!)
- async和await用法介绍
- 架构基本概念和架构本质
- 【Leetcode】479. Largest Palindrome Product
- 【图像融合】基于加权和金字塔实现图像融合附matlab代码
- Use Jenkins for continuous integration, this knowledge point must be mastered
- 双队列实现栈?双栈实现队列?
- 在MySQL登录时出现Access denied for user ‘root‘@‘localhost‘ (using password YES) 拒绝访问问题解决
- 如何进行数据库备份
- OpenCV DNN blogFromImage()详解
猜你喜欢
随机推荐
C语言七夕来袭!是时候展现专属于程序员的浪漫了!
A brief analysis of mobile APP security testing in software testing, shared by a third-party software testing agency in Beijing
Axure教程-新手入门基础(小白强烈推荐!!!)
SphereEx Miao Liyao: Database Mesh R&D Practice under Cloud Native Architecture
security CSRF Vulnerability Protection
几道关于golang并发的面试题
Docker实践经验:Docker 上部署 mysql8 主从复制
程序员还差对象?new一个就行了
[Three sons] C language implements simple three sons
【MySQL系列】MySQL索引事务
Quartus uses tcl files to quickly configure pins
easy-excel 解决百万数据导入导出,性能很强
mysql8安装make报错如何解决
22.支持向量机—高斯核函数
多御安全浏览器android版更新至1.7,改进加密协议
Ansible中的任务执行控制
@Transactional注解在类上还是接口上使用,哪种方式更好?
CDH6 Hue to open a "ASCII" codec can 't encode characters
正则表达式
软件测试之移动APP安全测试简析,北京第三方软件检测机构分享