Aller au contenu


pmdd

Inscrit(e) (le) 26 sept. 2017
Déconnecté Dernière activité aujourd'hui, 12:39
-----

#148423 Naissance de mon robot autonome IA

Posté par pmdd - hier, 17:03

C'est quand même très très compliqué...

 

* En voulant apprendre un objet hors objets de la camera IA, j'ai énormément compliqué les choses

* En voulant non seulement reconnaitre l'objet , mais aussi filmer sur mon smartphone en live et enregistrer en MP4, c'est carrément la galère pour faire les trois opérations conjointement par la même caméra.

* Puis en voulant visualiser la position du rectangle de reconnaissance de la souris sur la vidéo en live sur mon smartphone !!!

 

Le résultat est top. Pour l'instant je n'ai pas développé la fonction recherche, mais la reconnaissance et toutes les options vidéo fonctionnent, heureusement grâce à l'aide de Chat GPT. Impossible de faire autrement et malgré cela ça été un gros boulot fastidieux.

 

Si j'étais parti sur une caméra Huskylens, tout le travail était fait: la possibilité d'apprentissage d'un objet spécifique, l'écran vidéo en live avec les rectangles de reconnaissance ! Le projet était largement abordable. En fait c'est comme s'il avait fallu développer une library spécifique ce qui n'est ni de ma compétence, ni dans mes centres d'intérêt.

 

Maintenant, ça sera plus intéressant, développer un algorithme de recherche et de capture de la souris.

 

Voici pour l'instant ce que je visualise sur mon téléphone, envoyé en live par le robot:

 

 

detect_souris.mp4   8,98 Mo




#148408 Naissance de mon robot autonome IA

Posté par pmdd - 07 octobre 2026 - 06:36

J’étais resté sur une note optimiste… sans envisager la galère qui m’attendait !

 

Sur la plateforme Ultralytics , l’apprentissage se passe très bien. Je suis même monté à 300 photos de ma souris dans toutes les conditions de position, distance et éclairage pour obtenir un modèle très performant dépassant souvent les 80% de fiabilité.

 

Le gros problème a été l’exportation vers la camera IA , ce qui ne fonctionne pas malgré l’option disponible dans Ultralytics !

 

Après de nombreuses tentatives j’ai laissé la main à chat GPT, qui pendant près de deux jours a pondu des centaines de lignes de code, a fait des tentatives dans tous les sens, pour finalement échouer aussi.

 

Mes recherches sur le web montre qu’effectivement il y a un gros bug. En résumé ma caméra IA est tout à fait adaptée si on utilise les modèles intégrés comme les personnes, chat, chien, oiseau, cheval, voiture, camion, bus, vélo, moto, bouteille, tasse, verre, fourchette, couteau, cuillère, chaise, canapé, lit, table, télévision, ordinateur portable, téléphone portable, clavier, souris d'ordinateur, livre, horloge, sac à dos, etc. Elle est en particulier très performante pour les gestes humains.

 

Mais pas pour un modèle spécifique !!!

 

Je me suis donc rabattu sur un autre moteur, Openvino, permettant d’exporter mon modèle entrainé directement sur le Pi5.

 

Et là c’est simple et ça marche nickel, mais c’est le Pi5 qui travaille, la caméra prend juste des images standard. Une caméra 3 fois moins chère aurait suffit et du coup le CPU de la Pi5 va être sollicité, à voir !

 

Je continue, mais en résumé il ne faut pas acheter cette caméra pour faire du spécifique. La caméra Huskylens qui a aussi une IA embarquée aurait été plus performante, puisque le mode apprentissage fonctionne en local, mais avec une définition beaucoup moins élevée.

 

En résumé j’ai donc :

 

  • Pris les photos de l'objet à reconnaître : angles, distances, éclairages et arrière-plans différents.
  • Importé les photos dans Ultralytics Platform et dessiné les rectangles autour de la souris à reconnaître
  • Entraîné YOLO11n dans Ultralytics,  300 images en  960 × 960.
  • Vérifié les performances du modèle obtenu dans Ultralytics et conservé le meilleur modèle.
  • Exporté depuis Ultralytics via OpenVINO
  • Téléchargé le modèle OpenVINO puis copié son dossier sur le Raspberry Pi 5.
  • Installé sur le PI5 OpenVINO dans un environnement Python ayant accès à la caméra IA.

