当前位置:网站首页>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()
边栏推荐
猜你喜欢

thinkphp漏洞总结
![[头条]笔试题——最小栈](/img/67/08f2be8afc780e3848371a1b5e04db.png)
[头条]笔试题——最小栈

Use Jenkins for continuous integration, this knowledge point must be mastered

GetHashCode与Equals

2022 6th Strong Net Cup Part WP

使用Ganache、web3.js和remix在私有链上部署并调用合约

一款简洁的文件传输工具

ICLR 2022 Best Paper: Partial Label Learning Based on Contrastive Disambiguation

How to reinstall Win11?One-click method to reinstall Win11

一个有些意思的项目--文件夹对比工具(一)
随机推荐
Cash Ⅱ LeetCode_518_ change
How to get the best power efficiency in Windows 11?
【Leetcode】2360. Longest Cycle in a Graph
Flink Yarn Per Job - Yarn应用
【加密周报】经济衰退在加息气氛中蔓延 美联储“放手一搏”?盘点上周加密市场发生的重大事件
尚硅谷MySQL学习笔记
工作5年,测试用例都设计不好?来看看大厂的用例设计总结
Work for 5 years, test case design is bad?To look at the big case design summary
@Scheduled注解详解
[Three sons] C language implements simple three sons
Deliver cloud-native microservices applications with Zadig
Excel文件读写(创建与解析)
GetHashCode方法与=
OpenCV DNN blogFromImage()详解
辛普森悖论
学习笔记:机器学习之回归
如何进行数据库备份
经典文献阅读之--DLO
多御安全浏览器android版更新至1.7,改进加密协议
Thinkphp 5.0.24变量覆盖漏洞导致RCE分析