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
相关推荐
江瀚视野10 小时前
汽车价格战全面熄火了?不卷价格该卷什么?
人工智能·自动驾驶
Juicedata15 小时前
九识智能:基于 JuiceFS 的自动驾驶多云亿级文件存储
人工智能·机器学习·自动驾驶
yzx99101320 小时前
低空物流自动驾驶机器人
人工智能·机器人·自动驾驶
Godspeed Zhao2 天前
自动驾驶中的传感器技术53——Radar(14)
人工智能·机器学习·自动驾驶
地平线开发者2 天前
模型插入 NV12 预处理节点精度问题排查流程
算法·自动驾驶
ywfwyht3 天前
VLA自动驾驶方案的设计及实现
人工智能·自动驾驶
Ada's3 天前
深度学习在自动驾驶上应用(二)
人工智能·深度学习·自动驾驶
一碗白开水一4 天前
【第29话:路径规划】自动驾驶启发式搜索算法(A星搜索算法( A* 搜索算法))详解及代码举例说明
人工智能·算法·机器学习·计算机视觉·自动驾驶·unix
慧都小项4 天前
Parasoft软件测试解决方案助力Renovo汽车ADAS开发安全与合规
自动驾驶·汽车软件·parasoft·renovo
韩曙亮5 天前
【自动驾驶】自动驾驶概述 ⑤ ( 自动驾驶硬件概述 | 车载计算单元 IPC | 车辆线控系统 )
自动驾驶·ipc·无人驾驶·域控制器·线控系统·车载计算单元