Arduino script
chefbot_hcsr04_test
#include <ros.h> #include <std_msgs/Int16.h> ros::NodeHandle nh; std_msgs::Int16 int_us_msg; ros::Publisher us_data("distance", &int_us_msg); //Ultrasonic sensor pins definition const int echo = 25, Trig = 24; long duration, cm; void setup() { // marking us pins to be read and write pinMode(Trig, OUTPUT); pinMode(echo, INPUT); // ros nh.initNode(); nh.advertise(us_data); } void loop() { Update_Ultra_Sonic(); nh.spinOnce(); delay(500); } //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //Update ultrasonic sensors through serial port void Update_Ultra_Sonic() { digitalWrite(Trig, LOW); delayMicroseconds(2); digitalWrite(Trig, HIGH); delayMicroseconds(10); digitalWrite(Trig, LOW); duration = pulseIn(echo, HIGH); cm = microsecondsToCentimeters(duration); int_us_msg.data = cm; us_data.publish(&int_us_msg); } //Conversion of microsecond to centimeter long microsecondsToCentimeters(long microseconds) { return microseconds / 29 / 2; }
terminal 1
roscore
terminal 2
rosrun rosserial_python serial_node.py /dev/ttyUSB0
terminal 3
rostopic echo distance