orbbec / OrbbecSDK

Orbbec SDK C/C++ base core lib
https://www.orbbec3d.com/
MIT License
68 stars 9 forks source link

Does Femto Bolt support Ubuntu 22.04 ? #79

Open omarzandona opened 2 months ago

omarzandona commented 2 months ago

Hi all,

From the documentation, I have seen that Femto Bolt supports Ubuntu version 18.04 and later. Indeed, I managed to get it working on both amd64 and arm64 architectures (by compiling examples from the OrbbecSDK repository) with Ubuntu 20.04, but I'm unable to get it to work with Ubuntu 22.04 and later versions (both on amd64 and ARM64-Raspberry Pi 4B - and Ubuntu with versions higher than 20.04).

Even using a Docker with Ubuntu 20.04, I can't get it to work on Ubuntu 22.04 and later hosts.

On every platform, I get this error (arm64 architecture in this case):

june@u22:~ $ LD_LIBRARY_PATH=/home/june/OrbbecSDK/lib/arm64 ./OBDepthViewer 
[04/10 16:33:49.285548][info][38766][Context.cpp:69] Context created with config: default config!
[04/10 16:33:49.285572][info][38766][Context.cpp:74] Context work_dir=/home/june/OrbbecSDK/build/bin
[04/10 16:33:49.285579][info][38766][Context.cpp:77]    - SDK version: 1.9.5
[04/10 16:33:49.285591][info][38766][Context.cpp:78]    - SDK stage version: main
[04/10 16:33:49.285606][info][38766][Context.cpp:82] get config EnumerateNetDevice:false
[04/10 16:33:49.285620][info][38766][LinuxPal.cpp:38] createObPal: create LinuxPal!
[04/10 16:33:49.392381][info][38766][LinuxPal.cpp:112] Create PollingDeviceWatcher!
[04/10 16:33:49.392424][info][38766][DeviceManager.cpp:15] Current found device(s): (1)
[04/10 16:33:49.392436][info][38766][DeviceManager.cpp:24]  - Name: Femto Bolt, PID: 0x066b, SN/ID: CL8FC3100G7, Connection: USB3.1
[04/10 16:33:49.392452][info][38766][Pipeline.cpp:15] Try to create pipeline with default device.
[04/10 16:33:49.392529][info][38766][FemtoBoltUvcDevice.cpp:23] FemtoBoltUvcDevice init ...
[04/10 16:33:49.392619][info][38766][FemtoBoltUvcDevice.cpp:120] Create command start!
[04/10 16:33:49.396012][info][38766][MSDEConverterDevice.cpp:721] Succeed to load depth engine plugin
[04/10 16:33:49.604886][info][38766][FemtoBoltUvcDevice.cpp:271] Create command done!
[04/10 16:33:49.604911][info][38766][FemtoBoltUvcDevice.cpp:431] init sensor map start!
[04/10 16:33:49.604943][info][38766][FemtoBoltUvcDevice.cpp:458] init sensor map done!
[04/10 16:33:49.605711][info][38766][AbstractDevice.cpp:124]    - Firmware version: 1.0.9
[04/10 16:33:49.605855][info][38766][FemtoBoltUvcDevice.cpp:275] Init depth process param start!
[04/10 16:33:49.616655][info][38766][MSDEConverterDevice.cpp:772] got nvram data succeed.
[04/10 16:33:49.616692][info][38766][ObUvcDevice.cpp:112] endpoint:130
[04/10 16:33:49.616776][info][38766][ObUvcDevice.cpp:118] libusb_clear_halt done, endpoint:130
[04/10 16:33:50.060722][info][38766][FemtoBoltUvcDevice.cpp:402] setNvramDataStreamStopFunc succeed
[04/10 16:33:50.060834][info][38766][FemtoBoltUvcDevice.cpp:427] Init depth process param done!
[04/10 16:33:50.062184][info][38766][FemtoBoltUvcDevice.cpp:38] FemtoBoltUvcDevice init done!
[04/10 16:33:50.062216][info][38766][DeviceManager.cpp:157] Device created successfully! Name: Femto Bolt, PID: 0x066b, SN/ID: CL8FC3100G7
[04/10 16:33:50.062293][info][38766][Pipeline.cpp:44] Pipeline created with device: {name: Femto Bolt, sn: CL8FC3100G7}, @0xAAAADEC6AF40
[04/10 16:33:50.062519][info][38766][FemtoBoltUvcDevice.cpp:554] Depth sensor has been created!
[04/10 16:33:50.062680][warning][38766][ObException.cpp:5] Invalid input, No matched video stream profile found!
[04/10 16:33:50.064161][info][38766][Pipeline.cpp:239] Try to start streams!
[04/10 16:33:50.064255][info][38766][VideoSensor.cpp:663] start OB_SENSOR_DEPTH stream with profile: {type: OB_STREAM_DEPTH, format: OB_FORMAT_Y16, width: 640, height: 576, fps: 30}
[04/10 16:33:50.064269][info][38766][MSDEConverterDevice.cpp:544] Start real profile,width:7680 height:434
[04/10 16:33:50.066761][info][38782][MSDEConverterDevice.cpp:75] Depth engine got nvram data size:494408
[04/10 16:33:50.066797][info][38782][MSDEConverterDevice.cpp:102] use dynlib load depthengine lib......
[04/10 16:33:50.291359][error][38782][MSDEConverterDevice.cpp:109] Depth engine create and initialize failed,retCode:204
[04/10 16:33:50.291467][info][38782][MSDEConverterDevice.cpp:75] Depth engine got nvram data size:494408
[04/10 16:33:50.291481][info][38782][MSDEConverterDevice.cpp:102] use dynlib load depthengine lib......
[04/10 16:33:50.419066][error][38782][MSDEConverterDevice.cpp:109] Depth engine create and initialize failed,retCode:204
[04/10 16:33:50.419263][info][38782][MSDEConverterDevice.cpp:75] Depth engine got nvram data size:494408
[04/10 16:33:50.419298][info][38782][MSDEConverterDevice.cpp:102] use dynlib load depthengine lib......
[04/10 16:33:50.546213][error][38782][MSDEConverterDevice.cpp:109] Depth engine create and initialize failed,retCode:204
[04/10 16:33:50.546494][info][38782][MSDEConverterDevice.cpp:75] Depth engine got nvram data size:494408
[04/10 16:33:50.546572][info][38782][MSDEConverterDevice.cpp:102] use dynlib load depthengine lib......
[04/10 16:33:50.673891][error][38782][MSDEConverterDevice.cpp:109] Depth engine create and initialize failed,retCode:204
[04/10 16:33:50.673999][info][38782][MSDEConverterDevice.cpp:75] Depth engine got nvram data size:494408
[04/10 16:33:50.674009][info][38782][MSDEConverterDevice.cpp:102] use dynlib load depthengine lib......
[04/10 16:33:50.804816][error][38782][MSDEConverterDevice.cpp:109] Depth engine create and initialize failed,retCode:204
[04/10 16:33:50.804925][info][38782][MSDEConverterDevice.cpp:75] Depth engine got nvram data size:494408
[04/10 16:33:50.804935][info][38782][MSDEConverterDevice.cpp:102] use dynlib load depthengine lib......
[04/10 16:33:50.935567][error][38782][MSDEConverterDevice.cpp:109] Depth engine create and initialize failed,retCode:204
[04/10 16:33:50.935674][info][38782][MSDEConverterDevice.cpp:75] Depth engine got nvram data size:494408
[04/10 16:33:50.935685][info][38782][MSDEConverterDevice.cpp:102] use dynlib load depthengine lib......
[04/10 16:33:51.065487][error][38782][MSDEConverterDevice.cpp:109] Depth engine create and initialize failed,retCode:204
[04/10 16:33:51.065600][info][38782][MSDEConverterDevice.cpp:75] Depth engine got nvram data size:494408
[04/10 16:33:51.065611][info][38782][MSDEConverterDevice.cpp:102] use dynlib load depthengine lib......
[04/10 16:33:51.192710][error][38782][MSDEConverterDevice.cpp:109] Depth engine create and initialize failed,retCode:204
[04/10 16:33:51.192925][info][38782][MSDEConverterDevice.cpp:75] Depth engine got nvram data size:494408
[04/10 16:33:51.193019][info][38782][MSDEConverterDevice.cpp:102] use dynlib load depthengine lib......
[04/10 16:33:51.317203][error][38782][MSDEConverterDevice.cpp:109] Depth engine create and initialize failed,retCode:204
[04/10 16:33:51.317403][info][38782][MSDEConverterDevice.cpp:75] Depth engine got nvram data size:494408
[04/10 16:33:51.317424][info][38782][MSDEConverterDevice.cpp:102] use dynlib load depthengine lib......
[04/10 16:33:51.445483][error][38782][MSDEConverterDevice.cpp:109] Depth engine create and initialize failed,retCode:204
[04/10 16:33:51.445803][info][38766][Pipeline.cpp:252] Start streams done!
[04/10 16:33:51.445835][info][38766][Pipeline.cpp:235] Pipeline start done!
QSocketNotifier: Can only be used with threads started with QThread
[04/10 16:33:51.547534][warning][38766][Pipeline.cpp:328] Wait for frame timeout, you can try to increase the wait time! current timeout=100
[04/10 16:33:54.553466][warning][38766][Pipeline.cpp:328] Wait for frame timeout, you can try to increase the wait time! current timeout=100 [**30 logs in 3005ms**]
[04/10 16:34:00.564772][warning][38766][Pipeline.cpp:328] Wait for frame timeout, you can try to increase the wait time! current timeout=100 [**60 logs in 6011ms**]
[04/10 16:34:12.575744][warning][38766][Pipeline.cpp:328] Wait for frame timeout, you can try to increase the wait time! current timeout=100 [**120 logs in 12010ms**]
[04/10 16:34:36.609110][warning][38766][Pipeline.cpp:328] Wait for frame timeout, you can try to increase the wait time! current timeout=100 [**240 logs in 24033ms**]

