【ROS2】publisher和subscriber和延时编写规则

2023-10-11 19:30

本文主要是介绍【ROS2】publisher和subscriber和延时编写规则,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1、publisher

节点名 auto node = rclcpp::Node::make_shared(“publisher”);
消息类型和话题 auto pub = node->create_publisher<std_msgs::msg::String>(“/pub_sub”, 10);
发送消息 pub->publish(myMessage); //注意用->

#include "rclcpp/rclcpp.hpp"
#include "std_msgs/msg/string.hpp"using namespace std::chrono_literals;int main(int argc, char * argv[])
{rclcpp::init(argc, argv);auto node = rclcpp::Node::make_shared("publisher");auto pub = node->create_publisher<std_msgs::msg::String>("/pub_sub", 10);std_msgs::msg::String myMessage;size_t counter{0};rclcpp::WallRate loop_rate(500ms);while (rclcpp::ok()){myMessage.data = "Hello, ros2 world! " + std::to_string(counter++);RCLCPP_INFO(node->get_logger(), "Publishing: '%s'", myMessage.data.c_str());try{pub->publish(myMessage);rclcpp::spin_some(node);} catch (const rclcpp::exceptions::RCLError & e){RCLCPP_ERROR(node->get_logger(), "Errore type : %s", e.what());}loop_rate.sleep();}rclcpp::shutdown();return 0;
}

在这里插入图片描述

2、subscriber

节点名 node = std::make_sharedrclcpp::Node(“subscriber”);
消息类型和话题 auto sub = node->create_subscription<std_msgs::msg::String>(“/pub_sub”, 10, TopicCallback);
回调函数 void TopicCallback(const std_msgs::msg::String::SharedPtr msg) //注意用::SharedPtr
回调函数消息 msg->data //注意用->

#include "rclcpp/rclcpp.hpp"
#include "std_msgs/msg/string.hpp"std::shared_ptr<rclcpp::Node> node = nullptr;void TopicCallback(const std_msgs::msg::String::SharedPtr msg)
{RCLCPP_INFO(node->get_logger(), "I heard the message : '%s'", msg->data.c_str());
}int main(int argc, char *argv[])
{rclcpp::init(argc, argv);node = std::make_shared<rclcpp::Node>("subscriber");auto sub = node->create_subscription<std_msgs::msg::String>("/pub_sub", 10, TopicCallback);rclcpp::spin(node);rclcpp::shutdown();return 0;
}

在这里插入图片描述

3、rqt_graph

在这里插入图片描述

4、延时sleep

  rclcpp::WallRate loop_rate(500ms);	//1s=1000ms,1ms=1000um,1um=1000nmwhile (rclcpp::ok()){......loop_rate.sleep();}

这篇关于【ROS2】publisher和subscriber和延时编写规则的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/190337

相关文章

C++作用域和标识符查找规则详解

《C++作用域和标识符查找规则详解》在C++中,作用域(Scope)和标识符查找(IdentifierLookup)是理解代码行为的重要概念,本文将详细介绍这些规则,并通过实例来说明它们的工作原理,需... 目录作用域标识符查找规则1. 普通查找(Ordinary Lookup)2. 限定查找(Qualif

python编写朋克风格的天气查询程序

《python编写朋克风格的天气查询程序》这篇文章主要为大家详细介绍了一个基于Python的桌面应用程序,使用了tkinter库来创建图形用户界面并通过requests库调用Open-MeteoAPI... 目录工具介绍工具使用说明python脚本内容如何运行脚本工具介绍这个天气查询工具是一个基于 Pyt

Nginx Location映射规则总结归纳与最佳实践

《NginxLocation映射规则总结归纳与最佳实践》Nginx的location指令是配置请求路由的核心机制,其匹配规则直接影响请求的处理流程,下面给大家介绍NginxLocation映射规则... 目录一、Location匹配规则与优先级1. 匹配模式2. 优先级顺序3. 匹配示例二、Proxy_pa

MyBatis编写嵌套子查询的动态SQL实践详解

《MyBatis编写嵌套子查询的动态SQL实践详解》在Java生态中,MyBatis作为一款优秀的ORM框架,广泛应用于数据库操作,本文将深入探讨如何在MyBatis中编写嵌套子查询的动态SQL,并结... 目录一、Myhttp://www.chinasem.cnBATis动态SQL的核心优势1. 灵活性与可

Mybatis嵌套子查询动态SQL编写实践

《Mybatis嵌套子查询动态SQL编写实践》:本文主要介绍Mybatis嵌套子查询动态SQL编写方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录前言一、实体类1、主类2、子类二、Mapper三、XML四、详解总结前言MyBATis的xml文件编写动态SQL

Nginx路由匹配规则及优先级详解

《Nginx路由匹配规则及优先级详解》Nginx作为一个高性能的Web服务器和反向代理服务器,广泛用于负载均衡、请求转发等场景,在配置Nginx时,路由匹配规则是非常重要的概念,本文将详细介绍Ngin... 目录引言一、 Nginx的路由匹配规则概述二、 Nginx的路由匹配规则类型2.1 精确匹配(=)2

使用Java编写一个字符脱敏工具类

《使用Java编写一个字符脱敏工具类》这篇文章主要为大家详细介绍了如何使用Java编写一个字符脱敏工具类,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1、字符脱敏工具类2、测试工具类3、测试结果1、字符脱敏工具类import lombok.extern.slf4j.Slf4j

Nginx location匹配模式与规则详解

《Nginxlocation匹配模式与规则详解》:本文主要介绍Nginxlocation匹配模式与规则,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、环境二、匹配模式1. 精准模式2. 前缀模式(不继续匹配正则)3. 前缀模式(继续匹配正则)4. 正则模式(大

详解nginx 中location和 proxy_pass的匹配规则

《详解nginx中location和proxy_pass的匹配规则》location是Nginx中用来匹配客户端请求URI的指令,决定如何处理特定路径的请求,它定义了请求的路由规则,后续的配置(如... 目录location 的作用语法示例:location /www.chinasem.cntestproxy

基于.NET编写工具类解决JSON乱码问题

《基于.NET编写工具类解决JSON乱码问题》在开发过程中,我们经常会遇到JSON数据处理的问题,尤其是在数据传输和解析过程中,很容易出现编码错误导致的乱码问题,下面我们就来编写一个.NET工具类来解... 目录问题背景核心原理工具类实现使用示例总结在开发过程中,我们经常会遇到jsON数据处理的问题,尤其是