编写一个简单的发布者和订阅者 (C++)

本文详细介绍了如何在ROS2环境中,使用C++创建一个简单的发布者-订阅者系统,涉及包创建、节点编写、依赖管理及CMake配置,展示了节点间通过主题传递字符串消息的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

背景

节点是通过 ROS 2进行通信的可执行进程。在本教程中,节点将通过主题以字符串消息的形式相互传递信息。这里使用的例子是一个简单的“说话者”和“倾听者”系统;一个节点发布数据,另一个节点订阅该主题,以便它可以接收该数据。

任务

1 创建包

打开一个新终端并获取 ROS 2 安装的源代码,以便ros2命令可以运行。

导航到上一教程ros2_ws中创建的目录。

回想一下,包应该在src目录中创建,而不是在工作区的根目录中。因此,导航到ros2_ws/src并运行包创建命令:

ros2 pkg create --build-type ament_cmake cpp_pubsub

cpp_pubsub您的终端将返回一条消息,验证您的包及其所有必需文件和文件夹的创建。

导航到ros2_ws/src/cpp_pubsub/src. 回想一下,这是任何 CMake 包中包含可执行文件的源文件所属的目录。

2 编写发布者节点

输入以下命令来下载示例 talker 代码:

Linux苹果系统视窗
wget -O publisher_member_function.cpp https://raw.githubusercontent.com/ros2/examples/galactic/rclcpp/topics/minimal_publisher/member_function.cpp

现在将有一个名为 的新文件publisher_member_function.cpp。使用您喜欢的文本编辑器打开文件。

#include <chrono>
#include <functional>
#include <memory>
#include <string>

#include "rclcpp/rclcpp.hpp"
#include "std_msgs/msg/string.hpp"

using namespace std::chrono_literals;

/* This example creates a subclass of Node and uses std::bind() to register a
* member function as a callback from the timer. */

class MinimalPublisher : public rclcpp::Node
{
  public:
    MinimalPublisher()
    : Node("minimal_publisher"), count_(0)
    {
      publisher_ = this->create_publisher<std_msgs::msg::String>("topic", 10);
      timer_ = this->create_wall_timer(
      500ms, std::bind(&MinimalPublisher::timer_callback, this</
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

莫回首�

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值