Laser Beam Profiler

Camera-based beam profiling instrument — from a Raspberry Pi feasibility prototype to a validated in-house metrology tool, four versions later.

Python · PyQt6 · pyqtgraph · NumPy — source private

This one has a full arc. It started as my internship project: a Raspberry Pi 4 with three camera modules capturing raw beam images and computing beam-profile metrics, benchmarked head-to-head against a commercial beam profiler to prove the approach was viable. It was — and the validated concept was rebuilt into a proper in-house instrument that has since gone through four major versions.

The current generation is a PyQt6 + pyqtgraph desktop application on the shared instrumentation platform: live image acquisition, centroid and beam-width analysis, saturation handling, and structured data export. A device-true mock camera means the whole application — UI, pipeline, and analysis — runs and tests headless without hardware on the bench.

Synthetic beam image with Gaussian line-outs, D4-sigma aperture and second-moment readout

What the profiler measures: second-moment (D4σ) widths from a background-subtracted image — synthetic data shown.

Camera-based profiling is one of those problems where the physics keeps you honest: exposure control, background subtraction, and saturation behavior all bias the width numbers if you let them. A lot of the engineering here is making sure the number on screen is the number on the table.