Il progetto C.A.R.E. si pone l'obiettivo di creare un'app Android per raccogliere dati dai sensori di accelerometro e giroscopio montati su uno smartphone; questi vengono inviati in tempo reale ad un algoritmo di Machine Learning che classifica i dati raccolti in una classe del tipo “incidente” o “altro”. Con il termine "altro" si raggruppano tutti gli eventi di accelerazione constante, accelerazione improvvisa, frenata constante, frenata improvvisa, svolta a destra e svolta a sinistra. Se l’evento rilevato è “incidente”, il fenomeno in questione viene memorizzato all’interno di un database MongoDB per essere analizzato meglio in seguito dall’admin dell’app (responsabile della compagnia assicurativa) mediante opportune dashboard. L'interfaccia è facile ed intuitiva e permette agli utenti di registrarsi, fare il login, di visualizzare in tempo reale i dati di accelerometro e giroscopio e l’evento che è stato rilevato.
Le componenti principali dell’architettura sono:
-
Front end: Realizzato con Flutter, prevede inizialmente un’interfaccia di login e registrazione e, una volta loggato, l’utente può navigare all’interno della sua area riservata visualizzando i dati di accelerometro e giroscopio raccolti in tempo reale, lo storico dei suoi incidenti e le sue informazioni personali, con l’opportunità di poterle modificare.
-
Android Studio: Grazie all’utilizzo di questo IDE si è creata un’app in grado si acquisire dati in tempo reale dai sensori (accelerometro e giroscopio) situati sullo smartphone su cui l’app viene eseguita. Una volta acquisiti vengono inviati, grazie al protocollo MQTT, all’algoritmo di ML che classifica i dati in eventi di incidenti ed altro;
-
Python: Si è addestrato un modello di Random Forest che è in grado di classificare, in base ai dati ricevuti in input, un evento, distinguendolo in una di queste due classi: incidente e altro. Inoltre, grazie al framework Flask, si sono sviluppate delle API che hanno permesso alle varie componenti dell'applicazione di comunicare con il database MongoDB.
- Machine Learning C.A.R.E.: Link al repository
- Back-end C.A.R.E.: Link al repository
- Front-end C.A.R.E.: Link al repository
- Pagina web
E' stato impleementato un sistema basato su comando vocale che si attiva nel momento in cui il modello di ML rileva un incidente, chiedendo all’utente di rispondere alla domanda “Hai fatto un incidente?”. In caso di risposta negativa (deve dire la parola “no”) si richiama l’API che elimina l’incidente memorizzato per errore nel database. In questo caso appare una schermata dalla durata di tre secondi (in questo modo l’utente non si distrae andando a togliere personalmente quella notifica) che indica che l’incidente è stato eliminato correttamente.
All'utente viene data la possibilità di modificare le proprie informazioni personali e di eliminare il proprio account.
Quando il modello di ML classifica un evento come "incidente" viene richiamata un API che salva l'evento all'interno del database MongoDB. In questo modo l'utente in qualsiasi momento può visualizzare il suo storico per vedere gli incidenti che ha fatto.
E' stata implementata una sezione relativa all'admin che offre una panoramica generale dell'applicazione. In particolare l'amministratore dell'app può visualizzare:
-
Statistiche Generali: Numero totale di utenti registrati, numero di incidenti rilevati e dettagli aggiornati sugli eventi raccolti.
-
Grafico degli Incidenti: Un grafico interattivo che mostra l'andamento degli incidenti nel tempo, con la possibilità di filtrare i dati per tutti gli utenti o per un singolo utente specifico.
-
PREREQUISITO FONDAMENTALE: Bisogna avere Flutter installato sul proprio pc
-
Connettere lo smartphone al pc
-
Recuperare la lista dei dispositivi connessi:
Flutter devices
Da questa lista bisogna estrarsi l'id dello smartphone che abbiamo collegato al pc
- Installare l'app sul dispositivo
Flutter run id_smartphone




