1 points par GN⁺ 2023-11-13 | 1 commentaires | Partager sur WhatsApp
  • 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

 
GN⁺ 2023-11-13
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

    • J’ai un bon souvenir de mes 16 ans environ. J’avais acheté une souris 3D qu’on tient en main et qu’on secoue pour la contrôler, je l’avais scotchée sur une casquette marquée Marines, puis je m’étais lancé directement dans CS: Source, prêt à massacrer tout le monde
      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
    • J’ai encore un SpaceOrb369 pour ce genre de jeux. Il y a aussi des gens qui fabriquent des adaptateurs pour l’utiliser en USB
      https://en.m.wikipedia.org/wiki/SpaceOrb_360
      https://www.tindie.com/products/vputz/orbotron-9001-version-...
    • Pour « mieux piloter un vaisseau spatial », deux sticks ne suffiraient-ils pas ?
      https://old.reddit.com/r/EliteDangerous/comments/16xi20a/dua...
      https://youtu.be/T2-IHgNYaKA
    • Dans la série de SF The Expanse, le Rocinante est en partie piloté avec une 3DConnexion SpaceMouse, couramment utilisée en CAO et en modélisation 3D
    • Ce genre de joystick à 6 degrés de liberté existe depuis des décennies : https://3dconnexion.com/nl/spacemouse/
  • 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

    • Je serais curieux de savoir pourquoi tu penses ça
      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
    • J’ai fait défiler les photos, et dès que j’ai vu le bureau, je me suis dit : « Ah, une chambre de cité U »
    • Notes universitaires != qualité :-) Mais je suis d’accord
  • 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

    • Il y a quelques années, quand Intel et ses partenaires mettaient des modules RealSense dans des ordinateurs portables, je pensais que cela allait arriver bientôt, mais aujourd’hui les acteurs concernés semblent s’être recentrés sur les marchés entreprise et industriel
    • Je suis malheureusement pessimiste sur ce genre de choses. Le panneau tactile du Mac a montré qu’il est difficile de briser les habitudes clavier+souris, même avec une entrée contextuelle, réactive et entièrement intégrée
      Aujourd’hui encore, certaines personnes hésitent face au simple objet qu’est une nouvelle souris
    • TrackIR permet le suivi de la tête avec un réflecteur fixé dessus. Mais même sans rien porter sur la tête, le Tobii eye tracker peut suivre la tête et les yeux de façon entièrement passive
      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
    • J’utilise une webcam Anker PowerConf 300, et sur Mac ou Windows, le logiciel AnkerWork permet de monter jusqu’à 115 degrés
  • 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.

    • Je savais que ça aurait un impact. La plupart de la littérature sur des projets similaires utilise des caméras à obturateur global pour cette raison. En revanche, je n’étais pas sûr de l’ampleur du problè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.

  • 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 ?

    • La détection des taps peut tout à fait se faire avec un gyroscope/accéléromètre, mais pour une vraie sensibilité à la pression, c’est-à-dire gérer les variations de pression pendant un trait, il n’y a pas grand-chose d’autre qu’un 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.