Hello!
I want to give values to a topic with this type of mesage (rosgraph_msgs/Clock)
I create a variable called "reloj" for example:
rosgraph_msgs::Clock reloj;
How do I give a value to that variable?, because it has two parts (secs and nsecs)
For example in float64 I give it the value this way
std_msgs::Float64 variable;
variable.data = 0;
I would like to do the same but in rosgraph_msgs/Clock, one value for "secs" and one for "nsecs"
I tried: reloj.clock.secs = 1; reloj.clock.nsecs = 100;
reloj.clock_secs = 1; reloj.clock_nsecs = 100;
But this does not work
I found that putting the following does work
reloj.clock = {5,88};
but when creating the node executable, I get this warning:
warning: extended initializer lists only available with -std=c++11 or -std=gnu++11 reloj.clock = {5,88};
I use ROS kinetic and roscpp (c++)
this is the code in c++
#include "ros/ros.h"
#include "rosgraph_msgs/Clock.h"
rosgraph_msgs::Clock reloj;
int main(int argc, char **argv)
{
ros::init(argc, argv, "pubsubclock");
ros::NodeHandle n;
ros::Publisher publicador;
publicador = n.advertise<rosgraph_msgs::Clock>("topico_pub", 1000);
reloj.clock = {5,88};
ros::Rate loop_rate(10);
while (ros::ok()) {
publicador.publish(reloj);
ros::spinOnce();
loop_rate.sleep();
}
return 0;
}
thank you very much
Originally posted by manupe94 on ROS Answers with karma: 1 on 2017-04-24
Post score: 0
Original comments
Comment by gvdhoorn on 2017-04-24:\
But this does not work
that doesn't tell us very much. Please explain what you found that "does not work". Include any error messages that you get.
Please use the edit
button/link to update your original question.
Comment by manupe94 on 2017-04-24:
I updated the message
Comment by Geoff on 2017-04-24:
The syntax reloj.clock = {5,88};
is a form of constructor calling that is new in C++11. You cannot use it without telling the compiler to compile in C++11 mode.