BDRLABVANCOUVER · 49.28°N
CONNECTED — §05 METHOD

How we measure, and what happens when we miss.

The site is generated from a project record, and the field that holds a measurement cannot be empty. There is no way to write “TBD”, no fallback string and no default value — a measurement we did not take simply has no cell, and the row is shorter. That is not editorial discipline, it is a build error, which is the only kind of discipline that survives a deadline.

Targets are written down at kickoff, before anyone knows whether they are reachable, and printed afterwards beside what we actually achieved. Missed rows stay on the sheet with the delta. On BDR-26-04 that is 1/6, and we left it there, because closing the gap meant more torque or less mass and both were the wrong trade for a demonstrator.

Worked example — BDR-26-04 · Traverse 1 m and settle
Target
< 350 ms
Measured
380 ms · Δ +30 ms
Caught on
encoder, settle band ±20 mm

We do not have a publication record. What we have instead is printed below: the instruments, the rigs and their uncertainties, the code and data we have put in public, and everything we have written down.

Instruments
Fabrication instruments in the shop, their working volume and the tolerance we hold on each.
MACHINEWORKING VOLUMEHELD TOLERANCE
Vertical mill, 3-axis with 4th-axis rotary460 × 250 × 400 mm± 0.05 mm
Abrasive water jet1200 × 1200 mm± 0.10 mm
Toolroom lathe300 mm swing, 700 mm centres± 0.02 mm
SLA printer145 × 145 × 185 mm± 0.15 mm
FDM printers, two256 × 256 × 256 mm± 0.30 mm

In-house since 2025–2026. The tolerance column is what we hold in production on 6061 and Delrin, checked on a granite plate against a dial indicator — not the machine’s stated repeatability, which is better and less useful.

Measurement rigs
Test rigs, what each one measures, the range it covers, its stated uncertainty and the sheets it was used on.
RIGMEASURESUNCERTAINTY
Throwing rig, built hereRelease velocity and angle, repeatably, without a person in the loopUsed on BDR-26-04± 0.15 m/sRange 2 – 9 m/s
Motion-capture volume, borrowedGround-truth position of a thrown object against the predicted impact pointUsed on BDR-26-04± 1.5 mmRange 4 × 4 × 2.5 m
Motor dynamometer, built hereTorque, speed and electrical input power on a drive under loadUsed on BDR-26-04± 2 %Range 1.5 kW, 6000 rpm
Go/no-go gauge set, cut hereCrease and edge position against a machined datum faceUsed on BDR-26-03± 0.05 mmRange 0 – 40 mm
Granite plate and dial indicatorFlatness, travel and switch actuation depthUsed on BDR-26-02, BDR-26-03± 0.002 mmRange 0 – 12.7 mm
Bench scaleAssembled mass, weighed once, at handoverUsed on BDR-26-04, BDR-26-02± 2 gRange 0 – 15 kg
Logic analyzer on a toggled pinControl loop period and interrupt jitter, on the running machineUsed on BDR-26-04, BDR-26-02± 2 nsRange 500 MSa/s
Oscilloscope with current probePhase current, switching behaviour and shunt calibrationUsed on BDR-26-04± 3 %Range 200 MHz, 30 A

Where a rig was built here, the uncertainty is what we measured against a reference we trust more. Where it was bought, it is the manufacturer’s and we say so. The uncertainty column is the figure we use when we decide whether a target was hit, so it is the one to attack first.

§01 · MEASUREMENT POLICY

Every number on this site had to be taken by someone

A rate carries its sample size in the same breath as its value. The catch-rate cell on BDR-26-04 reads 84% and immediately below it, in the same strip, n = 250 throws, nine people, indoor, mixed lighting. A percentage with no denominator is a marketing figure and the build rejects it.

Every constraint row also carries how it was measured — the instrument, the reference, the number of samples. That column is the methods section, and it is the reason the numbers on this site are worth arguing with. A figure you cannot argue with is a figure nobody has to believe.

Changes are dated and attributed. When a number moves, the old value and the new one both appear in the revision log with the initials of whoever moved it, so a reader who saw a sheet last month can see exactly what happened to it since. We do not quietly edit a result.

§02 · OPEN CODE AND DATA

Open repositories and datasets

Repositories and datasets published by the lab, with what each contains and its licence.
REPOSITORY OR DATASETWHAT IT ISLICENCE
bdrlab/ballistic-fitThe trajectory fit and impact predictor from the catching bin, with the test vectors it was validated against and the residual sweep that set the fit window.MIT
bdrlab/throw-setEvery labelled frame we collected for the detector: two hard-synced global-shutter cameras, mixed indoor lighting, including the backlit subset our own model fails on.CC BY 4.0
bdrlab/foc-g4The field-oriented current loop for the STM32G4, with the dynamometer traces it was tuned against and the identification scripts.MIT
bdrlab/crease-gaugeGo/no-go gauge geometry and the inspection procedure from the folding cell, released with the client’s written agreement.CC BY-SA 4.0
bdrlab/sheetThe record schema and typesetting this site runs on, including the assertion that makes an unmeasured number impossible to publish.MIT

Each of these can be cloned and run by someone who has never spoken to us, which is most of what a citation is for. The dataset includes the subset our own detector fails on; releasing only the easy frames would make the number in the register unreproducible.

§03 · WRITING

Writing and talks

Notes, talks and negative results, newest first.
DATETITLEVENUE
2026-04-22The ballistic fit is forty lines of math and it does not need a GPUSELF-PUBLISHED
2026-03-30Backlit throws: a sensor problem we spent two weeks trying to fix with a modelSELF-PUBLISHED — negative result
2026-02-18Six identical stations beat one clever headHardware meetup, Toronto
2026-01-27What a hard stop buys you and what it costs at changeoverSELF-PUBLISHED — negative result
2025-12-09Fitting a keyboard to one hand: three key-well revisions in seventeen daysSELF-PUBLISHED

Newest first. Notes, talks and results that went the wrong way, in one list.

§04 · NEGATIVE RESULTS

The things that did not work

The failure modes printed on each sheet are the short version — the conditions under which a machine we shipped stops working, written while it was still fresh. The long version is in the notes: approaches we spent real weeks on and abandoned, a filter that looked right on the bench and was wrong in a room with a window, and the mechanisms we handed over with a known fault and a written explanation of why we chose to leave it in.

A lab that only publishes the things that worked is a lab whose numbers you cannot use.

Method · 5 instruments · 8 rigs · 5 repositoriesThe measurement policy in full →