我正在使用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);
}
当您执行时,您的代码不完整:
ros::Subscriber<geometry_msgs::Twist> sub("/cmd_vel", messageCb );
您正在告诉ROS-MASTER以下内容:
请告知有关" /cmd_vel "的主题的信息在代码中。。。
void messageCb(const std_msgs::String::ConstPtr& msg)
{
Serial1.println("The turtle said:");
Serial1.println(msg->data.c_str());
}