SudoCapp: Ένας ψηφιακός φίλος για την καθημερινότητα

SudoCapp: Ένας ψηφιακός φίλος για την καθημερινότητα

Το SudoCapp αναπτύχθηκε ως λειτουργικό demo με ολοκληρωμένο δέντρο αποφάσεων, φωνητική αλληλεπίδραση και σύστημα υπενθυμίσεων. Δεν κατέληξε σε ένα πλήρως αξιόπιστο, έτοιμο προς χρήση σύστημα και παραμένει μαθητικό πρωτότυπο. Δεν υπάρχει προς το παρόν συγκεκριμένο πλάνο συνέχισής του. Η ομάδα αξιοποίησε επίσης το ChatGPT για μια πρωτότυπη μέθοδο προσομοιωμένης αξιολόγησης, η οποία οδήγησε σε επιστημονικό κεφάλαιο προς δημοσίευση στο IGI Global.

Τον Οκτώβριο του 2024, τέσσερις μαθητές του ομίλου, ηλικίας 13 ετών, σχημάτισαν ομάδα για να συμμετάσχουν στον διαγωνισμό Generation Next. Πριν ξεκινήσουν το δικό τους έργο, παρακολούθησαν μια σειρά οκτώ εργαστηρίων για το MIT App Inventor, το Arduino και τεχνητή νοημοσύνη (ChatGPT, Google Teachable Machine).

Η ιδέα τους ξεκίνησε από ένα πραγματικό πρόβλημα: παιδιά με μαθησιακές δυσκολίες και οι οικογένειές τους αντιμετωπίζουν καθημερινές δυσκολίες λόγω έλλειψης εξειδικευμένων εργαλείων υποστήριξης. Η έμπνευσή τους ήταν το ερευνητικό έργο «Waking Up in the Morning», το οποίο χρησιμοποιούσε εικονική και επαυξημένη πραγματικότητα για να διδάξει την πρωινή ρουτίνα σε παιδιά με ειδικές εκπαιδευτικές ανάγκες. Η ομάδα θέλησε να μεταφέρει αυτή τη λογική σε μια εφαρμογή κινητού που αξιοποιεί τεχνητή νοημοσύνη.

Η ιδέα

Το SudoCapp λειτουργεί ως ψηφιακός φίλος που υπενθυμίζει βασικές καθημερινές ρουτίνες (το ξύπνημα, το πλύσιμο δοντιών, το ντύσιμο, το πρωινό) μέσα από φωνητική επικοινωνία. Η εφαρμογή μιλά στο παιδί, ακούει την απάντησή του και προσαρμόζει τα επόμενα μηνύματά της ανάλογα: ενθαρρύνει αν η εργασία δεν έχει ολοκληρωθεί, δίνει θετική ανατροφοδότηση αν έχει ολοκληρωθεί.

Η στήριξη σε φωνητική αλληλεπίδραση αντί για ανάγνωση ή πολύπλοκη πλοήγηση σε οθόνες κάνει την εφαρμογή προσβάσιμη σε παιδιά που δυσκολεύονται με το διάβασμα ή τον ταυτόχρονο χειρισμό πολλών εργασιών.

Σχεδιασμός με καθοδήγηση ειδικού

Η ομάδα δεν σχεδίασε μόνη της τη λογική της εφαρμογής. Συνεργάστηκε στενά με την Ξένια Καϊμάρα, ψυχολόγο στο Κέντρο Φυσικής Ιατρικής και Αποκατάστασης Φλώρινας. Η Ξένια παρουσίασε αρχικά στα παιδιά βασικές έννοιες για την αναπηρία, τις ειδικές εκπαιδευτικές ανάγκες και το φάσμα του αυτισμού, και στη συνέχεια συνσχεδίασε μαζί τους το δέντρο αποφάσεων της εφαρμογής, χρησιμοποιώντας το εργαλείο συνεργατικής σχεδίασης Mural.

