ROS 动态参数

客户端实现 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()
CLion是一种集成开发环境(Integrated Development Environment,IDE),用于开发C和C++项目。ROS(Robot Operating System)是一个用于构建机器人软件的开源框架。当在CLion中使用ROS时,可以通过配置参数来使CLion与ROS项目更好地集成。 在CLion中使用ROS,首先需要确保安装了ROS。然后,在创建项目时,选择"ROS Catkin"作为项目模板。CLion将会自动创建一个catkin构建系统,并为ROS项目提供常见的功能和目录结构。 接下来,我们需要在CLion中配置ROS参数。首先,打开CLion的设置菜单,找到"Build, Execution, Deployment"选项,然后选择"CMake"。在CMake Options中,添加以下参数: -DCATKIN_DEVEL_PREFIX=/path/to/catkin_ws/devel:将此路径设置为catkin工作空间(workspace)的devel目录的路径。这是catkin构建系统使用的路径。 -DCMAKE_INSTALL_PREFIX=/path/to/catkin_ws/install:将此路径设置为catkin工作空间的install目录的路径。该路径用于安装ROS软件包。 -DCMAKE_PREFIX_PATH=/path/to/catkin_ws/devel;/opt/ros/melodic:这个参数指定了编译时需要搜索的路径。其中,/path/to/catkin_ws/devel是catkin工作空间的devel目录,/opt/ros/melodic是ROS的安装目录。 这些参数的具体路径应根据自己的ROS安装和工作空间的设置进行修改。 配置完参数后,重新加载项目。CLion将使用配置的参数来构建ROS项目,并提供代码补全、语法高亮、智能重构等功能。此外,CLion还支持ROS的调试功能,可以设置断点、单步执行等操作。 总之,通过在CLion中配置ROS参数,我们可以更方便地开发和调试ROS项目,提高开发效率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

NqqGOGO

你的鼓励是我学习的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值