Et par conséquent la caméra capture simplement les images. Elle ne réalise ici aucun traitement IA. OpenVINO exécute YOLO11n sur le CPU du Raspberry Pi 5.

 

Le programme d'Orba, mon robot,  récupère finalement quelque chose de très simple : souris détectée ou non + niveau de confiance + position dans l'image.

 

Mon premier objectif reste la détection de la souris fixe par Orba.

 

Mais je rajoute un objectif ultérieur, détecter la souris en mouvement, la suivre et la capturer !  Cela suppose aussi que je vais devoir installer un dispositif de capture sur Orba.




#137655 Naissance de mon robot autonome IA

Posté par pmdd - 04 octobre 2026 - 03:50

Première étape fastidieuse, prendre une centaine de photos de la souris sous tous les angles, toutes les distances , tous les environnements. Probablement que cet essai ne sera pas le meilleur et qu'il faudra optimiser cet apprentissage. Je prends aussi des photos de l'environnement sans souris. Dans tous les cas les photos sont prises avec la caméra du robot pour avoir le même point de vue.

 

Ensuite il faut annoter chaque photo, c'est à dire indiquer graphiquement sur chaque photo la position de la souris. Je fais cela dans Roboflow version gratuite, le traitement de 125 photos passe dans cette version free à priori.

 

Mes premières photos sont ratées, seules 46 ont été annotées , et l'annotation manuelle montre que mes photos sont beaucoup trop éloignées; Au-delà de 2m il semble que la reconnaissance soit difficile.

 

Je me relance dans la prise des photos...

 

Et je recommence la démarche dans Roboflow mais sans utiliser son IA, en faisant les annotations manuelles des 125 photos...

 

Mais avec Roboflow je suis arrivé à une impasse à la fin sur la version gratuite...

 

J'essaie alors ultralytics... avec le même jeu des dernières photos...

 

L'explication du principe est clair ici: https://docs.ultralytics.com/guides/data-collection-and-annotation




#133178 Naissance de mon robot autonome IA

Posté par pmdd - 02 octobre 2026 - 01:58

Voici les premiers pas autonomes de mon robot autonome. Il gère les obstacles avec le lidar, son pare-choc et le patinage des roues. C'est très encourageant, il est plus efficace que mon robot aspirateur que je retrouve coincé dans cette forêt de pieds de chaises.

 

Plus de précisions plus tard. A noter que j'ai rajouté une option dans le menu: vidéo en live ou vidéo enregistrée...

 

Je l'ai laissé 1h en liberté, sans problème, la sécurité batterie l'a arrêté correctement.

 

 

J'ai donné aussi un nom à mon robot : ORBA.

 

Aujourd'hui avant d'attaquer la caméra IA, Orba sait actuellement :

  • être commandé manuellement
  • se déplacer avec précision
  • naviguer continuellement de façon autonome 
  • éviter les obstacles 
  • réagir au pare-chocs 
  • détecter le patinage 
  • reculer et effectuer un demi-tour 
  • se dégager seul de situations complexes 
  • allumer ses phares dans l’obscurité 
  • surveiller sa batterie et sa consommation 
  • afficher son état 
  • arrêter proprement le Raspberry Pi 
  • transmettre une image en direct 
  • enregistrer son trajet 
  • diffuser des messages audio



#133159 Naissance de mon robot autonome IA

Posté par pmdd - 29 septembre 2026 - 09:32

Je viens de passer du temps sur le lidar C1 qui me faisait un peu peur. C'est @Mike118 qui me l'a conseillé , ce n'était pas prévu dans mon projet et je ne le regrette pas !

 

En fait c'est relativement facile à mettre en oeuvre et le principe est très simple, tout du moins dans l'utilisation que je veux en faire, c'est à dire détecter et éviter les obstacles sur 360° :

 

Il est connecté au Pi5 en UART à une vitesse de 460800 bauds. Il produit environ 5000 mesures par seconde sur 10 tours. Ces mesures sont codées sur 5 octets. Il a fallu que je me remémore les conversions hexadécimale/binaire/décimale mais ça va.

 

Début du tour et qualité mesure : octet 0  - Angle octets 1 et 2 - distance octets 3 et 4.

 

Etant donnée la vitesse on a une vue sur 360° tous les 100 ms ce qui compte tenu de la vitesse du robot est largement suffisant. L'idée est de faire le traitement dans le Pi5 et de transmettre au pico des informations de synthèse simple; En l'occurrence une information sur la présence et la distance d'un obstacle dans 4 zones, calculées à partir des minimums de distance dans chaque zone.

 

