ros time 时间戳改为机器开机时间

文章目录

  • 一、问题描述
  • 二、修改方法
  • 补充
    • 1. 时间类型
    • 2. 时间数据使用方法

一、问题描述

因项目需要,需要"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)

修改后重启机器,时间戳打印如下:
在这里插入图片描述

补充

补充一下关于时间的知识点:

ros::Time ros_time;
ros::Time org_time;
ros::SteadyTime steady_time;ros_time = ros::Time();
org_time = ros::Time::now();
steady_time = ros::SteadyTime::now();ROS_INFO("&&& ros_time sec:%d  nsec:%d", ros_time.sec, ros_time.nsec);
ROS_INFO("$$$ org_time sec:%d  nsec:%d", org_time.sec, org_time.nsec);
ROS_INFO("*** steady_time sec:%d  nsec:%d", steady_time.sec, steady_time.nsec);
ROS_INFO("*** steady_time 2sec:%.3f  2nsec:%.3f", steady_time.toSec(), steady_time.toNSec());

执行结果如下图:
在这里插入图片描述

1. 时间类型

  • ros::Time():默认构造函数。初始化为初始值0.0;
  • ros::SteadyTime::now():获取ROS稳定时间(Steady Time),即系统运行时间;
  • ros::Time::now(): 获取ROS系统时间(Wall-Clock Time),即自1970年1月1日以来的实际时间,也称获取"墙上时间";

2. 时间数据使用方法

  • time.sec : 以整数形式获取时间的秒数
  • time.nsec:以整数形式获取时间的纳秒数
  • time.toSec():以小数形式获取时间(含秒数及纳秒数);
  • time.toNSec():以小数形式获取时间(只获取纳秒数)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/571186.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

面试八股文之JAVA基础

JAVA基础 DNS、CDN?如何实现对象克隆?父子类静态代码块, 非静态代码块, 构造方法执行顺序?String s new String("abc") 创建了几个对象, 分别放到哪里?OSI网络模型七层?应用层协议?http协议和https协议区别?传输层协…

极速体验DolphinScheduler 3.2.1 Standalone 版[一]

文章目录 极速体验DolphinScheduler 3.2.1 Standalone 版前置准备工作启动 DolphinScheduler Standalone Server解压并启动 DolphinScheduler登录 DolphinScheduler 启停服务配置数据库 极速体验DolphinScheduler 3.2.1 Standalone 版 Standalone 仅适用于 DolphinScheduler 的…

Web API —— BOM 学习(完结)

目录 一、BOM 介绍 二、Window 对象 (一)基本介绍 (二)定时器 —— 延时函数 1.语法 2.清除时间函数 3.和 interval 间歇函数的区别 (三)JS 执行机制 1.介绍 2.同步任务 3.异步任务 4.执行过程…

Tomcat 下载以及安装

Tomcat安装及配置教程主要分为四步: 步骤一:首先确认自己是否已经安装JDK 1. cmd:查看java的版本 步骤二:下载安装Tomcat 1. 下载tomcat :Apache Tomcat - Welcome! 2. 选择对应的tomcat版本: 3. 进行安装&#…

C++中的凸包:convexHull使用手册【c++重要方法】

最近工作中,用到了凸包,查了一些资料,差不多搞明白了,在这里做一个总结,希望可以帮助到你! 什么时候需要它? 如果你想要把一群散落的点,包裹起来。而且希望这个包裹尽可能地紧凑&a…

蓝牙耳机什么牌子好?拒绝跟风购买!五大良心品牌推荐

​真无线蓝牙耳机已经成为我们日常生活中不可或缺的数码产品。随着技术的发展,人们对蓝牙耳机的要求越来越高,不仅要求音质出众,还希望长时间佩戴也能保持舒适,并能适应多种使用场景。挑选蓝牙耳机确实需要一些技巧。所以&#xf…

计算机进制转换:二进制、八进制、十进制、十六进制。原码、补码、反码。

一、什么是进制 在生活中,我们通常都是使用阿拉伯数字计数的,也就是10进制,以10为单位,遇10进一,所以是由0,1,2、3、4、5、6、7、8、9组成的;而在计算机中,计算机是无法…

配置wss和隐藏端口号(WebSocket通信)

修改宝塔面板配置文件: 添加这几行代码: location /wss{proxy_pass http://127.0.0.1:23481; # 根据自己的socket端口号修改proxy_http_version 1.1;proxy_set_header Upgrade $http_upgrade;proxy_set_header Connection "Upgrade";proxy_s…

【前端】使用Web Audio API 技术播放音乐

简言 记录下使用web audio播放音乐的方法。 Web Audio API Web Audio API 提供了在 Web 上控制音频的一个非常有效通用的系统,允许开发者来自选音频源,对音频添加特效,使音频可视化,添加空间效果(如平移&#xff09…

Python之Scrapy爬虫框架安装及使用详解

声明 文章所涉及的内容仅为学习交流所用。 前言: Scrapy 是用 Python 实现的一个为了采集网站数据、提取结构性数据而编写的应用框架。常应用在包括数据挖掘,信息处理或存储历史数据等一系列的程序中。通常我们可以很简单的通过 Scrapy 框架实现一个爬…

【漏洞复现】用友U8 login2.RegisterServlet接口处存在SQL注入漏洞

免责声明:文章来源互联网收集整理,请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果及损失,均由使用者本人负责,所产生的一切不良后果与文章作者无关。该…

2.Wireshark使用实训——分析FTP包

1.实训目的 掌握Wireshark的基本使用方法,具备Wireshark数据包内容的简单分析能力。 2.应用环境 某公司为了保障网络环境安全,需要使用Wireshark对网络中的数据包进行分析。 3.实训设备 安装有eNSP的计算机。 4&…