04/04/2017

Moteur rotatif - exemple de détection d’anomalies

Dans ce dernier article, nous détaillons de bout en bout une application de détection d’anomalies, de l’étude de cas à l’interface utilisateur. Nous expliquerons dans quel scénario de détection d’anomalie nous nous trouvons, ainsi que les anomalies que nous considérons. Pour plus de détails, nous vous invitons à lire (ou relire) les articles précédents traitant du sujet: « Les 3 différents types d’anomalies » et « Les 3 scénarios de détection d’anomalies ».

 

Il s’agit d’un moteur électrique rotatif. Ce dernier fait tourner différents disques métalliques reliés par une courroie. Les différentes pièces du moteur et les disques vibrent lorsque ce dernier est en marche. Les vibrations sont mesurées à l’aide d’un capteur de vibration sans-fil de l’entreprise Neratec. Ce sont précisément ces mesures qui vont nous permettre de détecter les potentielles anomalies du moteur.

 

L’ensemble de l’installation est présenté dans la Figure 5. Le moteur est encadré en bleu, le capteur de vibration en rouge et l’interface en vert. Nous avons construit cette démonstration à l’occasion du Sindex 2016, grand salon des technologies qui se déroule tous les deux ans à Berne.

 

Figure 5 Moteur rotatif sur notre stand lors du SINDEX 2016 à Berne. Encadré en bleu, le moteur. En rouge, le capteur de vibration. En vert, la détection, d‘anomalies en temps réel.

 

Voici en quelques lignes le détail de l’identification, de la résolution et de l’implémentation de ce problème de détection d’anomalies.

 

Identification du problème:

 

Les principales causes de dysfonctionnement d’un tel moteur sont les suivantes: le moteur tourne trop lentement, trop vite ou un des disques métalliques est biaisé. Nous avons volontairement ignoré d’autres dysfonctionnements du fait qu’ils ne sont pas détectables avec un capteur de vibration. Par exemple, un problème d’alimentation électrique empêchant le moteur de tourner : comment distinguer ce cas d’un moteur simplement éteint, à l’aide d’un capteur de vibrations seulement ?

 

Nous souhaitons reconnaître lorsque le moteur fonctionne correctement et distinguer les différentes anomalies. Nous sommes donc dans un problème de classification à 5 classes:

 

  1. 1. Le moteur est éteint
  2. 2. Le moteur tourne normalement
  3. 3. Le moteur tourne trop lentement
  4. 4. Le moteur tourne trop vite
  5. 5. Un des disques métalliques est biaisé

 

Nous avons préalablement effectué des mesures de chaque classe. Ces mesures sont labellées, rendant ce problème de détection d’anomalies entièrement supervisé.

 

Résolution du problème:

 

Les données à disposition sont celles collectées par le biais du capteur de vibration. Il s’agit d’un signal réel échantillonné à 2 kHz. Nous avons converti ce signal dans le domaine fréquentiel. Les coefficients de la transformée de Fourier sont ainsi nos features pour notre modèle.

 

Figure 6 Moyennes des fréquences par état du moteur (éteint, normal, trop vite, trop lent)

 

Nous avons entraîné et testé différents modèles dans l’exemple présenté. Notre but était d’obtenir de bonnes prédictions, rapidement et avec un algorithme simple. Notre choix s’est finalement porté sur l’algorithme Random Forest. Il est simple d’utilisation, rapide, présente des résultats satisfaisants et permet de comprendre quelles features influencent plus particulièrement la classification d’anomalies.

 

Implémentation:

 

L’implémentation du projet a été faite à l’aide du logiciel Dataiku. L’importation des données, le nettoyage et leur processing sont facilités et accélérés. La création d’un modèle est également simplifiée. On peut entraîner et valider notre algorithme Random Forest d’un seul click. Le cheminement d’un projet de Machine Learning reste cependant le même.

 

Figure 7 Flux de données du projet dans Dataiku

 

Pour terminer cet article, nous vous proposons une brève vidéo tournée lors du Sindex où nous présentons notre moteur en direct. Les commentaires sont en allemand, mais le fonctionnement de l’installation reste le même: