Skip to content

Add drop-test protocol, Edison synthesis, and first-data analysis#67

Draft
sgbaird with Copilot wants to merge 26 commits into
mainfrom
copilot/get-video-drop-test-data
Draft

Add drop-test protocol, Edison synthesis, and first-data analysis#67
sgbaird with Copilot wants to merge 26 commits into
mainfrom
copilot/get-video-drop-test-data

Conversation

Copilot AI commented May 26, 2026

Copy link
Copy Markdown
Contributor

Issue is operational (coordinating the first crush/drop tests on Jeff Hill's tower) and this repo is the LaTeX MRG proposal with no code or existing test-protocol surface. This PR consolidates the moving parts from the issue thread, adds a literature synthesis, and analyzes the recorded accelerometer data.

Added

  • docs/drop-test-protocol.md — single source of truth for the drop-test setup, covering:

    • Equipment + links to the TP4 Quick Start / User's Guide PDFs attached on the issue and the training video (https://youtu.be/RNjpAmWWmkQ)
    • The tower is bungee-assisted (base accelerates past 1 g): §3.1 reframes the pre-impact specimen lift-off as intrinsic rig physics rather than a setup artifact, and §5 leads with Jeff's first-pass fix (cap how far the specimen's top can rise relative to the base) plus tie-to-base options
    • Quantities of interest tied to the BO objective stack: g_max, SEA, full ~10 s ringdown (not just the 200 ms shock), reusability, slow-mo framing from t=0
    • Failure modes from the first instrumented drop: bungee-driven specimen lift-off pre-impact, ~25° cage tilt from loose rod/hole clearance, slow-mo starting after hoist release
    • @sgbaird's three-test next-iteration plan: bare specimen → plate-only (uninstrumented) → instrumented cage drop
    • Mitigations: constrain specimen to base / cap upward travel, tighter rod/plate tolerance (re-drill or thin metal plates, optionally linear bushings), top-plate retention clips, longer-term vertex-mounted accelerometer inside an acrylic cage, independent lab access for all three students
    • Cross-references to companion modalities out of scope for the first drop (high-speed camera, shaker transfer function, slug-firing gas gun, Polytec LDV)
  • edison-trajectories/drop-test/ — Edison Scientific LITERATURE_HIGH synthesis (task 653d7d39) on drop-tower troubleshooting for small 3D-printed lattice/tensegrity specimens: ~57 KB report, full JSON dump, submission record, and README. Idempotent driver at scripts/edison/submit_drop_test.py. Surfaces a standards stack (ASTM D5276/D7136/D3332, ISO 6603/1683/5347, MIL-STD-810 method 516, SAE J211) and recommendations (linear sleeve bearings, magnetic/elastic top-plate hold-down, ≥10 s ring-buffer DAQ, SAE J211 CFC filtering, n ≥ 5 + CV, ≥5000 fps DIC; closest analogues Pajunen 2019, Dwyer 2023).

  • First drop-test data analysis of the five TP4 accelerometer exports posted by @me-madsen (Signal 10–14, 4-channel, 125 kHz, 0.2 s window):

    • data/drop-tests/raw/ — committed raw export files
    • scripts/analysis/drop_test_analysis.py — loader, SAE J211 CFC-1000 / CFC-180 filtering, peak/pulse/PSD metrics, and figure generation
    • data/drop-tests/figures/ — full-window CH1 overlay, per-run impact zoom (raw vs filtered), peak-g bar chart, PSD, and CH4 trigger-artifact plot
    • docs/drop-test-analysis.md + data/drop-tests/README.md — findings: the "audrey" tensegrity specimen reduces CFC-180 peak acceleration ~74–79 % vs the no-specimen control (~370–463 G vs ~1,792 G), while the PETG run's raw peak is within ~1 % of the control (≈ direct plate-on-plate hit), strong evidence of the bungee-driven lift-off; CH4 carries a fixed ~1.4 kG trigger/release artifact at t≈4.2 ms in every run. Caveats noted: unconfirmed channel map, 200 ms window only, n = 1 for control/PETG, no Δv/SEA quoted yet.
  • Vertex vs. acrylic-plate T3-prism drop-test data and analysis posted by @ctrhjk (PR Add drop-test protocol, Edison synthesis, and first-data analysis #67), under data/drop-tests/vertex-acrylic/:

    • raw/ — eight TP4 exports {n0jdwk, m6cyoq, T3_0103, T3_0000}_Signal{1,2}.csv (Signal1 = vertex-mounted, Signal2 = acrylic-plate), single drop per configuration at 13 ft, 200 ms / 125 kHz
    • README.md — channel map (CH1 removed; CH2–CH4 tri-axis; CH5 single-axis; CH4 = 1000 G trigger) with full-scale/sensitivity per channel, per-specimen file index, and @ctrhjk's observations (clip-height/no-trigger issue, hot-glue z-axis mount limitation, m6cyoq strut and T3_0103 TPU-tendon damage after the acrylic test, and the invalid T3_0000 acrylic run where the accelerometer fell off)
    • scripts/analysis/drop_test_vertex_acrylic_analysis.py — locates the impact via the triggered CH4 channel (windowed ±1.5 ms peak search in the first 10 ms, not a global max), baseline-corrects, and reports raw / SAE J211 CFC-1000 / CFC-180 peaks for the single-axis CH5 (primary go-forward sensor) and tri-axis CH4, auto-flagging invalid / no-clean-impact runs
    • data/drop-tests/vertex-acrylic/figures/ — vertex-vs-acrylic CH5 impact windows, CFC-180 peak-g bar chart, and vertex CH5 PSD
    • docs/drop-test-vertex-acrylic-analysis.md — findings + an explicit SOP / test-method section: vertex mounting is repeatable (4/4 clean, CFC-180 229–284 G, CV ≈ 9 %) while the acrylic configuration is not (3/4 runs registered no clean impact — clips too low so the plate seats on the specimen, plus the fell-off T3_0000); the vertex peaks do not yet discriminate geometry so fresh intact distinct-geometry samples (vertex-only, n ≥ 5) are needed before peak-g is a trustworthy BO objective; replace the hot-glue mount with a z-axis-aligned seat; and the single-axis sensor's raw peaks reach 70–90 % of its 9,442.9 G full scale (near saturation on the m6cyoq-acrylic run). Caveats: n = 1 per (specimen, mount), 200 ms window only, partial-pulse Δv, unconfirmed CH4/CH5 axis correspondence.
  • Clip-height sweep & base-plate accelerometer-check diagnostic posted by @ctrhjk, under data/drop-tests/clip-height/ — drilling into why the acrylic-plate configuration repeatedly fails to trigger:

    • raw/Accelerometer_check_Signal1.csv + README.md — the one triggered base-plate CSV (tri-axis on the bottom plate, 13 in drop) plus a setup README documenting both experiments: the clip-height sweep (extra bungees cured fly-off; tri-axis on the acrylic plate; clips at 0.5/1/1.5/2 in, two drops each; 0/8 drops triggered, video only) and the base-plate accelerometer check, with the shared channel map
    • scripts/analysis/drop_test_clip_height_analysis.py + data/drop-tests/clip-height/figures/ — windowed CH4 impact location, SAE J211 CFC-1000 / CFC-180 peak/pulse/Δv metrics, and figures (base-plate impact window, full-window CH4, PSD)
    • docs/drop-test-clip-height-analysis.md — findings: the base-plate hit triggers cleanly (CH4 raw 3072 G ≈ 3.1× the 1000 G trigger, CFC-180 280 G, Δv ≈ 3.3 m/s; CH4 dominates the off-axis channels ~23–55×), so the acrylic-plate "no trigger" failure (0/8 across the clip sweep) is a load-path problem — the plate seats on / is damped by the bungee-restrained specimen — not the sensor, DAQ, or trigger level.
  • Input-output (transmissibility) drop-test data and analysis posted by @ctrhjk (PR Add drop-test protocol, Edison synthesis, and first-data analysis #67), under data/drop-tests/input-output/@ctrhjk's input-output instrumentation design: a single-axis accelerometer on the bottom plate = input (now the triggered channel CH5), a tri-axis accelerometer hot-glued to the top vertex = output (CH2–CH4), bungees removed, four distinct-geometry specimens (practice, n0jdwk, yqpmx1, h8Lbev) each dropped five times at 13 in:

    • raw/ — 20 TP4 exports {practice,n0jdwk,yqpmx1,h8Lbev}_Signal{1..5}.csv (Signal index = drop number) + README.md with the channel map (trigger moved to the single-axis input CH5) and @ctrhjk's setup notes
    • scripts/analysis/drop_test_input_output_analysis.py — locates the impact on the triggered CH5 (windowed ±1.5 ms peak), baseline-corrects, and reports raw / SAE J211 CFC-1000 / CFC-180 peaks for the input (CH5) and the tri-axis output resultant, the transmissibility T = output/input, pulse width and Δv, with per-specimen mean ± 1σ / CV aggregates
    • data/drop-tests/input-output/figures/ — input-vs-output impact windows (5 drops overlaid), transmissibility bar chart, input repeatability, output PSD
    • docs/drop-test-input-output-analysis.md — findings: the input-output design works — 20/20 drops triggered cleanly, removing the bungees makes the input nearly constant (235–248 G CFC-180, ≤1.7 % CV), and transmissibility now discriminates geometry (yqpmx1 ≈ 0.96 is the only attenuator, h8Lbev ≈ 1.09, practice/n0jdwk ≈ 1.17–1.19), making T (or output-peak-at-fixed-input) a usable BO objective; a mild within-run drift across the five cyclic drops is flagged as most likely hot-glue-mount-driven. Caveats: n = 1 specimen per geometry (5 repeat drops), 200 ms window, unverified tri-axis orientation, IDs not yet tied back to design parameters
    • edison-trajectories/input-output/ — Edison Scientific ANALYSIS (task fe044079) that independently reproduced the transmissibility values exactly to two decimals, confirmed the within-run drift is statistically real and mount-driven (pooled +0.015/drop, p = 0.0001), endorsed T as a first-pass screening objective (recommending FRF / SRS-band metrics and output-peak-at-fixed-input as it matures), and gave a prioritized SOP (rigid z-aligned keyed sensor seat, keep bungees removed, extend capture past 200 ms, n ≥ 5 distinct prints per geometry with randomized order, anchor in SAE J211 / ISO 5347 / ASTM D3332). Idempotent driver scripts/edison/submit_input_output.py + fetch scripts/edison/fetch_input_output.py; a cross-check section is folded into the analysis doc.

Copilot AI changed the title [WIP] Get a video and record data for first crush/drop test Add drop-test protocol & troubleshooting doc May 26, 2026
Copilot AI requested a review from sgbaird May 26, 2026 16:15
@sgbaird

sgbaird commented May 26, 2026

Copy link
Copy Markdown
Collaborator

@copilot send to edison scientific (high effort literature). Fetch this session. Commit all artifacts. Summarize in your comment reply and provide direct link to md file.

@sgbaird

sgbaird commented May 26, 2026

Copy link
Copy Markdown
Collaborator

@copilot consider comment from Jeff in #36 (comment); I had forgotten/didn't realize it was bungee assisted

Copilot AI commented May 26, 2026

Copy link
Copy Markdown
Contributor Author

@copilot send to edison scientific (high effort literature). Fetch this session. Commit all artifacts. Summarize in your comment reply and provide direct link to md file.

Done. Edison Scientific LITERATURE_HIGH task 653d7d39-b9c4-4d3f-9ae1-a1bc8fabd877 (job-futurehouse-paperqa3-high) submitted with docs/drop-test-protocol.md attached, polled to success, and all artifacts committed under edison-trajectories/drop-test/.

📄 Report (direct link to .md): edison-trajectories/drop-test/drop-test-653d7d39-b9c4-4d3f-9ae1-a1bc8fabd877.md (~57 KB, sections a–g + actionable summary + ~40 refs)

Headline recommendations (from §"Summary of Actionable Recommendations"):

  1. Linear sleeve bearings on hardened ground rods to eliminate the ~25° cage tilt.
  2. Light magnetic or elastic hold-down on the top plate to stop specimen lift-off during descent.
  3. Extend DAQ capture to ≥10 s (ring-buffer + pre-trigger) to keep the full ringdown, not just the 200 ms shock.
  4. Start video before hoist release via TTL trigger so the initial descent is in frame.
  5. Apply SAE J211 CFC 1000 filtering; tap-test the fixture for modal frequencies.
  6. Condition specimens at 23 °C / 50 % RH for ≥40 h; pre-dry filament; consider annealing PLA/PETG struts at 90–120 °C.
  7. Account for TPU 85A strain-rate stiffening (2–5× modulus at impact rates) when comparing drop-test SEA to quasi-static.
  8. n ≥ 5 specimens per condition, report CV — sets the BO noise floor.
  9. ≥5000 fps high-speed camera for any quantitative DIC; phone slow-mo qualitative only.
  10. Closest published analogues: Pajunen 2019 (Mater. Des. 182:107966, 3D-printed tensegrity impact) and Dwyer 2023 (spatially varying elastomeric lattices).

Standards stack surfaced: ASTM D5276 / D7136 / D3332, ISO 6603 / 1683 / 5347, MIL-STD-810 method 516, SAE J211. Idempotent driver at scripts/edison/submit_drop_test.py; submission record + full JSON dump alongside the .md.

Copilot AI commented May 26, 2026

Copy link
Copy Markdown
Contributor Author

@copilot consider comment from Jeff in #36 (comment); I had forgotten/didn't realize it was bungee ass...

Good catch — folded Jeff's bungee-assisted note into docs/drop-test-protocol.md:

  • Equipment row now flags the tower as bungee-assisted with a link to Jeff's comment.
  • §3.1 (failure mode) rewritten — the specimen lift-off is intrinsic to the rig physics (the base accelerates past 1 g, the free-sitting specimen only sees g, so the base falls out from under it), not a setup artifact. Quoted Jeff verbatim.
  • §5 (mitigations) now leads with Jeff's first-pass fix — cap how far the specimen's top can rise relative to the base via light tethers / clips / a rigid stop — followed by tie-to-base options (transfer tape, register pins, V-block cradle) with the caveat that none of them should change the loading-direction compliance.
  • §4 (test 1, bare specimen) notes it now doubles as a direct visualization of the bungee-driven separation.

The Edison literature report's recommendations still apply: bungee-assisted (and pneumatically-assisted) drop towers are standard in the cited drop-weight literature (Rajput 2018, Anas 2024) and the magnet-release-jerk / fixture-resonance gotchas there extend to the bungee preload too.

@sgbaird

sgbaird commented May 28, 2026

Copy link
Copy Markdown
Collaborator

@copilot have at it with #36 (comment)

Copilot AI commented May 28, 2026

Copy link
Copy Markdown
Contributor Author

@copilot have at it with #36 (comment)

Plotted and analyzed all five runs. Raw data, a reproducible script, figures, and a writeup are committed:

Format: 4-channel accelerometer, 125 kHz (8 µs), 0.2 s window. CH1 is the impact channel; CH2/CH3 are low-level; CH4 carries a fixed ~1.4 kG spike at t≈4.2 ms in every run including the control — a trigger/magnet-release artifact, not impact (please confirm the channel map).

Peak acceleration (raw peaks are ringing-dominated — PSD energy out to ~20 kHz, structural peak ~550 Hz — so the SAE J211 CFC-180 column is the meaningful structural number):

run raw |g| CFC 1000 CFC 180
control (no specimen) 10,625 6,070 1,792
PETG 10,511 5,870 1,299
audrey #1 3,594 941 370
audrey #2 2,448 1,037 424
audrey #3 5,092 1,602 463

Headlines:

  1. The "audrey" tensegrity specimen cushions well — ~370–463 G vs ~1,792 G no-specimen control, a 74–79 % peak-g reduction (in line with the ~60–65 % reported for printed tensegrity by Zhang 2018).
  2. The PETG run looks like a near-direct plate-on-plate hit — its raw peak (10,511 G) is within ~1 % of the control's (10,625 G), i.e. essentially no cushioning. That's strong evidence of the bungee-driven lift-off Jeff flagged: the PETG specimen most likely separated from the base during descent. Worth re-running PETG once the specimen is constrained to the base.
  3. The three audrey runs agree to ~±12 % on CFC-180 peak but scatter widely on raw peak/pulse width → supports n ≥ 5 per condition.

Caveats: channel map unconfirmed; CH4 artifact; only the 200 ms shock window (no ~10 s ringdown); n=1 for control/PETG; no Δv/SEA quoted yet (needs the input-vs-transmitted channel pair + clean baseline + full-event integration). Next-capture recommendations are in §6 of the analysis doc.

@sgbaird

sgbaird commented Jun 12, 2026

Copy link
Copy Markdown
Collaborator

@ctrhjk could you run tests using three of the T3 prisms (each with distinct parameters), doing the following:

  • tests with it attached to a vertex (best if this can be very flat, using three-axis one is probably better, in future would be flat)
  • attached to the acrylic plate
  • cyclic testing for each of these (20 or to failure)

Noting of course that we'll be using the lower sensitivity single-axis accelerometer per #71 and #74

@achris0520 will print these 6 structures for you per #35 (comment)

In the meantime though, if you could grab a couple existing T3 prisms (noting the IDs) and run a vertex test and an acrylic test without cyclic testing, just a single drop. It's up to you whether you do the vertex or the acrylic test first. Please get videos if you can as well.

@claude

claude Bot commented Jul 1, 2026

Copy link
Copy Markdown

Claude finished @sgbaird's task in 8m 31s —— View job


Raw video frame-rate check — drop5.mp4

Analyzed the raw drop5.mp4 you committed and settled both open threads. Correction pushed to the burn-in doc (0fd322f).

  • Locate the committed raw video + tooling
  • Probe true container fps / frame count / duration / resolution
  • Byte-compare vs the GitHub-served comment video
  • Resolve the "is GitHub reducing fps" question (#67 comment 4857198251)
  • Re-check the frame ÷ 960 / 32× claim (#67 comment 4849969620)
  • Correct the analysis doc

1. Is GitHub reducing the fps? No — proven byte-for-byte.

I downloaded the GitHub-comment-served drop‑5 clip and compared it to the raw file you committed via Slack/VS Code:

raw committed drop5.mp4 GitHub-comment-served
size 52,020,222 B 52,020,222 B
MD5 97901093…0329357 97901093…0329357
fps / frames 30 fps / 808 30 fps / 808
resolution 1080×1350 1080×1350
duration 26.93 s 26.93 s

Identical MD5. GitHub is serving the comment attachment unmodified — it is not transcoding or dropping the frame rate. So the 30 fps was already baked in before the file ever reached GitHub. That answers your question in comment 4857198251: it was already that way at upload, not a GitHub processing artifact. (Also: no need to zip a file to test this — the raw commit already gave us the clean comparison.)

2. But it's not camera-native — that's the real catch.

The file's encoder tag is https://clipchamp.com (Microsoft's editor) and it carries a 48 kHz stereo AAC audio track. A Sony RX100 IV 960 fps HFR clip is silent and tags Sony's encoder. So this clip was exported through Clipchamp, which re-containerized it to 30 fps — whereas @ctrhjk's stated camera setting was 24p / 960 fps.

3. What that does to my frame ÷ 960 in comment 4849969620 — it was ~25 % off.

The physical slow-motion factor is set by the camera-native record rate, not the export container:

  • Native 24p / 960 fps → slow factor = 960 / 24 = 40×. For that native 24 fps file, real_time = frame ÷ (24 × 40) = frame ÷ 960 — so ÷ 960 would have been exactly right on the camera file.
  • This file is a 30 fps Clipchamp re-encode of that 40×-slow timeline (duration-preserving: 26.93 s → 646 native frames resampled up to 808). For a 30 fps container the correct mapping is real_time = frame ÷ (30 × 40) = frame ÷ 1200.

So ÷ 960 overstated the absolute in-frame descent by 1200/960 = 25 % → the reported 94.6 ms becomes ≈ 75.7 ms. I can't nail this from the video alone (the structure enters the top of frame already falling, so there's no clean in-frame free-fall to fit, and there's no scale bar — my scale-free free-fall fit returned garbage/negative curvature, confirming the entry contamination). Treat any absolute video time as ± 25 % and use the accelerometer (Δv ≈ 2.6 m/s, free-fall) as the calibrated clock.

Crucially, nothing scientific changes. Every conclusion in the video passes is relative or dimensionless — descent-slope CV (0.32 %), rebound fraction (0.47), drift in %/drop, transmissibility — none of which ever used the absolute time base. Only the single absolute "descent ms" figure shifts.

What I changed

Updated docs/drop-test-burn-in-wax-analysis.md (0fd322f) with a time-base correction note, the frame/1200 mapping, and the 94.6 → 75.7 ms fix.

Recommendation for future clips

  1. Keep the camera-native file for anything you want absolutely timed — a pre-Clipchamp export of a 24p/960fps HFR clip is a true 24 fps timeline where frame ÷ 960 is exact. If it must pass through an editor, disable frame-rate conversion (export 24 fps, not 30).
  2. Or don't lean on video for absolute time at all — the accelerometer already gives calibrated Δv/free-fall; let the video stay the relative/qualitative repeatability channel.
  3. For real spatial calibration, add a scale bar / fiducial in frame (and ideally an on-screen frame counter) so displacement and velocity become absolute too.

Note: this whole analysis is about the video time base only; it doesn't touch the accelerometer results (CFC-180 peaks, transmissibility, burn-in drift) which are all independently correct.
· branch copilot/get-video-drop-test-data

…s (frame/1200, not /960)

Verified from the raw drop5.mp4 committed to this PR: it is 30 fps but a
clipchamp.com re-encode (with audio) of a camera-native 24p/960fps HFR capture,
and is byte-identical (MD5) to the GitHub-served comment version -> GitHub does
not re-encode. Physical slow factor is 960/24 = 40x, so real time is frame/1200,
making the absolute in-frame descent ~25% smaller (94.6 -> 75.7 ms). All relative
results (CVs, rebound fraction, drift %/drop, transmissibility) are unaffected.

Co-authored-by: Sterling G. Baird <sgbaird@users.noreply.github.com>
@ctrhjk

ctrhjk commented Jul 2, 2026

Copy link
Copy Markdown
Collaborator

@claude

This drift calibration test was conducted to define the drift rate.
This is a preliminary experiment designed for the OLS (Ordinary Least Squares) regression analysis mentioned earlier. Instead of the actual product, a dummy structure (which is 'prc1kn') was used.

The drops were automatically conducted 30 times, and the drop height was 13 in. All the settings were the same as the last time.
IMG_6154

Here are the 30 times of auto-drop results.
drift calibration_Signal1.csv
drift calibration_Signal2.csv
drift calibration_Signal3.csv
drift calibration_Signal4.csv
drift calibration_Signal5.csv
drift calibration_Signal6.csv
drift calibration_Signal7.csv
drift calibration_Signal8.csv
drift calibration_Signal9.csv
drift calibration_Signal10.csv
drift calibration_Signal11.csv
drift calibration_Signal12.csv
drift calibration_Signal13.csv
drift calibration_Signal14.csv
drift calibration_Signal15.csv
drift calibration_Signal16.csv
drift calibration_Signal17.csv
drift calibration_Signal18.csv
drift calibration_Signal19.csv
drift calibration_Signal20.csv
drift calibration_Signal21.csv
drift calibration_Signal22.csv
drift calibration_Signal23.csv
drift calibration_Signal24.csv
drift calibration_Signal25.csv
drift calibration_Signal26.csv
drift calibration_Signal27.csv
drift calibration_Signal28.csv
drift calibration_Signal29.csv
drift calibration_Signal30.csv

While the auto drop was conducted, the tri-axis accelerometer fell off the key-seat housing. I guess it happened at the 26th drop, but not sure, so please figure out when it fell off by analyzing the dataset.

Based on those data, do these tasks:

  1. Identify the initial stabilization phase to define the "burn-in drop count" (locate the points where the data transitions from a sharp rise or fall to a more gradual trend, e.g., the 3rd or 4th).
  2. Calculate the natural drift rate (%/rate). Perform the OLS regression analysis using only the data from the stabilized phase. Determine the system's inherent drift rate.
  3. Ensure the reliability of the regression analysis.
  • I filmed a video of the entire drop with the movie mode of the Sony RX100IV camera, but it shut off at some point while filming the drop. Also, the video size is too big to upload here.

@claude

claude Bot commented Jul 2, 2026

Copy link
Copy Markdown

Claude finished @ctrhjk's task in 10m 59s —— View job


Drift-calibration analysis — 30 auto-drops (prc1kn)

Analyzed Jinkwan's 30-auto-drop drift-calibration run. Data, a reproducible script, figures, and a writeup are committed (b11bbb3):

Setup recap. Same input-output pair — single-axis input wax-mounted on the base plate (CH5, triggered); tri-axis output in the vertex key-seat + wax (CH2/CH3/CH4); bungees removed; dummy specimen prc1kn. 30 drops released automatically at 13 in, ~15 s apart (from the TP4 EventTime stamps). All 30 triggered; CFC-180 is the structural number throughout.

When did the sensor fall off? Drop 26 — your guess was exactly right.

The output resultant is unambiguous: drops 1–24 peak at 5,600–6,500 G raw (255–263 G CFC-180); drops 26–30 collapse to 11–26 G raw (2–6 G CFC-180) — pure noise, sensor gone. Bonus: drop 25 caught the sensor letting go — its resultant spikes to 281 G (z = +9.5 vs the 261 G plateau), with CH3 jumping 2,339→3,453 G and CH4 6,465→7,272 G in a single drop. So: valid attached data = drops 1–24; drop 25 excluded as the pre-fall-off anomaly; the input CH5 stayed valid for all 30.

1) Burn-in drop count: 5 (fresh wax, this rig)

Changepoint scan — OLS the output over drops k+1…24 for each candidate burn-in count k, find where the seating trend disappears:

burn-in k slope (%/drop) p
0 +0.082 <0.001
3 +0.058 0.009
4 +0.049 0.033
5 +0.033 0.135 (n.s.)
6 +0.011 0.560

An independent exponential-approach fit agrees: plateau 262.1 G, seating amplitude 8.1 G, τ = 4.9 drops. So the transition you asked me to locate is at drop ~5, not 3–4: the 3-drop burn-in that sufficed in the previous 8-drop run is marginal on this longer series (at k = 3 a significant trend remains, p = 0.009). SOP: ≥ 5 burn-in drops after every fresh wax application — with the auto-dropper they're nearly free.

2) Inherent drift rate: statistically zero — |drift| ≤ 0.08 %/drop (95 % bound)

OLS on the stabilized phase only (drops 6–24, n = 19):

series mean CV slope (%/drop) 95 % CI (G/drop) p
input CH5 215.2 G 2.57 % −0.010 % [−0.52, +0.48] 0.93
output 261.4 G 0.53 % +0.033 % [−0.030, +0.205] 0.135
T = OUT/IN 1.215 2.88 % +0.039 % [−0.0027, +0.0037] 0.76

No significant drift in any series. The 95 % CI bounds the post-burn-in output drift to −0.012…+0.078 %/drop ⇒ ≤ ~1.6 % accumulated over a 20-drop campaign. That's the mount noise floor: in a to-failure run, any monotonic output change bigger than ~2 % is the specimen, not the mount.

3) Regression reliability

  • Start-drop sensitivity: sweeping the fit start over drops 7–11 keeps the slope between −0.023 and +0.011 %/drop, all n.s. — the zero-drift verdict doesn't hinge on the exact cut. (Starting at drops 4–5 flips it significant — that's the seating tail, which is exactly why burn-in = 5.)
  • Autocorrelation: Durbin-Watson = 0.61 on the output residuals (a gentle hump near drop ~15). Positive autocorrelation makes OLS over-eager to call trends, so the n.s. conclusion survives it a fortiori. Input (1.62) and T (1.44) are fine.
  • Normality: Shapiro-Wilk p = 0.12 / 0.05 / 0.40 (input / output / T) — no material violation.
  • What limits precision is now the input: auto-drop input CV is 2.57 % (202–234 G) vs ≤ 0.5 % in the manual runs, and T inherits nearly all of it (output CV is just 0.53 %). Worth checking the auto-dropper's release consistency. Also note T ≈ 1.22 here vs ≈ 1.00 in the prior wax runs — fresh wax + re-seat + auto-rig = a different configuration, so compare T only within a setup, never across re-mounts.

