Gestos mágicos como um desafio para um engenheiro eletrônico

Uma varinha mágica é legal, mas é muito mais legal fazer mágica simplesmente com o movimento das suas mãos. Para tornar isso possível, em 2014, adotamos o reconhecimento de gestos e fizemos uma luva em acelerômetros para role-playing games. O projeto acabou sendo complicado e com consequências de longo alcance.



Portanto, o jogo “Existe um ofício” no mundo de Andrzej Sapkowski . A maioria dos personagens são adolescentes com os ingredientes de um bruxo que estuda no Castelo Caer Morhen. Eles têm que estripar os monstros, cozinhar elixires, esgrima de acordo com regras especiais - e praticar gestos mágicos. Alguém morre, alguém se aproxima de um bruxo adulto.


Assina Aard e Yrden em jogos de computador ao redor do mundo de Andrzej Sapkowski.

É lógico colocar na mão esquerda de um jogador (na espada direita) algum dispositivo para ler movimentos dos dedos - por exemplo, uma luva. A solução mais simples seria usar extensômetros nele. Mas em 2013-2014, o extensômetro custou 110 rublos. Esse valor, multiplicado por cinco dedos e 25 dispositivos, deu um alto custo. Infelizmente, a produção em série média nos ensina a contar bem: tivemos que gastar não mais de 2 mil rublos por luva e não podíamos dar ao luxo de reduzir um quarto dessa quantia em sensores.

Seleção de componentes e criação da linguagem de sinais


Nos voltamos para acelerômetros. O acelerômetro custa bastante realista 30 rublos. Nas primeiras experiências, apenas um sensor foi usado, montado em uma espada - e logo ficou claro que trabalhar com movimento dinâmico, como queríamos inicialmente, não era possível. De fato, o acelerômetro forneceu apenas informações sobre a presença - ausência de um balanço.

O trabalho com posições estáticas, em vez de dinâmica, foi escolhido porque, na estática, podemos claramente traçar uma linha entre onde precisamos de uma posição e onde não. Na dinâmica, as acelerações que ocorrem quando o acelerômetro gira podem se parecer com qualquer coisa.

Então, ficou claro que precisamos trabalhar com disposições estáticas. Mas quais? A mão humana tem mais de 20 graus de liberdade. Vale a pena colocar um acelerômetro em cada falange? O sensor custa dinheiro e dedos de todos os comprimentos e flexibilidade diferentes ...

Usando o acelerômetro, na linguagem dos modelos de aeronave, só podemos determinar dois tipos de movimentos - giro (giro para a esquerda e direita) e pitch (para cima e para baixo com a cabeça). E a guinada (vira à esquerda e à direita) não está mais lá, porque a força da gravidade permanece inalterada.


O acelerômetro não vê a diferença entre esses dois gestos. Problema!

Como resultado, decidimos colocar um sensor na parte de trás da palma da mão e um em cada dedo, na região da terceira falange. Isso forneceu algumas possibilidades para inventar gestos.

O primeiro protótipo parecia uma placa Discovery com sensores conectados. O script python que processou os dados (seis sensores de três estágios - um vetor de 18 números correspondia a cada posição da luva) - não mostraremos a ninguém - não é tão perfeito, pois aprendemos muito desde 2014.


O primeiro protótipo - ele percebe perfeitamente os gestos de Vladimir Yashunsky, seu principal desenvolvedor.

Produção em série e uma reviravolta inesperada na trama


O valor de referência foi registrado, comparado com os dados obtidos. Nada significava problemas.

Dois meses antes do jogo, uma série estava pronta - 25 sensores soldados nos fios, colados na construção de luvas, conectados a 25 placas com baterias e LEDs.


Fluxo de trabalho - LEDs de solda.

Cada acelerômetro foi colocado em adesivo hot melt. Então, ele ocupou uma posição ligeiramente diferente. Novas luvas com um pecado ao meio concordaram em perceber os gestos de Vladimir, mas apenas ele.




