Oak D Long Range: Depth not working

Dear All,

I bought the Oak D Long Range to capture RGB and Depth. Unfortunatley, I am having trouble to get the depth working.

I tried out the Touchdesigner examples for the OakD. When running the RGB and Depth example, only the RGB arrives, while the depth shows 0fps.

The Oak D is connected via USB.

When running the Luxonis depth API viewer, I can see the depth properly working…

Anyone ideas?
Greetings,
Phil

3 Likes

That model you are using may need something different which we have not integrated. We may have the model - we will check after Xmas.

4 Likes

Thank you very much Greg!

1 Like

We also recently got a long range. It would be great if it could be included in the Touch Designer Examples.

2 Likes

Hey Greg, do you think there is a chance for a solution, to get depth running on the Oak-D Long Range?

Otherwise I am considering to buy another Oak-D. Which Oak-D models are supported by Touchdesigner? How about Oak-D Pro Wide? Is the next generation of Oak D 4 Pro also planned to be integrated into Touchdesigner?

2 Likes

+1, piping depth ai viewer into Touch is somehow not the sexiest solution :slight_smile:
I also think about switching to another Oak-D. Any recommandations anyone?

What do you mean with piping DepthAI Viewer…? like screen grabbing it from the viewer, to get it into Touchdesigner?

1 Like

I have the Oak-D Pro W / OV9782 version and I’m having the same issues getting Touchdesigner to interact with the depth information. I would love some help. There’s not much help on the net. I do like this camera in regards to quality and potential.

1 Like

Any update on this?
I too am able to get the rgb stream in from my OAK-D but the depth doesnt seem to be available.
(I’m on a Mac running Sonoma)

I had some communication with derivative via mail and they didn’t try the OAK D LR yet, so far they tested:

OAK D (USB)
OAK D Lite (USB)
OAK D POE
OAK D Pro (USB)

we have not experienced issues on these regarding the depth stream

( Other cameras capable of streaming their depth image are the ZED cam and
RealSense both working with a stereo depth image. The Kinect Azure or
Orbec cameras on the other hand offer a ToF sensor with better out of
the box quality. )

It’s the same situation as mine.
The response I received from Luxonis was that the “Oak-D LR” camera uses the ColorCamera for StereoDepth, unlike other Oak-D cameras.
After installing DepthAi, you can check this by running “stereo_preview_lr.py” located in the examples folder.
I’m trying to fix the issue by modifying the callbacks DAT, referencing this Python file, but since I’m not very good at programming languages… I’m having trouble solving it. :smiling_face_with_tear:

I asked the same question on the Luxonis forum and their suggestion was to unplug it and plug it back in.
Didn’t work for me, but maybe it will work for someone else.

Dear All,
has anyone found a solution yet to use StereoDepth on the OakD-LR? Or what was your workaround?

Good news everyone: I get a depth Point Cloud from my Oak D Long Range in touchdesigner!

I am using the example “stereo_preview_lr.py” from the Luxonis depthai repository in the callback. And in the OAK Select I choose the “Point Cloud” Output Format.

If using the example you might want to change center.setBoardSocket(dai.CameraBoardSocket.CENTER)
by
center.setBoardSocket(dai.CameraBoardSocket.CAM_A)
as CENTER is deprecated.

Sounds great, have to check it!

Dear chantal, can you share your code? I could only find:

How exactly does your touchdesigner dat look like?

Thanks chantal, I got pointcloud and depth stream working with OAK D Long Range in Touchdesigner. It is quite noisy, but works!:

import depthai as dai

def createPipeline(oakDeviceOp):
    OakProject = parent.OakProject

    # Load default parameters
    op('oakStereoDepthConfig').par.Loaddefaults.pulse()
    op('oakDeviceConfig').par.Loaddefaults.pulse()

    # Create pipeline
    pipeline = dai.Pipeline()

    # === Create nodes ===
    left = pipeline.create(dai.node.ColorCamera)
    center = pipeline.create(dai.node.ColorCamera)
    stereo = pipeline.create(dai.node.StereoDepth)

    xinStereoDepthConfig = pipeline.create(dai.node.XLinkIn)

    xoutLeft = pipeline.create(dai.node.XLinkOut)
    xoutRight = pipeline.create(dai.node.XLinkOut)
    xoutDepth = pipeline.create(dai.node.XLinkOut)
    xoutDisparity = pipeline.create(dai.node.XLinkOut)
    xoutRectifiedLeft = pipeline.create(dai.node.XLinkOut)
    xoutRectifiedRight = pipeline.create(dai.node.XLinkOut)

    # === Set stream names ===
    xinStereoDepthConfig.setStreamName("stereoDepthConfig")
    xoutLeft.setStreamName("left")
    xoutRight.setStreamName("right")
    xoutDepth.setStreamName("depth")
    xoutDisparity.setStreamName("disparity")
    xoutRectifiedLeft.setStreamName("rectified_left")
    xoutRectifiedRight.setStreamName("rectified_right")

    # === Camera Config ===
    resolution = dai.ColorCameraProperties.SensorResolution.THE_1200_P
    fps = 30  # or OakProject.par.Monofps.eval()

    left.setResolution(resolution)
    left.setBoardSocket(dai.CameraBoardSocket.LEFT)
    left.setIspScale(2, 3)
    left.setFps(fps)

    center.setResolution(resolution)
    center.setBoardSocket(dai.CameraBoardSocket.CENTER)
    center.setIspScale(2, 3)
    center.setFps(fps)

    # === StereoDepth Config ===
    stereo.setDefaultProfilePreset(dai.node.StereoDepth.PresetMode.HIGH_DENSITY)
    stereo.initialConfig.setMedianFilter(dai.MedianFilter.KERNEL_7x7)
    stereo.setLeftRightCheck(True)
    stereo.setExtendedDisparity(True)
    stereo.setSubpixel(True)
    stereo.setRectifyEdgeFillColor(0)  # black edges
    stereo.setRuntimeModeSwitch(True)

    # === Linking ===
    # Stereo pair: LEFT-CENTER
    left.isp.link(stereo.left)
    center.isp.link(stereo.right)

    # Send configuration
    xinStereoDepthConfig.out.link(stereo.inputConfig)

    # Outputs
    stereo.syncedLeft.link(xoutLeft.input)
    stereo.syncedRight.link(xoutRight.input)
    stereo.depth.link(xoutDepth.input)
    stereo.disparity.link(xoutDisparity.input)
    stereo.rectifiedLeft.link(xoutRectifiedLeft.input)
    stereo.rectifiedRight.link(xoutRectifiedRight.input)

    return pipeline

A quick documentation with example file can be found here:

Hi firepille,
nice that it works! Sorry for the delayed answer. As I see you figured it all out. Thank you for sharing on GitHub. Now the actual work can begin. Have fun!