Femto Bolt doesn't keep exactly 30.0 FPS

Hello,
I tried 3 different Femto Bolt and they have different FPS. We’re using the last firmware available: 1.0.9.

  1. FPS_CAM1: 30.14
  2. FPS_CAM2: 30.028
  3. FPS_CAM3: 30.063

We have measured these values via ‘Orbbec Viewer’ software looking at FrameIndex and Device Timestamp in two different moment T1 and T2:
T1: after 30 seconds the channels Color and Depth have been opened.
T2: after 240 seconds the channels Color and Depth have been opened.
FPS = (FrameIndex@T2 - FrameIndex@T1) / (DeviceTS@T2 - DeviceTS@T1)

I also compared the values of DeviceTimestamp with different stopwatches and it is quite precise, the problem is that I receive a different amount of frames than expected.

We want to replace Microsoft K4Azure with Femto Bolt in all our manufacturing lines but we can’t if the camera doesn’t have a precise FPS of 30.00, because we synchronize it with other sensors and after 1 minute it goes out of sync.

Is there a way to get a precise FPS, at least between 29.999 and 30.001?

Thanks

1 Like

thank for your message,
we will look into this issue and reproduce it

Hello @xuchongyan,
do you have any update on this issue?

We have made the same test on 10 Femto Bolt and every camera has different FPS values, so it’s very important for us that this problem will be fixed to allow the synchronization of the camera with other sensors.

Thanks

I too am eager to see this resolved. Being able to keep it in sync with other sensors is very important in my application for the Femto Bolt.

Received, I will give my verification results this week

The issue you reported regarding the framerate not consistently being 30FPS, I have been able to successfully reproduce it. After analyzing the problem together with our engineers, we’ve come to the following conclusions:

  1. Although a single Bolt unit’s framerate is not exactly 30FPS, the frame intervals are stable and can be fixed at a certain value.
  2. Indeed, when multiple Bolt units are in operation, maintaining a consistent 30FPS across all of them is not possible. This instability is due to variations in the hardware clock signals (crystal oscillators) across different units.
    This two AzureKinect Frame interval :

This is two Bolt Frame intervals:


Dear @xuchongyan,
thanks for your reply.
Unfortunately I cannot see you images with any browser.

Could you please re-upload them?
Thanks

sorry,It might be a network issue that’s preventing the image from loading; I’ve already re-uploaded the picture

Yes, thank you @xuchongyan now I can see them.

I’m glad that you can reproduce the problem, this is exactly what I’ve found with my Bolts.
If you print also the timestamp from the camera and the timestamp from a stopwatch of a pc you’ll find that the camera’s timestamp it’s very precise.
So IMHO the quartz oscillator inside the Bolt is very precise.

The good thing is that the FPS of the camera is always above 30.000 Hz so your team can easily change the code in the Bolt firmware to wait until 33333 microseconds have elapsed and then make the frame available for reading.
We could also do this in our software but it is not precise as doing it in the camera firmware.
This fix would greatly improve the Bolt camera and allow us to use it in a multisensor environment as we need.

Let me know if you need any more information or I can help in any way.

Thanks

I am trying to understand the ramification of this issue. Do I understand it correctly?

If you record video at 30fps using the bolt will simultaneously recording video on a broadcast camera at 30 fps and then playback the two video files simultaneously will the Bolt Video drift out of sync with the Broadcast video over time in playback at 30 fps?

Hi @Valis,
yes the Femto Bolt record more frame than the broadcast camera so during playback the Bolt Video stays behind the broadcast video.

Hi @xuchongyan,
do you know if this problem would be fixed in the next releases?

If I want to use many Orbbec Bolt together, can I use the Multi-camera Sync hub Pro device or I would have the same problem of FPS inaccuracy?

@Rudi
I’m sorry, but as far as I know, it’s not possible to achieve the precision of 29.999 and 30.001.

Let me explain the basic principle:
The current depth measurement of Femto Bolt is triggered by the MCU, and the timestamp of the data frame is provided by the Linux kernel driver. At present, the MCU registers are configured for 30fps. However, due to variations among different MCU units, the performance can differ across devices. Additionally, the Linux kernel timestamps also have millisecond-level fluctuations.

Hi @xuchongyan,
thanks for your explanation.

With the Multi-camera Sync hub Pro device could I achieve a higher accuracy?
If I use an external trigger of 30.0000 Hz could I achieve a higher accuracy?

I believe this external solution should work, but I haven’t tested it myself. You can give it a try, and I’ll be here to support you if any issues arise."

Does the Femto Bolt run ‘slower’ than real time? - as in, it falls further behind as time progresses? or, is it simply the start up time varies amongst devices but once it is running it is running at sync?

My goal is to sync the Femto Bolt’s recorded data with the recorded data from a Broadcast camera and I am assuming that if I sync the Fembolt camera’s data with the broadcast camera’s picture it will stay in sync over time. This requires the Fembolt’s data to be recorded at a constant rate and then played back at that same constant rate.

Hi @xuchongyan,
are you selling the Multi-camera Sync hub Pro device without knowing if all the cameras keep the sync among each other?

I have a hard time believing such a thing, I probably misunderstood something.

Hi @Valis,
this is exactly the problem I’m facing.

After initially synchronizing the cameras with each other, the Femto Bolt loses synchronism with the other cameras because it does not maintain a constant FPS.

Maybe you can give it a try and let me know if I’m missing something.

Can you describe the sync configuration of Femto Bolt? Whether some Bolts sync with each other, or Bolt syncs with other cameras;
If it is Bolt and other cameras, Bolt is the device, or the main device;

I would connect 3 Femto Bolt in a star configuration where one of the camera is the Primary and the others are the Secondary, like explained in your documentation.

In this use case the 3 cameras would be out of sync after 30 minutes?