文章目录

  • ROS时间种类
    • 一、ros::Time::now()解释
      • 二、c++中sleep, usleep, ros中的ros::Duration
    • 三、参数use_sim_time介绍
      • 1、launch文件设置:
      • 2、通过节点设置:
  • --clock相关使用介绍

ROS时间种类

谈及时间,有一个很重要的概念是ROS Time和Wall Time,两者是有区别的。它们两个的接口完全一样,数据类型也一样,但是ROS Time表示的是ROS网络中的时间。ROS网络中的时间是指,如果当时在非仿真环境里运行,那它就是当前的时间。但是假设去回放当时的情况,那就需要把当时的时间录下来。以控制为例,很多的数据处理需要知道当时某一个时刻发生了什么。Wall Time可以理解为墙上时间,墙上挂着的时间没有人改变的了,永远在往前走;ROS Time可以被人为修改,你可以暂停它,可以加速,可以减速,但是Wall Time不可以。

换言之ROS中有两种时间;
ROS::Time[/Duration/Rate]:ROS时间——来源可以被认为修改如加速/减速/暂停。
ROS::WallTime[WallDuration/WallRate]:ROS绝对时间——不可修改的"真实"时间。

一、ros::Time::now()解释

ros::Time t1 = ros::Time::now();
double t_cur = t1.toSec();//获取的是自1970年一月一日到现在时刻的秒数
printf("The time is: %16f\n",t_cur);//打印,%16f表示的是16位宽度的float类型的数字;
//注:%.2f是保留两位小数的意思

//若发布点云时,没有为每一帧点云打上时间戳,那么t_cur默认为0
void GridMap::cloudCallback(const sensor_msgs::PointCloud2ConstPtr &img)
{double t_cur = img->header.stamp.toSec();printf("cloudCallback_time: %16f\n",t_cur);
}

二、c++中sleep, usleep, ros中的ros::Duration

sleep(0.5) = sleep(0)//sleep()只接受整数
/* sleep.c:9:15: warning: implicit conversion from 'double' to 'unsigned int' changes value from 0.5 to 0 [-Wliteral-conversion]
sleep(0.5); */
usleep(0.5*1000000)//usleep表示睡眠微秒,利用该函数可以实现延迟0.5s
ros::Duration(0.5).sleep()//该函数也可以实现延迟0.5s

三、参数use_sim_time介绍

这个参数当回放bag数据集是设置为true,此时说明系统使用的是仿真时间Time;如果设置为false,则系统使用walltime。(此参数可以通过launch文件中设置,或者通过节点设置)

1、launch文件设置:

<param name="/use_sim_time" value="true" />

2、通过节点设置:

rosparam set use_sim_time true

–clock相关使用介绍

在开启一个Node之前,当把use_sim_time设置为true时,这个节点会从clock Topic获得时间。所以操作这个clock的发布者,可以实现一个让Node中得到ROS Time暂停、加速、减速的效果。同时下面这些方面都是跟Node透明的,所以非常适合离线的调试方式。当把ROSbag记下来以后重新play出来时,加两个横杠,–clock,它就会发布出这个消息。

简而言之,因为ros有两种时间,所以所有的ros::node在启动时如果有设置[ros::param] \use_sim_time = true则节点的ROS::Time从/clock中获取,否则其值和ROS::WallTime一致。

ros::WallTime::now()为当前的真实时间,也就是墙上的挂钟时间,一直在走。
ros::Time::now()为rosbag当时的时间,是由bag中/clock获取的。是仿真时间。


当设置:\use_sim_time = true时, 在终端输入样式:rosbag play --clock XXX.bag
当设置:\use_sim_time = false时,在终端输入样式:rosbag play --clock XXX.bag或者去掉–clock

参考:
http://wiki.ros.org/Clock

