ZBLOG

使用c++写一个ros2发布数据的node

下面是一个使用C++编写的ROS2发布数据的示例代码:

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

class PublisherNode : public rclcpp::Node
{
public:
  PublisherNode() : Node("publisher_node")
  {
    publisher_ = this->create_publisher<std_msgs::msg::String>("topic_name", 10);
    timer_ = this->create_wall_timer(std::chrono::seconds(1), std::bind(&PublisherNode::publishData, this));
  }

private:
  void publishData()
  {
    auto message = std_msgs::msg::String();
    message.data = "Hello, ROS2!";
    publisher_->publish(message);
    RCLCPP_INFO(this->get_logger(), "Published: '%s'", message.data.c_str());
  }

  rclcpp::Publisher<std_msgs::msg::String>::SharedPtr publisher_;
  rclcpp::TimerBase::SharedPtr timer_;
};

int main(int argc, char **argv)
{
  rclcpp::init(argc, argv);
  auto node = std::make_shared<PublisherNode>();
  rclcpp::spin(node);
  rclcpp::shutdown();
  
  return 0;
}

在上述示例中,我们创建了一个继承自rclcpp::Node的自定义节点类PublisherNode。在构造函数中,我们创建了一个消息发布器(publisher),以及一个定时器(timer)用于定期发布数据。

publishData()函数中,我们创建了一个名为message的消息对象,并将需要发布的数据赋值给它。然后通过调用发布器的publish()函数来发布该消息,并使用日志记录已发布的内容。

main()函数中,我们初始化ROS2节点,创建自定义节点对象,并使用spin()函数来运行节点。最后,通过调用shutdown()函数来关闭ROS2节点的运行。

请注意,你需要根据实际需求修改示例代码中的话题名称和消息类型。同时,确保已正确安装并设置好ROS2环境。


内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=9608

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?