Aujourd'hui un petit journal en guise de message de blog personnel. Cette année le Père Noël a apporté un robot programmable du nom d'Edison sous le sapin. J'ai eu un peu de mal a le faire fonctionner sur Ubuntu, donc je me permet ce billet surtout pour dépanner des parents pressés qui rencontreraient les même soucis. Lectrices et lecteurs en quête de lecture à haute valeur technique, attention tu n'apprendras (probablement) rien ici. Commençons donc!
Donc, Edison est un petit robot programmable qui s'adresse aux enfants pour les initier à la programmation. Je pose les choses tout de suite: il n'est (malheureusement) pas libre (contrairement à Thymio) mais il a quand même quelques fonctionnalités intéressantes:
- prix attractif (le tiers du prix de Thymio, soit 50€)
- compatible Lego
- la sélection du programme à lancer (détection d'obstacle, suivi de ligne, …) se fait via des barcodes à scanner sur une feuille de papier parmi les programmes pré-enregistrés en ROM.
- on peut programmer via un navigateur web (nous y reviendrons):
- via des blocs
- via scratch
- ou directement en python pour les plus avancés.
Conséquence du dernier point, là où une bonne majorité des fabricants imposent l'utilisation d'une tablette pour programmer, ici ça fonctionne aussi sur un ordinateur, y compris sur Linux sans avoir à se soucier de drivers. Ça tombe bien, l'ordinateur des enfants tourne sous Ubuntu…
Pour programmer, tout se passe sur le site du fabricant (à ce stade de non libre, j'espère qu'il survivra encore longtemps…) soit https://www.edblocksapp.com/v3/# pour la version en blocs. Mais, et c'est là que le bat blesse, Firefox ne prend malheureusement pas en compte l'API WebUSB https://developer.mozilla.org/en-US/docs/Web/API/WebUSB_API. Le tableau de compatibilité est à ce jour assez restreint, avec en gros 3 navigateurs: Chrome, Edge, Opera: https://developer.mozilla.org/en-US/docs/Web/API/USB#browser_compatibility
Bon, c'est parti pour une installation de Chromium. Une fois l'interface lancée, j'essaie de lancer la détection du robot. Chromium demande l'autorisation d'accéder au périphérique: je clique sur "oui vas y mon grand". Rien ne s'affiche, je reste bloqué à l'état "not connected". Bon. On est sur GNU/Linux ici, on va donc lire la doc: man edison-robot
ou https://meetedison.com/trouble-shooting-edison-v3/, section "Using Edison with Linux".
Also, many Linux distros will restrict access to connected USB devices to only the superuser. This can block browser’s WebUSB access to EdisonV3. If this happens in your linux version, give regular users access to EdisonV3 by creating this udev rule:
Avec un SUBSYSTEMS=="usb", ATTRS{idVendor}=="16d0", ATTRS{idProduct}=="1207", MODE:="0666"
à mettre au bon endroit.
Soit, faisons ainsi!
2ème essai: échec toujours, même après avoir "turn it off and on again" le navigateur.
Bien, on est sur GNU/Linux et on va pas se laisser emm***er un 25 décembre quand même! Allons voir les logs: chrome://device-log
USB device added: path=/dev/bus/usb/001/004 vendor=5840 "Microbric", product=4615 "Edison V3", serial="E3A-BcM1ODAzDQAwMzg2", guid=73e5ab19-b30f-415f-8777-6e0fd0c1a217
Failed to open /dev/bus/usb/001/004: Operation not permitted (1)
Bizarre, le robot est bien détecté mais j'ai pas les permissions malgré la règle udev. Allons voir:
ll /dev/bus/usb/001/004
crw-rw-rw- 1 root root 189, 2 janv. 26 13:14 004
Diable, tout est correct pourtant! On va pas se laisser emm***der un 25 décembre quand même, la bûche attend sur la table (et le gamin aussi) au diable les conventions. J'invoque le CHMOD 777
!!!!!
Je recharge l'interface, et LÀ QUE VOIS-JE??!!!: ah ben non toujours pas…
J'avoue à ce moment de la journée je suis allé manger la bûche, mais quand même sacrément agacé. Je me dis c'est pas possible, pourquoi je n'aurais pas les bonnes permissions, c'est quand même dingue. Ensuite, je ne sais pas si c'est le sucre, le gras ou l'alcool (j'écris ceci pour les besoins de la narration qui doit tenir le lecteur en haleine, en vrai j'ai été super raisonnable cette année je suis fier de moi!), mais je me dis que c'est quand même bien dommage que faire fonctionner un robot soit aussi compliqué que monter une stack docker de A à Z. Hein? Pardon? Docker? Docker le truc avec des "containers"? Container, genre CES PU***NS d'applications SNAP forcées par Ubuntu?
Je remonte fissa au bureau et en googlant "Webusb chrome snap", je vois que ça semble la malédiction de plein d'utilisateurs avec toute sorte de périphériques: clavier, cartes microbit et j'en passe. La solution: ne pas utiliser snap.
Ça sent bon! Malheureusement, Ubuntu ne fourni plus de versions pas snap de chromium. J'ai cherché un bon quart d'heure et n'ai trouvé que des solutions bancales et pas très sûres sur le long terme (l'ordinateur est sur la LTS 22.04). Jusqu'à trouver un navigateur installable avec un bon vieux .deb
qui gère WebUSB, j'ai nommé "Microsoft Edge". J'ai un peu accusé le coup, mais bon quitte à offrir un robot non libre, ma foi je suis plus à ça prêt dans le renoncement… Installons Edge!
15min plus tard (oui, l'ordi tourne sur un fier Intel Core 2 Duo avec 4Go de RAM au bout d'une ligne ADSL de montagne… ), le saint graal apparaît enfin: "Device Connected".
Bon et bien voilà, je remercie chaleureusement tous les protagonistes de cette belle journée: Ubuntu, Google, Mozilla et 1000 merci à Microsoft d'avoir sauvé ce petit robot innocent!
Blague à part, j'avoue que ces derniers temps les applications snap commencent à me gonfler car à titre personnel, c'est le même programme qu'avant en .deb pour des fonctionnalités identiques mais avec des ennuis en plus: plus lent, plus volumineux, des problèmes de permissions. Je comprends bien l'intérêt pour ceux qui packagent les applications mais v'là la session de debug du 25 décembre quoi… Je trouve ça dommage, peut être que le vrai responsable n'est pas Ubuntu mais Google (chrome), peu importe, pour le pékin moyen (qui a un PC sous Windows je le concède) ça devient vite compliqué cette affaire. J'ai remonté le problème à la société qui fabrique Edison en leur suggérant de peut être mentionner le problème dans leur FAQ, le support m'a répondu qu'ils faisaient suivre à l'équipe de dev.
J'espère surtout que ce journal pourra servir à quelqu'un qui rencontre un problème avec son périphérique USB à connecter avec chrome sur Ubuntu.
# pérennité
Posté par Psychofox (Mastodon) . Évalué à 3 (+0/-0). Dernière modification le 26 janvier 2025 à 22:08.
À supprimer, j'ai lu un peu trop en diagonale.
# snap connect|hardware-observe
Posté par Marc Quinton . Évalué à 9 (+7/-0). Dernière modification le 27 janvier 2025 à 07:55.
Les 2 commandes magiques, sans que je n'ai pu les tester sont sans doute :
[^] # Re: snap connect|hardware-observe
Posté par polochon . Évalué à 1 (+0/-0).
Je n'avais pas creusé beaucoup plus loin le jour de Noël et m'étais tenu à installer Edge, mais merci ça fonctionne!
snap connect chromium:hardware-observe
snap connect chromium:raw-usb
Je garde ça précieusement sous le coude pour le prochain périph usb à connecter.
# Premier lien incorrect
Posté par Jona . Évalué à 4 (+2/-0).
"https://meetedison.com," -> "https://meetedison.com"
[^] # Re: Premier lien incorrect
Posté par gUI (Mastodon) . Évalué à 3 (+0/-0).
Corrigé, merci.
En théorie, la théorie et la pratique c'est pareil. En pratique c'est pas vrai.
# Accès aux périphériques USB depuis les navigateurs
Posté par Micromy (site web personnel) . Évalué à 3 (+2/-0).
Cette information me fait tiquer.
Je comprends bien le principe, éviter l'installation d'un logiciel spécifique pour interagir avec un périphérique branché en USB.
D'un côté ça peut être vu comme une chance pour le desktop sur GNU Linux car les constructeurs n'auront plus d'efforts à faire pour être multi-systèmes.
De l'autre, la fonction d'un navigateur Web étant d'être connecté au monde entier, je vois cette fonctionnalité comme la porte ouverte à tous les courants d'air. En particulier quand des petits malins trouveront des failles pour contourner l'autorisation explicite de l'utilisateur par exemple. Bonjour le disque USB cryptolocké en direct depuis le Web…
[^] # Re: Accès aux périphériques USB depuis les navigateurs
Posté par Elfir3 . Évalué à 6 (+4/-0).
ça semble aussi avoir fait tiquer les devs de Firefox: https://github.com/mozilla/standards-positions/issues/100
Il y a par contre un projet d'un tiers qui permet d'ajouter le support de webserial à Firefox pour ceux qui en ont besoin (je ne l'ai pas testé, je ne sais pas si c'est suffisant ou pas pour ce projet ci):
https://github.com/kuba2k2/firefox-webserial
[^] # Re: Accès aux périphériques USB depuis les navigateurs
Posté par polochon . Évalué à 3 (+2/-0).
Il y a même tout un pavé sur la sécurité dans la page wikipedia associée: https://en.wikipedia.org/wiki/WebUSB#Security_considerations
On y lit des choses "rigolotes":
Et les notes de bas de pages sont tout aussi "hilarantes": https://www.xda-developers.com/google-disables-chrome-webusb/ (ou comment contourner une clé usb d'authentification en 2018)
Plus sérieusement, de toute façon c'est dans chrome donc le risque est là de facto vu sa part de marché. Même si je comprend la réticence de firefox, ça restera vu comme une fonctionnalité manquante qui oblige à installer autre chose pour faire marcher le device concerné, donc je préférerais que ça soit disponible.
Là j'ai du expliquer aux enfants que "edge c'est que pour edison, et pour le reste vous utilisez firefox et pas autre chose". C'est un peu dommage je trouve question simplicité pour des enfants.
[^] # Re: Accès aux périphériques USB depuis les navigateurs
Posté par Psychofox (Mastodon) . Évalué à 4 (+1/-0). Dernière modification le 27 janvier 2025 à 11:41.
En même temps tu connaissais une alternative sous libre qui fournit un flatpak et tu as choisis de voter avec ton porte-monnaie pour le choix propriétaire. Tu ne peux t'en prendre qu'à toi-même.
Alors oui je sais on passait de 59 à 150€ mais bon les chinoiseries proprio ce sera toujours moins cher ça on le sait.
[^] # Re: Accès aux périphériques USB depuis les navigateurs
Posté par polochon . Évalué à 2 (+1/-0).
J'ai déjà un Thymio. Il n'est pas exempt de reproches non plus. Et il faut aussi s'avoir s'adapter à chacun de ses enfants, et là en l'état des choses un 2ème Thymio c'était non car ça impliquait d'autres renoncements par ailleurs (pour cet enfant là).
C'était le compromis, le compromis vient avec du non libre, soit.
# Une fois de plus, je m'incruste…
Posté par Claude SIMON (site web personnel) . Évalué à 4 (+2/-0).
…mais il y a, on va dire, (beaucoup) plus polyvalent que les Thymio, Edison et consorts.
Il y a ça, par exemple :
Et ça a quand même plus de gueule, pour un prix équivalent. En tout cas, il a son petit succès quand je l'exhibe, autant auprès des petits que des grands. Je l'ai appelé Felix, (ce n'est pas difficile de deviner pourquoi :->).
Outre les 4 servomoteurs pour les jambes et les pieds, il est équipé de 4 LEDs RGB, d'un buzzer, d'un haut-parleur, et d'une matrice de LEDs, ainsi que d'un capteur ultra-sonique, d'un capteur infrarouge (pour la télécommande) et d'un module Bluetooth.
Ce modèle s'appuie sur un Raspberry Pi Pico. On peut l'acheter sans Pico, avec le Pico de base (sans WiFi), ou avec un Pico W (avec WiFi). Il est fournit en kit, donc il faut le monter. Ça prend du temps, mais c'est bien expliqué (la preuve : j'y suis arrivé). Même monté, on peut facilement retirer le Pico pour l'utiliser dans d'autres projets.
Ayant déjà un Pico W, j'ai acheté la version sans Pico. En théorie, avec un Pico W, le module Bluetooth est inutile, puisque le Pico W est également équipé du Bluetooth. On devrait aussi pouvoir utiliser un Pico 2 (W).
Voilà pour la partie matérielle.
Pour ce qui est de la partie logicielle, il y a une série de programmes C++ sous forme de sketches à utiliser avec l'IDE Arduino. En plus d'un ensemble de programmes ciblant chacun un composant précis, il y en a un dédié au calibrage des servomoteurs, ainsi qu'un autre dit multi-fonction qui permet de piloter le robot via la télécommande ou une application mobile. Je n'ai jamais réussi à me connecter au robot avec l'application mobile, mais, vu la description qui en est faite et ce qu'il m'a été possible de faire avec la télécommande, il y a déjà de quoi s'amuser.
Les logiciels fournis ne m'intéressaient pas plus que ça, car j'ai acheté ce robot pour tester la bibliothèque Python qui me permet de piloter des microcontrôleurs via le WiFi (https://github.com/epeios-q37/ucuq-python).
Comme indiqué, pour pouvoir utiliser cette bibliothèque, il faut installer Micropython sur le microcontrôleur, ainsi que le programme de contrôle, et un fichier de configuration. Ça a été très facile avec le Pico, et j'ai, en effet, pu alors développer, en Python, des applications pour contrôler à distance tous les élément du robot, sans jamais avoir à reconnecter le Pico à mon ordinateur.
J'en ai profité pour écrire une application servant au calibrage des servomoteurs (l'application Tweak), ainsi qu'une autre dédiée aux servomoteurs (Servos).
Cette dernière gère une sorte de langage de pilotage de servomoteurs. Ainsi, pour faire avancer le robot ci-dessus, j'utilise la séquence :
L
correspond à la jambe gauche du robot,l
son pied gauche,r
son pied droit etR
sa jambe droite, les+
et-
permettent de spécifier le sens de rotation suivi de l'angle en °. Lorsqu'il n'y a pas d'angle de spécifié, cela correspond à l'angle 0, et le:
est pour actionner plusieurs servomoteurs en même temps.Voilà une autre séquence permettant de faire « danser » le robot.
Le
%
permet de modifier la vitesse de rotation des servomoteurs.Cette application n'est pas propre à ce robot. Pour l'utiliser avec d'autres robots (comme celui ci-dessous), il suffit de lui fournir un fichier de configuration faisant le lien entre les identifiants (les
L
,l
,r
etR
ci-dessus, mais on peut en choisir d'autres) et les différents servomoteurs.J'aime bien cette application car elle permet de faire faire tous les mouvements que l'on veut à un robot, ce que ne permettent pas les applications fournies avec ces robots, qui ne proposent qu'un ensemble de mouvements préprogrammés.
Pour résumer, il suffit d'installer Micropython sur le Pico, plus le programme de contrôle et le fichier de configuration, et, coté ordinateur, récupérer le dépôt ci-dessus (qui n'a pas de dépendances) pour pouvoir piloter le robot à distance à partir d'un environnement de développement Python tout ce qu'il y a de plus classique.
Et cela fonctionne aussi avec des ESP32, comme pour le robot suivant :
Avec une imprimante 3D ou une découpeuse laser, on peut aller jusqu'à créer son propre robot basé, comme les modèles ci-dessus, sur des servomoteurs connectés à un microcontrôleur.
On peut également piloter ses propres montages, comme celui-ci que j'ai crée à partir de composants bon marché achetés séparément :
Les robots ci-dessus ne sont que quelques exemples parmi la multitude de robots et de kits basés sur un ESP32 ou un Raspberry Pi Pico. Ils peuvent, tous, bénéficier de cette bibliothèque.
Pour en venir (enfin !) au sujet évoqué par ce journal, on peut faciliter la mise en œuvre de ces robots en utilisant Brython, qui permet d'exécuter du code Python dans un navigateur web. Ainsi, une fois le microcontrôleur préparé comme indiqué ci-dessus, on peut le piloter en Python directement avec une application web, sans rien avoir à installer. Et pour se rapprocher encore plus des outils éducatifs proposés par les solutions évoqués dans ce journal, on peut, grâce à Blockly, piloter robots et montages électroniques par assemblage de blocs, à l'instar de Scratch.
Exemples : https://zelbinium.q37.info/fr/ucuq/online.
Les prochaines versions de cette bibliothèque prendront en charge plus de composants, et en particulier tout ce qui est capteur.
Zelbinium, la programmation ludique
[^] # Re: Une fois de plus, je m'incruste…
Posté par polochon . Évalué à 1 (+0/-0). Dernière modification le 27 janvier 2025 à 13:09.
Nan nan c'est pas de l'incruste, c'est toujours sympa de voir ce qui se fait ailleurs. C'est super intéressant, par contre je viens d'aller voir la tête des programmes en blockly, ça me semble quand même assez compliqué à comprendre pour des enfants en primaire.
Dans le même esprit en plus "abordable" (techniquement), j'ai aussi ça à la maison: https://www.ecolerobots.com/
Ça donne des montages de ce genre:
Il faut ET monter le robot avec des briques, ET faire le soft en scratch mais il y a déjà la notion d'adressage des composants genre "va lire la valeur du capteur de lumière à l'adresse A1" donc il faut bien faire la connexion intellectuelle entre le montage électrique et le software.
C'est libre, par contre heureusement que j'ai trouvé une boite d'occasion car le prix pique un peu. C'était "le gros cadeau d'anniversaire" pour mon aîné!
# merci !
Posté par Nico7as . Évalué à 1 (+0/-0).
Merci pour ce retour.
Nous allons avoir des Edisons à l'ecole, et nos PC sont sous Fedora et PrimTux (base Mint) donc a priori pas de soucis de Snap.
Du coup ça marche avec Firefox ou pas?
[^] # Re: merci !
Posté par polochon . Évalué à 1 (+0/-0).
Firefox ne prenant pas en compte l'API WebUSB, la réponse est non.
Envoyer un commentaire
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.