Problems with Orbbec SDK 1.3.1 depth example and Femto camera

Hi,

I am trying to run the DepthViewer example with a Femto camera, under Win64 (Windows 10) but it throws me timeouts.
I can run the ColorViewer example without problems.

Update: The depth sensor works within OrbbecViewer. Is this an issue with the compiled example only?

An extract of the log:

Running duration (h:mm:ss): 0:00:00
Log line format: [IWEF]yyyymmdd hh:mm:ss.uuuuuu threadid file:line] msg
I20220816 11:20:19.357404 18772 FrameBufferManager.cpp:26] Max global frame buffer size updated! Size=2048MB
I20220816 11:20:19.357404 18772 DeviceManager.cpp:35] DeviceManager init …
I20220816 11:20:19.357404 18772 MfPal.cpp:30] WmfPal init …
I20220816 11:20:19.357404 18772 MfPal.cpp:35] WmfPal created!
I20220816 11:20:19.357404 18772 EnumeratorLibusb.cpp:231] queryDevicesInfo start …
I20220816 11:20:19.393031 18772 EnumeratorLibusb.cpp:254] queryDevicesInfo done!
I20220816 11:20:19.393031 18772 EnumeratorLibusb.cpp:231] queryDevicesInfo start …
I20220816 11:20:19.409029 18772 EnumeratorLibusb.cpp:254] queryDevicesInfo done!
I20220816 11:20:19.489462 18772 DeviceManager.cpp:199] queryUvcDevices: size = 6
I20220816 11:20:19.489462 18772 DeviceManager.cpp:200] queryHidDevices: size = 1
I20220816 11:20:19.492954 18772 DeviceManager.cpp:201] queryVendorDevices: size = 1
I20220816 11:20:19.492954 18772 DeviceManager.cpp:178] Devices matched:
I20220816 11:20:19.492954 18772 DeviceManager.cpp:182] - tofDevice = 1
I20220816 11:20:19.492954 18772 MfPal.cpp:298] Create WinEventDeviceWatcher!
I20220816 11:20:19.492954 18772 DeviceManager.cpp:75] DeviceManager init done!
I20220816 11:20:19.492954 18772 DeviceManager.cpp:31] DeviceManager construct done
I20220816 11:20:19.492954 18772 Context.cpp:23] Context Created!
I20220816 11:20:19.492954 18772 DeviceManager.cpp:111] DeviceManager createDevice…
I20220816 11:20:19.492954 18772 TofUvcDevice.cpp:16] TofUvcDevice init …
I20220816 11:20:19.492954 18772 TofUvcDevice.cpp:244] init sensor map start!
I20220816 11:20:19.492954 18772 TofUvcDevice.cpp:260] init sensor map done!
I20220816 11:20:19.492954 18772 TofUvcDevice.cpp:166] Create command start!
I20220816 11:20:19.492954 18772 TofUvcDevice.cpp:208] Create command done!
I20220816 11:20:19.492954 18772 TofUvcDevice.cpp:212] Init Depth process param start!
I20220816 11:20:19.543099 18772 TofUvcDevice.cpp:240] Init Depth process param done!
I20220816 11:20:19.543099 18772 TofUvcDevice.cpp:69] TofUvcDevice init done!
I20220816 11:20:19.543099 18772 DeviceManager.cpp:146] DeviceManager createDevice done!
I20220816 11:20:19.543099 18772 Pipeline.cpp:26] Pipeline init …
I20220816 11:20:19.543099 18772 Pipeline.cpp:119] loadFrameQueueSizeConfig() config queue size: 10
I20220816 11:20:19.543099 18772 FrameProcessingBlock.cpp:24] FrameProcessingBlock() config frame queue size: 10
I20220816 11:20:19.543099 18772 FrameProcessingBlock.cpp:24] FrameProcessingBlock() config frame queue size: 10
I20220816 11:20:19.543099 18772 Pipeline.cpp:55] Pipeline init done!
I20220816 11:20:19.551107 18772 FrameProcessingBlock.cpp:24] FrameProcessingBlock() config frame queue size: 10
I20220816 11:20:19.626916 18772 VideoSensor.cpp:143] VideoSensor created, sensorType=3
I20220816 11:20:19.626916 18772 TofUvcDevice.cpp:304] Depth sensor has been created!
I20220816 11:20:19.630926 18772 VideoSensor.cpp:210] Query stream profile! size= 12, sensorType=3
I20220816 11:20:19.630926 18772 Pipeline.cpp:129] Pipeline start() start!
I20220816 11:20:19.630926 18772 FrameProcessingBlockManager.cpp:75] FrameProcessingBlockManager started, 0 processingblocks contained!
I20220816 11:20:19.630926 18772 Pipeline.cpp:170] Start stream …
I20220816 11:20:19.634922 18772 VideoSensor.cpp:279] VideoSensor::start, sensorType=3
I20220816 11:20:19.634922 18772 Frame.cpp:9] DepthFrame bufferManager created!
I20220816 11:20:19.634922 18772 FrameProcessor.cpp:55] FrameProcessingBlockManager started, 1 processingblocks contained!
I20220816 11:20:19.638931 18772 VideoSensor.cpp:317] Stream starting! sensorType=3
I20220816 11:20:19.638931 18772 VideoSensor.cpp:361] VideoSensor::start done! sensorType=3
I20220816 11:20:19.638931 18772 Pipeline.cpp:186] Sensor start, sensorType=3 streamType=3
I20220816 11:20:19.638931 18772 Pipeline.cpp:189] Start stream done!
I20220816 11:20:19.638931 18772 Pipeline.cpp:166] Pipeline start() done!
E20220816 11:20:19.765288 18772 Pipeline.cpp:272] waitForFrame timeout= 100
W20220816 11:20:19.769285 18772 Pipeline.cpp:90] frameSet is nullptr
E20220816 11:20:19.883930 18772 Pipeline.cpp:272] waitForFrame timeout= 100
W20220816 11:20:19.885902 18772 Pipeline.cpp:90] frameSet is nullptr

