ROS2 “通信方式” 参数服务器

为什么加"通信方式"引号,因为我觉得他就不算通信,最多最多就是一个动态加载参数方式

所以ros通信方式就三种,topic service action 别犟,犟就是你对!

常用的 param参数方法如下:

declare_parameter 声明和初始化一个参数

describe_parameter(name) 通过参数名字获取参数的描述

get_parameter 通过参数名字获取一个参数

set_parameter 设置参数的值

1、代码创建

paramter_test.cpp

#include <chrono>
#include "rclcpp/rclcpp.hpp"

class ParametersNode : public rclcpp::Node
{
public:
    // 构造函数,有一个参数为节点名称
    explicit ParametersNode(std::string name) : Node(name)
    {
        RCLCPP_INFO(this->get_logger(), "node start:%s.", name.c_str());
        this->declare_parameter("rcl_log_level", 0);     /*声明参数*/
        this->get_parameter("rcl_log_level", log_level); /*获取参数*/
        /*设置日志级别*/
        this->get_logger().set_level((rclcpp::Logger::Level)log_level);
        using namespace std::literals::chrono_literals;
        timer_ = this->create_wall_timer(500ms, std::bind(&ParametersNode::timer_callback, this));
    }

private:
    int                          log_level;
    rclcpp::TimerBase::SharedPtr timer_;

    void timer_callback()
    {
        this->get_parameter("rcl_log_level", log_level); /*获取参数*/
        /*设置日志级别*/
        this->get_logger().set_level((rclcpp::Logger::Level)log_level);
        std::cout << "*****************" << std::endl;
        RCLCPP_DEBUG(this->get_logger(), "DEBUG LOG!");
        RCLCPP_INFO(this->get_logger(), "INFO LOG!");
        RCLCPP_WARN(this->get_logger(), "WARN LOG!");
        RCLCPP_ERROR(this->get_logger(), "ERROR LOG!");
        RCLCPP_FATAL(this->get_logger(), "FATAL LOG!");
    }
};

int main(int argc, char** argv)
{
    rclcpp::init(argc, argv);
    /*创建对应节点的共享指针对象*/
    auto node = std::make_shared<ParametersNode>("parameter_node");
    /* 运行节点,并检测退出信号*/
    rclcpp::spin(node);
    rclcpp::shutdown();
    return 0;
}

2、测试

正常启动:

ros2 run param_moudle paramter_node

启动前更新参数:

ros2 run param_moudle paramter_node --ros-args -p rcl_log_level:=10

运行中更改参数:

ros2 param set /parameter_node rcl_log_level 50
相关推荐
香橙薄荷心1 小时前
人工智能之自动驾驶技术体系
人工智能·机器学习·自动驾驶
楼台的春风11 小时前
【MCU驱动开发概述】
c语言·驱动开发·单片机·嵌入式硬件·mcu·自动驾驶·嵌入式
青衫弦语2 天前
【论文精读】VLM-AD:通过视觉-语言模型监督实现端到端自动驾驶
人工智能·深度学习·语言模型·自然语言处理·自动驾驶
maxruan2 天前
自动驾驶之BEV概述
人工智能·机器学习·自动驾驶·bev
LVXIANGAN2 天前
汽车自动驾驶辅助L2++是什么?
人工智能·自动驾驶·汽车
lqqjuly2 天前
人工智能驱动的自动驾驶:技术解析与发展趋势
人工智能·机器学习·自动驾驶
深蓝学院4 天前
LLM增强的RLHF框架,用多模态人类反馈提升自动驾驶安全性!
人工智能·机器学习·自动驾驶
青衫弦语5 天前
统一的多摄像头3D感知框架!PETRv2论文精读
图像处理·人工智能·深度学习·目标检测·自动驾驶
讨驾还驾6 天前
问界M8细节曝光,L3自动驾驶有了!
人工智能·自动驾驶·问界m8
ywfwyht6 天前
根据deepseek模型微调训练自动驾驶模型及数据集的思路
人工智能·机器学习·自动驾驶