I built a large part of the scanning robot's software stack. Like the sorter, I also assembled many of their mechanical components and fully wired a few of them. One machine scans at around 2,000 cards an hour.
Also very similar to the sorter. Some differences:
Two Sony A7R IV cameras, captured through a custom wrapper I wrote around SmartShooter on Windows.
I replaced SmartShooter with a gphoto2 state machine per camera, but never deployed it, because we never migrated to Linux.
I wrote the lens intrinsics calibration routine: roughly twenty images of a chessboard through cv2.findChessboardCorners to recover the camera matrix.
I wrote the AprilTag and homography calibration routine.
I wrote every GUI element by hand in tkinter a long time ago. The visuals have stayed relevant since.
The machines call APIs for real-time inference: identification, cropping, rotation, blurriness. I did not write those models, but the machine talks to all of them.
It auto-pauses on conditions like blurriness or cards left behind, on a signal from those models.
An early diagram to help with grid state / inventory software.