Aller au contenu


Sandro

Inscrit(e) (le) 30 déc. 2013
Déconnecté Dernière activité oct. 24 2025 08:22
*****

Messages que j'ai postés

Dans le sujet : Naissance de mon Sumo

03 octobre 2025 - 06:21

Pour la détection des bords, je vois 2 approches :
1) détecter le bord lui même : il faut le détecter vite, et d'assez loin pour avoir le temps de freiner
2) savoir où tu es sur le Dojo : pour ça, il te faut une information rapide mais qui peut dériver (odométrie des roues ou IMU), et une méthode pour te recaler de temps à autres (caméra, détection de bord, ...).

La première méthode est beaucoup plus simple, mais risque d'être compliquée sauf proche du bord.

La seconde méthode est plus compliquée, mais tu sais toujours où tu es (même quand tu ne vois pas le bord), et tu peux établir une stratégie en fonction de ta vitesse et position.


Si tu as le temps et la motivation, je penses que la solution "gagnante" pour une stratégie optimale serait odométrie et/ou IMU + une caméra 360° (ou une caméra normale placée sous un miroir conique), qui te permet en permanence de détecter le cercle (donc ta position) et la position de ton adversaire (comme ça, tu peux l'esquiver). Je penses que l'idéal serait une caméra basse résolution, haute fréquence (90fps?) en global shuter (ie tous les pixels capturés en même temps), avec une bonne sensibilité. Et ensuite, il faut de quoi traiter les images (IA, ou algos classiques, à toi de voir) : il me semble qu'il y a de plus en plus de caméras avec des capacités d'IA (à voir si ça fait l'affaire), sinon un CPU puissant, idéalement avec un GPU (la famille des Jetson de Nvidia est pas mal, mais pas donné et peut-être un peu gros). Ou l'idéal serait un FPGA, mais c'est encore plus compliqué à mettre en euvre

Après, si tu pars là dessus, tu es occupé pendant un bon moment.


Dans le sujet : mini Dumper radiocommandé/autonome

26 septembre 2025 - 07:48

Pour ton collecteur tournant maison : beau travail! Je te conseillerais juste d'ajouter un cache (en impression 3D?) pour éviter les saletés sur le collecteur. Je penses qu'une fois que tu as de la boue dessus, ça ne marchera pas longtemps.


Pour la commande des moteurs, je ne penses pas que le driver 13A soit un bon choix :
- les moteurs indiquent max 13.4A (>13A) max continu : on dépasse le max du driver. Et il n'est même pas clair si les 13.4A de tes moteurs sont le max qu'ils peuvent consommer, ou le max qu'ils peuvent consommer sans crammer
- je ne sais pas pour tes moteurs en particulier, mais dans mon ancienne boite, on utilisait des moteurs pour fauteuil roulant assez similaires, mais avec un frein "de parking" intégré (si le frein n'est pas alimenté, ça bloque l'axe). A 2 reprises, on a eut un problème sur l'alimentation du frein alors que le moteur tournait : à chaque fois, ça nous a cramé le bobinage du moteur. Donc je recommande vivement un driver qui permet de régler le courant max à une valeur au delà de la consommation normale, mais en dessous du courant auquel le moteur risque de cramer. Un disjoncteur ou fusible est possible aussi, mais c'est difficile à dimensionner avec assez de précision, et il faut re-armer/remplacer manuellement. Tu peux aussi utiliser un pont en H sans limite de courant mais avec mesure de courant, et gérer ça en logiciel. Ou même mettre une mesure de courant externe.

Dans mon ancienne boite, on utilisait des controleurs "RoboClaw" ( https://www.basicmic...tor-controller2 ), qui marchaient très bien, mais sont probablement overkill pour toi (leur gros avantage était qu'ils géraient directement les encodeurs et le PID, mais si tu n'utilises pas d'encodeurs, toute cette partie ne te sert à rien). En tout cas, je te conseilles vivement de choisir un système qui te permette de limiter le courant max à une valeur qui ne détruira pas tes moteurs


Dans le sujet : Au bistrot du coin ...

12 septembre 2025 - 08:46

Je dirais que chatGPT, comme la plupart des autres IA, c'est utile dans 2 cas :
1) tu veux facilement avoir quelque chose qui marche bien en moyenne (et souvent avec peu d'effort pour l'obtenir), mais ce n'est pas grave si parfois c'est complètement à coté
2) tu as un problème "compliqué" à résoudre, mais dont la réponse est facile à vérifier : tu demandes à l'IA de le résoudre, et tu vérifie avec une méthode classique que le résultat est correct.


1)
Le premier cas est typiquement les recommandations de contenu (que ce soit de produits sur Amazon, de la prochaine vidéo sur youtube, ...) : une IA (ie des statistiques un peu poussées) permettent de prédire bien mieux ce qui t'intéresse que si quelqu'un essayait de programmer ça à la main (dans quel cas, il ne pourrait pas traiter autant de cas différents, et devrait se contenter de quelques critères). Mais si une fois sur 10 ou sur 100 l'IA se trempe totalement, et te propose une pub pour des couches alors que tu n'as pas d'enfants, ou une vidéo en chinois alors que tu n'en comprends pas un mot, bah c'est pas un problème.

