Inspiration
Old bridges meant engineers had to walk out onto the structure to look at it up close. We wanted cameras to do that job repeatably, with each new photo checked against the last.
What it does
BridgeWatch is a prototype for inspecting bridges with cameras. It photographs sections of a structure, uses a vision model to flag suspected cracks, and shows them on a dashboard for an engineer to investigate. Every flag reads "suspected crack on this sheet". Nothing is a confirmed defect. Drones are the goal, not what we built.
How we built it
We built a replica bridge wall and used two phone cameras on two servos to stand in for two drones. Each station's servo moves its camera. The nodes capture frames, align each one to a stored baseline of the same view, and send only valid captures for classification. A capture that fails alignment, or is not sharp enough, is marked for recapture and never reads as clean.
Alignment is rejected when the match is too weak or the camera has moved too far:
$$\text{reject} \iff cc < cc_{\min} \;\lor\; |\Delta x| > \Delta x_{\max} \;\lor\; |\theta| > \theta_{\max}$$
where $cc$ is the alignment correlation, $\Delta x$ the shift in mm and $\theta$ the turn in degrees.
Challenges we ran into
- Lack of parts. The phones couldn't mount on the servos, so we built stands from cans, because the 3D printer was full.
- A servo supply fault. Station B's servo supply was unplugged, so its camera didn't move while the node reported success. We found and fixed it on the day.
- Classifier reliability. The first model timed out and was rate-limited, so we switched to Codex.
- Tile layout. Tiles cut to the nominal layout missed cracks; tiles cut to the physical overlap found more.
- Station A drift. Its phone drifted after a knock, so its baselines no longer matched, and its captures were rejected in the final run. ## Accomplishments that we're proud of The servos move both cameras autonomously, and each station flags a capture as valid or needing recapture. ## What we learned How much the result depends on the physical setup: a 15 mm tile margin changed what the classifier could see. ## Limitations
- Model wall only; not tested on a real bridge or in the field.
- Flags are suspected cracks, not confirmed defects; no accuracy figure.
- Baseline change detection is unreliable and is not a result.
- Station A was not assessed in the final scan. [Update if A runs.] ## What's next Get it working on drones..
Built With
- ip-camera
- javascript
- numpy
- openai
- opencv
- pyserial
- pytest
- python