Η ανάπτυξη ακολούθησε το μοντέλο ADDIE (Ανάλυση, Σχεδιασμός, Ανάπτυξη, Υλοποίηση, Αξιολόγηση), προσαρμοσμένο σε απλούστερη μορφή κατάλληλη για μαθητική ομάδα.

Η τεχνολογία

Η εφαρμογή αναπτύχθηκε στο MIT App Inventor, αξιοποιώντας:

  • Speech Recognition και Text-to-Speech, για φυσική φωνητική επικοινωνία,
  • ένα σύστημα λεξικών (dictionaries) που συνδέει λέξεις-κλειδιά με ενέργειες και απαντήσεις,
  • μια τοπική βάση δεδομένων TinyDB για να διατηρείται η κατάσταση των εργασιών ακόμα κι αν κλείσει η εφαρμογή,
  • τρία ρολόγια (clocks) που συντονίζουν την ώρα, τον έλεγχο των εργασιών και την αναμονή απάντησης του χρήστη.

Η εφαρμογή αναγνωρίζει αν η απάντηση του παιδιού είναι θετική ή αρνητική μέσα από λίστες λέξεων-κλειδιών και αντιδρά ανάλογα — είτε επιβραβεύοντας, είτε επαναλαμβάνοντας την προτροπή με διαφορετική διατύπωση.

Μια πρωτότυπη λύση: αξιολόγηση με το ChatGPT

Μια μαθητική ομάδα δεν έχει εύκολα πρόσβαση σε πραγματικούς χρήστες, χρόνο ή πόρους για συστηματική δοκιμή μιας εφαρμογής με παιδιά με αναπηρία, γονείς, εκπαιδευτικούς και ειδικούς. Για να ξεπεράσει αυτό το εμπόδιο, η ομάδα δοκίμασε κάτι διαφορετικό: χρησιμοποίησε το ChatGPT για να προσομοιώσει μια πρώτη αξιολόγηση.

Η διαδικασία ήταν συστηματική. Η ομάδα ενημέρωσε αναλυτικά το ChatGPT για τη λειτουργία της εφαρμογής, την τεχνολογία της και τη λογική του δέντρου αποφάσεων. Στη συνέχεια συνσχεδίασε μαζί του εργαλεία αξιολόγησης (οδηγούς συνέντευξης και ερωτηματολόγια) για τέσσερις ομάδες stakeholders: μαθητές με μαθησιακές δυσκολίες, φροντιστές, εκπαιδευτικούς και ψυχολόγους. Το ChatGPT δημιούργησε ρεαλιστικά «προσωπεία» (personas) για κάθε ομάδα και «υποδύθηκε» τον ρόλο τους, δίνοντας ανατροφοδότηση για τη χρηστικότητα, την προσβασιμότητα και την εμπειρία χρήσης της εφαρμογής.

Η προσομοιωμένη αξιολόγηση ανέδειξε συγκεκριμένες προτάσεις βελτίωσης: ανάγκη για πιο αργό ρυθμό εξέλιξης, σαφέστερες φωνητικές προτροπές, δυνατότητα επανάληψης μηνύματος, ρυθμιζόμενη φωνή, και στοιχεία gamification. Παράλληλα, ανέδειξε και έναν βασικό περιορισμό: η εφαρμογή δεν υποστηρίζει ακόμη παιδιά χωρίς λόγο (non-verbal), κάτι που θα χρειαστεί μελλοντική ενσωμάτωση εναλλακτικών συστημάτων επικοινωνίας (AAC).

Η ομάδα και οι μέντορές της ήταν σαφείς ότι αυτή η μέθοδος δεν αντικαθιστά τη δοκιμή με πραγματικούς χρήστες αλλά λειτουργεί ως ένα πρώτο, χαμηλού κόστους βήμα πριν από αυτήν.

Πού βρίσκεται σήμερα το έργο

Το SudoCapp κατέκτησε την 6η θέση ανάμεσα σε σχεδόν 100 συμμετοχές στον διαγωνισμό Generation Next.

