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
相关推荐
论文复现现场20 小时前
BEVFormer训练需要几张GPU?2张A100 80GB够不够,显存与云GPU成本分析
pytorch·自动驾驶·a100·bevformer
地平线开发者2 天前
QAT 实战:从 PyTorch 模型到 J6E 实板精度与延时验证
pytorch·算法·自动驾驶
AiNightVision2 天前
星光级 是什么?——星光级摄像机是什么?0.001Lux 照度门槛与选型真相
人工智能·算法·车载系统·自动驾驶·无人机·视频·智能硬件
Felaim3 天前
【World Model】Drive-WM条件编码-视角分解-扩散与规划全流程详解
自动驾驶·规划·world model·扩散·drive-wm
junwua5 天前
qnx hypervisor 的中文版
linux·运维·服务器·自动驾驶
ZhengEnCi7 天前
ROS2 为啥要拆成二三十个节点?一台小车背后的真实结构
人工智能·机器人·自动驾驶
爱分享的康康7 天前
初创车企自动驾驶数采设备选配指南:参数、接口与分阶段选型思路
经验分享·自动驾驶
Felaim7 天前
【VLA与模仿学习】SparseDrive论文精读:稀疏场景表示的端到端自动驾驶
自动驾驶·规划·端到端·sparsedrive·稀疏表征
loulanyue_7 天前
跳过L3直奔L4,还是L3是绕不过去的生死坎?:何小鹏激辩杨冬生,全球自动驾驶下半场的责任鸿沟与底盘重构——读2026世界智能网联汽车大会巅峰对话
自动驾驶·新能源汽车·智能网联汽车·科技前沿
地平线开发者11 天前
【玩转 征程6 算法工具链:PTQ 工具篇】hb_verifier
算法·自动驾驶