Pour chat GPT, ce premier cas est (je trouve) relativement peu fréquent, en tout cas, pour l'usage que j'en fais (je ne m'en sert pas pour lui demander de me recommander des films/musiques/recettes,... sinon ça rentrerait dans cette catégorie). Dans cette catégorie, je m'en sert principalement comme "dictionnaire avec contexte", quand je tombe sur un terme (ou un sigle) que je ne connais pas, et que je veux une rapide explication, sans que cette explication ait une grande importance pour moi : j'obtiens rapidement une explication adaptée à mon contexte (et en général chat GPT est assez bon sur ce genre de questions), et si quelques détails sont faux, c'est pas bien grave). En revanche, si comprendre parfaitement le terme est important pour moi, alors je privilégie des sites traditionnels (ou je vérifie les données de chat GPT sur des sites traditionnels)

2) Le second cas est pour moi le plus intéressant pour l'usage de chat GPT : le problème est difficile (ou laborieux) à résoudre pour moi, mais la réponse est facilement vérifiable par des moyens classiques : dans ce cas, il n'y a aucun risque à utiliser une IA (à part perdre un tout petit peu de temps, mais en moyenne on est largement gagnant).
Quelques cas classiques :
- résoudre une équation : une fois que j'ai le résultat, j'injecte la valeur numérique, et c'est facile de voir si c'était correct
- pour de la programmation, demander comment faire quelque chose (de relativement simple) dans un langage de programmation quand on ne connaît pas la/les fonctions adaptées : quand on n'a pas le bon mot clef, c'est difficile de faire une bonne recherche classique, mais une fois que chatgpt nous sort une ou 2 fonctions, c'est simple de vérifier la doc de cette fonction pour vérifier qu'elle fait exactement ce qu'on veut
- suggérer des idées de méthode, de circuit électronique, ... : une fois la suggestion faite, il est très facile si ça marche ou pas. NB : rien ne garanti que ce soit la/les meilleure méthode, mais si elle est satisfaisante, alors pas la peine d'aller chercher plus loin
- résoudre des problèmes avec beaucoup de contraintes qu'on formule facilement en langage naturel et où la vérification est facile. Par exemple, j'ai une liste de résistances en stock, et je veux obtenir un diviseur de tension avec un ratio précis, et une puissance consommée ne dépassant pas un certain seuil. Tester toutes les combinaisons à la main me prendrait plusieurs heures. Tester toutes les combinaisons avec un tableur me prendrait plusieurs dizaines de minutes. Vérifier la solution proposée par chat GPT me prend moins de 2 minutes.
- demander la signification d'un sigle dans un contexte donné : en général, si la réponse est correcte, alors il est évident que ce sigle correspond bien au texte que je suis en train de lire
- suggérer des composants électroniques correspondant à un cahier des charges (surtout quand ce cahier des charges correspond mal aux critères proposés par les vendeurs de composants) : à la main, ça fait énormément de datasheets à éplucher. Chat GPT peut facilement me suggérer quelques composants. Je regarde donc les datasheets de ces composants là en premier. À noter que c'est le type de recherche où j'ai le plus souvent des résultats faux, voir parfois même où chatgpt renvoie des résultats en indiquant lui-même des caractéristiques qui ne collent pas. Mais ça n'aide probablement pas non plus que je fais en général ce genre de recherches pour des composants difficiles à trouver (sinon je trouve les moteurs de recherches de sites comme digikey, mouser, RS, ... plus pratique car plus fiables et plus exhaustifs)