Protótipo e série.

O que fazer Dois meses antes do jogo, luvas anunciadas, os jogadores aprendem gestos. Teoricamente, era possível fazer seu próprio firmware para cada luva. Praticamente - eu realmente não queria. Eu também não queria expandir a amplitude de movimentos permitida, caso contrário, os gestos começariam a se confundir. Eu tive que organizar a coleta de estatísticas

Convidamos 10 pessoas (com diferentes comprimentos e flexibilidade de dedos) e pedimos a todos em cada sinal que fizessem todos os gestos. O voluntário fez um gesto. Vladimir garantiu que o sistema o reconhecesse corretamente, confirmou que o gesto era válido e registrou o valor em uma pasta. Escusado será dizer que os valores médios não foram muito semelhantes aos que o próprio Vladimir divulgou?
Após a coleta das estatísticas, para cada gesto, foram calculadas a expectativa e a variação matemática.

Luva através dos olhos do usuário


Dez gestos foram inventados. Mas um único gesto que leva a um resultado positivo está cheio de incidentes. É uma pena levantar a mão para cumprimentar uma pessoa e incinerá-la inadvertidamente.

Decidiu-se afastar-se do texto de Sapkowski e incluir três gestos em cada Signo.
O primeiro gesto é o gesto inicial do Signo, é único. O segundo está ganhando força, esse gesto é o mesmo. E tudo termina com um terceiro gesto executivo. Havia três espécies.

Retiro. Homem e Eletrônica


Existe essa regra - em todas as suas falhas, uma pessoa está inclinada a culpar outra pessoa. E se a falha parecer estar relacionada à eletrônica, eles culparão o problema pela eletrônica. Para nós, isso significa o seguinte: se você pode interpretar a ação em favor do jogador, precisa fazê-lo. Mas os falsos positivos impedem a bondade, e eles também não serão perdoados.

Para controlar a execução correta do Sign, eles primeiro queriam escrever um buffer de anel. Mas era impossível permitir um grande número de falsos positivos ou, inversamente, falhas. Portanto, seguimos o outro caminho, através da máquina de estado. Se a luva estiver ligada, o primeiro gesto poderá ser apenas um dos cinco gestos iniciais. São eles que causam uma vibração fraca, e o "conjunto de forças" feito primeiro é ignorado.

A lealdade máxima do usuário foi manifestada da seguinte forma:

Após o primeiro gesto correto, o usuário tem 10 segundos para fazer o segundo gesto correto. No meio, ele pode fazer qualquer bobagem com as mãos.

Isso não conta como um erro:


Olha, o usuário iniciou corretamente o Aard (mão aberta), passou a ganhar força, mas hesitou e fez o gesto errado de descida. Com o buffer de anel, isso interromperia a execução de caracteres, o usuário ficaria chateado. A máquina de estado ignora esse pequeno borrão. O usuário lembra do gesto correto do gatilho e a luva é acionada.

E em algum lugar, a luva ainda poderia fazer um truque sujo.

Eles queriam afastar um camarada com a placa Aard e, inadvertidamente, queimaram uma placa semelhante com Ignie?


Entre as execuções corretas de Aard (mão aberta) e Igni (pitada), existem várias outras opções complicadas - 5 acelerômetros são direcionados para cima e o que está na parte de trás da mão não. Isso é cheio de surpresas para a bruxa.



Foi decidido que a luva deveria se comunicar com o usuário, e ela se comunicará por vibração (costumamos usar vibração, nos permite criar dispositivos sem telas tecnogênicas, sem desmascarar som e luz - mas ainda capazes de se comunicar com os usuários).

Ao executar o gesto inicial, a luva vibra levemente, vibra mais fortemente no segundo gesto. Eles explicaram aos usuários: isso ocorre porque você sente um coágulo de força enchendo a palma da mão. Um sinal executado corretamente foi indicado por um flash da cor correspondente, todos no jogo sabiam como reagir a uma coisa dessas.


