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
I dati sono stati acquisiti utilizzando delle opportune API di Android che hanno permesso al dispositivo che utilizza l'app di accedere ai propri sensori di accelerometro e giroscopio e di accedere ai loro dati in tempo reale. Di seguito viene riportata la schermata iniziale dell’utente in cui sono riportati i dati dei sensori in tempo reale e l’evento rilevato:
- /api/utenti/registrazione: Registra un nuovo utente.
- /api/utenti/login: Effettua il login per un utente esistente.
- /api/utenti/delete/{username}: Elimina un utente in base al suo username.
- /api/utenti/find_by_username/{username}: Recupera un utente in base al suo username.
- /api/utenti/: Recupera tutti gli utenti loggati nel sistema.
- /api/utenti/update/{username}: Aggiorna le informazioni di un utente in base al suo username.
- /api/incidenti/add_incidenti: Aggiunge un nuovo incidente nel database.
- /api/incidenti/get_incidenti_by_username/{username}: Recupera tutti gli incidenti relativi ad un particolare utente.
- /api/incidenti/delete/{id}: Elimina un incidente in base al suo identificativo.
- /api/incidenti/: Recupera tutti gli incidenti che sono presenti nel database.
Per maggiori informazioni visitare il file presente al seguente link
-
Ambiente:
DATABASE_URL=mongodb://db:27017/database DATABASE=database PASSWORD=***** USERNAME=**** JWT_SECRET=******* -
Build dell'immagine:
docker-compose build -
Avvio servizi:
docker-compose up



