ros:time::now()详解
为什么有时候ros:time::now()输出值为0?
ROS设置了一个模拟时钟的节点,使用模拟时钟的时候,now()返回时间0直到第一条消息在/clock已经收到,所以当客户端不知道时钟时间时ros:time::now()输出为0。
ros:time::now()输出的值是什么?
ros:time::now()输出的值与参数use_sim_time有关。
use_sim_time为true时,ros:time::now()输出系统时间;
use_sim_time为false时,ros:time::now()输出输出仿真时间,如果回放bag则是bag的时间。
怎么设置参数use_sim_time?
launch文件设置:
<param name="use_sim_time" value="false" />
通过节点设置:
rosparam set use_sim_time true
如何直接使用系统时间?
使用 ros::WallTime::now()
播放rosbag时,若参数/use_sim_time 为true,则此时
- ros::WallTime::now()为当前的真实时间,也就是墙上的挂钟时间,一直在走。
- ros::Time::now()为rosbag当时的时间,是由bag中/clock获取的。是仿真时间。