arduino
选择File->Examples->ros_lib->Blink,就可以打开一个示例程序,代码如下:
/* * rosserial Subscriber Example * Blinks an LED on callback */ #include <ros.h> #include <std_msgs/Empty.h> ros::NodeHandle nh; void messageCb( const std_msgs::Empty& toggle_msg){ digitalWrite(13, HIGH-digitalRead(13)); // blink the led } ros::Subscriber<std_msgs::Empty> sub("toggle_led", &messageCb ); void setup() { pinMode(13, OUTPUT); nh.initNode(); nh.subscribe(sub); } void loop() { nh.spinOnce(); delay(1); }
#include <ros.h> #include <std_msgs/Empty.h>
ros::NodeHandle nh;
void messageCb( const std_msgs::Empty& toggle_msg){ digitalWrite(13, HIGH-digitalRead(13)); // blink the led }
在回调函数中,我们可以引用toggle_msg,但是因为它是空的,所以就没有必要了。当收到一次消息时,我们让aduino板子上的LED闪烁一下。
ros::Subscriber<std_msgs::Empty> sub("toggle_led", &messageCb );
void setup() { pinMode(13, OUTPUT); nh.initNode(); nh.subscribe(sub); }
void loop() { nh.spinOnce(); delay(1); }
在arduino IDE中点击upload按钮,运行程序。接着运行roscore:
roscore
rosrun rosserial_python serial_node.py /dev/ttyACM0
rostopic pub toggle_led std_msgs/Empty --once