ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange |
1 | initial version |
@ahendrix
#include <ros.h>
#include <std_msgs/String.h>
#include <Arduino.h>
#include <SPI.h>
#include <WiFi.h>
#include <Servo.h>
IPAddress server(192, 168, 0, 10);
WiFiClient client;
class WiFiHardware/* : public ArduinoHardware*/ {
public:
WiFiHardware() {};
void init() {
// do your initialization here. this probably includes TCP server/client setup
client.connect(server, 11411);
}
// read a byte from the serial port. -1 = failure
int read() {
// implement this method so that it reads a byte from the TCP connection and returns it
// you may return -1 is there is an error; for example if the TCP connection is not open
return client.read();
}
// write data to the connection to ROS
void write(uint8_t* data, int length) {
// implement this so that it takes the arguments and writes or prints them to the TCP connection
for(int i=0; i<length; i++)
client.println(data[i]);
}
// returns milliseconds since start of program
unsigned long time() {
return millis(); // easy; did this one for you
}
};
Servo s;
int i;
void chatterCallback(const std_msgs::String& msg) {
i = atoi(msg.data);
s.write(i);
}
char ssid[] = "ssid";
char pass[] = "password";
ros::Subscriber<std_msgs::String> sub("message", &chatterCallback);
ros::NodeHandle_<WiFiHardware> nh;
void setup() {
WiFi.begin(ssid, pass);
s.attach(9);
nh.initNode();
nh.subscribe(sub);
}
void loop() {
nh.spinOnce();
delay(500);
}
I've done that, the connection work but the rosrun rosserial_python serial_node.py tcp
still doesn't work, always the same message
2 | No.2 Revision |
@ahendrix
#include <ros.h>
#include <std_msgs/String.h>
#include <Arduino.h>
#include <SPI.h>
#include <WiFi.h>
#include <Servo.h>
IPAddress server(192, 168, 0, 10);
WiFiClient client;
class WiFiHardware/* : public ArduinoHardware*/ WiFiHardware {
public:
WiFiHardware() {};
void init() {
// do your initialization here. this probably includes TCP server/client setup
client.connect(server, 11411);
}
// read a byte from the serial port. -1 = failure
int read() {
// implement this method so that it reads a byte from the TCP connection and returns it
// you may return -1 is there is an error; for example if the TCP connection is not open
return client.read();
}
// write data to the connection to ROS
void write(uint8_t* data, int length) {
// implement this so that it takes the arguments and writes or prints them to the TCP connection
for(int i=0; i<length; i++)
client.println(data[i]);
}
// returns milliseconds since start of program
unsigned long time() {
return millis(); // easy; did this one for you
}
};
Servo s;
int i;
void chatterCallback(const std_msgs::String& msg) {
i = atoi(msg.data);
s.write(i);
}
char ssid[] = "ssid";
char pass[] = "password";
ros::Subscriber<std_msgs::String> sub("message", &chatterCallback);
ros::NodeHandle_<WiFiHardware> nh;
void setup() {
WiFi.begin(ssid, pass);
s.attach(9);
nh.initNode();
nh.subscribe(sub);
}
void loop() {
nh.spinOnce();
delay(500);
}
I've done that, the connection work but the rosrun rosserial_python serial_node.py tcp
still doesn't work, always the same message
3 | No.3 Revision |
@ahendrix
#include <ros.h>
#include <std_msgs/String.h>
#include <Arduino.h>
#include <SPI.h>
#include <WiFi.h>
#include <Servo.h>
IPAddress server(192, 168, 0, 10);
WiFiClient client;
class WiFiHardware {
public:
WiFiHardware() {};
void init() {
// do your initialization here. this probably includes TCP server/client setup
client.connect(server, 11411);
}
// read a byte from the serial port. -1 = failure
int read() {
// implement this method so that it reads a byte from the TCP connection and returns it
// you may return -1 is there is an error; for example if the TCP connection is not open
return client.read();
}
// write data to the connection to ROS
void write(uint8_t* data, int length) {
// implement this so that it takes the arguments and writes or prints them to the TCP connection
for(int i=0; i<length; i++)
client.println(data[i]);
}
// returns milliseconds since start of program
unsigned long time() {
return millis(); // easy; did this one for you
}
};
Servo s;
int i;
void chatterCallback(const std_msgs::String& msg) {
i = atoi(msg.data);
s.write(i);
}
char ssid[] = "ssid";
char pass[] = "password";
ros::Subscriber<std_msgs::String> sub("message", &chatterCallback);
ros::NodeHandle_<WiFiHardware> nh;
void setup() {
WiFi.begin(ssid, pass);
s.attach(9);
nh.initNode();
nh.subscribe(sub);
}
void loop() {
nh.spinOnce();
delay(500);
}
I've done that, the connection work works but the rosrun rosserial_python serial_node.py tcp
still doesn't work, always the same message
4 | No.4 Revision |
@ahendrix
#include <ros.h>
#include <std_msgs/String.h>
#include <Arduino.h>
#include <SPI.h>
#include <WiFi.h>
#include <Servo.h>
IPAddress server(192, 168, 0, 10);
WiFiClient client;
class WiFiHardware {
public:
WiFiHardware() {};
void init() {
// do your initialization here. this probably includes TCP server/client setup
client.connect(server, 11411);
}
// read a byte from the serial port. -1 = failure
int read() {
// implement this method so that it reads a byte from the TCP connection and returns it
// you may return -1 is there is an error; for example if the TCP connection is not open
return client.read();
client.read(); //will return -1 when it will works
}
// write data to the connection to ROS
void write(uint8_t* data, int length) {
// implement this so that it takes the arguments and writes or prints them to the TCP connection
for(int i=0; i<length; i++)
client.println(data[i]);
}
// returns milliseconds since start of program
unsigned long time() {
return millis(); // easy; did this one for you
}
};
Servo s;
int i;
void chatterCallback(const std_msgs::String& msg) {
i = atoi(msg.data);
s.write(i);
}
char ssid[] = "ssid";
char pass[] = "password";
ros::Subscriber<std_msgs::String> sub("message", &chatterCallback);
ros::NodeHandle_<WiFiHardware> nh;
void setup() {
WiFi.begin(ssid, pass);
s.attach(9);
nh.initNode();
nh.subscribe(sub);
}
void loop() {
nh.spinOnce();
delay(500);
}
I've done that, the connection works but the rosrun rosserial_python serial_node.py tcp
still doesn't work, always the same message
5 | No.5 Revision |
@ahendrix
#include <ros.h>
#include <std_msgs/String.h>
#include <Arduino.h>
#include <SPI.h>
#include <WiFi.h>
#include <Servo.h>
IPAddress server(192, 168, 0, 10);
WiFiClient client;
class WiFiHardware {
public:
WiFiHardware() {};
void init() {
// do your initialization here. this probably includes TCP server/client setup
client.connect(server, 11411);
}
// read a byte from the serial port. -1 = failure
int read() {
// implement this method so that it reads a byte from the TCP connection and returns it
// you may return -1 is there is an error; for example if the TCP connection is not open
return client.read(); //will return -1 when it will works
}
// write data to the connection to ROS
void write(uint8_t* data, int length) {
// implement this so that it takes the arguments and writes or prints them to the TCP connection
for(int i=0; i<length; i++)
client.println(data[i]);
client.write(data[i]);
}
// returns milliseconds since start of program
unsigned long time() {
return millis(); // easy; did this one for you
}
};
Servo s;
int i;
void chatterCallback(const std_msgs::String& msg) {
i = atoi(msg.data);
s.write(i);
}
char ssid[] = "ssid";
char pass[] = "password";
ros::Subscriber<std_msgs::String> sub("message", &chatterCallback);
ros::NodeHandle_<WiFiHardware> nh;
void setup() {
WiFi.begin(ssid, pass);
s.attach(9);
nh.initNode();
nh.subscribe(sub);
}
void loop() {
nh.spinOnce();
delay(500);
}
I've done that, the connection works but the rosrun rosserial_python serial_node.py tcp
still doesn't work, always the same message