Laravel  
laravel
文档
数据库
架构
入门
php技术
    
Laravelphp
laravel / php / java / vue / mysql / linux / python / javascript / html / css / c++ / c#

ros c++

作者:网络神话—爷恋   发布日期:2025-03-14   浏览:150

// ROS C++ 示例代码:发布和订阅话题

#include "ros/ros.h"
#include "std_msgs/String.h"

// 回调函数,当接收到消息时会被调用
void chatterCallback(const std_msgs::String::ConstPtr& msg)
{
  ROS_INFO("I heard: [%s]", msg->data.c_str());
}

int main(int argc, char **argv)
{
  // 初始化ROS节点
  ros::init(argc, argv, "listener");

  // 创建一个节点句柄
  ros::NodeHandle n;

  // 订阅名为"chatter"的话题,回调函数为chatterCallback
  ros::Subscriber sub = n.subscribe("chatter", 1000, chatterCallback);

  // 发布名为"chatter"的话题
  ros::Publisher chatter_pub = n.advertise<std_msgs::String>("chatter", 1000);

  // 设置循环频率
  ros::Rate loop_rate(10);

  int count = 0;
  while (ros::ok())
  {
    // 创建并填充消息
    std_msgs::String msg;
    std::stringstream ss;
    ss << "hello world " << count;
    msg.data = ss.str();

    // 发布消息
    chatter_pub.publish(msg);

    // 调用所有回调函数
    ros::spinOnce();

    // 等待直到达到期望的循环频率
    loop_rate.sleep();
    ++count;
  }

  return 0;
}

解释说明:

  1. 初始化ROS节点ros::init用于初始化ROS节点,传入节点名称。
  2. 创建节点句柄ros::NodeHandle是与ROS系统交互的主要接口。
  3. 订阅话题ros::Subscriber用于订阅名为"chatter"的话题,并指定回调函数chatterCallback处理接收到的消息。
  4. 发布话题ros::Publisher用于发布名为"chatter"的话题。
  5. 设置循环频率ros::Rate用于控制循环频率,确保每秒执行10次。
  6. 回调函数:当接收到消息时,chatterCallback函数会被调用,并打印出接收到的消息内容。
  7. 主循环:在while循环中,创建并发布消息,同时调用ros::spinOnce()以处理所有回调函数。

这段代码展示了如何使用ROS C++编写一个简单的发布者和订阅者节点。

上一篇:devc++怎么运行

下一篇:c++队列queue

大家都在看

c++闭包

c++单引号和双引号的区别

c++ 注释

c++如何判断素数

c++ 获取系统时间

c++进制转换函数

c++ tcp

c++ gcd函数

c++ cli

c++ 树

Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3

Laravel 中文站