ROS2用c++开发参数节点通信

news2024/11/16 19:49:25

1.创建节点

cd chapt4/chapt4_ws/

ros2 pkg create example_parameters_rclcpp --build-type ament_cmake --dependencies rclcpp --destination-directory src --node-name parameters_basic --maintainer-name "joe" --maintainer-email "1027038527@qq.com"

2.新增parameters_basic.cpp

#include <chrono>
#include "rclcpp/rclcpp.hpp"
/*
    # declare_parameter            声明和初始化一个参数
    # describe_parameter(name)  通过参数名字获取参数的描述
    # get_parameter                通过参数名字获取一个参数
    # set_parameter                设置参数的值
*/
class ParametersBasicNode : public rclcpp::Node {
 public:
  // 构造函数,有一个参数为节点名称
  explicit ParametersBasicNode(std::string name) : Node(name) {
    RCLCPP_INFO(this->get_logger(), "节点已启动:%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(&ParametersBasicNode::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级别的日志,我被打印出来了!");
    RCLCPP_INFO(this->get_logger(), "我是INFO级别的日志,我被打印出来了!");
    RCLCPP_WARN(this->get_logger(), "我是WARN级别的日志,我被打印出来了!");
    RCLCPP_ERROR(this->get_logger(), "我是ERROR级别的日志,我被打印出来了!");
    RCLCPP_FATAL(this->get_logger(), "我是FATAL级别的日志,我被打印出来了!");
  }
};

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

3.编译、运行节点

colcon build  --packages-select example_parameters_rclcpp


source install/setup.bash

ros2 run example_parameters_rclcpp parameters_basic

ros2 run example_parameters_rclcpp parameters_basic --ros-args -p rcl_log_level:=10

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1883177.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Spring Security 认证流程

Spring Scurity是spring生态下用于认证和授权的框架&#xff0c;具有高度的灵活性和可扩展行&#xff0c;本节主要对Spring Security的认证过程中进行概括性的介绍&#xff0c;主要介绍在该过程中&#xff0c;会涉及到哪些组件以及每个组件所承担的职责&#xff0c;希望大家可以…

数据驱动测试DDT之Selenium读取Excel文件

&#xff08;1&#xff09;安装xlrd pip3 install xlrd &#xff08;2&#xff09;示例脚本 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 ​import pytest import xlrd def get_data(): filename"F:\\学习\\自动化测试\\selenium自动化…

OpenStack开源虚拟化平台(一)

目录 一、OpenStack背景介绍&#xff08;一&#xff09;OpenStack是什么&#xff08;二&#xff09;OpenStack的主要服务 二、计算服务Nova&#xff08;一&#xff09;Nova组件介绍&#xff08;二&#xff09;Libvirt简介&#xff08;三&#xff09;Nova中的RabbitMQ解析 OpenS…

简单配置VScode轻量级C++竞赛环境

1. 安装拓展 Chinese是中文&#xff0c;需要重启才可以运行&#xff0c;C/C拓展只是进行语法代码提示&#xff0c;不需要进行任何配置修改&#xff0c;默认即可。 2. 创建文件 C是工作文件夹&#xff0c;.vscode是配置文件夹&#xff0c;里面建一个tasks.json文件&#xff0c;…

Canvas 指纹:它是什么以及如何绕过它

什么是 Canvas 指纹&#xff1f; 网络浏览器在执行其功能时会收集各种信息。当这些信息中的某些被用于识别网站用户时&#xff0c;这被称为浏览器指纹。 浏览器指纹包括以下有关浏览器的信息&#xff1a;设备型号、浏览器类型和版本、操作系统 (OS)、屏幕分辨率、时区、p0p 文…

PC系统安装引导:2、进入维护环境

目录 &#x1f345;点击这里查看所有博文 闲来无事&#xff0c;记录下自己以往多年总结出的一套系统维护的方法。以供有需要的人学习使用。例如&#xff0c;系统崩溃了无法启动怎么办&#xff0c;如何重做系统&#xff0c;如何安装双系统&#xff0c;如何引导多系统&#xff0…

告别地推烦恼,Xinstall智能推广系统,让APP推广更高效!

在移动互联网时代&#xff0c;APP的推广与运营成为了每个开发者必须面对的问题。地推作为一种传统的推广方式&#xff0c;虽然有着其独特的优势&#xff0c;但也面临着诸多挑战。如何在地推中脱颖而出&#xff0c;实现高效推广&#xff1f;今天&#xff0c;我们就来聊聊Xinstal…

5个让页面“活“起来的CSS特效

大家好,欢迎来到程序视点。 随着越来越多的浏览器对CSS3支持的不断完善&#xff0c;设计师和开发者们有了更多的选择去实现一些炫酷特效。这里整理了最近项目中使用到的5个比较实用的CSS3动画演示。让我们一起看看CSS3是如何让页面秀起来的。 3D倒影翻转 超炫酷3D倒影翻转动…

