HN présente : D-POINT - un stylet numérique open source compatible 6DoF
(github.com/Jcparkyn)- D-POINT est un stylet numérique open source qui utilise le suivi par caméra et les mesures inertielles pour offrir une entrée 6DoF, une faible latence, la détection de pression et une précision inférieure au millimètre
- Il peut être utilisé sur n’importe quelle surface plane et fonctionne avec une webcam grand public
- Le corps est composé de deux pièces imprimées en 3D et intègre un capteur de force, une batterie Li-ion rechargeable en USB-C, ainsi qu’une carte de développement basée sur Arduino pour la logique et le Bluetooth
- Flux d’estimation de pose visuelle : les 8 marqueurs ArUco imprimés fixés à l’arrière du stylet sont détectés avec OpenCV, puis la pose par rapport à la caméra ainsi que la position et l’orientation de la pointe par rapport à la surface de dessin sont calculées via correction du rolling shutter, estimation de pose PnP et transformation de coordonnées
- La fusion inertielle combine les données de l’accéléromètre et du gyroscope avec les estimations VPE et un filtre de Kalman étendu, puis corrige les estimations en temps réel avec l’algorithme de Rauch-Tung-Striebel
- Pour gérer la latence temporelle des images caméra, le système utilise un algorithme de mise à jour de mesure à temps négatif, et l’implémentation de l’EKF s’appuie sur NumPy et Numba
- Les mesures inertielles réduisent fortement la latence par rapport à une implémentation utilisant uniquement la caméra, et améliorent la précision ainsi que le taux de rapport lors des mouvements rapides
- Le projet a été réalisé dans le cadre d’un mémoire de licence en génie électrique ; le code et les fichiers de conception sont publics, mais il ne s’agit pas d’un projet DIY « plug and play »
1 commentaires
Avis sur Hacker News
Très chouette. Quelqu’un a vraiment construit et fait fonctionner quelque chose que je ne faisais qu’imaginer
Quand je jouais à Elite: Dangerous, j’utilisais un HOTAS et des pédales, et je me demandais sans cesse s’il n’y avait pas une meilleure façon de piloter un vaisseau spatial. Un vaisseau doit gérer non seulement le tangage, le lacet et le roulis, mais aussi la poussée dans 6 directions
Je voulais un dispositif où l’on déplace une maquette de vaisseau tenue en main, et où le vaisseau dans Elite bouge exactement de la même manière ; le projet lié semble pouvoir faire précisément ça. La poussée pourrait sans doute être contrôlée de façon similaire avec l’autre main
Ces modes d’entrée inconnus et nouveaux sont vraiment étonnants, et quand on dispose de telles capacités, l’imagination s’élargit énormément
En réalité, mon niveau était probablement à peu près le même, mais ça aurait été encore plus drôle si je m’étais fait complètement démonter
La théorie était que la tête est bien plus précise que la main, donc qu’en combinant les deux on améliorerait la visée. On pourrait croire qu’il faut regarder à gauche tout en voyant l’écran du coin de l’œil, mais en pratique un système à deux souris se tient plutôt bien. J’ai voulu retenter l’expérience avec une version moderne, mais on finit par avoir l’air d’un énorme geek avec une tige bizarre fixée sur la tête. Cela dit, j’aime bien ce style
Ton idée est vraiment excellente aussi, ce serait bien de la réaliser
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
Dire que c’est un projet de mémoire de fin de licence ! S’il n’obtient pas la meilleure note avec ça, il n’y a vraiment pas de justice en ce monde
Quand j’étais en licence, l’accent était mis sur le travail scientifique. La nouveauté ou l’applicabilité ne comptaient donc pas vraiment dans la note ; ce qui comptait, c’était la façon dont le contenu était présenté par écrit de manière scientifique. Comme je n’ai pas vu le texte de ce projet, il m’est difficile d’en juger du point de vue de la notation
Très chouette. En voyant qu’il utilise une webcam, je me demande si les webcams courantes actuelles, avec un unique champ de vision d’environ 78 degrés, finiront un jour par être remplacées par des webcams stéréo fisheye
Avec ce type de webcam, on pourrait avoir de nouvelles expériences utilisateur comme des gestes avec suivi du regard, des interactions avec des périphériques comme ce stylet ou un volant pour jeu de course, et des visioconférences 3D à 180 degrés bien plus flexibles, avec présence en VR
J’ai l’impression que l’époque où tout l’espace 3D devant l’écran de l’ordinateur devient un mode d’entrée approche, et l’utilisation de la webcam dans l’article original ressemble à un petit pas dans cette direction
Aujourd’hui encore, certaines personnes hésitent face au simple objet qu’est une nouvelle souris
Ajouter à cela le contrôle par gestes de la main/des doigts, ainsi que des périphériques comme un stylet ou une souris, semble être l’étape suivante évidente, mais ni eux ni personne d’autre ne semblent le faire
Bien. J’aime particulièrement la partie sur la fusion
Voici les réflexions que cela m’a inspirées en explorant « clavier de portable… posture de la main, stylet 3D, tactile ». Ajouter des boutons en ferait une souris 3D, mais la couverture par la caméra pourrait devenir problématique. Le corps est en grande partie vide, et la batterie pourrait aussi être rendue plus fine. Même en tenant un stylet fin comme une baguette ou une brosse à dents, je pouvais encore taper dans une certaine mesure. C’était aussi possible avec le marqueur et l’embout étrangement gros
Le gros embout découpé dans une boule de Noël de ping-pong glissait assez bien sur le clavier ThinkPad, et laissait aussi de la place pour un capteur de force moins minuscule et un marqueur d’embout supplémentaire. Un fin câble ruban en silicone à fils toronnés peut être aussi souple qu’une ficelle ; au début, j’avais donc utilisé le stylet attaché à un Arduino
Je me demande comment un capteur inertiel interpréterait un clicker métallique concave utilisé comme un ou trois boutons
La correction du rolling shutter est assez géniale, et je ne pense pas que j’y aurais pensé. Je me demande s’il savait dès le départ que ce serait un problème, ou s’il ne s’en est rendu compte qu’après avoir construit le reste du système.
En général, c’était suffisamment faible pour être à peine perceptible, mais dans certaines situations c’était vraiment visible. Par exemple quand on faisait tourner le stylet en gardant la pointe au même endroit.
Ce qui m’a le plus surpris, c’est à quel point ma solution fonctionnait bien alors qu’elle n’était qu’une approximation assez grossière de la réalité. Il existe des méthodes de traitement beaucoup plus sophistiquées, mais au final elles n’ont pas été nécessaires.
Une chose que j’aurais voulu essayer, c’est le PnP tenant compte du rolling shutter[1]. En théorie, on peut exploiter la distorsion du rolling shutter pour estimer simultanément la pose et la vitesse à partir d’une seule image.
[1] https://www-sop.inria.fr/members/Philippe.Martinet/publis/20...
J’aime tout ce qui touche aux 6 degrés de liberté ; le matériel et l’estimation de pose par vision par ordinateur sont réussis, mais c’est presque la surface logicielle sur laquelle on peut dessiner et qu’on peut aussi faire pivoter qui m’impressionne le plus.
C’est intéressant, car on pourrait l’utiliser pour n’importe quel contrôle physique d’interface utilisateur, comme un curseur au doigt, produisant le même effet. C’est un bon projet qui montre une vraie capacité à résoudre les problèmes, et il me semble très bien exécuté.
Pour référence, le premier contrôleur à 6 degrés de liberté que j’ai utilisé, si l’on exclut un contrôleur WiiMote[1] modifié en récepteur Bluetooth à LED IR, était le Logitech MX Air[2], qui était en avance sur son temps.
[1] https://web.cs.ucdavis.edu/~okreylos/ResDev/Wiimote/MainPage...
[2] https://www.cnet.com/reviews/logitech-mx-air-review/
Très beau projet, avec une documentation utile, et un bon exemple concret d’utilisation du filtre de Kalman.
Vraiment excellent, et exactement ce dont je rêvais.
Depuis que mon entreprise est passée au télétravail complet, les sessions au tableau blanc me manquent constamment. La meilleure solution que j’aie trouvée consistait à ouvrir une appli web de tableau blanc partagé à la fois sur un vieil iPad et dans un navigateur de bureau, puis à partager l’écran depuis le poste de bureau et à dessiner sur l’iPad avec un stylet bon marché.
Ça marche plutôt bien, mais mon iPad est trop vieux et lent. Le remplacer coûte cher. Une webcam classique et un stylet relativement low-tech seraient bien mieux, et pourraient même supprimer complètement le besoin d’un appareil externe.
[1] https://wacomstore.ca/product/one-by-wacom-small/
Excellent. J’aime le fait de ne pas être enfermé dans une marque spécifique, comme lorsqu’on achète un clavier mécanique.
Très cool.
Ça pourrait aussi être utile en robotique ou en VR. Ne pourrait-on pas aussi faire du suivi de la main avec une seule caméra ?
Question : peut-on aussi suivre la pression avec un gyroscope + accéléromètre ? Au moins pour détecter un « tap » ?
Autre question : combien ça coûte, en particulier le capteur de pression ?
En théorie, ce serait possible avec une estimation de pose suffisamment précise et une pointe de stylet élastique, mais avec le niveau de précision que j’ai obtenu, ce n’était pas réaliste.
J’ai acheté le capteur de pression pour environ 20 dollars australiens, mais aux États-Unis on peut l’obtenir beaucoup moins cher, autour de 5 dollars (https://www.arrow.com/en/products/hsfpar003a/alps-electric). Cela dit, c’est un composant assez spécialisé et il n’est pas vendu partout. Le PCB personnalisé ajoutait 10 dollars australiens, et l’Arduino coûtait environ 20 dollars. La liste complète des composants est sur https://github.com/Jcparkyn/dpoint/blob/main/setup-guide.md.