Bonus: the data saw the fall-off coming ~18 drops early

From drop 8 the impact steadily migrates between axes at near-constant resultant — CH2 decays 2,272→510 G (−8.6 %/drop, p ≈ 1e−9) while CH4 grows (+0.7 %/drop, p ≈ 1e−10). The sensor was slowly rotating in the seat (wax held magnitude coupling but not orientation), accelerating through drops 22–25 into the fall-off. Two takeaways: the rotation-invariant resultant (and T) stayed valid to drop 24 — good robustness news — and a live per-axis-ratio (e.g. CH2/CH4) health check would have flagged the loosening around drop ~12, in time to re-seat instead of losing drops 26–30. For 20+-drop auto campaigns, pair the key-seat with a positive retainer (clip / set-screw / the tighter #35 pocket) and keep wax as couplant only.

Caveats: n = 1 specimen (failed print prc1kn) — this calibrates the mount/DAQ/rig, not geometry. 200 ms window; Δv partial-pulse (~2.4–2.9 m/s); tri-axis orientation unverified (and demonstrably changing, per the migration); raw input peaks still run 85–90 % of the CH5 full scale. The movie-mode video that shut off wasn't uploaded, so no video cross-check this run.


  • Download & commit the 30 TP4 CSV exports
  • Detect when the tri-axis output sensor fell off (drop 26; drop 25 = letting-go anomaly)
  • Identify the burn-in / stabilization phase (changepoint scan + exponential fit → 5 drops)
  • OLS drift rate on the stabilized phase (statistically zero, ≤ 0.08 %/drop bound)
  • Regression reliability checks (CI, DW, Shapiro, start-drop sensitivity)
  • Figures + writeup + README
  • Commit & push (b11bbb3)
    · branch copilot/get-video-drop-test-data

Burn-in changepoint scan (burn-in = 5 drops, exp-fit tau = 4.9),
stabilized-phase OLS drift (|drift| <= 0.08 %/drop at 95%, n.s.),
fall-off detection (drop 26, pre-fall-off anomaly at 25), and
per-axis migration early-warning finding.

Co-authored-by: Jinkwan Han <ctrhjk@users.noreply.github.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@sgbaird

sgbaird commented Jul 2, 2026

Copy link
Copy Markdown
Collaborator

@claude notice any damage/differences from the two drops that have occured so far?

@claude

claude Bot commented Jul 2, 2026

Copy link
Copy Markdown

Claude finished @sgbaird's task in 7m 18s —— View job


Damage check — prc1kn and the sensor, across everything dropped so far

Short answer: no detectable damage — to the specimen or to the accelerometer. I read "the two drops" both ways it could mean — the tri-axis sensor's two fall-offs (end of the bare key-mounted run, and drift-cal drop 26), and the specimen's accumulated campaigns — and checked both quantitatively across all four prc1kn sessions (~48 recorded drops). Script, figures, doc committed (ceac957):

Method. Output level and T are mount-confounded across the re-waxings, so the specimen-damage indicators are the mount-robust ones: the ringdown dominant frequency / spectral centroid (computed on the sum of per-axis PSDs — rotation-invariant, so the sensor slowly rotating in the seat can't fake a shift) and the output pulse width (a cracked/softened structure lengthens the pulse and lowers its resonance, f ∝ √k).

session n input (G) output (G) T pulse (ms) ringdown mode (Hz) centroid (Hz)
key-mounted (drops 1–5) 5 219 234 1.07 1.52 519–549 665
key-mounted-wax (6–10) 5 229 228 1.00 1.52 519–549 688
burn-in-wax (11–18) 8 227 224 0.99 1.51 519–549 732
drift-calibration (19–42 valid) 24 217 261 1.20 1.51 519–549 760

Specimen — clean bill of health:

  1. Pulse width is flat across all 48 drops — 1.51 ± 0.02 ms, slope +0.003 %/drop (p = 0.79). No softening.
  2. The structural ringdown mode never moved — locked at 519–549 Hz (one 30.5 Hz Welch bin) from drop 1 to drop 42. A cut tendon or cracked strut (the m6cyoq/T3_0103 failure modes) sheds stiffness and this frequency falls; it didn't.
  3. The spectral centroid actually creeps up across sessions (665 → 760 Hz) — the opposite of damage. It tracks the mount history (bare press-fit → wax → fresh wax → auto-rig), i.e. progressively better high-frequency coupling, not the structure.
  4. Photos: no new visible strut/tendon damage — the lumpy tendon sections are the pre-existing TPU print bubbles that made prc1kn a "failed print" to begin with.
  5. Corollary: the T ≈ 1.20 level in the drift-cal run vs ≈ 0.99 in the prior wax runs is a re-mount/rig effect, not specimen change — if the specimen had changed, pulse width and ringdown frequency would have moved with it. Both are unchanged.

Sensor — survived both fall-offs:

  • After fall-off Get started on this repo #1 its noise floor improved (CH2/3/4 RMS 0.34/0.24/0.22 → 0.18/0.18/0.15 G) and it read 228 G at a 228 G input — no sensitivity or zero shift. Drift-cal noise (≤ 0.46 G) is still ≈ 0.003 % of full scale, plausibly auto-rig ambient vibration. Perspective: it takes 5,600–6,500 G raw every measured drop; a tumble onto the plate is small next to that.
  • No post-fall-off-Restructure MRG proposal to match grant format with Edison Scientific-informed revisions #2 data exist yet — worth a quick tap check on all three axes before the next campaign. Fun detail: the last valid drop (24) has the highest spectral centroid of the whole series (843 Hz) — extra HF rattle right before the drop-25 letting-go spike, a second early-warning signal alongside the per-axis migration.

Implication for BO: a fixed dummy is stable for at least ~50 drops at 13 in, so prc1kn can keep serving as the rig-calibration standard, and specimen wear-out won't silently masquerade as rig drift on these timescales. Caveat: prc1kn is n = 1 and a failed print — intact, pre-tensioned prints may fatigue differently (tendon creep, junction fatigue), so re-run this health check (one command) on the first intact specimen that gets a long campaign. Frequency resolution is 30.5 Hz, so mode shifts under ~6 % aren't resolvable.


  • Gather context — prc1kn: 4 instrumented sessions (~48 drops); sensor fell off twice
  • Inspect photos for visible physical damage (none new; TPU bubbles pre-existing)
  • Compute mount-robust damage metrics across all 4 sessions (pulse width, rotation-invariant ringdown spectrum, noise floors)
  • Check sensor health across both fall-offs (no degradation)
  • Commit script + figures + writeup (ceac957)
    · branch copilot/get-video-drop-test-data

@sgbaird

sgbaird commented Jul 2, 2026

Copy link
Copy Markdown
Collaborator

@ctrhjk nice work. Thinking about how we'll keep it seated. Maybe a tighter fit + wax, we could do a set screw or pin that would keep it from going out, but that sounds a bit tedious.

Answers whether prc1kn or the tri-axis sensor accumulated damage across the
key-mounted, key-mounted-wax, burn-in-wax and drift-calibration sessions:
no detectable specimen damage (pulse width flat, ringdown mode fixed at
519-549 Hz) and no sensor degradation across its two fall-offs.

Co-authored-by: Sterling G. Baird <sgbaird@users.noreply.github.com>

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@ctrhjk

ctrhjk commented Jul 2, 2026

Copy link
Copy Markdown
Collaborator

@ctrhjk nice work. Thinking about how we'll keep it seated. Maybe a tighter fit + wax, we could do a set screw or pin that would keep it from going out, but that sounds a bit tedious.

@sgbaird
So the problem is that the accelerometer only fits halfway into the housing. Maybe we need to make the key-seat housing bigger in its height
IMG_6128

@sgbaird

sgbaird commented Jul 2, 2026

Copy link
Copy Markdown
Collaborator

Maybe we need to make the key-seat housing bigger in its height

Do you mean deeper?

@ctrhjk

ctrhjk commented Jul 2, 2026

Copy link
Copy Markdown
Collaborator

Yes!

@ctrhjk

ctrhjk commented Jul 2, 2026

Copy link
Copy Markdown
Collaborator

@claude

This test is another drift calibration test, but 50 times of drops were conducted. Settings were the same as the last experiment.

This test was also aimed at checking the availability of more than 50 auto drops. In this experiment, the accelerometer didn't fall off. As you can see in the picture below, I fixed the cable coming out of the accelerometer to the iron rod, so I took measures to prevent the accelerometer from falling due to the cable being pulled.
IMG_6159

'prc1kn' was used in this experiment.

Here are the results

drift calibration2_Signal1.csv
drift calibration2_Signal2.csv
drift calibration2_Signal3.csv
drift calibration2_Signal4.csv
drift calibration2_Signal5.csv
drift calibration2_Signal6.csv
drift calibration2_Signal7.csv
drift calibration2_Signal8.csv
drift calibration2_Signal9.csv
drift calibration2_Signal10.csv
drift calibration2_Signal11.csv
drift calibration2_Signal12.csv
drift calibration2_Signal13.csv
drift calibration2_Signal14.csv
drift calibration2_Signal15.csv
drift calibration2_Signal16.csv
drift calibration2_Signal17.csv
drift calibration2_Signal18.csv
drift calibration2_Signal19.csv
drift calibration2_Signal20.csv
drift calibration2_Signal21.csv
drift calibration2_Signal22.csv
drift calibration2_Signal23.csv
drift calibration2_Signal24.csv
drift calibration2_Signal25.csv
drift calibration2_Signal26.csv
drift calibration2_Signal27.csv
drift calibration2_Signal28.csv
drift calibration2_Signal29.csv
drift calibration2_Signal30.csv
drift calibration2_Signal31.csv
drift calibration2_Signal32.csv
drift calibration2_Signal33.csv
drift calibration2_Signal34.csv
drift calibration2_Signal35.csv
drift calibration2_Signal36.csv
drift calibration2_Signal37.csv
drift calibration2_Signal38.csv
drift calibration2_Signal39.csv
drift calibration2_Signal40.csv
drift calibration2_Signal41.csv
drift calibration2_Signal42.csv
drift calibration2_Signal43.csv
drift calibration2_Signal44.csv
drift calibration2_Signal45.csv
drift calibration2_Signal46.csv
drift calibration2_Signal47.csv
drift calibration2_Signal48.csv
drift calibration2_Signal49.csv
drift calibration2_Signal50.csv

#67 (comment)
As I asked in the link above, do the OLS regression analysis and report back to me.
Also, analyze any damage or limitations on the tensegrity structure observed in the data; if found, report them.

@claude

claude Bot commented Jul 2, 2026

Copy link
Copy Markdown

Claude finished @ctrhjk's task in 8m 25s —— View job


Drift-calibration #2 — 50 auto-drops (prc1kn): OLS drift + damage check

Analyzed all 50 drops. Data, a reproducible script, figures, and a writeup are committed (92c9995):

First things first: the campaign design worked. All 50/50 drops triggered, and the output sensor never fell off — the data confirm it (attached-sensor peaks, 3,178–3,537 G raw resultant, on every drop; run #1 collapsed to <30 G after its drop-25 fall-off). The cable tie-off cures that failure mode for free. Cadence ~17 s/drop, whole campaign ~14 min.

1) Burn-in / stabilization phase: slower this time — ~12–15 drops, not 5

The changepoint scan never fully flattens by k = 12 (with n = 40–50 the test now resolves tiny slopes), so I used two independent estimators:

  • Exponential-approach fit: plateau 242.1 G, seating amplitude 6.9 G (≈ 2.9 %), τ = 12.1 drops — vs τ = 4.9 in run Get started on this repo #1. Same wax, different application, different seating clock.
  • Split-half check: drops 6–28 drift +0.096 %/drop (p < 0.001); drops 29–50 drift −0.021 %/drop — the seating trend has died out (slightly reversed) by the second half.

So for output-only metrics the stabilization point on this re-mount is around drop 12–15, and a 5-drop burn-in is not enough — τ evidently varies per wax application, so re-run the changepoint scan after each re-mount rather than fixing a count. For T, there's no burn-in at all (next point).

2) OLS drift rate (drops 6–50, n = 45)

series mean CV slope (%/drop) 95 % CI (per drop) p
input CH5 223.6 G 1.74 % +0.043 [+0.010, +0.183] G 0.029
output 241.0 G 0.64 % +0.032 [+0.050, +0.105] G <0.001
T = OUT/IN 1.078 1.95 % −0.010 [−0.0006, +0.0004] 0.669

The key finding: input and output drift together, and T cancels it. The input peak (+0.043 %/drop) and input Δv (+0.072 %/drop, p = 0.009) both creep up — the auto-dropper's strike got slightly harder over 50 drops, a rig-level drift, not the mount. Because it's common-mode, transmissibility is drift-free from drop 1 (slope CI ±0.05 %/drop, centered on zero → |ΔT| ≤ ~1 % worst-case over a 20-drop campaign). That makes T the drift-immune BO objective; output-at-fixed-input needs the longer burn-in or detrending against the input.

3) Regression reliability

  • Start-drop sensitivity: sweeping the start over drops 3–13 moves the output slope smoothly +0.038 → +0.012 %/drop — a decaying seating tail, not a changepoint artifact. T stays n.s. at every start.
  • Autocorrelation: Durbin-Watson 0.43 / 0.73 / 0.55 (output / input / T) — the residuals carry the smooth seating curvature, which makes OLS over-eager to call trends. That cuts favorably: the flat-T verdict survives a fortiori; the output's tiny p-values mean "trend present," with the exponential fit as the better shape description.
  • Normality: Shapiro-Wilk 0.23 / 0.07 / 0.18 — fine. And n = 45 gives ~2× tighter CIs than run Get started on this repo #1's n = 19 — that, not new physics, is why sub-0.05 %/drop slopes now reach significance.