Tout cela est très simple. Ce qui l'est un peu moins pour moi c'est de gérer les erreurs éventuelles dans une des mesures qui peut tout décaler, et de gérer les transmissions au pico, mais ça chat GPT sait le faire, c'est du basique pour un connaisseur. La réception est codée pour accumuler les octets dans un tampon jusqu'à un caractère de fin de ligne. Cette correction évite qu'un message LIDAR soit découpé en deux lectures. Il faut aussi éviter que les différentes infos qui passe par l'UART (Lidar, mais aussi sécurité PI, caméra..) ne se mélangent. Il faut donc les mettre en attente dans un tampon que le Pico consulte quand il en a besoin. Tout cela est nouveau pour moi mais pas très compliqué.

 

Je suis étonné par la précision et la régularité de ce Lidar C1, c'est tout à fait génial. Je pense que mon robot pourra circuler de façon autonome très rapidement. Evidemment je ne parle pas de cartographier la zone de déplacement (pas encore  :ouioui: ). Les essais robot à l'arrêt semblent nickel.

 

La logique de déplacement simple que j'ai retenue est "Devant libre > avancer - Obstacle devant et un côté libre > tourner du côté libre - Avant et côtés bloqués > reculer  - 4 zones boquées > s'arrêter. Il faudra que je règle les angles des différentes zones pour passer un peu de partout.

 

En résumé: le pi démarre le balayage, décode les les points, recalcule 4 distances pour chaque zone et les transmet au pico qui gère les déplacements. Du coup ma bibliothèque python pour lidar C1 est prête et mon avance sur mon planning s'accentue, je passe deux fois plus de temps que prévu et c'est pour l'instant deux fois plus facile que prévu... :awesome:

 

Avant de programmer le pico, je dois gérer les obstacles que le lidar ne voit pas (trop bas) et que le parechoc ne voit pas non plus. Je vais utiliser le patinage des roues et la mesure du lidar qui ne bougera pas alors que les roues tournent. 




#130663 Naissance de mon robot autonome IA

Posté par pmdd - 26 septembre 2026 - 08:40

Personnellement j'aurais gardé la raspberry pi sur le haut et la pico en bas...  

Avec une séparation qui fait uniquement la connectivité série entre l'arduino et la pi, et l'alimentation et rien d'autre, 
Le haut et le bas pouvant être testé séparément ( Algo lidar , caméra etc ... ) sur le pi avec la brique du haut. 
Déplacement encodeur etc ... Sur la brique du bas. 
 

Tu as raison mais il aurait fallu que je l'anticipe dès le départ. Là je n'ai plus de place au niveau 0 pour mettre le Pico ce qui aurait été optimal pour longueurs de câblage.. Mais il faut relativiser, en enlevant la séparation physique entre les deux étages, le pico n'est qu'à 30mm au-dessus ce qui limite tout de même les longueurs. Là je suis avec un robot totalement accessible ce qui est plus confortable en prévision de problèmes ou d'extensions ultérieures.




#127212 Naissance de mon robot autonome IA

Posté par pmdd - 21 septembre 2026 - 04:24

Voilà une petite vidéo (je voulais tester la diffusion en mp4), qui valide le serveur Web du Pi , la diffusion en streaming de l'image de caméra et le déplacement parfaitement rectiligne du robot !

 

Sur le dessus un nouveau voyant vert qui indique l'état du Pi, j'ai mis en place une procédure de sécurité pour l'éteindre proprement avec le petit bouton rouge rajouté lui aussi.

 

Un début de menu déroulant est créé sur l'oled pour le choix de la puissance.

 

Tout va bien , je poursuis pas-à-pas avec... la marche arrière  :ouioui:

 

Il y a un bruit étrange dans la vidéo que je ne perçois pas en live !!! j'ai l'impression que c'est une roue qui frotte un peu !

 

 

20260921_165439.mp4   23,86 Mo




#127199 Naissance de mon robot autonome IA

Posté par pmdd - 18 septembre 2026 - 09:38

Voilà je tiens ma première erreur qui nécessiterait une reconstruction complète du robot puisque je n'ai pas accès à l'élément en cause. Je vais attendre d'en trouver d'autres pour refaire à zéro, d'autant plus que tout fonctionne parfaitement.

 