rosbag中--clock的使用相关推荐

  1. linux clock命令,Linux中clock命令起什么作用呢?

    摘要: 下文讲述Linux中clock的功能说明,如下所示: clock命令功能: 1.用于设置RTC 时间 2.用于显示此刻的时间 3.用于将系统时间设置为硬件时间 4.用于将硬件时间设置为系统时间 ...

  2. ros rviz显示rosbag中的图像和imu数据

    一.rosbag相关的指令 1. rostopic list //列举出系统中正在发布的ros 话题 2. rosbag record -a //录制系统中所有正在发布的ros 话题 3. rosba ...

  3. [RK3399][Android7.1] 调试笔记 --- DDR中clock相关配置

    OS: Android 7.1 Board: Firefly-RK3399 Kernel: v4.4.55 把这个拎出来说是因为在调试ddr default rate的时候对这部分有些误区. dmc中 ...

  4. 同步电路设计中CLOCK SKEW的分析

    (1.东南大学国家专用集成电路系统工程技术研究中心,南京  210096 2.南京经济学院计算机系,南京  210032) 摘  要:Clock shew是数字集成电路设计中一个重要的因素.本文比较了 ...

  5. 秒杀数字后端实现中clock gating使能端setup violation问题

    秒杀数字后端实现中clock gating使能端setup violation问题 文章右侧广告为官方硬广告,与吾爱IC社区无关,用户勿点.点击进去后出现任何损失与社区无关. 点击标题下「蓝色微信名」 ...

  6. 将Rosbag中的Compressed类型的图像转换成raw类型

    经常存在这种情况, 我们需要在移动设备上录制一些包含图像信息的rosbag, 但是如果录制raw格式的话,占的内存空间太大, 一般可以采用录制compressed模式; 但是一般的代码中,图像从sen ...

  7. C++提取rosbag中的数据到txt文件

    前言 球球队友们了,别忽悠我了,我写还不行吗TAT 一.准备工作 ubuntu系统,ros,C++.以提取geometry_msgs/Vector3Stamped类型话题中的时间和x,y为例 二.使用 ...

  8. Cesium中Clock控件及时间序列瓦片动态加载

    前言 前面已经写了两篇博客介绍Cesium,一篇整体上简单介绍了Cesium如何上手,还有一篇介绍了如何将Cesium与分布式地理信息处理框架Geotrellis相结合.Cesium的强大之处也在于其 ...

  9. matlab中clock是什么,matlab中的clock

    其值为真 Why 简明的答案 Version MATLAB 版本号 时间和日期 Clock 挂钟 Date 日历 Etime 计时函数 Tic 秒表开始计时 Toc 计时函数 Cputime CPU ...

最新文章

  1. 如何网络监测其他计算机关闭445端口,关闭445端口的方法,教您电脑如何关闭445端口...
  2. arcgis andin使用python窗体_在ArcGIS?10中使用python
  3. Erlang的边界检查(3)
  4. 04--MySQL自学教程:数据库MySQL--【数据库DB】和【数据库管理系统DBMS】简介
  5. fga 例子 oracle,利用Oracle FGA实现审计
  6. spring 线程池_Spring线程池服务
  7. php中使用curl采集小说网,PHP:通过curl实现采集网站内容
  8. 大数据将如何重塑亚洲企业
  9. angular input_可视化的 Angular 响应式编程
  10. macBook户外省电有技巧,2招即可找出高耗电应用
  11. 破圈了!完美日记凭什么让周迅成为全球品牌代言人
  12. 分段插值/Hermite插值
  13. n1进入recovery模式_N1盒子系列 篇一:N1简明降级刷机教程
  14. 约分最简分式(python)
  15. 机器人动力学与控制学习笔记(七)————基于计算力矩法的滑模控制
  16. vtk 的vtkimagereslice实现三视图的显示
  17. 解决Qt5.7.0 cannot find -lGL
  18. 在公众号添加付费链接
  19. Windows10 插入耳机没声音,安装驱动无效问题解决
  20. 深度学习之 DCGAN 及TensorFlow 实现

热门文章

  1. matlab中的diag函数
  2. 岛屿的个数java_LeetCode 200:岛屿数量 Number of Islands
  3. 一个资深设计师应该知道的7个网站-第一弹
  4. 看上去很美-中国的电子杂志
  5. Linux Deepin安装Typora教程
  6. 员工福利待遇包括哪些方面
  7. Android 短彩信数据模型介绍
  8. Mysql出现问题:服务器的数据库安装成功,无法远程访问解决方案
  9. matlab滤波器脉冲响应,【 MATLAB 】impz函数介绍(数字滤波器的脉冲响应)
  10. python求矩阵特征值和特征向量_特征值,特征向量,标准正交向量组与numpy