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
—