As a perception node,
I want a per-pixel depth map in millimetres,
so that I can fit a table plane and locate objects without receiving a point cloud.
Requirements
Retrieve sl::MEASURE::DEPTH on each successful grab.
New output depth: float32, shape [H, W], layout HW, units millimetres.
Replace inf and nan with 0 before publishing.
H and W match image_bgr for the same frame.
Metadata: dtype, layout, shape, units, fx, fy, cx, cy, distortion, frame_id, and the timestamps defined in the timestamp issue.
Document the output and its metadata in README.md.
Acceptance Criteria
depth is published on every frame on which image_bgr is published.
shape metadata matches the payload length: H * W * 4 bytes.
The payload contains no inf and no nan.
Depth dimensions equal image dimensions for the same frame_id.
README.md documents the output.
Notes
The existing point_cloud output is not a substitute. Consumers back-project depth to 3D
themselves using the intrinsics; reference implementation littlehand/perception/table.py::back_project(depth_mm, camera_matrix), called from littlehand/perception/stages/table.py.
Zero is used for missing depth rather than nan to match the reference driver
(littlehand/cameras/zed.py), which clears inf and nan to 0 after retrieval. Holes
are meaningful and must not be interpolated unless ZED_DEPTH_FILL is set.
# Feature: Publish a depth output
## User Story
As a perception node,
I want a per-pixel depth map in millimetres,
so that I can fit a table plane and locate objects without receiving a point cloud.
## Requirements
- Retrieve `sl::MEASURE::DEPTH` on each successful grab.
- New output `depth`: `float32`, shape `[H, W]`, layout `HW`, units millimetres.
- Replace `inf` and `nan` with `0` before publishing.
- `H` and `W` match `image_bgr` for the same frame.
- Metadata: `dtype`, `layout`, `shape`, `units`, `fx`, `fy`, `cx`, `cy`, `distortion`, `frame_id`, and the timestamps defined in the timestamp issue.
- Document the output and its metadata in `README.md`.
## Acceptance Criteria
- [ ] `depth` is published on every frame on which `image_bgr` is published.
- [ ] `shape` metadata matches the payload length: `H * W * 4` bytes.
- [ ] The payload contains no `inf` and no `nan`.
- [ ] Depth dimensions equal image dimensions for the same `frame_id`.
- [ ] `README.md` documents the output.
## Notes
The existing `point_cloud` output is not a substitute. Consumers back-project depth to 3D
themselves using the intrinsics; reference implementation
`littlehand/perception/table.py::back_project(depth_mm, camera_matrix)`, called from
`littlehand/perception/stages/table.py`.
Zero is used for missing depth rather than `nan` to match the reference driver
(`littlehand/cameras/zed.py`), which clears `inf` and `nan` to `0` after retrieval. Holes
are meaningful and must not be interpolated unless `ZED_DEPTH_FILL` is set.
cristhian
added this to the v0.2.0 Pure camera source on dora 1.0 milestone 2026-09-04 20:35:17 +00:00
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Feature: Publish a depth output
User Story
As a perception node,
I want a per-pixel depth map in millimetres,
so that I can fit a table plane and locate objects without receiving a point cloud.
Requirements
sl::MEASURE::DEPTHon each successful grab.depth:float32, shape[H, W], layoutHW, units millimetres.infandnanwith0before publishing.HandWmatchimage_bgrfor the same frame.dtype,layout,shape,units,fx,fy,cx,cy,distortion,frame_id, and the timestamps defined in the timestamp issue.README.md.Acceptance Criteria
depthis published on every frame on whichimage_bgris published.shapemetadata matches the payload length:H * W * 4bytes.infand nonan.frame_id.README.mddocuments the output.Notes
The existing
point_cloudoutput is not a substitute. Consumers back-project depth to 3Dthemselves using the intrinsics; reference implementation
littlehand/perception/table.py::back_project(depth_mm, camera_matrix), called fromlittlehand/perception/stages/table.py.Zero is used for missing depth rather than
nanto match the reference driver(
littlehand/cameras/zed.py), which clearsinfandnanto0after retrieval. Holesare meaningful and must not be interpolated unless
ZED_DEPTH_FILLis set.