Ταυτόχρονα, είναι σημαντικό να είμαστε ειλικρινείς για την τρέχουσα κατάσταση: το SudoCapp παραμένει ένα λειτουργικό demo, όχι ένα ολοκληρωμένο και πλήρως αξιόπιστο σύστημα έτοιμο για καθημερινή χρήση. Η προσομοιωμένη αξιολόγηση με το ChatGPT έδωσε μια πρώτη, χρήσιμη ανατροφοδότηση, αλλά τα επόμενα βήματα (αξιολόγηση από πραγματικούς ειδικούς και γονείς, και δοκιμή με παιδιά) δεν έχουν πραγματοποιηθεί. Η ομάδα των τεσσάρων μαθητών έχει πλέον ολοκληρώσει τη συμμετοχή της στον διαγωνισμό και το έργο βρίσκεται σε αναμονή.

Η μεγαλύτερη αξία του SudoCapp μέχρι σήμερα δεν είναι μόνο η διάκριση, αλλά το ότι τέσσερις έφηβοι κατάφεραν να σχεδιάσουν μια εφαρμογή με πραγματικό κοινωνικό σκοπό, να συνεργαστούν με ειδικό ψυχολόγο, και να δοκιμάσουν μια πρωτότυπη μέθοδο αξιολόγησης που κατέληξε σε επιστημονική δημοσίευση.

Πηγές

Κατά τη διάρκεια του σχεδιασμού και της υλοποίησης, βασιστήκαμε σε ποικίλες πηγές για να εξασφαλίσουμε ότι η εφαρμογή ανταποκρίνεται στις πραγματικές ανάγκες των παιδιών με ειδικές εκπαιδευτικές ανάγκες ή/και αναπηρία. Οι κυριότερες πηγές που χρησιμοποιήσαμε περιλαμβάνουν:

Επιστημονική Καθοδήγηση:

  • Παρουσίαση της Ξένιας Καϊμάρα με τίτλο «Κατανόηση της Νοητικής Αναπηρίας: Είδη Αναπηρίας, Ανάγκες και Καθημερινές Προκλήσεις».

Βιβλιογραφία και Άρθρα:

  • «The Conjunction of Educational Psychology with Educational Technology» (Ξένια Καϊμάρα, Ιόνιο Πανεπιστήμιο).
  • Kaimara, P. (2023). Digital Transformation Stands Alongside Inclusive Education: Lessons Learned from a Project Called “Waking Up in the Morning”. Technology, Knowledge and Learning, 29(3). https://doi.org/10.1007/s10758-023-09667-5
  • Kaimara, P., Deliyannis, I., Oikonomou, A. (2022). Content Design for Inclusive Educational Environments. In: Daniela, L. (eds) Inclusive Digital Education. Educational Communications and Technology: Issues and Innovations, pp 97–121. Springer, Cham. https://doi.org/10.1007/978-3-031-14775-3_6
  • Καϊμάρα, Π. (2022). Σχεδιασμός και ανάπτυξη διαδραστικών συστημάτων εκπαίδευσης-ψυχαγωγίας στη συνεκπαίδευση: τα διαδραστικά εκπαιδευτικά προγράμματα και οι οπτικοακουστικές τέχνες ως γέφυρα ανάμεσα σε παιδιά τυπικής ανάπτυξης και παιδιά με ειδικές εκπαιδευτικές ανάγκες ή /και αναπηρία. Διδακτορική Διατριβή. Τμήμα Τεχνών Ήχου και Εικόνας, Ιόνιο Πανεπιστήμιο. http://dx.doi.org/10.12681/eadd/52582
  • Φύλλο Εφημερίδας της Κυβέρνησης. (2019). Νόμος 4624/2019 (ΦΕΚ 137/Α’/29-08-2019): Αρχή Προστασίας Δεδομένων Προσωπικού Χαρακτήρα, μέτρα εφαρμογής του Κανονισμού (ΕΕ) 2016/679… Προεδρία της Δημοκρατίας, Υπουργείο Οικονομιών, Υπουργείο Δικαιοσύνης – Εθνικό Τυπογραφείο.
  • United Nations Department of Global Communications (2020). Sustainable Development Goals: Guidelines for the use of the SDG logo including the colour wheel, and 17 icons. https://www.un.org/sustainabledevelopment/wp-content/uploads/2019/01/SDG_Guidelines_AUG_2019_Final.pdf
  • World Medical Association. (2013). Declaration of Helsinki – Ethical Principles for Medical Research Involving Human Subjects. JAMA, 310(20), 2191. https://doi.org/10.1001/jama.2013.281053

