This is the minimal RGBD point-cloud reference in the repo. Use it when you need the smallest example that aligns stereo depth to a color stream and publishes a point cloud without adding custom host processing or neural inference.
- You need a clean baseline for
StereoDepth + RGBD + pcl. - You want to align depth to RGB or optionally colorize the point cloud from the right mono camera.
- You need a point-cloud reference that still works with the Visualizer rather than Open3D.
- You want a simple starting point before moving to measurement or frontend-heavy examples.
- You need box fitting, spatial ROI measurement, or host-side post-processing.
- You need ToF-specific depth.
- You need a browser frontend or a desktop GUI.
- You need neural inference fused into the point-cloud pipeline.
Category:depth-measurement/3d-measurement/rgbd-pointcloudShape:script+standalonePrimary task:align stereo depth to a color source and publish a point cloudEntrypoint:main.pyStandalone path:oakapp.tomlFrontend:noneRuns on:stereo-capable devices withCAM_B/Cand eitherCAM_Aor the right mono cameraRequires:stereo mono pair, calibration, and optionally RGB camera if--monois not usedInput:stereo depth fromCAM_B/C; color fromCAM_Aby default or right mono with--monoOutput:previewandpointcloudModels:noneVisualizer / UI:DepthAI Visualizer viadai.RemoteConnection
- README.md: usage notes and mode selection
- main.py: complete pipeline and alignment branch
- utils/arguments.py: CLI surface, especially
--mono - oakapp.toml: packaging path
CAM_BandCAM_CfeedStereoDepth.RGBDis used to fuse depth with a selected color source.- The color source is either:
CAM_Ain RGB mode- the right mono camera when
--monois set
- RVC4 uses
ImageAlignto align depth to the chosen color stream. - RVC2 uses
stereo.inputAlignToinstead of a separateImageAlignnode. - The Visualizer receives both the color preview and the generated point cloud.
CAM_B/C -> StereoDepth -> aligned depthCAM_A or right mono -> RGBD.inColoraligned depth + color -> RGBD -> pointcloudselected color stream -> preview
Safe to change:topic names, preview sizing, default color source choice, projector usageRequires care:alignment path differences between RVC2 and RVC4, camera socket assumptions, output frame typesLikely to break if changed blindly:switching image size without keeping color/depth alignment consistent, or assuming every device supports an IR projector
To colorize from mono by default:start from the--monobranch in main.pyTo reuse this as a point-cloud baseline for another task:keep theStereoDepthandRGBDbranch and replace the Visualizer topicsTo add host-side geometry processing:compare against depth-measurement/3d-measurement/box-measurement after this baseline is workingTo move to ToF:use depth-measurement/3d-measurement/tof-pointcloud instead
- This example assumes a stereo mono pair on
CAM_BandCAM_C. - RGB mode assumes the color camera is on
CAM_A. device.setIrLaserDotProjectorIntensity(1)may fail on devices that do not expose that feature.- The point cloud is published directly from
RGBD; there is no host-side filtering or resampling layer here.
previewis the selected color stream, not a rendered depth image.- The
--monoflag does not disable RGBD; it changes the colorization source to the right mono camera. - oakapp.toml provides packaging, but this is still a valid peripheral-mode reference.
- depth-measurement/3d-measurement/box-measurement: use this when you need segmentation-driven measurements on top of RGBD point clouds
- depth-measurement/3d-measurement/tof-pointcloud: use this when the point cloud should come from a ToF sensor
- depth-measurement/stereo-on-host: use this when you need host-side stereo comparison rather than a point cloud
- tutorials/camera-stereo-depth: use this when you need a simpler stereo depth baseline before RGBD fusion
Run:python3 main.pyStandalone run:oakctl app run .Success looks like:the Visualizer showspreviewpluspointcloud, and the point cloud follows the selected color sourceCommon failure meaning:the device lacks the required camera topology, calibration is missing, or RGB/depth alignment assumptions do not match the hardware