某安全公司DDoS攻击防御2024年6月报告

引言&#xff1a; 在2024年6月&#xff0c;网络空间的安全挑战汹涌澎湃。分布式拒绝服务&#xff08;DDoS&#xff09;攻击频发&#xff0c;针对云服务、金融科技及在线教育平台的精密打击凸显出当前网络威胁环境的严峻性。 某安全公司作为网络安全防护的中坚力量&#xff0c…

chunkers/maxent_ne_chunker/english_ace_multiclass.pickle 找不到

首先在这个nltk_data &#xff1a; NLTK Data官方下的数据集&#xff0c;找不到english_ace_multiclass.pic 说明缺少这个文件 : 那么在 nlp/resources/chunkers/maxent_ne_chunker/english_ace_multiclass.pickle at master teropa/nlp (github.com) 下载那两个文件 : 然…

C++专业面试真题(1)学习

常用Linux命令 ls&#xff1a;列出当前目录内容 ls -l&#xff1a;详细信息列表 ls -a&#xff1a;包括隐藏文件 cd&#xff1a;更改目录 pwd&#xff1a;显示当前目录路径 mkdir&#xff1a;创建新目录 rmdir&#xff1a;删除空目录 rm&#xff1a;删除文件或目录 rm -…

拒绝胶感,清纯甜美邻家女孩!逼真!逼真!SD1.5 更适合初恋般的国产真人大模型—— CNrealisticMIXV40

老铁说看惯了AI艺术大片&#xff0c;想寻找适合生成邻家女孩青涩照片的模型。老徐今天应邀&#xff0c;针对邻家女孩青涩风格进行下尝试。老徐此前推荐过一款支持各种真实&#xff0c;摄影&#xff0c;写实风格模型的合体模型——赛博Dream | CNrealistic_MIX_V40无损修剪版。 …

Open3D 点云快速全局配准FGR算法(粗配准)

目录 一、概述 1.1原理和步骤 1.2关键技术和优势 1.3应用场景 二、代码实现 2.1 关键代码 2.1.1.函数&#xff1a;execute_fast_global_registration 2.1.2调用registration_fgr_based_on_feature_matching函数 2.2完整代码 三、实现效果 3.1原始点云 3.2粗配准后点…

03 _ 类型基础(2):动态类型与静态类型

静态类型语言与动态类型语言 通俗定义 静态类型语言&#xff1a;在编译 阶段确定所有变量的类型 动态类型语言&#xff1a;在执行阶段确定所有变量的类型 Javascript 与 C 对比 静态类型与动态类型对比 其他定义 强类型语言&#xff1a;不允许程序在发生错误后继续执行 语…

【小贪】项目实战——Zero-shot根据文字提示分割出图片目标掩码

目标描述 给定RGB视频或图片&#xff0c;目标是分割出图像中的指定目标掩码。我们需要复现两个Zero-shot的开源项目&#xff0c;分别为IDEA研究院的GroundingDINO和Facebook的SAM。首先使用目标检测方法GroundingDINO&#xff0c;输入想检测目标的文字提示&#xff0c;可以获得…

primetime中cell和net的OCV

文章目录 前言一、Cell OCV1. POCV coefficient file2. POCV Slew-Load Table in Liberty Variation Format&#xff08;LVF lib&#xff09; 二、Net OCV三、如何check OCV是否已加上&#xff1f;总结 前言 在生产中&#xff0c;外界环境的各种变化&#xff0c;比如PVT&#…

grpc学习golang版( 六、服务器流式传输 )

系列文章目录 第一章 grpc基本概念与安装 第二章 grpc入门示例 第三章 proto文件数据类型 第四章 多服务示例 第五章 多proto文件示例 第六章 服务器流式传输 第七章 客户端流式传输 第八章 双向流示例 文章目录 一、前言二、定义proto文件三、拷贝任意文件进项目四、编写serve…

vscode搭建suricata调试环境

一、环境 windows10 wsl2 $ lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 20.04.2 LTS Release: 20.04 Codename: focal二、编译 2.1 下载源码 wget https://www.openinfosecfoundation.org/download/suri…

为什么越来越多的人选择做债务重组?

说到债务重组&#xff0c;很多人可能一头雾水。但简单来说&#xff0c;就是帮你优化债务结构&#xff0c;减轻还款压力。 为什么现在这么多人会选择做债务重组&#xff1f; 保护工作和名声&#xff1a;有些在好单位上班的人&#xff0c;怕债务问题影响工作&#xff0c;不想让单…

解决Python用xpath爬取不到数据的一个思路

前言 最近在学习Python爬虫的知识&#xff0c;既然眼睛会了难免忍不住要实践一把。 不废话直接上主题 代码不复杂&#xff0c;简单的例子奉上&#xff1a; import requests from lxml import etreecookie 浏览器F12网络请求标头里有 user_agent 浏览器F12网络请求标头里有…