Device: Astra Pro, PID: 0x0403, VID: 0x2bc5
SDK version: v1.10.35
Platform: Raspberry Pi 4 (aarch64), Raspberry Pi OS
I'm using the Sensor-level callback API (ob_sensor_start with a depth sensor
obtained via ob_device_get_sensor_list) to bypass the Pipeline's frameset
sync mechanism, since this device reported "Current device does not support
frame sync" and would never produce a frameset via
ob_pipeline_wait_for_frameset.
Using OB_PROFILE_DEFAULT, I get a 160x120 Y16 depth stream with
ob_depth_frame_get_value_scale() returning 1.0.
The problem: the raw pixel values do not appear to correspond to real-world
millimeter distance. Testing with a flat board at known distances, center-
region raw values were:
- ~0.1-0.2m (very close): all zero (below min range, as expected)
- ~1m: raw max ~470-572, most valid pixels in a similar range
- ~2m: raw max ~464-545
There's almost no difference between the 1m and 2m readings, which suggests
either:
- The raw Y16 values are an uncalibrated/unconverted disparity encoding
(not final depth), and this device's disparity-to-depth calibration
constants aren't being applied because it's not in the officially
supported device list, or
- Something else is misconfigured on my end (profile selection, missing
API call, etc.)
Could you confirm:
- Whether Astra Pro's depth output via this SDK is expected to already be
in real-world mm (scale-multiplied), or if additional calibration/
disparity conversion is needed on the application side?
- If additional conversion is needed, what the correct approach or formula
is for this device?
Happy to share code or additional logs if useful.
Device: Astra Pro, PID: 0x0403, VID: 0x2bc5
SDK version: v1.10.35
Platform: Raspberry Pi 4 (aarch64), Raspberry Pi OS
I'm using the Sensor-level callback API (ob_sensor_start with a depth sensor
obtained via ob_device_get_sensor_list) to bypass the Pipeline's frameset
sync mechanism, since this device reported "Current device does not support
frame sync" and would never produce a frameset via
ob_pipeline_wait_for_frameset.
Using OB_PROFILE_DEFAULT, I get a 160x120 Y16 depth stream with
ob_depth_frame_get_value_scale() returning 1.0.
The problem: the raw pixel values do not appear to correspond to real-world
millimeter distance. Testing with a flat board at known distances, center-
region raw values were:
There's almost no difference between the 1m and 2m readings, which suggests
either:
(not final depth), and this device's disparity-to-depth calibration
constants aren't being applied because it's not in the officially
supported device list, or
API call, etc.)
Could you confirm:
in real-world mm (scale-multiplied), or if additional calibration/
disparity conversion is needed on the application side?
is for this device?
Happy to share code or additional logs if useful.