This project was my 4th year Engineering capstone project. The goal was to make a quality control rig for the Vancouver based shoe making company, Casca. The rig can take qualitative measurements of custom 3D printed insoles. These measurements include size, weight, heel compression and arch height. The QC process is completely automated and involves data retrieval and storage to the existing database. The process starts with the technician scanning the QR code on the insole using a camera on the rig, then placing the insole on the platform and pressing the start QC button on the touch screen user interface. All the measurements are then automatically taken.
This project was aimed to be used in a real-world manufacturing process and therefore had different requirements from most university projects. There was much more focus on robustness, precision, documentation, etc. We also made sure to use parts that are readily available, so that building new devices to scale up was possible. The main controller is a Raspberry Pi 4B, which has a 7inch touchscreen attached. This allows for easy operation and monitoring through the custom GUI. In order to increase robustness with regards to sensor and actuator control, I decided to use an Arduino to interface between the sensors and actuators. This means that if there are any issues with any of the hardware components, the program will not be stuck in an infinite loop or crash.
The program running on the Pi is all written in Python, including the GUI where I used PyQt5. There are multiple functionalities implemented with the camera like QC code reading, size and side evaluation. The size and side are determined using the color contrast of the insole and the bed of the rig. I experimented with many times to make sure it is robust to lighting conditions. There is also communication with the database to retrieve insole data, such as the 3D model (STL). This is processed with numpy-stl to get the size and the arch height. After taking all the measurements from the camera, the Pi sends commands to the Arduino through UART to do all of the sensor and actuator based measurements. The Arduino simply returns the result measurement of the requested parameter.