HN Lançamento: D-POINT — uma stylus digital open source com suporte a 6 graus de liberdade
(github.com/Jcparkyn)- D-POINT é uma stylus digital open source que usa rastreamento por câmera e medições inerciais para oferecer entrada 6DoF, baixa latência, detecção de pressão e precisão submilimétrica
- Pode ser usada em qualquer superfície plana e funciona em conjunto com uma webcam de consumo
- O corpo é composto por duas peças impressas em 3D, com hardware que integra um sensor de força, uma bateria Li-ion recarregável por USB-C e uma placa de desenvolvimento baseada em Arduino para lógica e Bluetooth
- Fluxo de estimativa visual de pose que detecta com OpenCV os 8 marcadores ArUco impressos fixados na parte traseira da stylus e, após correção de rolling shutter, estimativa de pose PnP e transformação de coordenadas, calcula a pose em relação à câmera e a posição/direção da ponta da caneta em relação à superfície de desenho
- A fusão inercial combina dados do acelerômetro e do giroscópio com estimativas VPE por meio de um Extended Kalman Filter, com uma estrutura que corrige as estimativas em tempo real usando o algoritmo Rauch-Tung-Striebel
- Para lidar com o atraso temporal dos frames da câmera, usa um algoritmo de atualização de medição com tempo negativo; a implementação do EKF usa NumPy e Numba
- As medições inerciais fazem parte da configuração para reduzir significativamente a latência em relação a uma implementação que usa apenas câmera, melhorando a precisão e a taxa de reporte em movimentos rápidos
- Foi criado como parte de um projeto de TCC de graduação em engenharia elétrica; o código e os arquivos de design estão públicos, mas não foi concebido como um projeto DIY “plug and play”
1 comentários
Comentários no Hacker News
Muito legal. Pegaram algo que eu só imaginava e realmente implementaram de um jeito que funciona
Quando eu jogava Elite: Dangerous, usava HOTAS e pedais, mas sempre ficava pensando se não existiria uma forma melhor de controlar a nave. Afinal, uma nave espacial precisa lidar não só com pitch, yaw e roll, mas também com empuxo em 6 direções
Eu queria um dispositivo em que, ao mover na mão um modelo de nave espacial, a nave dentro de Elite se movesse exatamente da mesma forma, e o projeto linkado parece fazer exatamente isso. O empuxo provavelmente poderia ser controlado de forma parecida com a outra mão
Esses tipos de métodos de entrada estranhos e novos são realmente incríveis, e quando esse tipo de capacidade surge, a imaginação se expande bastante
Acho que meu desempenho real foi mais ou menos o mesmo, mas teria sido ainda mais engraçado se eu tivesse sido completamente humilhado
A teoria era que a cabeça é muito mais precisa que a mão, então combinar as duas melhoraria a mira. Parece que seria preciso olhar para a esquerda e enxergar a tela com o canto do olho, mas na prática um sistema de dois mouses até funciona bem. Eu queria tentar de novo de uma forma moderna, mas aí eu pareceria um super esquisitão com uma haste estranha presa na cabeça. Ainda assim, eu gosto desse estilo
Sua ideia também é muito boa, então seria legal ver isso sendo feito
https://en.m.wikipedia.org/wiki/SpaceOrb_360
https://www.tindie.com/products/vputz/orbotron-9001-version-...
https://old.reddit.com/r/EliteDangerous/comments/16xi20a/dua...
https://youtu.be/T2-IHgNYaKA
Um projeto de TCC de graduação! Se isso não tirar nota máxima, então não existe justiça no mundo
Quando eu fiz a graduação, o foco era em trabalho científico. Então novidade ou aplicabilidade não eram importantes para a nota; o que importava era o quão cientificamente o conteúdo era comunicado por escrito. Como eu não vi o texto deste projeto, é difícil julgar do ponto de vista da avaliação
Muito legal. Como usaram uma webcam, isso me fez pensar se no futuro as webcams comuns de hoje, com campo de visão único de cerca de 78 graus, algum dia serão substituídas por webcams estéreo olho de peixe
Com uma webcam assim, poderiam surgir experiências de usuário novas, como gestos combinados com rastreamento ocular, interação com periféricos como este stylus ou um volante para jogos de corrida, e até chamadas em webcam 3D de 180 graus bem mais flexíveis, incluindo presença em VR
Dá a impressão de que estamos chegando a uma era em que todo o espaço 3D em frente à tela do computador pode ser usado como método de entrada, e o uso de webcam no post original parece um pequeno passo nessa direção
Ainda hoje tem gente que hesita diante da simples ideia de um mouse novo
Adicionar a isso controle por gestos de mão/dedos e periféricos como stylus ou mouse parece claramente o próximo passo, mas nem eles nem ninguém mais parece estar fazendo isso
Gostei. Especialmente da parte de fusão
São pensamentos que tive enquanto explorava “teclado de notebook... postura da mão, stylus 3D, toque”. Se adicionar botões, vira um mouse 3D, mas a cobertura da câmera pode se tornar um problema. O corpo do dispositivo é quase todo vazio, e a bateria também pode ficar mais fina. Eu conseguia até digitar razoavelmente segurando um stylus fino tipo hashi/escova de dentes. Também dava com marcadores e pontas estranhamente grandes
Uma ponta grande recortada de um enfeite de Natal de bola de pingue-pongue deslizava bem suavemente sobre o teclado do ThinkPad, além de dar espaço para um sensor de força menos minúsculo e marcadores extras na ponta. Um cabo flat de silicone de fios trançados bem finos pode ser flexível como um cordão, então no começo eu usava o stylus preso a um Arduino
Fico me perguntando como sensores inerciais interpretariam algo como um clicker metálico côncavo usado como um ou três botões
A correção de rolling shutter ficou bem legal, e não parece o tipo de coisa em que eu teria pensado. Fico curioso se você já sabia desde o início que isso seria um problema, ou se só percebeu depois de montar o resto do sistema
Na maior parte do tempo, era pequeno o bastante para quase não ser perceptível, mas em certas situações ficava bem evidente. Por exemplo, quando a ponta da caneta ficava parada em um ponto e a caneta era girada
O que mais me surpreendeu foi o quanto a minha solução funcionou bem, mesmo sendo uma aproximação bem grosseira da realidade. Existem técnicas de processamento muito mais sofisticadas, mas no fim não foram necessárias
Uma coisa que eu queria ter tentado era PnP com reconhecimento de rolling shutter[1]. Em teoria, dá para usar a distorção de rolling shutter para estimar ao mesmo tempo a pose e a velocidade a partir de uma única imagem
[1] https://www-sop.inria.fr/members/Philippe.Martinet/publis/20...
Eu gosto de tudo que envolve 6 graus de liberdade, e embora o hardware e a estimativa de pose por visão computacional estejam muito bons, o mais impressionante para mim é a superfície de software em que dá para desenhar e também girar
É interessante porque isso também pode ser usado em qualquer controle físico de interface do usuário, como um slider operado com o dedo, que produza o mesmo efeito. É um ótimo projeto que mostra capacidade de resolver problemas, e parece que foi muito bem executado
Só como referência, o primeiro controlador de 6 graus de liberdade que usei, fora um controle WiiMote[1] modificado com receptor Bluetooth de LED infravermelho, foi o visionário Logitech MX Air[2]
[1] https://web.cs.ucdavis.edu/~okreylos/ResDev/Wiimote/MainPage...
[2] https://www.cnet.com/reviews/logitech-mx-air-review/
Projeto muito legal, a documentação ajuda bastante, e é um bom exemplo do uso de filtro de Kalman no mundo real
Muito legal, é exatamente o tipo de coisa que eu sonhava ter
Desde que a empresa passou para trabalho totalmente remoto, continuo sentindo falta das sessões de quadro branco. A melhor solução que consegui imaginar foi abrir um app web de quadro branco compartilhado em um iPad antigo e também no navegador do desktop, compartilhar a tela pelo desktop e desenhar no iPad com uma stylus barata
Funciona até que bem, mas meu iPad é velho demais e ficou lento. Também pesa no bolso trocar. Se isso funcionar com uma webcam comum e uma stylus de tecnologia relativamente simples, é bem melhor, e ainda pode eliminar totalmente a necessidade de dispositivos externos
[1] https://wacomstore.ca/product/one-by-wacom-small/
Excelente. Gosto do fato de não prender você a uma marca específica, como acontece ao comprar um teclado mecânico
Muito legal
Isso também pode ser útil em robótica ou VR. Será que não daria para fazer rastreamento de mãos com uma única câmera também?
Pergunta: será que dá para rastrear pressão com giroscópio + acelerômetro? Pelo menos algo como um “tap”?
Outra pergunta: quanto custa, especialmente o sensor de pressão?
Em teoria, daria para fazer isso com estimativa de pose suficientemente precisa e uma ponta de caneta elástica, mas com o nível de precisão que consegui, isso não era realista
Comprei o sensor de pressão por cerca de 20 dólares australianos, mas nos EUA dá para encontrar bem mais barato, por volta de 5 dólares (https://www.arrow.com/en/products/hsfpar003a/alps-electric). Só que é uma peça bem específica, então não é vendida em muitos lugares. A PCB personalizada custou mais 10 dólares australianos, e o Arduino cerca de 20 dólares. A lista completa de componentes está em https://github.com/Jcparkyn/dpoint/blob/main/setup-guide.md