Q
qywqyw

  • 4 days ago
  • Joined 5 days ago
  • 0 best answers
  • Hi Luxonis,

    I consistently observe a 100~200mm offset between the depth values returned by the OAK-D-Pro and physical measurements (using a ruler).

    For example, at a ground-truth distance of 1000 mm, the camera reports 1150 mm; at 800 mm, the camera reports 914 mm; at 1300 mm, it reports 1500 mm. This discrepancy occurs across multiple test scenarios.

    Could you provide guidance on analysing the case (whether it be a hardware or software problem) and troubleshooting? Thank you!

    Device Details:

    • Model: OAK-D-Pro (Fixed Focus)

    • Host OS: Ubuntu 22.04

    • DepthAI SDK Version: 2.19.0

    here is my code used:

    $$

    Extract and output the center pixel of the depth image

    import depthai as dai
    import numpy as np
    import cv2
    from datetime import timedelta

    pipeline = dai.Pipeline()

    monoLeft = pipeline.create(dai.node.MonoCamera)
    monoRight = pipeline.create(dai.node.MonoCamera)
    color = pipeline.create(dai.node.ColorCamera)
    stereo = pipeline.create(dai.node.StereoDepth)
    sync = pipeline.create(dai.node.Sync)

    xoutGrp = pipeline.create(dai.node.XLinkOut)

    xoutGrp.setStreamName("xout")

    monoLeft.setResolution(dai.MonoCameraProperties.SensorResolution.THE_400_P)
    monoLeft.setCamera("left")
    monoRight.setResolution(dai.MonoCameraProperties.SensorResolution.THE_400_P)
    monoRight.setCamera("right")

    stereo.setDefaultProfilePreset(dai.node.StereoDepth.PresetMode.HIGH_ACCURACY)

    color.setCamera("color")

    sync.setSyncThreshold(timedelta(milliseconds=50))

    monoLeft.out.link(stereo.left)
    monoRight.out.link(stereo.right)

    stereo.depth.link(sync.inputs["depth"])
    color.video.link(sync.inputs["video"])

    sync.out.link(xoutGrp.input)

    disparityMultiplier = 255.0 / stereo.initialConfig.getMaxDisparity()
    with dai.Device(pipeline) as device:
    queue = device.getOutputQueue("xout", 10, False)
    while True:
    msgGrp = queue.get()
    for name, msg in msgGrp:
    frame = msg.getCvFrame()
    if name == "depth":
    print(frame[200][320])
    cv2.imshow(name, frame)
    if cv2.waitKey(1) == ord("q"):
    break
    $$