Robô NAO + visão computacional + 4 crianças em idade escolar + 1,5 horas por semana = tutor de robôs

Olá a todos! Este artigo é dedicado aos resultados do primeiro ano do laboratório de visão computacional do Technopark Infantil de Novosibirsk (oficialmente o Centro para o Desenvolvimento da Criatividade de Crianças e Jovens). O "Laboratório de Visão Computacional" soa, é claro, alto, mas ainda conseguimos fazer alguma coisa.

imagem

Evolução da ideia


Vamos começar com o que foi planejado. Nos sonhos azuis, vi um robô NAO (olhando para você da foto), lendo em voz alta qualquer texto apresentado em uma “zona especial” como um leitor de código de barras em supermercados, uma espécie de leitor condicionalmente universal em voz alta para aqueles que não conseguem fazer isso por algum motivo isso mesmo. Em uma versão mais mundana, eu queria criar um robô bibliotecário do NAO que reconhecesse os nomes do livro e seu autor. Levei em consideração a complexidade da tarefa e o nível de alunos (e minha falta de experiência) quando defini a tarefa inicial? Claro que não. Como resultado, é claro, realizamos outra tarefa, ainda que próxima, no entanto, ficou ainda melhor.

Um pequeno esclarecimento com respostas a perguntas óbvias: por que NAO? Aconteceu que, com base nesse centro, havia três desses robôs com os quais ninguém trabalhava. Eles têm boas câmeras, além de um sintetizador de fala embutido (os fabricantes até falam sobre ferramentas especiais para lembrar rostos / objetos e reconhecer a fala ao vivo, mas eu pessoalmente não a usei), a API é compreensível, entende Python. Por que o texto é reconhecido? Não sei, por algum motivo, o texto me pareceu mais próximo naquele momento (um leitor de livros, o que tirar de mim) .

Comecei a trabalhar com crianças em idade escolar no final de outubro do ano passado. No início, havia apenas dois deles: um menino e uma menina, 10 e 11 anos, respectivamente. Um pouco mais tarde, dois alunos da oitava série se juntaram a nós (lembro que a palavra "integral" na 8ª série não é familiar, como muitas outras coisas). E então descobriu-se que nem tudo é tão simples. Ou seja, em geral, nem tudo é fácil.

Depois que os robôs deixaram de causar um desejo agudo de cutucá-los, eles foram dominados na interface gráfica (como conectar, como controlar, como alternar entre as câmeras superior e inferior, como tirar uma foto, como e onde salvá-la), focamos no processamento de imagens.

A primeira tarefa foi tirar uma foto do livro e tentar encontrar o autor e o título como padrão, descritos várias vezes emstackoverflow , métodos (conversão de cores, filtros, espessamentos, etc etc). Com alguns livros, a manobra foi um sucesso, com alguns - não. Por exemplo, conseguimos um livro sobre hackers, apesar de seu design não convencional.

imagem

imagem

Mas, com uma publicação aparentemente menos marginal, sofremos um grande fiasco (a história, além disso, não salvou). Em geral, ficou claro que não podemos mais viver assim , não temos tempo para isso e precisamos mudar a tarefa.

imagem

Uma solução óbvia, mas não exatamente isso, foi proposta pelos caras do TUSUR que vieram visitar um evento e trabalhavam com o NAO há vários anos. Eles propuseram um lençol branco como fundo branco uniforme. ESTÁ BEM.

imagem

A vida se tornou mais fácil, mas não muito.

imagem

No entanto, após um pouco de xamanismo com filtros, ainda conseguimos aplicar o Tesseract (mais precisamente, seu wrapper Python Tesserwrap) e o assunto mudou: o robô falou. Primeiro através da câmera da minha papoula:




E então por si só. Até fizemos os cumprimentos de Ano Novo do lixo (que de alguma forma eu espelhei no PhotoBooth e não há explicação racional para isso).