Il s'agit du câblage de l'INA226, qui semble très performant pour la mesure de l'intensité, il y a un écart de mesure de 0.2% avec la mesure de mon alimentation. mais j'ai complètement oublié de câbler pour la mesure de la tension. Dons pas possible de surveiller la batterie.

Il s'agit de ce module : 

 

ina226.jpg

 

Pour le reste j'ai passé mon après-midi à transformer le Pi 5 en serveur Web pour accéder aux images de la caméra en temps réel. Pas vraiment intéressant, ni créatif, il s'agit de suivre un mode opératoire documenté et connu fait de programmes déjà développés. J'ai même arrêté de vouloir comprendre chaque ligne de cette partie là.

En revanche le résultat est excellent, avec en prime une icône sur mon téléphone pour me connecter, icône qui sera le logo de mon projet :

 

icone_robot.jpg




#127189 Naissance de mon robot autonome IA

Posté par pmdd - 17 septembre 2026 - 09:10

Tous les tests sont OK ! C'est la première fois que ça m'arrive de faire bien du premier coup. :grimace:

J'ai mesuré la consommation de chaque équipement avec une alim stabilisée, tout est OK. La consommation globale est de 1A seulement mais avec aucun effort ni blocage.

La communication Pi vers Pico et vice-versa fonctionne !

 

Je suis un peu étonné que ça se passe si bien...

Maintenant commence mon autoformation: apprendre les commandes essentielles pour manipuler les fichiers dans Linux. J'ai déjà appris comment écrire les programme sur la Pi5 en étant connecté au réseau sans écran ni clavier spécifique. Ensuite je suis en train de voir les commandes et la syntaxe en python pour communiquer via UART.

 

J'attaque la partir sécurité. Mon objectif est de faire du code micropython / python hyper simple, sans classes complexes.

 

* Le premier job est de faire un programme pour arrêter proprement la Pi en utilisant le bouton poussoir de l'encodeur.

* Le deuxième sera de programmer une alerte en cas de niveau de batterie insuffisant.




#126312 Naissance de mon robot autonome IA

Posté par pmdd - 15 septembre 2026 - 03:31

Merci pour ces conseils et heureusement que je peux faire comme ça sinon impossible de câbler le lidar.

 

J'ai fini la conception du robot, je suis content du résultat mais il a un gros défaut: la partie puissance et motorisation est totalement inaccessible en cas de problème et nécessiterait un démontage et décâblage complet du robot. Autant dire que cela risque d'arriver et si c'est le cas je sais comment faire le même , mais avec un accès total à tous les organes. 

je ne vais pas le refaire maintenant , mais peut-être à la première mise sous-tension ce sera nécessaire !

 

Les difficultés particulières de conception ont été le pare-choc avant, le pan/tilt compact, la roulette arrière. Je l'ai aussi quasiment refait à zéro pour intégrer l'interrupteur M/A et l'encodeur rotatif de réglage sur les ailes du niveau 2.

mais le plus compliqué a été le câblage, là aussi je sais comment mieux faire la prochaine fois si nécessaire.

 

Ses dimensions finales : 1.330 kg batterie incluse, 90mm de haut hors lidar, 130 mm avec Lidar, longueur 240 mm , largeur 210 mm

 

Et la liste des équipements:

 

equipement.jpg

 

Je viens de faire ce que je préfère faire et ce que je sais mieux faire, je n'ose pas le mettre sous tension même si les vérifications élémentaires sont OK. Et je vais tester chaque équipement un par un.

 

20260915_161950.jpg

 

20260915_162025.jpg




#126307 Naissance de mon robot autonome IA

Posté par pmdd - 14 septembre 2026 - 05:26

Maintenant tu vois pourquoi je t'avais recommandé le ld06 : Plus petit / plus facile à intégrer et la câble se déconnecte =) 

Mais sinon oui tu peux mais ça va fragiliser un peu l'ensemble. Le but de la gaine c'est de protéger la jonction soudée au bout du câble pour que même si tu le bouge dans tous les sens la soudure ne bougera pas. 

Si tu retires la gaine, à chaque fois que tu vas bouger le câble il faudra faire un peu attention à ne pas tirer sur la soudure. 
Une astuce est d'ouvrir le dessous du lidar et de mettre un peu de colle silicone de sorte à ce que la colle silicone remplace le de la gaine + presse étoupe.

 Effectivement ce n'est pas évident de l'intégrer. J'ai décortiqué la gaine, il y a en plus des 4 fils de sortie jaune, vert, noir, rouge, un fil blanc et une tresse métallique. C'est quoi ce fil blanc ? il fait continuité avec la tresse et le conducteur noir GND.

 

