CeleX5相机使用系列 - 相机的时间戳

news/2025/2/12 7:53:50/

本文首发于公众号:【事件相机】,CeleX5相机使用系列 - 相机的时间戳

CeleX5相机在使用时有多种时间戳,包括事件产生时间戳inPixelTimestamp,事件输出时间戳offPixelTimestamp,还有机器(例如ROS)收到时的时间戳。本文详细介绍这些时间戳的内容,并指出CeleX官方提供的库函数中的一个bug。本文将上述三个时间戳简称为inTs,offTs和rosTs。

事件产生时间戳inTs

顾名思义,inTs是某个Event在芯片上产生时的时间戳,从0开始记,单位为us。时间依据是相机自身的晶振。需要注意inTs只有在Event In-Pixel Timestamp模式下才能产生,在其他模式下inTs为0。

事件输出时间戳offTs

一般事件相机只会泛泛的说“时间戳”,而不会像CeleX这样有产生、输出时间戳。这里详细介绍二者的区别。

在这里插入图片描述(图:事件从芯片到外设)

offTs是某个Event从芯片输出到相机板卡时的时间戳,从0开始记,单位为us。时间依据是相机自身的晶振。上图展示了芯片内部数据到板卡数据的传输过程:左边芯片的事件经过编码后,经过AER总线,到板卡,板卡再进行解码得到数据。所谓AER总线,全称是“Address Event Representation”,是一种事件相机数据通信协议。

由于CeleX分辨率极高,数据量较大,事件输出并不是按照产生顺序的,而是逐行进行。下图介绍了输出Event的顺序:每次从某一行开始输出,往下逐行进行(到799行后回到0),直到再次输出到这一行。我将这一个过程称作一个“输出循环”。输出到某一行时,如果在上一个输出循环中经过这行到这次输出这行的过程中,这一行产生了Event,则会输出新产生的Event。所以offTs是“扫到某行数据”时的时间,而并不是数据本身产生的时间。

在这里插入图片描述
(图片来源:CeleX官方SDK文档)

inTs和offTs存在的问题

一张图解释清楚了二者的问题。我的PC端每次收到一组Events后输出每个event,可以看出,由于PC接收顺序是相机的输出顺序,故offTs是连续增加的,且对应某一行(例如y=500)的时间戳是相同的(图中打错了应该是“同一行”而不是“同一列”)。再看inTs,并不是递增的。

图片

再多说一段解释为何inTs不是递增的:例如在某一次输出循环中的三个事件e0,e1,e2在产生时间上是先后发生的,但位置分别发生在第0,100和1行,那么从第0行开始输出e0后,逐行扫描到第1行时输出e2,之后需要等到第100行时才能够输出e1,即输出顺序为e0,e2,e1。

PC端接收的时间戳rosTs

PC端接收时,如果采用ROS,会有一个Ros::Time()或header的时间戳,对应的是PC端的时间戳。这里暂时不细说,后面准备写一篇总结事件相机数据延迟的问题推送,到时候详细介绍。

时间戳对齐问题(ROS)

上面说到,inTs和offTs全部是从0开始递增,按照相机的时钟计时。那么自然想知道,相机的ts和rosTs即PC端时间戳的关系。严格来讲,在打开sensor即调用函数openSensor()后,CeleX就开始从0计数。我们可以通过这个来对时间戳进行对齐。但我实际使用时发现,启动指令下达后,到相机真正开始计时还是有一段儿时间的。

另一种方法,是调用getEventDataVector时采用下图第三个形式,获取PC端的时间戳。这样获得的是收到数据时PC的时间戳,理论上(我没有验证)为最后一个offTs的PC时间,但这也会存在PC到相机的时间延迟。

图片
(图片来源:CeleX官方SDK文档)

CeleX官方ROS驱动的Bug

在这里插入图片描述
某次我在测试ts时,发现在经过大概30秒后,ts会回到0。inTs和offTs都会发生这个问题。查看了inTs和offTs定义,都是uint32,理论上不会在这个数越界。后来查找问题发现是ROS下源码在计算ts时发生了越界。相关的源码我已修复上传到了GitHub:https://github.com/LarryDong/CeleX5_source。请大家下载重新编译libCeleX.so后使用。

在这里插入图片描述(图:官方源码部分修改)

另外,官方很久没有对该代码进行更新维护。如果有人遇到其他bug,请不管您是否已经解决,都在上述代码中提个issue,大家一起解决。谢谢。


欢迎关注微信公众号【事件相机】,分享和交流事件相机的相关研究与应用。
在这里插入图片描述


http://www.ppmy.cn/news/831255.html

相关文章

Flir Blackfly S 工业相机:自动曝光配置及代码

Flir Blackfly S 工业相机:自动曝光配置及代码 自动曝光什么是目标灰度值(曝光值)如何辨别曝光值是否正确 自动曝光是工作流程如何设置自动曝光用SpinView配置自动曝光通过Spinnaker API 来配置自动曝光 自动曝光 自动曝光通过调整增益和曝光…

每日一个小技巧:今天告诉你拍照识别文字的软件有哪些

在现代社会里,手机已经成为了人们生活中必不可少的工具。它的功能众多,比如通讯、上网、拍照以及导航等,为我们的生活带来了许多便利。除此之外,手机还能帮助我们解决一些实际的问题,例如,当你需要识别图片…

线阵相机1k什么意思_相机上怪异的圆/线符号是什么意思?

线阵相机1k什么意思 If you’ve looked closely at your camera, you’ve probably noticed a strange circle/line symbol somewhere on it (you can see it above). It’s generally near the viewfinder but could be anywhere on the side. 如果您仔细看了一下相机&#xf…

wb在计算机知识里是什么意思,相机上的WB,ISO,S和EV是什么意思?

受欢迎的相机知识相机的单反是什么意思,回答数码相机上的字母对于主题提出的问题的含义: 白平衡: 白平衡调整, 按下此键后,使用转盘调整各种白平衡模式 根据场景光线的情况,设置适当的白平衡模式以获得准确的色彩,避免…

计算机中f代表几,相机中的F代表什么意思

新酷产品首次免费试用,许多高素质人才分享了他们独特的生活经验. 来新浪公开测试,体验各个领域中最前沿,最有趣和最有趣的产品〜!下载客户端并获得独家优惠! 本文来自佳游 小白用户一开始看到各种相机参数(例如最常见的F1.8和F2.8)时,常常会感到困惑. . . . 这是什么意思…

spring boot 集成spark操作hive

在Spring Boot中集成Spark操作Hive&#xff0c;可以使用以下步骤&#xff1a; 确认系统中已经安装了Hadoop和Spark&#xff0c;并且配置好了环境变量。 在pom.xml文件中添加以下依赖&#xff1a; <dependency><groupId>org.apache.spark</groupId><art…

一种简单的数据库性能测试方法

这两天接到一个任务&#xff0c;要测试一个服务器的性能&#xff0c;客户要求向数据库内 1000/s&#xff08;每插入一千条数据&#xff09; 的处理能力&#xff0c;当时脑子赌赛了&#xff0c;想的是用LR来进行&#xff0c;由于LR接触不深&#xff0c;只知道LR实现参数化的时候…

360 html快捷,360极速浏览器如何设置键盘快捷键?

360极速浏览器V11.0.2031.0正式版 软件大小&#xff1a;50.71 MB授权方式&#xff1a;免费软件 立即下载 360极速浏览器是一款界面美观的电脑浏览器。软件为用户提供了丰富的快捷键功能&#xff0c;下面小编就为你带来360极速浏览器快捷键设置教程&#xff0c;希望对你有帮助。…