Tango图像帧的时序问题

时间:2015-03-24 15:07:09

标签: google-project-tango

当我尝试同时获取深度数据,图像数据和姿势数据时,似乎Tango正在丢弃图像帧。

我正在尝试捕捉深度和图像帧并将它们与姿势数据同步。使用C point-cloud-jni-example我添加了代码,将点云数据转储到内存缓冲区,然后转储到文件。我为onFrameAvailable()添加了一个回调函数,并将图像数据复制到缓冲区,然后复制到文件中。由于图像数据是30Hz并且深度数据是~5Hz,我天真地期望最新图像与最新深度帧非常接近地匹配。时间戳不是很接近。在某些情况下,它们的差异超过100毫秒。所以我开始调查onXYZijAvailable(),onFrameAvailable()和onPoseAvailable()回调以及相应数据时间戳的时间。

我为每个回调添加了logcat转储并打印出系统时间(std :: chrono :: system_clock :: now())以及返回数据的TangoSystem时间戳,无论是深度,图像还是姿势。其中一些内容在exactly how do we compute timestamp differentials?中有描述。

这是一些姿势时间。 sys时间是执行回调时的当前时钟时间。姿势时间戳来自实际的姿势结构。

             sys time   pose timestamp
TM CLK Pose  10.008419  245.976464
TM CLK Pose  10.025983  246.009791
TM CLK Pose  10.124470  246.043119
TM CLK Pose  10.133542  246.076447
TM CLK Pose  10.147136  246.109774
TM CLK Pose  10.192470  246.143102
TM CLK Pose  10.200370  246.176430
TM CLK Pose  10.225367  246.209757
TM CLK Pose  10.300509  246.243085
TM CLK Pose  10.311827  246.276413
TM CLK Pose  10.335946  246.309740
TM CLK Pose  10.399209  246.343068
TM CLK Pose  10.407704  246.376396
TM CLK Pose  10.426889  246.409723
TM CLK Pose  10.504403  246.443051

此处显示了从姿势到姿势的相应差异。根据记录的时间戳,姿势时间稳定在33毫秒。回调时间变化很大,可能是由于应用程序的负载。

time:  0.017564   pose:  0.033327
time:  0.098487   pose:  0.033328
time:  0.009072   pose:  0.033328
time:  0.013594   pose:  0.033327
time:  0.045334   pose:  0.033328
time:  0.007900   pose:  0.033328
time:  0.024997   pose:  0.033327
time:  0.075142   pose:  0.033328
time:  0.011318   pose:  0.033328
time:  0.024119   pose:  0.033327
time:  0.063263   pose:  0.033328
time:  0.008495   pose:  0.033328
time:  0.019185   pose:  0.033327
time:  0.077514   pose:  0.033328
time:  0.011892   pose:  0.033328

这是一些深度时间和相应的差异。时间戳非常稳定,大约0.2秒。

             sys time : xyz timestamp
TM CLK XYZ   10.161695  246.017013
TM CLK XYZ   10.363448  246.216639
TM CLK XYZ   10.595306  246.438693
TM CLK XYZ   10.828368  246.668223
TM CLK XYZ   11.025787  246.890277
TM CLK XYZ   11.233364  247.097379
TM CLK XYZ   11.433941  247.297005
TM CLK XYZ   11.633176  247.496631
TM CLK XYZ   11.830650  247.696257

time:  0.201753   depth:  0.199626
time:  0.231858   depth:  0.222054
time:  0.233062   depth:  0.229530
time:  0.197419   depth:  0.222054
time:  0.207577   depth:  0.207102
time:  0.200577   depth:  0.199626
time:  0.199235   depth:  0.199626
time:  0.197474   depth:  0.199626
time:  0.196935   depth:  0.199626

这是一些图像计时。标有" ---"问题框架。

             sys time : img timestamp
TM CLK Img   10.041056  246.005896
TM CLK Img   10.074105  246.105709   -----
TM CLK Img   10.106492  246.105709
TM CLK Img   10.142581  246.138980
TM CLK Img   10.176176  246.172251
TM CLK Img   10.241146  246.205522
TM CLK Img   10.274909  246.305335   -----
TM CLK Img   10.317819  246.305335
TM CLK Img   10.361682  246.345225
TM CLK Img   10.397533  246.390139
TM CLK Img   10.472859  246.430886
TM CLK Img   10.514923  246.538175   -----
TM CLK Img   10.551663  246.545651
TM CLK Img   10.585960  246.586398
TM CLK Img   10.626671  246.620526
TM CLK Img   10.705709  246.656249
TM CLK Img   10.734324  246.767705   -----
TM CLK Img   10.774233  246.768562
TM CLK Img   10.808848  246.804285
TM CLK Img   10.847230  246.842580
TM CLK Img   10.927872  246.878303
TM CLK Img   10.957309  246.989759   -----
TM CLK Img   10.991136  246.990616

以下是上述列表的相应时差。

time:  0.033049   image:  0.099813
time:  0.032387   image:  0.000000
time:  0.036089   image:  0.033271
time:  0.033595   image:  0.033271
time:  0.064970   image:  0.033271
time:  0.033763   image:  0.099813
time:  0.042910   image:  0.000000
time:  0.043863   image:  0.039890
time:  0.035851   image:  0.044914
time:  0.075326   image:  0.040747
time:  0.042064   image:  0.107289
time:  0.036740   image:  0.007476
time:  0.034297   image:  0.040747
time:  0.040711   image:  0.034128
time:  0.079038   image:  0.035723
time:  0.028615   image:  0.111456
time:  0.039909   image:  0.000857
time:  0.034615   image:  0.035723
time:  0.038382   image:  0.038295
time:  0.080642   image:  0.035723
time:  0.029437   image:  0.111456
time:  0.033827   image:  0.000857

请注意,每4帧图像时间有很大的延迟,大约100毫秒。接下来是两个具有相同或几乎相同时间戳的帧。即使在两个连续图像上的时间戳相同的情况下,回调仍然会触发以指示新帧。结果是我错过了每五个视频帧。尝试匹配深度和图像数据的应用程序很糟糕。

我已经删除了代码中的任何额外处理。在回调中,唯一发生的事情是数据被复制到静态缓冲区。点云的渲染仍在正常渲染线程中完成。

那么,是什么给出的? Tango设备是否可以同时处理深度,图像和姿势回调?我是否需要使用UpdateTexture()而不是onFrameAvailable()?

1 个答案:

答案 0 :(得分:0)

在Project Tango平板电脑的当前版本中,RGB红外摄像机用于深度和彩色图像,并且每个帧只能执行一个或另一个。因此,在流中,我们得到4个RGB帧,然后是1个深度帧,从而产生您观察到的模式。这更多是硬件限制。