ROS Arduino订阅/ cmd_vel

时间:2017-05-29 03:12:08

标签: c++ arduino ros

我正在使用ros_lib为arduino创建一个使用rosserial的串行节点。我想编写一个订阅/ cmd_vel主题的代码,并将geometry_msgs / Twist消息输出到串行端口(arduion mega,多个串行端口)。

提前致谢

#include <ros.h>
#include <std_msgs/String.h>
#include <std_msgs/Empty.h>
#include <geometry_msgs/Twist.h>

ros::NodeHandle  nh;

ros::Subscriber<geometry_msgs::Twist> sub("/cmd_vel", messageCb );

void setup()
{
  Serial1.begin(9600);
  nh.initNode();
  nh.subscribe(sub);
}

void loop()
{
  Serial1.println(sub.data);
  nh.spinOnce();
  delay(1);
}

1 个答案:

答案 0 :(得分:0)

您执行以下操作时代码不完整:

ros::Subscriber<geometry_msgs::Twist> sub("/cmd_vel", messageCb );

你告诉ROS-Master以下内容:

请关于该主题的消息&#34; / cmd_vel &#34;为此使用回调方法: messageCb ,但您在代码中没有回调方法....您缺少类似的内容:

void messageCb(const std_msgs::String::ConstPtr& msg)
{
    Serial1.println("The turtle said:");
    Serial1.println(msg->data.c_str());
}