C++ 编写的 ROS 节点示例

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

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

  // 创建 ROS 句柄
  ros::NodeHandle nh;

  // 创建一个 publisher,用于发布类型为 std_msgs::String 的消息
  ros::Publisher pub = nh.advertise<std_msgs::String>("ok", 1000);

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

  int count = 0;
  while (ros::ok())
  {
    // 创建一个 std_msgs::String 类型的消息
    std_msgs::String msg;
    std::stringstream ss;
    ss << "Hello World " << count;
    msg.data = ss.str();

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

    // 打印日志
    ROS_INFO("%s", msg.data.c_str());

    // 等待一段时间
    loop_rate.sleep();
    ++count;
  }

  return 0;
}

这个程序使用了 ROS 的 C++ API,其中包括了 ros/ros.h 头文件和 ros:: 命名空间。我们首先初始化了 ROS 节点,并创建了一个名为 publisher_node 的节点句柄。

之后,我们通过 nh.advertise<std_msgs::String>("ok", 1000); 创建了一个 publisher,用于发布类型为 std_msgs::String 的消息到名为 ok 的 topic 上。1000 表示消息队列的长度。

接着,我们进入一个循环中,在每次循环中创建一个 std_msgs::String 类型的消息,并将其发布到 ok topic 上。同时,我们也打印了日志和计数器信息,以便在控制台上查看。

最后,我们通过调用 loop_rate.sleep() 函数等待一段时间,以控制程序的运行频率。

这只是一个简单的例子,但它可以帮助您开始学习如何使用 C++ 编写 ROS 节点并发布消息。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值