Στάδια υλοποίησης

Έρευνα και σχεδιασμός

Αρχικά ξεκινήσαμε με τον σχεδιασμό του δέντρου αποφάσεων της εφαρμογής το οποίο αποτυπώσαμε στην εφαρμογή Mural. Μπορείτε να δείτε και να κατεβάσετε το δέντρο αποφάσεων από τον παρακάτω σύνδεσμο.

Σχεδιασμός χαρακτήρα

Για τον σχεδιασμό του χαρακτήρα που θα βρίσκεται στην οθόνη της εφαρμογής μια απλή επιλογή είναι το https://www.bitmoji.com/ Μπορούμε να δημιουργήσουμε έναν χαρακτήρα και μετά μας δίνει διάφορα emojis βασισμένα σε αυτόν. Δεν έχουν κίνηση αλλά υπάρχει μεγάλη ποικιλία και από χαρακτήρες και από stickers. Θα χρειαστούμε 10 εικόνες, μία για κάθε κατάσταση που ελέγχουμε και μία η οποία θα είναι η γενική. Τις αποθηκεύουμε τοπικά σε έναν φάκελο και τους δίνουμε ονόματα που περιγράφουν την κατάσταση τους.

Σχεδιασμός οθόνης στο AppInventor

Η εφαρμογή θα αποτελείται από μια μόνο οθόνη στην οποία το μεγαλύτερο μέρος θα το καταλαμβάνει μια εικόνα όπου θα εμφανίζουμε τα στιγμιότυπα από το avatar που έχουμε φτιάξει. Επίσης θα προσθέσουμε ένα label στο οποίο θα φαίνεται η ώρα και ένα button με το οποίο θα μπορούμε να κάνουμε reset στην κατάσταση των εργασιών που θα ελέγχουμε για να δοκιμάζουμε την εφαρμογή. Θα χρειαστούμε τρία clocks. Το ρολόι TimeClock θα εκτελείται διαρκώς κάθε δευτερόλεπτο και απλά θα αλλάζει την ώρα στο label. Το ρολόι MainClock θα τρέχει κάθε 20 δευτερόλεπτα και θα ελέγχει αν υπάρχει κάποια εργασία που πρέπει να γίνει ώστε να την ξεκινήσει. Το ρολόι ResponseClock θα τρέχει και αυτό κάθε 20 δευτερόλεπτα και θα ελέγχει την ολοκλήρωση μιας εργασίας που έχουμε ξεκινήσει. Τέλος θα χρειαστούμε το SpeechRecognizer και το TextToSpeech καθώς και μια βάση δεδομένων TinyDB για να κρατάμε την κατάσταση των εργασιών.

Όλα τα στοιχεία της οθόνης
Όλες οι εικόνες που θα χρησιμοποιήσουμε
Η εικόνα θα πρέπει να είναι clickable γιατί πατώντας πάνω της θα μπορούμε να μιλάμε στην εφαρμογή
Το MainClock θα έχει Interval 20 δευτερόλεπτα και θα είναι αρχικά ενεργοποιημένο
Το ResponseClock θα έχει και αυτό interval 20 δευτερόλεπτα και θα είναι αρχικά απενεργοποιημένο
Το TimeClock θα τρέχει κάθε 1 δευτερόλεπτο και θα είναι αρχικά ενεργοποιημένο
Στην βάση δεδομένων δίνουμε ένα όνομα στο namespace το οποίο να σχετίζεται με τα δεδομένα που κρατάει. Στην περίπτωση μας θα κρατάει την κατάσταση των εργασιών