4) Damage / limitations on the structure: no damage found

Using the mount-robust indicators from the health check (they can't be faked by seat/wax changes):

indicator result verdict
ringdown dominant freq (rotation-invariant) 549 Hz, locked all 50 drops (p = 0.38) no stiffness loss
output pulse width 1.49 ms, CV 0.40 %, −0.75 % total over 50 drops† no softening
pre-impact noise RMS 0.15–0.20 G, unchanged first-5 vs last-5 sensor healthy

†Quantized at the 8 µs sample step; the statistically-significant slope is a 1–2-sample shift pointing stiffer — the opposite of damage (a cracked strut/cut tendon lengthens the pulse and lowers the mode).

prc1kn has now taken ~98 recorded drops at ~215–260 G CFC-180 with its structural mode still pinned at 549 Hz — wear-out remains undetectable on BO-campaign timescales at 13 in (for this dummy; intact pre-tensioned prints may fatigue differently). Two non-damage observations worth flagging:

  1. The sensor is still slowly rotating in the seat — CH3 grows 1,023 → 1,285 G (+0.65 %/drop, p ≈ 1e-17) and CH4 2,945 → 3,376 G (p ≈ 1e-22) at near-constant resultant: the same loosening signature that preceded run Get started on this repo #1's fall-off. The cable tie removes the consequence, not the cause — your deeper-housing suggestion is the right fix (the sensor sitting only halfway in is exactly what this data shows). A transient HF excursion at drops 16–19 (spectral centroid 660–837 Hz, fully back to baseline by drop 20) coincides with the CH2/CH3 migration inflection → a seat micro-event, not structural.
  2. T level is re-mount-dependent (1.215 in run Get started on this repo #1 → 1.078 here at the same nominal setup) — compare T within a mount only, never across re-waxings.

SOP takeaways

  1. Adopt the cable tie-off — 50/50 vs run Get started on this repo #1's 25-drop ceiling, at zero cost.
  2. Prefer T (per-drop OUT/IN ratio) as the objective — no burn-in needed, immune to the rig-level drift both single channels carry. If output-only peak-g is needed: burn in ≥ 12–15 drops per fresh wax application and re-verify with the changepoint scan each re-mount.
  3. Live seat-health check during long campaigns: watch the per-axis ratio (e.g. CH2/CH4) — it's the early warning for loosening.
  4. Deepen the key-seat pocket so the walls, not the wax film, register the sensor.

Caveats: n = 1 specimen and it's a deliberately-failed print — this calibrates the mount/DAQ/rig, not geometry (T ≈ 1.08 is not a geometry result). 200 ms window; Δv partial-pulse (~2.6 m/s); tri-axis orientation unverified (and demonstrably drifting); ringdown frequency resolution 30.5 Hz, so mode shifts < ~6 % aren't resolvable.


  • Gather context (prior drift-calibration script + channel map)
  • Download & commit the 50 TP4 CSV exports
  • Burn-in / stabilization detection (changepoint scan + exponential fit → ~12–15 drops)
  • OLS drift rate on the stabilized phase + reliability checks (CI, Durbin-Watson, Shapiro, start-drop sensitivity)
  • Damage / limitation check on prc1kn (none found; sensor rotation + rig-level input drift flagged)
  • Figures + writeup + README
  • Commit & push (92c9995)
  • Summarize findings
    · branch copilot/get-video-drop-test-data

…l-off)

Co-authored-by: Jinkwan Han <ctrhjk@users.noreply.github.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@ctrhjk

ctrhjk commented Jul 3, 2026

Copy link
Copy Markdown
Collaborator

@claude

We got a pretty good tensegrity structure, having housings on the top and at the bottom vertex. However, this one still has a little bit of bubbles on the top tendon, so this is close to an actual specimen but is still considered a failure specimen.
Unique ID is 'RW5F61'
IMG_6162

Settings were the same, but this time I added a new tri-axis accelerometer to the bottom housing. For the channel setting, ch6 is sens X, ch7 is sens Y, and ch8 is sens Z. These axes have sensitivities of 9~10.5 mV/G.
IMG_6167

I also took cable tie-off to prevent the accelerometers from falling off.
IMG_6168

30 drops were conducted, and the drop height was 13in.

Here are the results of drops.
30drops with real_Signal1.csv
30drops with real_Signal2.csv
30drops with real_Signal3.csv
30drops with real_Signal4.csv
30drops with real_Signal5.csv
30drops with real_Signal6.csv
30drops with real_Signal7.csv
30drops with real_Signal8.csv
30drops with real_Signal9.csv
30drops with real_Signal10.csv
30drops with real_Signal11.csv
30drops with real_Signal12.csv
30drops with real_Signal13.csv
30drops with real_Signal14.csv
30drops with real_Signal15.csv
30drops with real_Signal16.csv
30drops with real_Signal17.csv
30drops with real_Signal18.csv
30drops with real_Signal19.csv
30drops with real_Signal20.csv
30drops with real_Signal21.csv
30drops with real_Signal22.csv
30drops with real_Signal23.csv
30drops with real_Signal24.csv
30drops with real_Signal25.csv
30drops with real_Signal26.csv
30drops with real_Signal27.csv
30drops with real_Signal28.csv
30drops with real_Signal29.csv
30drops with real_Signal30.csv
30drops with real_Signal31.csv
30drops with real_Signal32.csv

I observed a problem that the single axis accelerometer fell off the bottom acrylic plate, and since it was a trigger, it detected the wrong surplus acceleration. Please figure out what dataset indicates those falling off, and do OLS regression analysis with the dataset above. Refer this comment: #67 (comment)

Report back the analysis results to me, and suggest some recommendations on how to secure accelerometers in place.

@claude

claude Bot commented Jul 3, 2026

Copy link
Copy Markdown

Claude finished @ctrhjk's task in 9m 5s —— View job


30-drop run on RW5F61 — CH5 fall-off forensics + OLS drift analysis

Analyzed all 32 captures. Data, a reproducible script, figures, and a writeup are committed (40f2070):

Setup recap. First campaign on a near-real specimen: RW5F61, key-seat housings at the top and a bottom vertex; TOP tri-axis = CH2–4 (key-seat + wax + cable tie), base-plate single-axis = CH5 (wax, the 1000 G trigger), and the new bottom-vertex tri-axis = CH6/7/8 ("BOT", 9–10.5 mV/G, cable tied). 30 auto-drops at 13 in, ~15 s cadence.

1) Which datasets indicate the fall-off — Signal 11 is the detachment; 11, 12, 17, 27, 28 are the spurious triggers

The classification is unambiguous: a real drop puts ~4,700–5,100 G raw on the TOP resultant and ~1,020–1,490 G on BOT. Five captures have essentially nothing there (TOP ≤ 105 G — three orders of magnitude below a real hit) while CH5 still shows 1,650–3,960 G: the trigger fired on the CH5 sensor's own motion, not a drop.

capture TOP raw (G) CH5 raw (G) verdict
Signal 11 1 3,909 the fall-off event — fired 6 s off-cadence, zero specimen response
Signal 12 105 3,960 spurious (sensor bouncing/settling)
Signal 17 32 2,849 spurious
Signal 27 8 2,297 spurious
Signal 28 2 1,651 spurious

So 27 of the 30 conducted drops were captured (Signals 1–10, 13–16, 18–26, 29–32); 3 drops were lost because their impacts fell in the DAQ dead time consumed by the spurious triggers (the event-time gaps around 11–12, 17 and 27–28 each swallow one ~15 s cadence slot).

And CH5 is not trustworthy on any capture from Signal 11 onward, even the real ones:

  • pre-fall-off (Signals 1–10): CFC-180 251 G, CV 2.4 % — normal;
  • post-fall-off: 42–262 G, CV 34.7 %, with the raw level stepping between ~3.7–5.0 kG (Signals 13–16) and ~8.3–9.1 kG (18–26 — up to 96 % of the 9,442.9 G full scale, near clipping) as the loose sensor changed resting position;
  • the trigger fired early on the sensor's rattle: the impact lands at the nominal ~3.9 ms on healthy captures but at 9.6 / 9.0 / 5.1 / 35.3 ms on Signals 13, 14, 15, 26 (that last one only just stayed inside the 200 ms window).

