2017-05-29 193 views
0

我正在使用ros_lib爲arduino創建使用rosserial的串行節點。我想編寫一個訂閱/ cmd_vel主題的代碼,並將geometry_msgs/Twist消息輸出到串行端口(arduion mega,多個串行端口)。ROS Arduino訂閱/ cmd_vel

在此先感謝

#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

歡迎SO。現在你的問題太廣泛而且沒有特定性,這使得人們不太可能回答它。請使用編輯功能來解釋您已經嘗試過的更多內容以及您在哪裏遇到問題。另請參閱https://stackoverflow.com/help/how-to-ask。 – luator

回答

0

你的代碼是不完整的,當你這樣做:

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

你說的是ROS-掌握以下:

請informe有關封郵件onthe主題爲「/cmd_vel」併爲此使用回調方法:messageCb但你必須在代碼中沒有回調方法....你失去了一些東西,如:

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