This also happens with the examples from the Pose SDK. For example, for SimpleBodyViewer-SFML.exe gives me the following log:

W20220818 15:48:23.193007 5536 Context.cpp:29] Default config file is not loaded !
I20220818 15:48:23.194010 5536 DeviceManager.cpp:50] DeviceManager createDevice…
I20220818 15:48:23.396679 5536 MfPal.cpp:347] Creating Hid Device from path: 4-6-13
I20220818 15:48:23.396679 5536 ObHidDevice.cpp:80] obHid Device open info_.mi=7
I20220818 15:48:23.396679 5536 BufferManager.hpp:29] BufferManager create
I20220818 15:48:23.396679 5536 UvcSensor.cpp:53] libobsensor::UvcSensor::init
I20220818 15:48:23.408190 5536 UvcSensor.cpp:53] libobsensor::UvcSensor::init
I20220818 15:48:23.408190 5536 UvcSensor.cpp:53] libobsensor::UvcSensor::init
I20220818 15:48:23.408190 5536 Context.cpp:58] Context is still in use at other place!
I20220818 15:48:23.408190 5536 Pipeline.cpp:163] Pipeline start() start
I20220818 15:48:23.408190 5536 BufferManager.hpp:29] BufferManager create
I20220818 15:48:23.408190 5536 TofDepthStream.cpp:20] TofDepthStream::start start
I20220818 15:48:23.408190 5536 TofDepthStream.cpp:25] TofDepthStream::start done
I20220818 15:48:23.408190 5536 Pipeline.cpp:241] single stream not support sync
I20220818 15:48:23.471235 5536 AbstractDevice.cpp:486] property unsupported! id=42
E20220818 15:48:24.588773 5536 Pipeline.cpp:593] waitForFrame timeout= 1000
W20220818 15:48:24.588773 5536 Pipeline.cpp:91] frameSet is nullptr
… REPEAT THE LAST TWO LINES FOREVER

I compiled the examples under CLion 2022.2 and I got the same results. Does anyone has them to work with a Femto camera?

[Update] I seem only able to link against the provided libraries in C, but not C++.

Another update. I got the depth stream to work, but only at 320x240 (I could use different fps values, but none worked for 640x480)

Kept going down the rabbit hole.

  • If I set the color stream and the depth stream, then it will work the depth stream at 640x480 (same behavior in Viewer and from my own code)
  • When using a depth stream of 640x480, there are problems with shutting it down. So running my code more than once can make the stream to not work. I need to re-plug the camera.
  • With depth at 320x200 there isn’t any of this issues. It works without the color stream and I can run my code as many times as I want without the camera freezing.

Apparently I fixed the problem of restarting the camera when using 640x480 as depth resolution. I need to start the pipeline, wait, stop it, wait and restart it again.
Still I cannot use depth if I don’t turn color as well, unless using a lower res depth.

What’s your main problems running Femto camera currently?
If 640x480 res, you can’t stop depth stream and cannot use depth without running color?

Hi Nathan,
I will try to summarize everything so far, but for further details please read the notes on this thread.

  1. The depth sensor on 640x480 doesn’t work with the color stream disabled. This leads to most example code not to work with the Femto out of the box.
  2. Even when it works (with the color sensor enabled), the sensor can take a very long time to work again after the app that used it is run a second time. Sometimes it doesn’t work at all and I need to reconnect the camera to fix this issue.
  3. With a depth resolution of 320x200 this problems seems to disappear.

As background, I am currently evaluating the Femto cameras for a medical product application, and reliability is paramount.

As a final note, the camera’s fan is very noisy, more than any other device we currently use. Is there a way to control the fan’s speed profile?