Meanwhile the TOP and BOT channels stayed flat throughout — the structural measurement itself was never disturbed. 👍

2) OLS drift analysis (27 real drops; CH5 excluded, BOT as input reference)

Burn-in: the changepoint scan is n.s. from k = 2 (exponential fit: plateau 264.1 G, amplitude 4.2 G, τ = 1.4 drops) — much faster seating than drift-cal #2 (τ = 12); this wax application settled almost immediately. Stabilized phase = drops 3–27 (n = 25):

series mean CV slope (%/drop) p
TOP output (CH2–4) 264.1 G 0.97 % +0.049 0.065 (n.s.)
BOT input (CH6–8 resultant) 159.2 G 6.86 % +0.428 0.021
T* = TOP/BOT 1.665 6.10 % −0.324 0.053 (n.s.)
CH5 (detached, for reference) 210.5 G 28.9 % −0.399 0.629
  • The TOP output is drift-free and tight (CV 0.97 %, no significant trend; the split-half wobble spans only ~2 % total). The wax + cable-tie key-seat SOP carries over to RW5F61 unchanged.
  • The bottom-vertex input works but is noisier than the base plate was (CV 6.9 % vs 0.5–2.6 %). The culprit is a level step in the last four captures (150–160 → 174–191 G) carried by the off-axis CH6/CH7 content while the drop-axis CH8 raw peak stays flat (~925–1,025 G) — the bottom sensor's orientation/coupling shifted late in the run (plausibly disturbed around the same events that freed CH5). That step is also what drives BOT's barely-significant +0.43 %/drop slope and the mirror-image T* slope.
  • T* ≈ 1.67 is a different quantity from the old T ≈ 1.0–1.2 — the reference now sits on the compliant bottom vertex, not the rigid plate. Compare it only within this instrumentation layout.
  • Reliability: DW 0.36–1.0 (positive autocorrelation → OLS over-eager, so the n.s. verdicts survive a fortiori); start-drop sweep keeps TOP ≤ ~0.1 %/drop everywhere.

