Repository navigation
Conversation
Co-authored-by: Sterling G. Baird <45469701+sgbaird@users.noreply.github.com> Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…24) scripts/piper_camera_cable_check.py scores every pair of 102 side-camera spots around the table together with the overhead camera A, on the 400 poses and 1 px noise model of piper_camera_placement.py, and asks how much the best score drops when both side cameras hang off one Pi 5. Best pair that fits two 500 mm ribbons: 92.2 % of poses within 2 mm (both cameras at the right-hand end, 900 mm apart); best with no limit: 93.8 %. Also scores a few overhead variants. docs/issue-24/camera-literature: the results, figure, and a README that checks the placement against the literature, other arm setups on GitHub and the Raspberry Pi docs. piper_twin.py, piper_camera_placement.py and the 2026-10-13 camera model are copied unchanged from claude/issue-24-20261014-1347 so the branches merge in either order. Co-authored-by: Sterling G. Baird <45469701+sgbaird@users.noreply.github.com> Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: Sterling G. Baird <45469701+sgbaird@users.noreply.github.com> Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The PaperQA document-index pickles attached to each trajectory (47-197 MB each) are not committed: two are over GitHub's 100 MB limit. The *_files.json listings keep their data-storage IDs for re-fetching. Co-authored-by: Sterling G. Baird <45469701+sgbaird@users.noreply.github.com> Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: Sterling G. Baird <45469701+sgbaird@users.noreply.github.com> Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Claude finished @jss265's task in 17m 45s —— View job All of #24's files are now in this PR#24's runs pushed to five branches, and this PR only had the last one. I copied in everything the other four added, with one commit per branch. The PR now has 100 files.
I also added two files that aren't from a branch (
The scripts run from this branchBefore this,
I didn't touch the Pis or the arm. To decide before merging
|
…2335 (#24) Brings in everything that branch added up to fb90d85, byte for byte: the small-motion protocol (scripts/piper_camera_check.py), the compare and side-by-side tool (scripts/piper_camera_compare.py), the 2026-10-13 photo, the planned rest pose, the simulated protocol video and the synthetic self-test, plus its CLAUDE.md note on the side camera and the twin. piper_twin.py and camera_2026-10-13.json were already here and are identical. Co-authored-by: Joshua Spiesman <99856667+jss265@users.noreply.github.com> Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…24) Brings in everything that branch added up to 24a03c2, byte for byte: docs/issue-24/camera-placement (README, scores, camera files for the taped, overhead and right-hand-end cameras, renders and the animation) and the 2026-10-14 photo. piper_twin.py, piper_camera_placement.py and camera_2026-10-13.json were already here and are identical. Co-authored-by: Joshua Spiesman <99856667+jss265@users.noreply.github.com> Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…#24, #25) Brings in everything that branch (open as #25) added up to 2608989, byte for byte: the J1 rest seat (scripts/piper_rest_seat.py and docs/issue-24/rest-seat with STL/3MF, renders, animation and checks), scripts/piper_bus_check.py, the 2026-10-14 side-camera frame, and its three CLAUDE.md sections (is the arm on, look through the camera before motion, arm state on the Pi, rest seat rules). The CLAUDE.md text is unchanged, so #25 and this PR still merge in either order. Co-authored-by: Joshua Spiesman <99856667+jss265@users.noreply.github.com> Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Brings in everything that branch added up to af6e7a6, byte for byte: scripts/piper_camera_fixtures.py and docs/issue-24/camera-fixtures (STL and STEP for every printed part under cad/, nominal camera files, figures, the tour and assembly animations, summary.json and the install README). piper_twin.py and piper_camera_placement.py were already here and are identical. Co-authored-by: Joshua Spiesman <99856667+jss265@users.noreply.github.com> Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
docs/issue-24/README.md says what each folder is, which scripts made it and which #24 comment and branch it came from, notes that the taped camera was removed on 2026-10-21, and records which scripts were re-run from this branch on 2026-10-23 and what they reproduced. rest-seat/request_sketch_2026-10-14.jpg is the photo attached to the rest-seat request on #24 (no EXIF location), marking cables A and B. Co-authored-by: Joshua Spiesman <99856667+jss265@users.noreply.github.com> Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
@claude:medium please connect to all three of the cameras on the robot arm table and send a screenshot so I can validate they are connected and working properly. Label each with the 4 character Pi id and which camera's view it is |
|
Claude finished @jss265's task in 1m 22s —— View job Stills from the three PiPER table camerasAll three cameras show up on their Pis and each returned a frame, but only one has a usable view of the arm right now.
So the three cameras are spread over two Pis: one on eufi and two on 76zj. mpzy has none. If one of 76zj's cameras is supposed to be on mpzy, check that ribbon on mpzy and re-seat it. Full-resolution stills: All four images are in What I did on the Pis: I took one Not done: I can't fix the focus or the mounting from here; someone has to do that at the table. Once the cameras are mounted, ask again and I'll take a fresh set. |
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Co-authored-by: Joshua Spiesman <99856667+jss265@users.noreply.github.com>
|
@claude:high please try again. I achknowledge the cameras aren't fixtured properly yet (thats why I only want a single photo from each to debug connection issues). I changed the focus on HQ wide lens (though this isn't a priority at the moment). I unplugged and repluged in both cameras to the mpzy so it should be connected now. limit response to a couple sentences Then in 3 final sentences explain how easy it would be to get each camera on a live feed on youtube. This would be helpful as we fixture the cameras and focus the HQ wide lens. @sgbaird any objection to combining 4 or 5 camera feeds into one live youtube video? |
|
Claude finished @jss265's task in 2m 10s —— View job All five cameras are connected and workingAt 20:57 UTC, all five cameras on the three Pis each took a still: eufi cam0 (Camera Module 3 Wide), 76zj cam0 (HQ) and cam1 (Module 3 Wide), and both of mpzy's cameras (Module 3 Wide), so the re-plug fixed mpzy. The HQ frame is still blurry, maybe because something is very close to the lens. The full-size stills are in Live feeds on YouTube: One camera per stream is easy: with a YouTube stream key from Studio, a single |
Co-authored-by: Joshua Spiesman <99856667+jss265@users.noreply.github.com> Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@jss265 thanks for getting this going! I think best to leave it one per stream for now, though I think it would be fine to try to combine them ad-hoc. For now, I'd recommend just having the 5 livestreams pulled up directly on YouTube and tabbing through them and/or doing what you're doing above @claude at the AC (in collaboration with Kelvin Chow) we explored this idea of a multi-stream quite a bit. See that repo and ac-dev-lab. We didn't quite get to a final solution. Link to these so I don't have to go searching for them. |
|
Claude finished @sgbaird's task in 5m 51s —— View job Links to the AC multi-stream workKelvin's repo is youtube-multiview, and the ac-dev-lab thread is #421. Neither one merges feeds into a single stream: both put several separate YouTube streams on one page, which fits keeping one stream per camera. Watching several streams at once
One stream per camera
Correction to my last reply: I said someone would need to add a stream key from YouTube Studio. That isn't needed: the lab's Lambda already hands out stream keys to byu-vcl's stream cams, and the table cameras could use it too. Each camera would need three things:
I only looked things up and linked them. Nothing in this PR changed, and I didn't touch the Pis. |
|
@claude surely there's some tool like this out there already (e.g., a hosted service, github repository, etc.). There's no way we're the first to have thought about this. Make the assumption that all videos will be either public or unlisted for now, so we don't have to deal with the private video authentication, though others will obviously want that at some point. |
|
Claude finished @sgbaird's task in 21m 56s —— View job Yes, these already exist. Holodex Multiview is the one to useYou're right that someone already built the viewer. The most complete one comes from the VTuber fan community: Holodex Multiview (source: MIT license, 673 stars, still maintained). It covers everything youtube-multiview's main branch does, and more. I opened one link with the three streams live on BYU VCL Hardware Streams at 19:00 UTC today. All three loaded, with no account and no code:
Other tools that work but add nothing for us:
No tool handles the new video ID after a restartThe stream cams restart every 8 hours, at 03:00, 11:00 and 19:00 UTC. Each restart creates a new broadcast with a new video ID. The link above went stale within a minute of the screenshot: by 19:01 the OT-2 overhead stream was already
So what's missing is a small lookup that finds the current IDs, not a new viewer:
A few-line page could do one of those lookups and redirect to a Holodex link. youtube-multiview could shrink to just that. Two limits:
I looked things up and tested the links in a headless browser. The only file I added is the screenshot above, in |
The three streams live on BYU VCL Hardware Streams at 19:00 UTC on 2026-10-27, opened from one holodex.net/multiview link. Co-authored-by: Sterling G. Baird <45469701+sgbaird@users.noreply.github.com> Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
@claude:medium get a snapshot from all cameras, except for the top view camera (we are waiting for longer cables to come in the mail). They have been fixtured, plugged in, and powered on, but the HQ will still be out of focus. Limit response to 2 sentences and a picture from each camera |
|
Claude finished @jss265's task in 2m 15s —— View job Only mpzy's camera answeredmpzy cam0 (Module 3 Wide) took the still above, a corner view of the arm. eufi detects no camera ( |
#24) Co-authored-by: Joshua Spiesman <99856667+jss265@users.noreply.github.com> Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
@claude:high look at the above prompt and retry they are all plugged in (except for the top view camera) |
|
Claude finished @jss265's task in 2m 43s —— View job Two of the four cameras answered; 76zj is still offlineRebooting eufi and mpzy brought back eufi cam0 (left), because Pi cameras are only detected at boot. The arm wasn't connected to eufi (no CAN adapter, no controller), so the reboot couldn't affect it. mpzy cam0 (right) also works, but mpzy still finds only one camera after the reboot, so check its second ribbon. 76zj (the HQ and its wide camera) has been offline on Tailscale since 00:57 UTC, so check that it's powered and on Wi-Fi. I blurred a person in the background of eufi's frame. |
…fline (#24) Co-authored-by: Joshua Spiesman <99856667+jss265@users.noreply.github.com> Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
@claude:xhigh attempt above again. all pis are plugged in. You were right. I had forgotten to plug in the gripper cams |
|
Claude finished @jss265's task in 11m 20s —— View job The two table cameras work; the gripper cams' Pi (76zj) is still offlineAt 02:20 UTC both table cameras, eufi cam0 and mpzy cam0 (both Module 3 Wide), took the stills above; I blurred a person in the background of eufi's frame. The gripper cams (#10's HQ and Module 3 Wide) are on 76zj, which hasn't been on Tailscale since 00:57 UTC, didn't come back during 6 minutes of polling, and doesn't answer on the LAN from mpzy either, so please check its power and Wi-Fi (the wrist cameras I can see in eufi's frame aren't wired to eufi or mpzy: after I rebooted both, each still detects only one camera). |
…ams still offline (#24) Co-authored-by: Joshua Spiesman <99856667+jss265@users.noreply.github.com> Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
@claude try one more time. I just hard reset the 76zj |
|
Claude finished @jss265's task in 14m 2s —— View job Both table cameras work, but 76zj (the gripper cams) didn't come back after the reseteufi cam0 and mpzy cam0 (the two Module 3 Wide table cameras) took these stills at 02:30 and 02:24 UTC; I blurred a person in eufi's background (full size). 76zj still wasn't on Tailscale at 02:37 UTC (last seen 00:57 UTC), so check its LED: if it's dark the Pi has no power, if it's red the Pi is off (press the power button once; holding it only turns a Pi 5 off), and if it's green, plug in a monitor or boot it with both camera ribbons unplugged, in case a ribbon is stopping it from booting. |
…er its reset (#24) Co-authored-by: Joshua Spiesman <99856667+jss265@users.noreply.github.com> Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
@claude poll all cameras again. Don't wait more than 2 minutes. I swapped a couple SD cards (I will replace them) to diagnose the issue... I'm thinking it could be a power cord issue but that doesn't seem likely |
|
Claude finished @jss265's task in 8m 49s —— View job Only eufi's camera answered. mpzy's SD card is now in a board with no cameras, powered by a weak charger
Power: the board mpzy's card is in now does have a power problem:
But that board still booted mpzy's card and joined Tailscale, so a weak charger alone shouldn't keep a Pi offline. So if 76zj's card is now in mpzy's old board, and that board is powered, the card is the more likely fault. Under-voltage is a common cause of SD card corruption, so if that is 76zj's board, it has been running on this charger, and I'd replace both the charger and the card. If the gripper cams are wired to that board, re-seat their ribbons and power-cycle it, since a Pi only detects cameras at boot. I only ran read-only checks and took one still. I deleted the still from eufi's |
… no camera, 76zj offline (#24) Co-authored-by: Joshua Spiesman <99856667+jss265@users.noreply.github.com> Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Noting that I did replace the cards. They are now in their origional Pis. |
|
Hmm.. is this with the extension cords? |
|
Re-imaging is a bit of a pain, since it involves setting up tailscale again, but it's not terrible. Maybe 20 minutes |
|
Try connecting 76zj into a monitor. If you bring it up for our meeting, I can give you the required adapter. Not sure there's one downstairs (micro-hdmi to hdmi) EDIT: nvm, looks like I don't have one in my office. |
|
@claude look through all of byu-vcl, digital-alloy-lab, etc. to see if there is any trace of having a mini-HDMI to HDMI connector or adapter somewhere. |
|
Claude finished @sgbaird's task in 24m 6s —— View job The lab doesn't seem to own one, but the ECEn ELC on campus has 8 in stockNothing in the repos shows the lab owns a micro-HDMI cable or adapter.
Where to get one: the ECEn ELC, Clyde BuildingA byu-vcl branch saved the ELC's parts catalogue on 9 Oct (
The front desk is in 416 Clyde Building, open Mon–Fri, 8 am to 5 pm. The ELC sells these items; it doesn't lend them. You can pay with Cougar Cash, a department card or a research group account. Micro, not mini: the Pi 5's ports are micro-HDMI (Type D). A mini-HDMI (Type C) adapter won't fit; that's the kind that comes with Pi Zero kits. What I searched:
I couldn't read digital-alloy-lab-private, sgbaird/byu-finances or meorders.byu.edu. Searching meorders for "HDMI" would settle whether the lab ever bought one. I didn't change any files or touch the Pis. |








Checks the overhead + two side camera placement from #24 against four Edison Scientific answers, other arm setups on GitHub and the manuscript literature, and re-scores it with the digital twin under the two-500-mm-ribbon limit.
Simulated only. The arm Pi was offline and was not touched.
Refs #24
Generated with Claude Code