ros melodic chefbot time test
chefbot_time_test1
#include <ros.h> #include <std_msgs/Int32.h> #include <limits.h> ros::NodeHandle nh; std_msgs::Int32 int_time_msg1; ros::Publisher time_data1("time1", &int_time_msg1); std_msgs::Int32 int_time_msg2; ros::Publisher time_data2("time2", &int_time_msg2); ///////////////////////////////////////////////////////////////////////////////////////// //Time update variables unsigned long LastUpdateMicrosecs = 0; unsigned long LastUpdateMillisecs = 0; unsigned long CurrentMicrosecs = 0; unsigned long MicrosecsSinceLastUpdate = 0; float SecondsSinceLastUpdate = 0; void setup() { nh.initNode(); nh.advertise(time_data1); nh.advertise(time_data2); } void loop() { Update_Time(); nh.spinOnce(); delay(1000); } //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //Update time function void Update_Time() { CurrentMicrosecs = micros(); LastUpdateMillisecs = millis(); MicrosecsSinceLastUpdate = CurrentMicrosecs - LastUpdateMicrosecs; if (MicrosecsSinceLastUpdate < 0) { MicrosecsSinceLastUpdate = INT_MIN - LastUpdateMicrosecs + CurrentMicrosecs; } LastUpdateMicrosecs = CurrentMicrosecs; SecondsSinceLastUpdate = MicrosecsSinceLastUpdate / 1000000.0; //Serial.print("t"); //Serial.print("\t"); //Serial.print(LastUpdateMicrosecs); //Serial.print("\t"); //Serial.print(SecondsSinceLastUpdate); //Serial.print("\n"); int_time_msg1.data = LastUpdateMicrosecs; time_data1.publish(&int_time_msg1); int_time_msg2.data = SecondsSinceLastUpdate; time_data2.publish(&int_time_msg2); }
terminal 1
roscore
terminal 2
rosserial_python serial_node.py /dev/ttyUSB0
terminal 3
rostopic echo time1
—