Specimen check: no damage signature on RW5F61 over the 27 impacts — pulse width flat at 1.53 ms (CV 0.64 %, tiny trend pointing stiffer), rotation-invariant ringdown mode with no downward trend, noise floors healthy. The rising spectral centroid and the CH3/CH4 growth at constant resultant are the familiar slow in-seat rotation, not the structure.

3) Recommendations — keeping the sensors seated

  1. Base-plate single-axis: stop relying on bare wax for auto campaigns. It shear-fatigues under repeated ~7–9 kG raw hits. In ISO 5347 order of preference: (a) stud/screw mount — bolt a small tapped block to the plate (or drill/tap the acrylic) and screw the sensor down; (b) hard adhesive (CA/epoxy on a sacrificial base); (c) if wax stays: fresh thin film each session plus a cable tie-off for this sensor too — the two tied sensors have now survived ~80 drops with zero fall-offs; the one untied sensor is the one that fell.
  2. Move the trigger off the base-plate sensor. A trigger on a detachable sensor is a single point of failure (5 spurious captures + 3 lost drops here). CH4 is the robust choice — ~4,500–4,800 G raw on every real drop, 4.5× margin over the 1000 G level, and it lives in the proven key-seat. CH8 is marginal as a trigger (raw ~925–1,025 G straddles 1000 G); if used, lower the level to ~300–500 G.
  3. Live plausibility check during auto campaigns: flag any capture whose TOP-resultant max is < 500 G or lands > 6 ms into the record — one line of code, and it would have caught all five spurious captures in real time.
  4. Deepen the key-seat pockets (as you and Sterling already discussed) so the walls, not the wax film, register the sensor — the in-seat rotation is visible on both tri-axis units, and the bottom unit's late-run off-axis step is what currently costs T* its precision (CV 6 % vs the ~1 % it should reach). Worth re-checking the bottom sensor's seating before the next campaign.

Caveats: n = 1 specimen and RW5F61 is still a failed print (top-tendon bubbles) — this qualifies the three-sensor layout and mount SOP, not geometry (T* ≈ 1.67 is not a geometry result). 200 ms window; Δv partial-pulse; tri-axis orientations unverified (and the bottom one demonstrably shifted); the CH5 verdicts rest on level/timing forensics, not video of the detachment.


  • Gather context (prior drift-calibration scripts, channel map incl. new CH6–8)
  • Download & commit the 32 TP4 CSV exports
  • Identify the spurious triggers / CH5 fall-off (Signal 11; spurious = 11, 12, 17, 27, 28)
  • OLS regression (burn-in = 2 drops, stabilized OLS, reliability checks) on the valid channels
  • Damage/limitation check on RW5F61 (none found)
  • Figures + writeup + README
  • Commit & push (40f2070)
  • Report results + mounting recommendations
    · branch copilot/get-video-drop-test-data

…drift, bottom-vertex tri-axis

