我正在使用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);
}
答案 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());
}