3) Des cas où je ne recommande pas l'usage de chatGPT, et où je ne m'en sert pas :
- la génération d'un code complexe : le grand problème est que le résultat est vraisemblable, mais pas forcément correct : trouver des erreurs est donc particulièrement difficile
- la réponse est importante pour moi, et difficilement vérifiable (par exemple j'ai un problème avec l’embrayage de ma voiture : est-ce que je peux rouler avec jusqu'au garage ou il vaut mieux faire venir la dépanneuse : je préfère appeler mon garagiste que de confier ma vie et celle des autres à une IA!)
- toutes les questions où je sais exactement où trouver ma réponse rapidement autrement : pourquoi prendre le risque d'une réponse erronée si je sais ou trouver une réponse fiable dans la même durée
- des questions particulièrement complexes et des cas atypiques : chatGPT peut donner des pistes, mais des experts humains restent généralement bien plus performants
- des questions impliquant des données confidentielles : pas question de donner à OpenAI l'autorisation de les exploiter!
- l'envoie de mails (et tout particulièrement de mails pour poser des questions) : je considère que c'est un manque de respect envers la personne qui reçoit le mail (et un manque d'efficacité, car la question à en général été altérée et "gonflée"). Si quelqu'un considère que ça question ne vaut pas l'effort d'être rédigée, alors elle ne vaut certainement pas la peine que j'y consacre mon temps pour y répondre (la même chose est vrai sur les posts sur les forums). NB : utiliser une IA pour suggérer des corrections orthographiques ne me pose pas de problème, même si personnellement j'utilise des outils dédiés pour ça et pas une IA généraliste. Dans le cas particulier d'une personne parlant mal une langue, je peux accepter quelques reformulations proposées par l'IA à condition qu'elles soient relues ensuite.


Donc pour moi, chatGPT est un outil qui est bien pratique dans certaines circonstances, mais peu performant dans d'autres. À utiliser quand c'est pas grave si le résultat est faux.



D'ailleurs, j'ai la même approche pour la robotique en général : l'IA me semble une bonne idée pour toutes les taches non critiques où on veut de bon résultats en moyenne (par exemple, si je devais développer un robot pour récolter les fraises mures, j’opterais pour de l'IA pour reconnaître les fraises mûres plutôt que de faire du traitement d'image "classique"), par contre, hors de question de s'en servir comme (unique) sécurité pour les fonctions de sécurité (dans l'exemple précédent, hors de question que la reconnaissance visuelle d'une "fraise" suffise à déclencher une pince puissante pour la couper en toutes circonstances : qu'est-ce qui se passe si c'est par exemple une bague en forme de fraise sur le doigt d'un enfant? Il faut forcément ajouter d'autres protections "classiques" : un capot au dessus de la pince, des capteurs de proximité pour détecter la présence d'un obstacle (potentiellement humain), un bouton d'arrêt d'urgence, un capteur de position et de force dans la pince pour détecter immédiatement si la pince essaye de couper quelque chose de trop gros, ...). Et cette notion de sécurité s'étend pour moi aussi à la sécurité du robot lui même : OK d'utiliser l'IA pour choisir une trajectoire, à condition qu'un algo classique vérifie l’absence de collisions, que le robot ne perd pas son équilibre, ... quitte à faire un arrêt d'urgence si l'algo classique ne valide pas le choix de l'IA.


Dans le sujet : mini Dumper radiocommandé/autonome

03 juin 2025 - 06:40

À part le problème qu'une batterie sera vide avant les autres (qui n'a pas l'air de trop te déranger), un autre problème est que chaque moteur aura une tension de batterie différente, donc tournera a une vitesse différente pour le même PWM. Si tu as un vrai contrôle en vitesse de chaque roue (par exemple avec un encodeur), alors ça ne posera pas trop de problème. Si par contre tu comandes en boucle ouverte, alors ton robot partira sur un coté ou sur l'autre dès qu'une batterie atteindra une tension plus basse que les autres.

Tant que la différence de tension est faible, les 2 roues du même coté devraient continuer à tourner à la même vitesse (celle avec la tension de batterie forçant plus). Si la différence est importante, tu risques d'avoir les 2 roues qui tournent à des vitesses différentes (donc glissent sur le sol), ce qui use rapidement les pneus.


Mettre des batteries non identiques et potentiellement avec des tensions différentes en parallèle est une très mauvaise idée (en gros, tu crées un court circuit entre la batterie la plus chargée et la moins chargée). Si (et seulement si) une des batteries est capable à elle seule de fournir tout le courant nécessaire, alors tu peux les mettre en parallèle via des diodes : tu vas alors décharger la plus chargée jusqu'à ce qu'elle ait la même tension que la seconde plus chargée, puis tu vas tirer du courant sur les 2 jusqu'à ce que la tension baisse au niveau de la 3ième plus chargée, puis tu utilisera 3 batteries, ... NB : dans la vrai vie, le partage est un peu plus complexe, car les batteries ont une résistance interne, donc leur tension "externe" diminue avec le courant : la batterie 2 commencera donc à fournir un peu de courant quand la batterie 1 ne sera pas encore descendu au niveau de charge de la batterie 2 (à cause de la chute de tension due au courant délivré par la batterie 1).
Si tu veux creuser cette piste, préviens moi, et je peux détailler plus.


Dans le sujet : A quand un robot à pattes aussi agile qu un insecte ?

20 avril 2025 - 09:21

Quelques éléments à prendre en compte :

- la simulation de réseaux de neurones "par couches" (ie l'information ne vas que dans un sens, aucune mémoire) est relativement facile. C'est ce qui est utilisé par la majorité des réseaux de neurones artificiels (par exemple pour du traitement d'image, de la reconnaissance d'objets, ...). Ce genre de calcul se laisse très bien paralléliser sur un GPU, ou même sur des circuits plus ou moins dédiés, comme les "tensor core" sur les GPUs récentes de Nvidia, qui sont conçu pour effectuer rapidement (et sur beaucoup d'éléments en même temps) les multiplications de matrices et additions nécessaires pour les réseaux de neurones artificiels.

- si le "cerveau" fonctionne en partie en réseau de neurones par couches, le système de locomotion est plutôt basé sur des réseaux de neurones oscillants ("en boucle"). Il suffit de quelques neurones pour simuler un muscle qui se tend et se détend en rythme. Avec quelques neurones de plus, on peut synchroniser le mouvement avec un autre oscillateur (par exemple celui d'un autre muscle). De même, avec quelques neurones supplémentaires, on peut ajouter une entrée de "contrôle" (par exemple pour déclencher le mouvement ou l'arrêter). De mémoire, avec entre 100 et 500 neurones, on avait réussi à obtenir (en simulation) la marche d'un quadrupède (lors d'un de mes cours sur la robotique bio-inspirée).

- en terme de simulation, les réseaux de neurones oscillants (ou toute autre architecture autre qu'en couches) est beaucoup plus coûteuse, car on passe en temps continue. Au lieu d'avoir simplement à faire des multiplications et des additions, il faut maintenant résoudre des équations différentielles non linéaires. Là, je ne suis pas sûr qu'on sache aujourd'hui simuler des dizaines ou des centaines de milliers de neurones en temps réel sur un processeur remarquable dans un insecte.