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
相关推荐
地平线开发者2 天前
ReID/OSNet 算法模型量化转换实践
算法·自动驾驶
地平线开发者2 天前
开发者说|EmbodiedGen:为具身智能打造可交互3D世界生成引擎
算法·自动驾驶
Coovally AI模型快速验证2 天前
YOLO、DarkNet和深度学习如何让自动驾驶看得清?
深度学习·算法·yolo·cnn·自动驾驶·transformer·无人机
Swaggy T2 天前
自动驾驶轨迹规划算法——Apollo EM Planner
人工智能·算法·自动驾驶
Monkey PilotX2 天前
机器人“ChatGPT 时刻”倒计时
人工智能·机器学习·计算机视觉·自动驾驶
luoganttcc2 天前
L4 级别自动驾驶 硬件架构设计
人工智能·自动驾驶·硬件架构
星创易联4 天前
车载网关助力无人配送车联网解决方案
车载系统·自动驾驶·车载以太网
地平线开发者5 天前
征程 6 | 自定义查表算子实现量化部署
算法·自动驾驶
NewCarRen5 天前
自动驾驶中安全相关机器学习功能的可靠性定义方法
安全·机器学习·自动驾驶