為什么有時候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獲取的。是仿真時間。