Co-authored-by: Jinkwan Han <ctrhjk@users.noreply.github.com>

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@ctrhjk

ctrhjk commented Jul 6, 2026

Copy link
Copy Markdown
Collaborator

@claude

This test was conducted to assess 100 drops of the latest tensegrity structure.

Channel setup:
Ch2: Full scale 14492.8G / Trigger: No / Sensitivity: 0.69 mV/G / Coupling: AC / ICP: checked / Waveform analysis: Half Sine
Ch3: Full scale 14992.5G / Trigger: No / Sensitivity: 0.667 mV/G / Coupling: AC / ICP: checked / Waveform analysis: Half Sine
Ch4: Full scale 13624.0G / Trigger: Yes / Trigger level: 1000 G / Sensitivity: 0.734 mV/G / Coupling: AC / ICP: checked / Waveform analysis: Half Sine
Ch5: Full scale 9442.9G / Trigger: No / Sensitivity: 1.059 mV/G / Coupling: AC / ICP: checked / Waveform analysis: Half Sine
Ch6: Full scale 1002.0G / Trigger: No / Sensitivity: 9.98 mV/G / Coupling: AC / ICP: checked / Waveform analysis: Half Sine
Ch7: Full scale 991.1G / Trigger: No / Sensitivity: 10.09 mV/G / Coupling: AC / ICP: checked / Waveform analysis: Half Sine
Ch8: Full scale 989.1G / Trigger: No / Sensitivity: 10.11 mV/G / Coupling: AC / ICP: checked / Waveform analysis: Half Sine

Ch2 through 4 are for the top tri-axis accelerometer, and ch6~8 are for the bottom tri-axis accelerometer.

I secured ch5 sensor with tape so that it would not fall off the bottom acrylic plate.
IMG_6282

Here are the 100 drops results
drop1.zip
drop2.zip
drop3.zip
drop4.zip

Analyze these drops, and report any problems if you observe.

@claude

claude Bot commented Jul 6, 2026

Copy link
Copy Markdown

Claude finished @ctrhjk's task in 9m 46s —— View job


100-drop campaign — analysis + problems found

Analyzed all 100 captures. Data, a reproducible script, figures, and a writeup are committed (6275e88):

The good news first: 100/100 clean — every fix from the 30-drop run worked

All 100 captures are real drops — zero spurious triggers, zero lost drops, zero fall-offs, and the impact lands at 4.01 ± 0.01 ms in every single record. Moving the trigger to CH4, taping CH5, and the cable ties did exactly what they were supposed to (vs the 30-drop run's 5 spurious captures + 3 lost drops). Cadence was steady (median 20 s; 100 drops in ~31 min).

⚠ Problem 1 — the low-range bottom tri-axis is under-ranged: CH8 exceeds full scale on 85/100 drops

channel full scale median peak max ≥95 % FS > FS
CH6 (BOT X) 1002.0 G 73.8 % FS 106.9 % 31/100 22/100
CH7 (BOT Y) 991.1 G 85.4 % FS 101.7 % 39/100 9/100
CH8 (BOT Z, drop axis) 989.1 G 104.7 % FS 108.5 % 87/100 85/100

The drop-axis channel spends most of the campaign above its rated range. It's not hard flat-topping (≤ 4 samples pinned), but linearity above full scale is unspecified, so all BOT-derived numbers (BOT peak, T* = TOP/BOT, BOT Δv) from this run are saturation-biased — don't use them quantitatively. This was foreseeable in hindsight: the 30-drop run already measured 925–1,075 G raw per axis at the bottom vertex, exactly straddling a ~989 G range. Shock practice wants 2–3× headroom → the bottom-vertex station needs a ≥ 3 kG-range sensor at 13 in (the previous multi-kG tri-axis fits comfortably), or a lower drop height if you specifically want the low-range unit's resolution.

⚠ Problem 2 — the taped CH5 creeps upward (~+3 % over the campaign)

Stabilized-phase OLS (drops 10–100, n = 91, CFC-180):

series mean CV slope (%/drop) p
TOP output (CH2–4) 241.7 G 1.01 % −0.007 0.073 (n.s.)
CH5 plate (taped) 252.6 G 1.89 % +0.035 1.1e−06
T = TOP/CH5 0.957 2.12 % −0.043 4.6e−08

The tape held mechanically for 100 drops (a win vs bare wax), but CH5 rises steadily while TOP stays flat — in drift-cal #2 a genuinely harder strike moved both channels and cancelled in T; here it doesn't, which points at the tape interface progressively stiffening/seating under the ~7 kG raw hits, not a real input change. So T = TOP/CH5 carries a slow −0.043 %/drop drift (≈ −4 % total). For BO use: detrend it, burn the tape in (the drift is front-loaded), or upgrade CH5 to a stud/cement mount.

Burn-in flipped sign this run — and that's informative

Changepoint scan → burn-in = 9 drops, but the exponential fit has negative amplitude (plateau 241.5 G, −13 G, τ = 7.7 drops): the output starts ~250 G and settles downward, opposite to the wax-seating rise on prc1kn. That looks like early specimen break-in (fresh tendon/joint settling) rather than couplant seating. SOP-wise: ≥ 10 unrecorded burn-in drops covers both signs.

Specimen over 100 drops: no damage signature, one genuine watch item

  • Ringdown dominant mode pinned at ~610 Hz all campaign (p = 0.39) — no cut-tendon / cracked-strut signature.
  • But the output pulse width creeps +0.024 %/drop (p = 1.2e−18): 1.496 → 1.536 ms, +2.7 % total — tiny (≈ 5 samples), yet it's the first campaign with a statistically robust accumulating trend in the softening direction, which is what early tendon relaxation would look like. Worth an endpoint photo/reference check after long campaigns from now on.
  • The slow in-seat sensor rotation continues on both tri-axis units (CH6 raw peak 269 → 605 G at near-constant resultant) — deeper key-seat pockets remain the right fix; resultant-based metrics are robust to it.

Recommendations

  1. Swap the bottom-vertex sensor back to a multi-kG range (or reduce drop height) — this run's BOT/T* are not quantitatively usable.
  2. Keep the CH4 trigger + tape retention + cable ties — validated at 100-drop scale.
  3. T = TOP/CH5 is the usable ratio (CV 2.1 %) with the tape-drift caveat above.
  4. Burn in ≥ 10 drops on fresh specimens/mounts before recording.
  5. Please assign this specimen its unique ID — the comment doesn't name it, and the ~610 Hz mode (vs RW5F61's 549 Hz) suggests a different or re-tensioned structure; the pulse-width watch item needs a traceable history to mean anything.

Caveats: n = 1 specimen (ID unassigned); 200 ms window; Δv partial-pulse; tri-axis orientations unverified and slowly rotating in both seats; BOT quantities saturation-biased throughout; the tape-seating reading of the CH5 drift is inferred from the TOP/CH5 contrast, not an independent coupling measurement.


  • Gather context (prior analysis scripts, channel map incl. new low-range CH6–8)
  • Download & extract the 4 zips, commit the 100 raw TP4 exports
  • Classify captures (100/100 real; saturation audit on all channels)
  • Burn-in + OLS drift analysis (TOP, CH5, BOT, T, T*; reliability checks)
  • Damage / limitation check over 100 drops (pulse-width watch item)
  • Figures + writeup + README
  • Commit & push (6275e88)
  • Report findings
    · branch copilot/get-video-drop-test-data

… tape drift, OLS, damage indicators

Co-authored-by: Jinkwan Han <ctrhjk@users.noreply.github.com>

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@ctrhjk

ctrhjk commented Jul 6, 2026

Copy link
Copy Markdown
Collaborator

@claude
The trigger is still a ch5. Not ch4

@claude

claude Bot commented Jul 6, 2026

Copy link
Copy Markdown

Claude finished @ctrhjk's task in 4m 54s —— View job


Trigger-channel correction applied — it's CH5, not CH4

Thanks for the correction, @ctrhjk. I've fixed the 100-drop analysis everywhere it claimed the trigger moved to CH4 (ddaef2c): docs/drop-test-100drops-analysis.md · data/drop-tests/100drops/README.md · scripts/analysis/drop_test_100drops_analysis.py (my mistake came from taking the channel table in your posting comment at face value — it listed Ch4: Trigger: Yes / Ch5: Trigger: No).

What doesn't change

All numeric results stand. The script never used the trigger channel for anything quantitative — each impact is located from the argmax of the TOP tri-axis resultant, and I verified the regenerated metrics JSON is byte-identical after the fix. The OLS drift numbers, saturation audit, burn-in estimate, and damage indicators are all unaffected. Only the figure-01 label and the prose changed.

What does change — the attribution of the 100/100 result

The clean campaign wasn't "trigger relocation worked"; it was the tape working. The 30-drop run's 5 spurious captures were the detached CH5 firing the trigger on its own rattle. Taping CH5 removed the cause, so the same CH5 trigger that misfired 5 times in 30 drops ran 100/100 clean here — and its raw peaks (5.5–8.1 kG) clear the 1000 G level by 5.5–8× on every drop, so the ~+3 % tape-seating amplitude creep I flagged has no bearing on trigger reliability.