Has anyone else encountered the same issue? If so, how did you resolve it?

NOTE: Using Femto Mega, I didn't encounter any issues on Ubuntu 22.04 and later versions.

Thank you for the support.

Best regards, Omar

jian-dong commented 2 months ago

Hello Omar,

Thank you for your detailed description of the issues you are encountering. It appears that the problem may stem from the NVIDIA GPU drivers not being properly loaded within your Docker environment. To ensure that your system utilizes the NVIDIA GPU correctly, you need to enable GPU support in Docker.

Please follow the NVIDIA Container Toolkit installation guide available here: NVIDIA Container Toolkit Installation Guide. This guide will help you set up the Docker environment to correctly interact with the NVIDIA GPUs.

If you have any further questions or encounter additional issues after following the guide, please feel free to reach out.

omarzandona commented 2 months ago

Hello jian-dong,

Thank you for your prompt response and for providing insights.

I wanted to inform you that my system does not have an NVIDIA GPU installed. Consequently, it may not be feasible for me to proceed with the suggested solution.

Based on my past experience, I believe Femto Bolt can still function when connected to a system with only a CPU, albeit with potentially slower performance compared to systems equipped with an NVIDIA GPU. I've successfully used Femto Bolt on my old system running Ubuntu 18.04 without a GPU, and I didn't encounter any issues (with or without docker).

If you have any alternative suggestions or recommendations that are applicable to systems without NVIDIA GPUs, I would greatly appreciate your insights.

Thank you again for your assistance and understanding. I look forward to your response.