Αναγνώριση θετικών και αρνητικών απαντήσεων

Στην ουσία η εφαρμογή θα δίνει προφορικές προτροπές στο παιδί και θα περιμένει την αντίδραση του για να καταλάβει αν έκανε τις απαραίτητες ενέργειες ή όχι. Για να καταλάβουμε αν η απάντηση του παιδιού είναι θετική ή αρνητική θα χρειαστεί να αναγνωρίζουμε τις λέξεις και τις προτάσεις που χρησιμοποιεί στις απαντήσεις του. Θα δημιουργήσουμε λίστες με λέξεις που φανερώνουν θετική ανταπόκριση και αντίστοιχα λίστες με αρνητική ανταπόκριση.

Ενδεικτικές λίστες για την αναγνώριση των απαντήσεων από τον χρήστη. Όσες περισσότερες βάλουμε τόσο καλύτερα! Επίσης προσέξτε πως πρέπει να ελέγχουμε τις πιθανές λέξεις και με μικρά ή κεφαλαία

Θετικές προτροπές

Όταν ο χρήστης θα απαντάει θετικά για την ολοκλήρωση μιας εργασίας τότε θα πρέπει να του δίνουμε ένα θετικό feedback. Θα κάνουμε μια λίστα με πιθανές θετικές αποκρίσεις από την εφαρμογή και κάθε φορά θα διαλέγουμε μία τυχαία.

Όσες περισσότερες φράσεις τόσο καλύτερα

Βασικές μεταβλητές

Θα χρειαστούμε τρεις μεταβλητές. Μία για να κρατάμε ποια είναι η τρέχουσα εργασία που προσπαθούμε να ολοκληρώσουμε, μία στην οποία θα ελέγχουμε αν μας έχει δώσει θετική απάντηση και μία στην οποία θα κρατάμε ολόκληρη την απάντηση του.

Λίστες και λεξικά με τις καθημερινές εργασίες

Για να μπορέσουμε να διαχειριστούμε όλες τις καθημερινές εργασίες που θα υποστηρίζει η εφαρμογή (ξύπνημα, πλύσιμο δοντιών, σχολείο κλπ) θα χρησιμοποιήσουμε λίστες και λεξικά. Η πρώτη λίστα που θα δημιουργήσουμε θα έχει μόνο τις ονομασίες των εργασιών, όπως φαίνεται παρακάτω.

Τα ονόματα των εργασιών

Για να κρατάμε την ώρα κατά την οποία θα πρέπει να έχει εκτελεστεί η εργασία θα χρησιμοποιήσουμε ένα λεξικό το οποίο για κάθε εργασία θα έχει μια λίστα με δύο τιμές. Η πρώτη θα είναι η ώρα και η δεύτερη τα λεπτά.

Προσοχή να έχουμε τα ίδια ονόματα με την βασική λίστα εργασιών!

Για τις προτροπές που θα δίνει η εφαρμογή για κάθε εργασία μόλις φτάσει η ώρα θα χρησιμοποιήσουμε πάλι ένα λεξικό.

Προσοχή πάλι να έχουμε τα ίδια ονόματα με την λίστα των εργασιών

Επίσης θα έχουμε και ένα λεξικό που θα περιλαμβάνει τις προτροπές που θα δίνει η εφαρμογή στην περίπτωση που ο χρήστης δεν έχει απαντήσει θετικά για κάποια εργασία.

Το λεξικό με τις προτροπές στις αρνητικές απαντήσεις του χρήστη

Τέλος θα χρειαστούμε και ένα λεξικό που θα έχει τις εικόνες για την κάθε κατάσταση.

Αρχικοποίηση των εργασιών

Η κατάσταση των εργασιών, αν δηλαδή έχουν ξεκινήσει, αν έχουν ολοκληρωθεί ή αν δεν έχουν ξεκινήσει θα είναι αποθηκευμένη στην βάση δεδομένων TinyDB. Ο λόγος για αυτό είναι επειδή δεν θέλουμε να χαθεί η κατάσταση στην περίπτωση που κλείσει η εφαρμογή και ανοίξει ξανά στην διάρκεια της ημέρας, ή αν ανοίξει και κλείσει το κινητό.

