Initial commit: RealSense D435 API server
Drop-in replacement for the Nuwa-HP60C camera container, exposing RGB +
aligned depth + intrinsics via REST/WebSocket so the existing
pestello-pose-detector pipeline can consume frames without changes.
Key adaptations for D4xx on USB 2.0 (this robot has no USB 3 port exposed
externally — see STATUS.md):
- pyrealsense2 built from source; the librealsense v2.55.1 install rule
doesn't ship the main .so, so we copy it from the build dir and add an
__init__.py that re-exports the submodule.
- Color stream uses YUYV format on USB 2.x (BGR8/RGB8 time out on this
bus); converted to BGR via cv2.cvtColor in capture().
- rs.align is skipped on USB 2 (incompatible with YUYV); color is
cv2-resized to depth shape for approximate per-pixel alignment.
- Driver auto-detects usb_type_descriptor and falls back to the
full-resolution BGR8 + rs.align pipeline when on USB 3.
Tested: /api/{health,status,discover,rgb,depth,depth/color,capture,
intrinsics} all return 200 with valid payloads at 640x480.
This commit is contained in:
commit
07d95792e3
58 files changed
+6987
No files matched your search
@@ -0,0 +1,15 @@
|
||||
#!/bin/bash
|
||||
# RealSense D4xx uses uvcvideo via the librealsense2 backend, so no driver
|
||||
# unbind is needed — unlike the Nuwa HP60C entrypoint.
|
||||
#
|
||||
# librealsense expects the udev rules to be present on the host. The rules
|
||||
# package is installed inside the image too (librealsense2-udev-rules) but
|
||||
# udev itself runs on the host; if the camera is not visible to lsusb the
|
||||
# host udev rules are likely missing or stale.
|
||||
|
||||
set -e
|
||||
|
||||
PORT=${API_PORT:-8878}
|
||||
|
||||
echo "[entrypoint] Starting RealSense D4xx API server on port ${PORT}..."
|
||||
exec python3 -m uvicorn src.backend.main:app --host 0.0.0.0 --port "${PORT}"
|
||||
Reference in new issue
Block a user