一、问题描述
因项目需要,需要"ros::Time::now()" 改成获取机器开机时间,此处针对rospy的机器时间修改。
二、修改方法
修改ros源码的文件 /opt/ros/noetic/lib/python3/dist-packages/rospy/rostime.py
修改如下:
定位到 get_rostime() ,并将 float_secs = time.time()
改为 float_secs = time.monotonic()
def get_rostime():"""Get the current time as a L{Time} object @return: current time as a L{rospy.Time} object@rtype: L{Time}"""if not _rostime_initialized:raise rospy.exceptions.ROSInitException("time is not initialized. Have you called init_node()?")if _rostime_current is not None:# initialize with sim timereturn _rostime_currentelse:# initialize with wallclockfloat_secs = time.monotonic() # float_secs = time.time()secs = int(float_secs)nsecs = int((float_secs - secs) * 1000000000)return Time(secs, nsecs)
修改后重启机器,时间戳打印如下: