Robot NAO + vision par ordinateur + 4 écoliers + 1,5 heures par semaine = tuteur de robot Anglais

Bonjour à tous! Cet article est consacré aux résultats de la première année du laboratoire de vision par ordinateur du Technoparc pour enfants de Novossibirsk (officiellement le «Centre pour le développement de la créativité des enfants et des jeunes»). Le "Laboratoire de vision par ordinateur" sonne, bien sûr, fort, mais nous avons quand même réussi à faire quelque chose.

image

Evolution des idées


Commençons par ce qui était prévu. Dans les rêves bleus, j'ai vu un robot NAO (vous regardant depuis l'image), lire à haute voix tout texte présenté dans une "zone spéciale" à la manière d'un lecteur de code-barres dans les supermarchés, un lecteur conditionnel universel à haute voix pour ceux qui ne peuvent pas le faire pour une raison quelconque moi-même. Dans une version plus banale, je voulais faire un robot bibliothécaire du NAO qui reconnaît les noms du livre et de son auteur. Ai-je pris en compte la complexité de la tâche et le niveau des étudiants (et mon manque d'expérience) lors de la définition de la tâche initiale? Bien sûr que non. En conséquence, bien sûr, nous avons réalisé une autre tâche, bien que proche, mais elle s'est avérée encore meilleure.

Une petite clarification avec des réponses à des questions évidentes: pourquoi NAO? Il s'est avéré que sur la base de ce centre, il y avait trois robots de ce type avec lesquels personne ne travaillait. Ils ont de bonnes caméras, en plus il y a un synthétiseur vocal intégré (les fabricants parlent même d'outils spéciaux pour se souvenir des visages / objets et reconnaître la parole en direct, mais je ne l'ai pas personnellement utilisé), l'API est compréhensible, elle comprend Python. Pourquoi le texte est-il reconnu? Je ne sais pas, pour une raison quelconque, le texte me semblait le plus proche à ce moment-là (un rat de bibliothèque, quoi prendre de moi) .

J'ai commencé à travailler avec des écoliers fin octobre l'année dernière. Au début, il n'y en avait que deux: un garçon et une fille, respectivement en 10e et 11e année. Un peu plus tard, deux élèves de huitième année nous ont rejoints (je vous rappelle que le mot «intégral» en 8e année n'est pas familier, comme beaucoup d'autres choses, cependant). Et puis il s'est avéré que tout n'est pas si simple. Autrement dit, en général, tout n'est pas facile.

Après que les robots aient cessé de provoquer un désir aigu de les piquer, ils ont été maîtrisés au sein de l'interface graphique (comment se connecter, comment contrôler, comment basculer entre les caméras supérieure et inférieure, comment prendre une photo, comment et où l'enregistrer), nous nous sommes concentrés sur le traitement d'image.

La première tâche consistait à prendre une photo du livre et à essayer de trouver l'auteur et le titre en standard, décrits plusieurs fois surstackoverflow , méthodes (conversion des couleurs, filtres, épaississements, etc.). Avec certains livres, la manœuvre a été un succès, avec certains - non. Par exemple, nous avons réussi avec un livre sur les pirates, malgré sa conception non conventionnelle.

image

image

Mais avec une publication apparemment moins marginale, nous avons subi de nombreux fiasco (l'histoire, en plus de cela, n'a pas sauvé). En général, il est devenu clair que nous ne pouvons plus vivre comme ça, nous n'avons pas le temps pour cela et nous devons changer la tâche.

image

Une solution évidente, mais pas tout à fait la solution, a été proposée par les gars de TUSUR qui étaient venus visiter un événement et qui travaillaient avec le NAO depuis plusieurs années. Ils ont proposé une feuille blanche comme fond blanc uniforme. D'ACCORD.

image

La vie est devenue plus facile, mais pas très.

image

Cependant, après un peu de chamanisme avec les filtres, nous avons quand même réussi à appliquer Tesseract (plus précisément, son wrapper Python Tesserwrap) et l'affaire a bougé: le robot a parlé. D'abord à travers la caméra de mon coquelicot:




Et puis par lui-même. Nous avons même fait des vœux du Nouvel An (ce que j'ai en quelque sorte reflété via PhotoBooth et il n'y a aucune explication rationnelle à cela).