le Lidar se branche sur l'usb via un convertisseur usb. On ne peut pas le brancher autrement que par l'usb ? directement au Pi 5 ?




#126285 Naissance de mon robot autonome IA

Posté par pmdd - 11 septembre 2026 - 03:55

Voilà le deuxième étage OK . 

 

Il est réduit en surface pour permettre au pan/tilt de la caméra de faire leur mouvement. 

 

Du coup le deuxième niveau a été chaud à câbler avec des connections du Pi5 volumineuses, même si j'ai un peu bricolé les câbles.

 

J'ai du faire un pan/tilt hyper compact pour éviter qu'il monte trop haut et gêne le Lidar qui sera au niveau du dessus.

 

Le pare-choc sensible devant m'a pris aussi du temps mine de rien.

 

Autre grosse difficulté, 2 jours pour connecter le Pi 5 au wifi et pour m'apercevoir que le problème venait d'un vieux répétiteur wifi !  :tete:

 

Je devrais finir à 1.4 kg, c'est mieux que ce que je pensais au début mais moins bien que ce que j'avais extrapolé après le niveau du bas.

 

Prochaine étape, dernier étage avec Lidar, Ecran, Codeur rotatif réglage, et inter/AU. 

 

20260911_164612.jpg




#122887 Un concours / Challenge Robot Maker

Posté par pmdd - 05 septembre 2026 - 03:03

Perso un challenge quadrupède , je trouve ça sympa.

Mais j'aime l'idée du challenge en général. il faut juste être assez nombreux pour participer.




#122881 Naissance de mon robot autonome IA

Posté par pmdd - 04 septembre 2026 - 09:45

Bonsoir,

 

Le projet avance, j'essaie de faire propre. niveau 1 terminé, avec moteurs + codeur, driver MDD3A, un INA226 pour mesurer l'intensité et un buck 12/5v (ICQUANZX) et la batterie 3S . Le buck je ne le connais pas, mais il est gros et je peux le remplacer si la tension n'est pas bonne sous la charge.

La suite: Pare-choc sensible, puis 2ème étage avec pan/tilt pour la cam IA, le Pi5 et le pico avec un gros pcb extensible.

La grosse satisfaction pour l'instant, la roulette arrière récupérée sur aspirateur robot.

 

20260904_223616.jpg




#122746 Naissance de mon robot autonome IA

Posté par pmdd - 27 août 2026 - 09:42

Bonjour,

 

Ca me démangeait depuis quelques temps. 3 ans après avoir franchi le délicat virage post mindstorms lego, ma spécialité depuis longtemps, vers le microcontrôleur (Pico de raspberry), je tente une incursion vers la Raspberry Pi 5 suite à un cadeau d'anniversaire...

 

Je n'y connais rien, et je veux comme à chaque fois apprendre pas à pas. Probablement poserai-je des questions ici par la suite.

 

Je vais donc faire une base roulante, assez classique sur laquelle je vais mettre un maximum d'équipements que je découvrirai (si la motivation est toujours là) au fur et à mesure.

 

Je ne sais pas si je vais accrocher à un projet sans autre but que celui d'apprendre moi qui suis accro à la compétition... :Koshechka_08:

 

 

Il y aura beaucoup d'équipement, moteurs avec codeur, Imu, Pico, rapsberry Pi5, AI caméra 12mp sony imx500, son , lumière, écran, reconnaissance vocale  jusqu'à un Lidar C1que Mike m'a habilement suggéré...

 

Evidemment que je ne vais pas apprendre tout ça à la fois !

 

 

Pour l'instant construction de la base  210 x 245 , 2 roues avec moteurs GM25 avec codeur et une roulette type robot aspirateur. 3 étages, la base avec la batterie 3S et son BMS, les moteurs et l'electronique de puissance, un deuxième étage avec un Pan/tilt avec caméra et toute l'électronique, pico, Pi5... et un 3 étage avec Lidar et les interfaces externes (écran , AU..)   Hauteur des 3 étages hors lidar: 80mm

 

J'aurais pu acheter une base toute faite, mais j'aime beaucoup faire la conception même des choses basiques. La motivation est là, pour l'instant et l'imprimante 3D chauffe !