One nuance worth keeping in mind: the trigger still lives on the one sensor with a fall-off history, so it remains a single point of failure guarded only by the tape. The updated recommendation (§6.2) is: keeping the taped CH5 trigger is now a validated option, but moving the trigger to CH4 is still a cheap defensive upgrade if you want belt-and-suspenders — CH4 saw 3.4–4.3 kG raw on every drop this campaign (>3.3× a 1000 G level) and sits in the proven key-seat.


  • Find all CH4-trigger claims in the 100-drop doc, README, script, and figure labels
  • Correct the trigger attribution and re-interpret the affected conclusions (correction note in the doc, §1 and §6.2 rewritten, README channel table fixed)
  • Verify nothing numeric depended on which channel triggered (re-ran the script; metrics identical, only labels changed)
  • Commit & push (ddaef2c)
    · branch copilot/get-video-drop-test-data

Per @ctrhjk's correction the trigger channel was still CH5, not CH4 as
listed in the posted channel table. Numeric results unchanged (impacts
are located from the TOP resultant); the attribution of the clean
100/100 campaign shifts to the tape retention on CH5.

Co-authored-by: Jinkwan Han <ctrhjk@users.noreply.github.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@ctrhjk

ctrhjk commented Jul 6, 2026

Copy link
Copy Markdown
Collaborator

@claude
The unique ID is RW5F61

@claude

claude Bot commented Jul 6, 2026

Copy link
Copy Markdown

Claude finished @ctrhjk's task in 3m 2s —— View job


Specimen ID recorded: the 100-drop campaign was RW5F61 — same structure as the 30-drop run

Thanks @ctrhjk — recorded everywhere the 100-drop analysis said "ID unassigned" (8f0ad3b): docs/drop-test-100drops-analysis.md · data/drop-tests/100drops/README.md · scripts/analysis/drop_test_100drops_analysis.py (docstring only — no numeric results depend on the ID, so nothing was re-run).

This wasn't just a label — knowing it's the same specimen changes three readings

  1. The ~610 Hz vs ~530 Hz mode contrast is no longer evidence of "a different structure." My recommendation 5 had flagged that the 100-drop dominant mode (~610 Hz) differed from the 30-drop run's (~530 Hz, alternating with an ~1,100 Hz mode) and asked whether this was a fresh print. It's the same print, so that's a real same-specimen shift (two–three 30.5 Hz bins, resolved) — but in the stiffer direction, the opposite of damage. The plausible drivers are the re-rig: the swapped bottom-vertex sensor (a different seismic mass sitting on a measured node), the tape/fresh-wax mounts, or tendon re-tensioning between sessions. Practical rule added to the doc: the ringdown mode is configuration-dependent — compare it only within a rig configuration, same rule we already apply to T.

  2. §4's "fresh-print break-in" reading is retired. The downward ~9-drop burn-in transient can't be first-exercise settling on a fresh structure, because RW5F61 already had ~30 drops. It now reads as re-setup settling (fresh wax, new tape interface, swapped bottom sensor, re-seating after handling). The operational takeaway is unchanged but slightly strengthened: even a previously-exercised specimen needs the ≥ 10 unrecorded burn-in drops after any re-mount.

  3. The pulse-width watch item now has its traceable history — and it shows no accumulated damage. Across RW5F61's 127 captured drops: the 30-drop run held 1.53 ms (trending stiffer), and this campaign ran 1.496 → 1.536 ms. The campaign started below the previous run's value, so absolute pulse width is mount-confounded across re-rigs — only the within-campaign trend is diagnostic. The +2.7 % softening-direction creep within this campaign therefore stands as a per-campaign watch item, not an accumulating total.

One small process suggestion added to the doc: put the specimen ID in the TP4 session name (e.g. RW5F61_100drops) so it never has to be reconstructed after the fact.


  • Find every "ID unassigned" reference in the 100-drop doc, README, and script
  • Update them with RW5F61 and reconcile the same-specimen implications (mode contrast, burn-in reading, pulse-width history)
  • Commit & push (8f0ad3b)
  • Summarize
    · branch copilot/get-video-drop-test-data

…pecimen readings

The 100-drop specimen is RW5F61 (confirmed by @ctrhjk), the same structure
as the 30-drop run — cumulative 130 conducted / 127 captured drops.
Resolves recommendation 5, re-frames the downward burn-in transient as
re-setup settling (not fresh-print break-in), and reads the ~530 -> ~610 Hz
mode contrast as a same-specimen, stiffer-direction, re-rig-driven shift.

Co-authored-by: Jinkwan Han <ctrhjk@users.noreply.github.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@ctrhjk

ctrhjk commented Jul 6, 2026

Copy link
Copy Markdown
Collaborator

@claude

claude Bot commented Jul 6, 2026

Copy link
Copy Markdown

Claude finished @ctrhjk's task in 7m 35s —— View job


CH4-trigger assessment — 50 auto-drops on RW5F61: it passes, adopt it as SOP ✅

Analyzed all 50 captures. Data, a reproducible script, figures, and a writeup are committed (713bbbc):

1. Trigger verdict — clean on every axis I can test

trigger health metric value
real drops captured 50/50 — zero spurious triggers, zero lost drops, zero fall-offs
CH4 first crossing of 1000 G 3.896 ± 0.002 ms — sample 487 in 49/50 records, sample 488 in the other (±1 sample / 8 µs jitter)
CH4 raw |peak| 3,472 ± 87 G → 3.2–3.7× margin over the level, no trend toward it
CH4 headroom max 26.8 % of its 13,624 G full scale — no saturation risk
pre-crossing quiet ≤ 4 G before 3.5 ms in every record — nothing but the impact rising edge ever approaches the level
cadence median 14 s, 50 drops in ~11 min — fastest campaign yet (100-drop ran ~20 s)

The rattle-trigger failure mode that produced 5 spurious captures in the 30-drop run has no analogue now: the trigger lives on a sensor that is key-seated, waxed and cable-tied. The constant ~0.10 ms offset from the nominal 4.000 ms pre-trigger point is a fixed DAQ latency, identical in every record — harmless. Recommendation: lock in trigger = CH4, 1000 G as the SOP trigger; CH5 stays as a measurement channel only.

2. The measurement is unperturbed by the trigger change

Stabilized-phase (drops 11–50) vs the 100-drop CH5-trigger run: T = TOP/CH5 reproduces to 0.3 % — 0.957 (CV 2.12 %) → 0.960 (CV 1.20 %) — the tightest T of any RW5F61 campaign. Absolute levels shifted ~6 % down (TOP 241.7 → 226.7 G, CH5 252.6 → 236.3 G), the familiar re-setup level shift.

Drift: TOP (−0.078 %/drop) and CH5 (−0.065 %/drop) both decline slowly together (−1.7 % / −2.5 % total), with plate Δv falling in step — the auto-dropper's strike got slightly softer over the campaign, a rig-level drift. Because it's common-mode, T is flat (p = 0.43 stabilized; full-series +0.023 %/drop, p = 0.065 n.s.) — the mirror image of drift-cal #2 where a hardening strike also cancelled in T. Notably, the 100-drop run's CH5 tape-seating creep (which poisoned T at −0.043 %/drop) is gone this session — consistent with the tape now being burned in.

3. Carried-over issues (not trigger-related)

  1. Bottom tri-axis still under-ranged: CH8 exceeds its 989 G full scale on 40/50 drops (median 105 % FS) — BOT/T* remain saturation-biased; the ≥3 kG swap is still pending.
  2. Bottom seat still rotating: CH6 collapses 849 → 269 G raw at near-constant resultant — same in-seat rotation signature; deeper pockets remain the fix.
  3. Minor: TOP pre-impact noise RMS roughly doubled across the run (0.2 → 0.55 G, still ~0.004 % FS) — worth a glance at the top seat/cable before the next campaign.

4. Specimen at ~180 cumulative drops — no damage signature

Pulse width flat at 1.51 ms (CV 0.83 %) — the 100-drop run's +2.7 % widening watch item did not continue (it reads as per-campaign mount seating, not tendon relaxation). The ringdown alternates between two mode clusters (~520–700 Hz and ~1,340–1,740 Hz, ≈25 drops each) with no trend — two comparable structural modes trading dominance, not a stiffness change.

With trigger, mounts, retention, burn-in, and drift floor all now characterized, the instrumentation-qualification arc is done — the next campaign can be geometry discrimination (n ≥ 5 distinct intact prints, T = TOP/CH5 objective).

Caveats: n = 1 specimen and RW5F61 is a failed print — this qualifies the trigger/DAQ, not geometry (T ≈ 0.96 is not a geometry result). 200 ms window; Δv partial-pulse; tri-axis orientations unverified; BOT saturation-biased throughout; the "rig softening" reading of the common-mode decline is inferred from Δv + the T cancellation.


  • Gather context (prior 100-drop analysis, channel map)
  • Download & commit the 50 TP4 CSV exports
  • Assess the CH4 trigger (capture validity, timing, margin, spurious triggers, comparison vs CH5-trigger campaigns)
  • OLS drift + damage indicators for continuity with prior RW5F61 campaigns
  • Figures + writeup + README
  • Commit & push (713bbbc)
  • Report findings
    · branch copilot/get-video-drop-test-data

…t CH4 trigger as SOP

Co-authored-by: Jinkwan Han <282969777+ctrhjk@users.noreply.github.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Get a video and record data for a first crush/drop test

3 participants