Todos os técnicos do jogo - os monstros com os quais as bruxas lutavam - sabiam como reagir à luz da luva. E eu tive que lidar, por exemplo, com uma manticora em jolly jumpers.
Foto de Lily Barladyan


O bruxo deixou a criatura vil do pântano se aproximar, para certamente jogar fora Aard com um sinal.
Foto de Lily Barladyan

A maior parte da mágica com a luva deveria acontecer à noite, mas por precaução, usava os LEDs de saída usuais (mais brilhantes que o RGB). Além disso, não há risco de cores confusas nos LEDs de saída (aqueles que trabalharam com RGB notaram que, sob certos ângulos, fica claro que a luz amarela é uma combinação de vermelho e verde e assim por diante).


A bruxa não entende. Sob a fita reforçada, você pode ver a bateria do celular acima - o vibromotor.
Foto de Ekaterina Grigorova

Digressão lírica


É bom quando o sistema possui um ponto de entrada, após o qual começa a reconhecer algo. Ok Google. E o que fazer quando existem cinco desses pontos? Os usuários regularmente sentiam uma leve vibração, o poder fervia neles.


A bruxa na luva. No peito, o medalhão é uma eletrônica simples, indicação colorida de poções bêbadas.
Foto de Elena Mavrikidi

Então nós viemos para a floresta. Vários problemas surgiram por aí. Primeiro, ninguém usava luvas de couro - era desconfortável nelas. Portanto, nas fotos você pode observar o cyberpunk uniforme, mas o que é muito mais desagradável - os fios morreram por causa disso. Vários vibromotores morreram, eles foram soldados diretamente ao aterro. Talvez o principal problema da luva tenha sido o ano de sua criação. Ainda não tínhamos uma impressora 3D, nada estava embalado, tudo foi mantido em adesivo hot-melt.


Bruxa
Foto de Elena Mavrikidi

No entanto, o jogo foi sem cardumes globais.

O que vem a seguir?


Voltando a Moscou, lavando as luvas na máquina de lavar (com o controlador desligado e a bateria, é claro), recuperando e calculando as perdas, pensamos em atualizar.
Seria possível usar não um cabo IDE (ele não se destina a aparelhos eletrônicos usáveis ​​e foi usado devido à pobreza extrema), mas um telefone "cabo vermelho". E deixe-o passar no cordão com uma luva, para que o problema com a lavagem não se resolva. E conecte o LED IR para combinar a luva com a etiqueta do laser. E ...

E então à venda apareceu myoslolet . Brincamos com ele e percebemos que não desenvolveríamos mais a luva. Inabalável. Ler o sinal dos músculos é muito mais conveniente do que o sinal dos dedos. (Verdadeiro, para uso baseado em função, o myoslet não é adequado devido ao preço). As luvas foram a mais um jogo no Primorye e viajavam constantemente em exposições.

Acreditamos que a experiência foi útil, embora às vezes dolorosa - foi útil ao criar uma pulseira para reconhecer um gesto dinâmico, este é o nosso novo projeto. Ciente de como fomos atormentados com sensores soldados aos fios e distribuídos sobre o tecido, o bracelete custou dois soldados a uma placa confiável comum. A luva trabalhava em estática com uma grande quantidade de dados iniciais (18 números de 6 sensores), a posição da pulseira é descrita por 2 números (usando o algoritmo Mahoney, convertemos 9 valores recebidos dos sensores).

No entanto, há quem esteja interessado em experimentar a luva. Em 2015, a luva foi mostrada aos participantes de uma escola de design e alguns a consideraram um desafio. Daniil Velovaty (então estudante, agora estudante do MIPT) reuniu sua própria versão. Ao contrário de nós, ele implementou a transferência de dados do dispositivo e surpreendeu os visitantes da exposição ao ligar remotamente a chaleira com um sinal. A linguagem de sinais de Daniel também é dele.

Source: https://habr.com/ru/post/pt403757/


All Articles