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
相关推荐
gaoshengdainzi1 天前
镜片防雾性能测试仪在自动驾驶与无人机领域的创新应用
人工智能·自动驾驶·无人机·镜片防雾性能测试仪
向上的车轮1 天前
NOA是什么?国内自动驾驶技术的现状是怎么样的?
人工智能·机器学习·自动驾驶
深蓝学院2 天前
闭环SOTA!北航DiffAD:基于扩散模型实现端到端自动驾驶「多任务闭环统一」
人工智能·机器学习·自动驾驶
智能汽车人3 天前
自动驾驶---学术论文的常客:nuScenes数据集的使用
人工智能·机器学习·自动驾驶
达柳斯·绍达华·宁3 天前
自动驾驶04:点云预处理03
人工智能·机器学习·自动驾驶
地平线开发者4 天前
【征程 6】工具链 VP 示例为什么能运行
算法·自动驾驶
寻丶幽风4 天前
论文阅读笔记——ReconDreamer
论文阅读·笔记·自动驾驶·3dgs·世界模型·闭环仿真
GIS数据转换器5 天前
在机器人和无人机时代,测绘人的出路在哪里?
大数据·人工智能·信息可视化·机器人·自动驾驶·汽车·无人机
地平线开发者7 天前
精度调优|conv+depth2space 替换 resize 指导
算法·自动驾驶
智能汽车人7 天前
自动驾驶---打造自动驾驶系统之参考线平滑(四)
人工智能·自动驾驶·汽车