Inspiration

Downtime in manufacturing can cost millions of dollars per minute. With pipelines of many dissimilar machines and complex equipment, proper management and surveillance can quickly become a headache.

What it does

Use an embedded system consisting of a cheap yet capable ESP32 microcontroller and an Adafruit MPU6050 Inertial Measurement Unit. The system trains an isolation forest to detect anomalous behavior in the equipment's vibrations. Sampling, signal processing, training, and inference are all performed onboard the ESP32 in real-time. The system leverages features such as kurtosis, RMS, and variance in the X, Y, and Z acceleration signals to build the isolation forest.

How we built it

The system begins by sampling the accelerations to learn and build an isolation forest. When the model is complete, inference begins. Should an anomalous signal be detected, a warning is issued. The system was built using Arduino IDE and C++.

Challenges we ran into

FFT features were not successfully extracted due to memory constraints. FFT features hold lots of rich information about the signals, and thus, the anomaly detection suffers without them influencing the model. With tighter data types and more scrupulous memory management, the memory issues preventing the implementation of FFT may be resolved.

Accomplishments that we're proud of

The system uses FreeRTOS to configure one of the dual cores in the ESP32 to handle sampling. With FreeRTOS, the sampling is well scheduled, and the system performs in real-time.

What we learned

Machine learning is more than neural networks. Isolation forests are especially useful for restricted resource systems due to their small size and are well-suited for real-time systems because of their quick build time and quick inference time.

What's next

Implementing the system to learn the vibrations of a handheld drill is next. The system will be tested to identify odd behavior in the drill. A warning LED will also be implemented to signal an anomaly.

Built With

Share this project:

Updates