Cependant, les faux positifs sont restés aussi "agréables" que les faux champignons. Et puis un des écoliers m'a posé une question: "Et qu'est-ce qui nous empêche de faire un dictionnaire et de ne dire que ce qu'il a?"

Vraiment. En réfléchissant, j'ai formulé l'idée finale de notre projet avec des écoliers: un robot-tuteur de la langue anglaise. Notre robot ne connaît toujours que l'anglais (en théorie, cela pourrait être corrigé), et un tuteur de robot pratiquant avec un étudiant / étudiant d'anglais a un certain lien avec la réalité. Eh bien, je ne refuserais pas en même temps. Sur cela et arrêté.

Le travail d'équipe et son résultat


Et puis avril est venu. Ou mars. En général, les vacances de mai se profilaient à proximité (les activités étant annulées en leur honneur), les enfants continuaient de s'introduire dans les Jeux olympiques, des messages ont commencé à apparaître à propos de certains festivals de robotique, en général, «l'hiver est proche», mais il n'y a pas de projet.

Tout d'abord, nous avons réglé l'algorithme: des capteurs tactiles de tête sélectionnent le niveau de jeu (correspondant à la complexité du dictionnaire), avec leur aide le jeu peut être arrêté; le robot sélectionne au hasard un mot dans le dictionnaire, le prononce, prend des photos de la caméra supérieure, reconnaît le texte, l'analyse, vérifie avec le dictionnaire, vérifie avec le mot prononcé et hoche la tête, positivement ou négativement, selon le résultat.

J'ai dû donner à chacun une tâche et me réjouir que dans les premiers cours, github ait été ouvert aux étudiants. Deux étaient en train d'exporter des mouvements à partir de l'interface graphique (pour ne pas nous écrire) et de les éditer, quelqu'un écrivait un code de sélection aléatoire, quelqu'un écrivait un dictionnaire, et je devais courir et demander en cas de bouchage. Après un certain temps, toutes les sections séparément étaient prêtes, et il reste à les connecter ensemble. Cette tâche a également été entreprise par l'un des étudiants (dont nous avons traité les jambages plusieurs heures d'affilée par la suite, mais il était toujours bien fait).

Je ne dirai pas comment nous avons "volé" au festival régional de robotique à cause de cette version générale grossière; je ferais mieux de vous dire que nous avons soumis le projet à Sh.U.ST.T.R.I.K.et pour cela, nous avons terminé le projet (4 heures de travail complet - et nos capteurs ont surchauffé, de sorte que la vision et les mouvements sont ressortis sur différentes vidéos). Le projet a cependant été repris par S.U.ST.T.R.I.K.a, comme un ami me l'a dit, qui était présent lors de l'annonce des résultats à Tomsk. Hourra.





Eh bien, aujourd'hui, lors de l'exposition dans le cadre des Journées de la science à Novossibirsk, il a finalement été possible de déboguer la version et d'enregistrer une vidéo de tout ensemble (courte et mauvaise qualité, car le téléphone).



Cependant, certains étudiants de l'exposition (et de ce triste festival) l'ont vraiment apprécié. Certes, malheureusement, beaucoup étaient gênés de ne pas avoir entendu quelque chose et de ne pas comprendre en anglais.

image

Plans futurs


Tout d'abord: accélérez cette version (jusqu'à présent, nous prenons une photo de l'appareil photo une fois par seconde), faites des cartes avec des mots sur le carton (pour que les enfants ne les plient pas dans leurs mains quand ils montrent le robot), peut-être refaire l'implémentation et mettre le texte dans certains puis un cadre contrasté, par exemple rouge; faire pivoter l'image, etc.

Eh bien, si nous poursuivons le projet au cours de la prochaine année universitaire (je le voudrais), je veux créer un dictionnaire russe-anglais, peut-être des dictionnaires d'objets, peut-être autre chose. Pas le fait qu'avec NAO.

Code, sans la dernière version, vous pouvez regarder et gronder ici . La dernière version y apparaîtra également, mais un peu plus tard - nous travaillons sur des bugs.

Littérature et équipement


- Robots NAO
- macbook pro
- Tesserwrap
- OpenCV Python
- stackoverflow

All Articles