No entanto, os falsos positivos permaneceram tão "agradáveis" quanto os cogumelos falsos. E então um dos alunos me fez uma pergunta: "E o que nos impede de fazer um dicionário e expressar apenas o que está nele?"

Realmente. Pensando, formulei a ideia final do nosso projeto com crianças em idade escolar: um robô-tutor da língua inglesa. Nosso robô ainda sabe apenas inglês (em teoria, isso pode ser corrigido), e um tutor de robô que pratica com um aluno / aluno de inglês tem uma certa conexão com a realidade. Bem, eu não recusaria ao mesmo tempo. Sobre isso e parou.

Trabalho em equipe e seu resultado


E então abril chegou. Ou março. Em geral, as férias de maio se aproximavam (com atividades canceladas em sua homenagem), as crianças continuavam invadindo as Olimpíadas, começaram a aparecer mensagens sobre alguns festivais de robótica, em geral, “o inverno está próximo”, mas não há projeto.

Primeiramente, estabelecemos o algoritmo: sensores de cabeça táteis selecionam o nível do jogo (correspondente à complexidade do dicionário), com a ajuda deles, o jogo pode ser interrompido; o robô seleciona aleatoriamente uma palavra do dicionário, pronuncia-a, tira fotos da câmera superior, reconhece o texto, analisa-o, verifica com o dicionário, verifica com a palavra falada e acena com a cabeça, positiva ou negativamente, dependendo do resultado.

Eu tive que dar uma tarefa a todos e me alegrar porque nas primeiras aulas o github foi aberto para os alunos. Dois estavam envolvidos na exportação de movimentos da interface gráfica (para não nos escrevermos) e na edição deles, alguém estava escrevendo um código de seleção aleatória, alguém estava envolvido em um dicionário e eu tive que correr e avisar em casos de obstrução. Depois de algum tempo, todas as seções estavam prontas separadamente e resta conectá-las. Essa tarefa também foi realizada por um dos estudantes (cujas batentes tratamos por várias horas seguidas posteriormente, mas ele ainda estava bem feito).

Não vou contar como "voamos" no festival regional de robótica por causa dessa versão geral grosseira; é melhor dizer que enviamos o projeto para Sh.U.ST.T.R.I.K.e por isso, finalizamos o projeto (4 horas de trabalho completo - e nossos sensores superaqueceram, de modo que a visão e os movimentos saíram novamente em vídeos diferentes). O projeto, no entanto, foi realizado por S.U.ST.T.R.I.K.a, como um amigo me disse, que estava presente no anúncio dos resultados em Tomsk. Viva.





Bem, hoje, na exposição no âmbito dos Dias da Ciência em Novosibirsk, finalmente foi possível depurar a versão e gravar um vídeo de tudo juntos (qualidade curta e ruim, porque o telefone).



No entanto, alguns estudantes da exposição (e aquele triste festival) realmente gostaram. É verdade que, infelizmente, muitos ficaram envergonhados por não terem ouvido algo e não entenderem em inglês.

imagem

Planos futuros


Antes de tudo: acelere esta versão (por enquanto tiramos uma foto da câmera uma vez por segundo), faça cartões com palavras no papelão (para que as crianças não as dobrem nas mãos quando mostram o robô), talvez refaça a implementação e coloque o texto em alguns então uma moldura contrastante, por exemplo, vermelho; rodar a imagem, etc.

Bem, se continuarmos com o projeto no próximo ano acadêmico (eu gostaria), quero criar um dicionário russo-inglês, talvez dicionários de objetos, talvez algo mais. Não é o fato de que com NAO.

Código, sem a versão mais recente, você pode assistir e repreender aqui . A versão mais recente também aparecerá lá, mas um pouco mais tarde - estamos trabalhando em bugs.

Literatura e equipamento


- robôs NAO
- macbook pro
- Tesserwrap
- OpenCV Python
- stackoverflow

All Articles