【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

相关文章

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

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

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

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

关于Gateway路由匹配规则解读

《关于Gateway路由匹配规则解读》本文详细介绍了SpringCloudGateway的路由匹配规则,包括基本概念、常用属性、实际应用以及注意事项,路由匹配规则决定了请求如何被转发到目标服务,是Ga... 目录Gateway路由匹配规则一、基本概念二、常用属性三、实际应用四、注意事项总结Gateway路由

Redis 多规则限流和防重复提交方案实现小结

《Redis多规则限流和防重复提交方案实现小结》本文主要介绍了Redis多规则限流和防重复提交方案实现小结,包括使用String结构和Zset结构来记录用户IP的访问次数,具有一定的参考价值,感兴趣... 目录一:使用 String 结构记录固定时间段内某用户 IP 访问某接口的次数二:使用 Zset 进行

利用Python编写一个简单的聊天机器人

《利用Python编写一个简单的聊天机器人》这篇文章主要为大家详细介绍了如何利用Python编写一个简单的聊天机器人,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 使用 python 编写一个简单的聊天机器人可以从最基础的逻辑开始,然后逐步加入更复杂的功能。这里我们将先实现一个简单的

使用PyQt5编写一个简单的取色器

《使用PyQt5编写一个简单的取色器》:本文主要介绍PyQt5搭建的一个取色器,一共写了两款应用,一款使用快捷键捕获鼠标附近图像的RGB和16进制颜色编码,一款跟随鼠标刷新图像的RGB和16... 目录取色器1取色器2PyQt5搭建的一个取色器,一共写了两款应用,一款使用快捷键捕获鼠标附近图像的RGB和16

使用Java编写一个文件批量重命名工具

《使用Java编写一个文件批量重命名工具》这篇文章主要为大家详细介绍了如何使用Java编写一个文件批量重命名工具,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录背景处理1. 文件夹检查与遍历2. 批量重命名3. 输出配置代码片段完整代码背景在开发移动应用时,UI设计通常会提供不

基于UE5和ROS2的激光雷达+深度RGBD相机小车的仿真指南(五):Blender锥桶建模

前言 本系列教程旨在使用UE5配置一个具备激光雷达+深度摄像机的仿真小车,并使用通过跨平台的方式进行ROS2和UE5仿真的通讯,达到小车自主导航的目的。本教程默认有ROS2导航及其gazebo仿真相关方面基础,Nav2相关的学习教程可以参考本人的其他博客Nav2代价地图实现和原理–Nav2源码解读之CostMap2D(上)-CSDN博客往期教程: 第一期:基于UE5和ROS2的激光雷达+深度RG

如何编写Linux PCIe设备驱动器 之二

如何编写Linux PCIe设备驱动器 之二 功能(capability)集功能(capability)APIs通过pci_bus_read_config完成功能存取功能APIs参数pos常量值PCI功能结构 PCI功能IDMSI功能电源功率管理功能 功能(capability)集 功能(capability)APIs int pcie_capability_read_wo

Adblock Plus官方规则Easylist China说明与反馈贴(2015.12.15)

-------------------------------特别说明--------------------------------------- 视频广告问题:因Adblock Plus的局限,存在以下现象,优酷、搜狐、17173黑屏并倒数;乐视、爱奇艺播放广告。因为这些视频网站的Flash播放器被植入了检测代码,而Adblock Plus无法修改播放器。 如需同时使用ads