Όταν ξεκινάει η εφαρμογή όλες οι εργασίες είναι ανολοκλήρωτες. Επίσης όταν αλλάξει η ημέρα πάλι οι εργασίες θα πρέπει να ξεκινάν από την αρχή. Θα χρειαστούμε λοιπόν μια διαδικασία η οποία να κάνει αρχικά όλες τις εργασίες “Not started”.

Ονομάζω την διαδικασία Mark_all_tasks_as_not_started

Όταν ξεκινάει η εφαρμογή θα ελέγχω αν η βάση είναι άδεια (σημαίνει ότι ανοίγει για πρώτη φορά η εφαρμογή) και τότε θα αρχικοποιώ την βάση δεδομένων.

Κατά την διάρκεια των δοκιμών θα χρειαστεί να μπορώ να αρχικοποιώ τις εργασίες “χειροκίνητα” και για αυτό καλώ την διαδικασία και όταν πατηθεί το πλήκτρο reset

Ρολόι TimeClock

Το ρολόι TimeClock τρέχει συνέχεια κάθε δευτερόλεπτο και γράφει την ώρα στην οθόνη ενώ ελέγχει μήπως ολοκληρώθηκε η ημέρα και πρέπει να αρχικοποιηθούν πάλι οι εργασίες. Αρχικά θα χρειαστεί να δημιουργήσουμε μια διαδικασία η οποία να γράφει την ώρα στην ετικέτα LabelTime.

Επίσης θα χρειαστούμε και μια συνάρτηση η οποία θα ελέγχει αν είναι κάποια συγκεκριμένη ώρα. Η συνάρτηση αυτή θα δέχεται δύο τιμές (ώρα και λεπτά) και θα ελέγχει αν όντως είναι αυτή η τρέχουσα ώρα. Αν είναι θα επιστρέφει true αλλιώς θα επιστρέφει false.

Το TimeClock θα καλεί την διαδικασία Write_time και αν η ώρα είναι 0:00 δηλαδή μεσάνυχτα τότε θα αρχικοποιεί τις εργασίες για την επόμενη ημέρα.

Ρολόι MainClock και ResponseClock

Το ρολόι MainClock θα κάνει την βασική δουλειά του ελέγχου για την κατάσταση των εργασιών. Αρχικά θα χρειαστεί να φτιάξουμε μια συνάρτηση η οποία θα ελέγχει αν έχει περάσει η ώρα από μια συγκεκριμένη ώρα και λεπτά. Η συνάρτηση θα δέχεται ως παραμέτρους την ώρα και τα λεπτά και θα ελέγχει αν η τρέχουσα ώρα είναι μετά επιστρέφοντας true ή false αντίστοιχα.

Και πάμε τώρα στο MainClock. Εδώ θα πάρουμε με την σειρά όλα τα tasks και θα ελέγχουμε αν η ώρα έχει περάσει και αν αυτό το task δεν έχει ξεκινήσει ακόμα. Αν ισχύει αυτό τότε η εφαρμογή θα λέει την αντίστοιχη προτροπή και θα αποθηκεύει στην βάση δεδομένων την κατάσταση του task ως Started. Επίσης θα αλλάζει την εικόνα και θα σταματάει το MainClock ενώ παράλληλα θα ξεκινάει το ResponseClock.

Το ResponseClock θα ελέγχει τις απαντήσεις του χρήστη και αν είναι θετικές θα ολοκληρώνει το task αλλιώς θα συνεχίζει να δίνει προτροπές.

Επικοινωνία με τον χρήστη

Η επικοινωνία με τον χρήστη γίνει από το SpeechRecognizer

Σχόλια

Δεν υπάρχουν ακόμη σχόλια. Γιατί δεν ξεκινάτε τη συζήτηση;

Αφήστε μια απάντηση