You may have heard that Microsoft is winding up its production of Kinects and that the responsibility for the tech is getting handed over to Orbbec. No? Read here:
Orbbec make a series of time-of-flight cameras and I was wondering if anyone’s had a chance to play with one.
The SDK can be seen at the bottom, but on 2nd viewing its a bit confusing → can we use a Kinect with the Orbbec SDK or can I use an Orbbec with Azure Kinect wrappers? Does this mean we need another Nuget?
The camera is compatible with the Orbbec SDK for both Windows and Linux. This SDK also features an Azure Kinect Sensor SDK Wrapper, allowing software developed for the Azure Kinect development kit to be compatible with Orbbec cameras.
So I’d say yes one would work for both but that that orbbec one will need updating. Someone with an azure could check it out.
Hmm, it not going to be as simple as that.
The VL.Azure Kinect nuget uses K4A. When I tried switching it with the Orbbec version, Gamma crashed.
I cloned the VL.Azure Kinect repo to see if it would be as easy as pointing to the right dll, or changing the names of the functions in CSharp. In fact I think this needs to be recompiled to use with Microsoft.Azure.Kinect.Sensor, which is a .net wrapper.
Then the Orbbec K4A can be used as a native dependency, and probably with Azure Kinect Body.
If the project were being developed in c++ the only requirement would be to swap out the k4a files
If you have the device (Bolt or Mega), it will use a standard UVC protocol so it shouldn’t require additional drivers. Check the hardware is working by downloading the Orbbec Viewer. You may ave to try a few different cables and usb ports.
Download the compiled binaries from Orbbec’s K4A repo. Unzip it and in the bin folder you’ll see these files
You can check that these work by running k4aviewer.exe which should show the sensor running
(While using Gamma preview 0253) install VL.Azure>Kinect Nuget.
Go to the C:\Users\Igor\AppData\Local\vvvv\gamma-preview\nugets\VL.Devices.AzureKinect.1.4.1\runtimes\win-x64\native folder
and replace the depthengine_2_0.dll, k4a.dll and the k4arecord.dll files with those of the Orbbec ones downloaded.
before you replaced the .dlls have you tested that the installed VL.Devices.AzureKinect nuget works correctly with an actual AzureKinect on your system?
the original AzureKinect sdk comes with a k4aviewer.exe. have you tried running this one with the replaced .dlls?
I don’t have a crash, but I get this, and Azure.Kinect patches won’t open. So I think there are a couple of gotchas:
The vl.azure.kinect has a wrapper to handle the kinect-data → vl image gracefully, and its compiled against the Microsoft version of k4v, so I can’t get it working from the Nuget alone.
Also vl.azure.kinect uses a different build from the official build which enables the .mkv recording. Not sure, but I think I need to add that project to the orbbec solution to compile it so it can be used with vl.
another sanity check: instead of replacing files in the nugets runtimes\win-x64\native try removing them there and putting the new ones, including the additional OrbbecSDK.dll, next to vvvv.exe
but also indeed, for the c# wrapper we’re using the custom build mentioned here to get support for the recorder. though this shouldn’t interfere as this didn’t change the native binaries.
Long answer, I pasted them in after a clean install while running an example. It showed some device info, but no pictures came through. When I closed that project and ran another Gamma crashed silently.
I don’t have colour or a point cloud yet, but something seems to be working.
Trying to compile the Orbbec k4a.dll against the ValdPerrformance version, and it complains about version.cs being missing. I’ll look again in the morning.
Hey everybody,
Are there any new findings on setting up the Femto Bolt for the AzureKinect SDK? Has anybody been able to use it with full functionality including the color image so far?
Since there was an update in the the Summer, we found that the Femto Bolt does work with the Azure Kinect nodes in gamma.
I don’t recall the exact details of how we got it working but it might have been as simple as a firmware update. @ravazquez could you give us some insight here?
Thank you a lot @Hadasi !
Works perfectly with your description for the standard AzureKinect integration.
Have you by chance also tried to use the VL.Devices.AzureKinect.Body nuget with the Femto? Because there I get an exception if I try the same thing and exchange the dlls with the ones from the K4A wrapper.
Here is the exception:
Unexpected exception: result = K4A_RESULT_FAILED
Microsoft.Azure.Kinect.BodyTracking.Exceptions.AzureKinectBodyTrackingCreateException: result = K4A_RESULT_FAILED
at Microsoft.Azure.Kinect.BodyTracking.Tracker.Create(Calibration calibration, TrackerConfiguration configuration) in C:\source\src\csharp\Micro
soft.Azure.Kinect.BodyTracking\Tracker.cs:line 32 at VL_Devices_AzureKinect_Body.Devices.AzureKinect.BodyTracker_CsQK4hmPxTfL0XAw2o7C7A.<>c__DisplayClass3_1.b__0()
at System.Reactive.Linq.ObservableImpl.Using2._.Run(Using2 parent)