You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit c8c3441
Browse filesBrowse the repository at this point in the historyBrowse files
Copy file name to clipboardExpand all lines: BACKLOG.md
+2-7Lines changed: 2 additions & 7 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -106,14 +106,9 @@
106
106
107
107
### 6B.1 Camera setup
108
108
109
-
-[ ]**Install IP Webcam on phone** — Android app, connect to same WiFi as robot PC. Note stream URL (`http://<phone-ip>:8080/video`).
110
-
-*Done when*: Stream URL opens in browser with live video
111
-
-*Time*: 10 min
109
+
-[x]**Install IP Webcam on phone** — DONE (2026-04-19): stream at `http://192.168.129.1:8080/video`, verified returning 1920×1080 BGR frames.
112
110
113
-
-[ ]**Wire phone camera into perception pipeline** — Update `perception/camera.py` to accept an IP Webcam URL as input source (alongside USB webcam). Scene graph builder should work unchanged.
114
-
-*Done when*: `observe()` MCP tool returns scene graph with detected objects via phone camera
115
-
-*Time*: 30 min
116
-
-*Tag*: `claude-code`
111
+
-[x]**Wire phone camera into perception pipeline** — DONE (2026-04-19): `Camera(source)` accepts int (USB) or string URL; bare `host:port` normalized to `http://host:port/video`. `CAMERA_SOURCE` in `config.py` reads `DECRAS_CAMERA` env var (digits → int, else URL). `.mcp.json` sets `DECRAS_CAMERA=192.168.129.1:8080`. Live test: `Camera(CAMERA_SOURCE).capture()` returns a real frame from the phone; detector runs without error.
perception/camera.py — Webcam capture (USB int device or IP Webcam URL via CAMERA_SOURCE / DECRAS_CAMERA env; degrades to simulated frames when SIMULATE=true)
-**placo FK/IK `.pos` suffix bug fixed (April 2026)** — `joints_to_cartesian()` and `cartesian_to_joints()` silently ignored input joint angles due to key name mismatch (`.pos` suffix from LeRobot). Fixed via `_normalize_joint_dict()`. FK/IK now produces correct results, validated with 10cm XY square on hardware. Remaining concern: IK still changes wrist_flex during EE-space moves → Z drop when moving in X.
98
98
-**`move_cartesian_delta` rewritten (April 2026)** — was reading mid-motion `get_observation()` between sub-steps and using a fast inner interpolation (200ms) the servo couldn't track. Both bugs caused 30-50% reach. New implementation plans waypoints upfront from FK seed, chains IK seeds, uses convergence-based wait + active-hold. Reach now 80-95% on horizontal/down moves.
99
99
-**+Z up moves limited to 25-50% reach** — Feetech servo torque insufficient to lift arm against gravity to IK target. Tracked in BACKLOG (Z-up gravity compensation task).
100
-
- Camera/perception pipeline not tested on real hardware yet
100
+
- Camera pipeline live-tested with IP Webcam on phone (April 2026): 1920×1080 frames from `http://192.168.129.1:8080/video`. Detector runs end-to-end. Real-scene detector tuning (HSV ranges for actual lab objects, not demo red cup / blue plate) not yet done.
101
101
- Servo convergence under gravity load requires active hold loops (repeated send_joint_positions)
102
102
- Only 2 ports: follower on `/dev/ttyACM0`, leader on `/dev/ttyACM1`
0 commit comments