ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange |
1 | initial version |
Here is an simple example:
#if (ARDUINO >= 100)
#include <Arduino.h>
#else
#include <WProgram.h>
#endif
#include <Servo.h>
#include <ros.h>
#include <std_msgs/UInt16.h>
ros::NodeHandle nh;
Servo servo1;
Servo servo2;
void servo1_cb( const std_msgs::UInt16& cmd_msg){
servo1.write(cmd_msg.data); //set servo angle, should be from 0-180
digitalWrite(13, HIGH-digitalRead(13)); //toggle led
}
void servo2_cb( const std_msgs::UInt16& cmd_msg){
servo2.write(cmd_msg.data); //set servo angle, should be from 0-180
//digitalWrite(13, HIGH-digitalRead(13)); //toggle led
}
ros::Subscriber<std_msgs::UInt16> sub1("servo1", servo1_cb);
ros::Subscriber<std_msgs::UInt16> sub2("servo2", servo2_cb);
void setup(){
pinMode(13, OUTPUT);
nh.initNode();
nh.subscribe(sub1);
nh.subscribe(sub2);
servo1.attach(9); //attach it to pin 9
servo2.attach(10);//attach it to pin10
}
void loop(){
nh.spinOnce();
delay(20);
}
I tried with UInt16MultipleArray but can not make it works. Hope some one can come up with more elegant solution.
2 | No.2 Revision |
Here is an simple example:
#if (ARDUINO >= 100)
#include <Arduino.h>
#else
#include <WProgram.h>
#endif
#include <Servo.h>
#include <ros.h>
#include <std_msgs/UInt16.h>
ros::NodeHandle nh;
Servo servo1;
Servo servo2;
void servo1_cb( const std_msgs::UInt16& cmd_msg){
servo1.write(cmd_msg.data); //set servo angle, should be from 0-180
digitalWrite(13, HIGH-digitalRead(13)); //toggle led
}
void servo2_cb( const std_msgs::UInt16& cmd_msg){
servo2.write(cmd_msg.data); //set servo angle, should be from 0-180
//digitalWrite(13, HIGH-digitalRead(13)); //toggle led
}
ros::Subscriber<std_msgs::UInt16> sub1("servo1", servo1_cb);
ros::Subscriber<std_msgs::UInt16> sub2("servo2", servo2_cb);
void setup(){
pinMode(13, OUTPUT);
nh.initNode();
nh.subscribe(sub1);
nh.subscribe(sub2);
servo1.attach(9); //attach it to pin 9
servo2.attach(10);//attach it to pin10
}
void loop(){
nh.spinOnce();
delay(20);
}
I tried with UInt16MultipleArray UInt16MultiArray but can not make it works. Hope some one can come up with more elegant solution.
3 | No.3 Revision |
Here is an simple example:
#if (ARDUINO >= 100)
#include <Arduino.h>
#else
#include <WProgram.h>
#endif
#include <Servo.h>
#include <ros.h>
#include <std_msgs/UInt16.h>
ros::NodeHandle nh;
Servo servo1;
Servo servo2;
void servo1_cb( const std_msgs::UInt16& cmd_msg){
servo1.write(cmd_msg.data); //set servo angle, should be from 0-180
digitalWrite(13, HIGH-digitalRead(13)); //toggle led
}
void servo2_cb( const std_msgs::UInt16& cmd_msg){
servo2.write(cmd_msg.data); //set servo angle, should be from 0-180
//digitalWrite(13, HIGH-digitalRead(13)); //toggle led
}
ros::Subscriber<std_msgs::UInt16> sub1("servo1", servo1_cb);
ros::Subscriber<std_msgs::UInt16> sub2("servo2", servo2_cb);
void setup(){
pinMode(13, OUTPUT);
nh.initNode();
nh.subscribe(sub1);
nh.subscribe(sub2);
servo1.attach(9); //attach it to pin 9
servo2.attach(10);//attach it to pin10
}
void loop(){
nh.spinOnce();
delay(20);
}
I tried with UInt16MultiArray but can not make it works.
Hope some one can come up with more elegant solution.publisher:
rostopic pub servo1 std_msgs/UInt16 <angle1> & rostopic pub servo2 std_msgs/UInt16 <angle2>
4 | No.4 Revision |
Here is an simple example:
#if (ARDUINO >= 100)
#include <Arduino.h>
#else
#include <WProgram.h>
#endif
#include <Servo.h>
#include <ros.h>
#include <std_msgs/UInt16.h>
ros::NodeHandle nh;
Servo servo1;
Servo servo2;
void servo1_cb( const std_msgs::UInt16& cmd_msg){
servo1.write(cmd_msg.data); //set servo angle, should be from 0-180
digitalWrite(13, HIGH-digitalRead(13)); //toggle led
}
void servo2_cb( const std_msgs::UInt16& cmd_msg){
servo2.write(cmd_msg.data); //set servo angle, should be from 0-180
//digitalWrite(13, HIGH-digitalRead(13)); //toggle led
}
ros::Subscriber<std_msgs::UInt16> sub1("servo1", servo1_cb);
ros::Subscriber<std_msgs::UInt16> sub2("servo2", servo2_cb);
void setup(){
pinMode(13, OUTPUT);
nh.initNode();
nh.subscribe(sub1);
nh.subscribe(sub2);
servo1.attach(9); //attach it to pin 9
servo2.attach(10);//attach it to pin10
}
void loop(){
nh.spinOnce();
delay(20);
}
publisher:
publisher:
rostopic pub servo1 std_msgs/UInt16 <angle1> & rostopic pub servo2 std_msgs/UInt16 <angle2><angle2>