Aller au contenu


Contenu de yougo

Il y a 235 élément(s) pour yougo (recherche limitée depuis 05-mai 13)



#83242 Yorkshire, mon petit quadrupède

Posté par yougo sur 08 mai 2017 - 07:47 dans Robots à pattes et jambes, humanoïdes, bipèdes, quadrupèdes, hexapodes ...

J'avais bien compris ton objectif Oracid ;) bon courage 




#83565 Yorkshire, mon petit quadrupède

Posté par yougo sur 14 mai 2017 - 11:43 dans Robots à pattes et jambes, humanoïdes, bipèdes, quadrupèdes, hexapodes ...

Je suis vraiment curieux de comment tu vas faire avancer ça ! j'ai j'aimais réussit a faire marcher quelque chose avec un seul servo par patte a chaque fois j’avais ce problème :

 

Imaginons que tu avances une des pattes avant  et la patte inverse à l’arrière (au pif hein) , avec un seul servo le problème c'est que la patte touche le sol tout le temps , elle ne se lève pas , donc quand elle avance le robot recule , et quand elle recule ben il avance...et au final on fait du sur place !

Alors qu'en vrai c'est : on avance la patte en la levant donc le robot ne bouge pas , puis on la recule en la plaquant au sol pour faire avancer le robot ! (comme dans la vidéo sur les page prétendantes on voit bien le principe ) 

 

La solution que j'ai fait c'est , faire des sauts de lapins (ou grenouille comme vous voulez)  :laugh1:  à la place de faire une patte avant + une patte arrière il avançait en ce propulsant avec les deux pattes arrières en même temps, ça marche mais bon c'est pas ce que tu veux je pense 




#83238 Yorkshire, mon petit quadrupède

Posté par yougo sur 08 mai 2017 - 06:59 dans Robots à pattes et jambes, humanoïdes, bipèdes, quadrupèdes, hexapodes ...

Ahah ça y est Oracid ce lance ! bon courage, j'ai hâte de voir comment tu fais avec 4 servos , surtout ceux ci qui sont vraiment faibles , j'avais essayer avec le même modèle mais le chassie et la batterie étaient trop lourds pour ces petits servos , le résultat : un bruit infect car les servos forcent en permanence et un vitesse de déplacement de 0.00001 km/h  :laugh1:




#83580 Yorkshire, mon petit quadrupède

Posté par yougo sur 14 mai 2017 - 05:03 dans Robots à pattes et jambes, humanoïdes, bipèdes, quadrupèdes, hexapodes ...

Oui j’espère que tu y arriveras je t’apporte juste mon expérience perso ! mais je pense qu'il est très probable (si échec il y a )  que la raison vienne de là

 

l'idée de griffes est pas bête R1D1 ou sinon des roues qui ne tournent que dans un sens  




#81697 Présentation de Oracid

Posté par yougo sur 06 avril 2017 - 02:23 dans Et si vous vous présentiez?

GG ! 




#85007 Robot suiveur de personne

Posté par yougo sur 23 juin 2017 - 08:11 dans Robots roulants, chars à chenilles et autres machines sur roues

Ummm les capteurs olfactifs ?! pas sur que ça existe encore pour le grand public, un de mes profs m'avais dit que ça coûtait encore plusieurs dizaines de milliers d'euros  :crazy:

 

par contre beaucoup de gens utilisent les qrCodes, il y en a partouuuuut dans les vidéos de robotique il doit y avoir une raison, 

regarde ça : 

 

https://www.kickstar...-machine-vision

 

Tu vas voir des types de tracking, avec des Qr codes notamment.

Par contre dans ce cas il te faudra plus de puissance de calcul que sur l'arduino, qui n'en a presque pas...Donc tu peux trouver beaucoup beaucoup de tutos avec le raspberry pour faire de la reconnaissance de Qr Codes. 

 

Un truc possible serait : monter une caméra sur le robot ET une tour en servomoteurs qui bougent de haut en bas et de droite a gauche (comme un cou quoi ) avec en haut un capteur de distance.

Avec le robot tu bouges les roues jusqu’à  trouver un QrCode dans la pièce, un fois que tu l'as , tu te fais un programme avec raspberry qui calcule la position du centre du QrCode par rapport à l’image. Si par exemple la caméra fais du 800/800Px et que le centre "C" du QrCode se trouve à C(200;400) ça veut dire que le QrCode que tu essaye de suivre est vers la gauche de ton robot...

 

En suite il faut évaluer la distance du QrCode à ton robot , c'est la que va intervenir la tour de servomoteurs,"suffit" de faire en sorte qu'elle pointe en direction du QrCode, cette direction tu vas la retrouver grâce à la position du centre de ton QrCode que va te donner le code avec ta caméra. Et voila tu auras donc les deux infos qu'il te faut : la direction que le robot doit suivre, et la distance entre lui et le code.

 

Maiiis bon ça me parait un peut overkill tout ça... 




#85031 Robot suiveur de personne

Posté par yougo sur 24 juin 2017 - 08:11 dans Robots roulants, chars à chenilles et autres machines sur roues

Tu peux facilement te faire toi même une balise comme ça (35E !!! les gens devrait avoir honte ! bon après t'es sur génération robot là).

 

Avec ça : 

 

https://www.amazon.f...ds=recepteur ir

 

Plus tu vas mettre de récepteurs IR plus la "position" de l’émetteur va être connue avec précision. 

 

mais avec les trucs IR si une personne fait mumuse avec la télécommande de la TV, bah le robot probablement aller voir la télécommande, je veux dire par la qu'il y a quelques pollutions IR dans le monde réel à prendre en compte, il est donc préférable de crypter ton signal IR.

 

En plus tu vas devoir te promener avec des les IR sur la casquette ça va être rigolo.




#81613 Robot Bipède 3D [Crowdfunding ?!]

Posté par yougo sur 03 avril 2017 - 08:32 dans Robots à pattes et jambes, humanoïdes, bipèdes, quadrupèdes, hexapodes ...

Ahah merci Oracid ! 

 

oui je pense que si ca réussit financièrement c'est vraiment le must !   




#81671 Robot Bipède 3D [Crowdfunding ?!]

Posté par yougo sur 05 avril 2017 - 07:41 dans Robots à pattes et jambes, humanoïdes, bipèdes, quadrupèdes, hexapodes ...

Wow Oracid tu es déterminer , je vais te contacter en priver que l'on puisse discuter.

 

Dans tous les cas , même si le projet n'arrive pas à bout , tu auras était d'une énorme utilité pour beaucoup de personnes qui vont acheter le produit dans le futur !

Je pense que si tu arrive à faire une sorte de review de ces servo sur le site , ça va débloquer pas mal de gens et on va pouvoir assister a des projets de plus grande envergure sur la scene française !  :yahoo:

 

Si le projet est financer, je te garde une part du budget pour le remboursement intégral de tes achats (liés au test du servo hein ) ça c'est sur   ;)




#81627 Robot Bipède 3D [Crowdfunding ?!]

Posté par yougo sur 04 avril 2017 - 07:29 dans Robots à pattes et jambes, humanoïdes, bipèdes, quadrupèdes, hexapodes ...

Oui je suis tout à fait d'accord avec toi, il faudrait un peu plus de concret pour que les gens donnent, le problème c'est que c'est que le but est d'obtenir de l'argent pour rendre ça concret 😅 c'est le dilemme, vous pensez que je devrais faire plus de vues 3D de schéma ect pour que les gens arrivent à ce projeté dans le futur ?



#81596 Robot Bipède 3D [Crowdfunding ?!]

Posté par yougo sur 03 avril 2017 - 04:59 dans Robots à pattes et jambes, humanoïdes, bipèdes, quadrupèdes, hexapodes ...

Salut à tous  :)

 

Comme certains ont pu le suivre dans le sujet sur les servomoteurs (ici pour les curieux http://www.robot-maker.com/forum/topic/11280-servomoteur-puissant-pour-robot-bipede/

 j'ai pour projet de créer un robot bipède à taille humaine.

 

pour la petite histoire (c'est toujours cool les histoires ) : 

 

J'ai regarder la Toulouse robot race sans pouvoir y participer  :kez_13: par manque de moyens et surtout de temps, je me suis donc dis , "la prochaine fois , je me prépare à l'avance !" 

J'ai donc commencer à designer un petit robot bipède que j’allais imprimer en 3D , prêt a accueillir des servos basiques (petite photo ci dessous [c'est pas fini ne me jugez pas ! ]) 

 

Capture d’écran (101).png

 

Puis j'ai vu ça  :blink: le fameux Cassie 

 

 

Et la c'est le rêve , pourquoi ne pas se faire une version de Cassie ?? je commence donc a faire des plans des "vues d'artistes" (si si je suis un artiste)  et des plans en 3D des articulations par exemple :

 

robot_testgris.png

 

On note la "légère inspiration sur l'original"  

 

 

Capture d’écran (102).png

 

 

Ok certes c'est un défi technique à relever, pas de soucis les défis il y a pas plus excitant  !  :Koshechka_08:

 

 

Le VRAI problème c'est l'argent ... en effet la conception d'un robot comme ça demande des ressources énormes (il y a qu'a voir le budget de la DARPA  qui est proche de 4 Milliards par ans ! ) 

Evidemment la qualité sera moindre par rapport au vrai , mais à contrario du vrai il serra Open source et imprimable en 3D ET il ne va pas coûter 100 000 E (prix annoncer par  Agility Robotics ) mais plus dans les 1500E 

 

Bref tout ce speech pour vous demander si vous trouvez le projet carrément cool et qu'il vaudrait le coup que je fasse une campagne de crowdfunding pour financer le développement ?  

 

Merci de votre lecture  :)

 

 

 

 

 

 




#81675 Robot Bipède 3D [Crowdfunding ?!]

Posté par yougo sur 05 avril 2017 - 02:30 dans Robots à pattes et jambes, humanoïdes, bipèdes, quadrupèdes, hexapodes ...

Ahah , je suis plutôt nouveau sur le forum désolé je n'avais pas connaissance de ton histoire , franchement bravo ! même pour ta santé !

je connais ta chaîne YT (je m’étais abonner il y a longtemps avant même de connaitre ce forum)  je me doutez que tu fessais des revenus car tes aventures lego semblent intéresser pas mal de gens 

 

Je suis heureux si j'ai pu te donner de l'inspiration ! (franchement le spot mini est faisable , les quadrupèdes ont un système de marche bien plus facile a gérer que les bipèdes MAIS les nombre de servos double, donc le poid / prix / conso , c'est a prendre en conte )

 

Pour les servos , je voulais utiliser 2  ASMC-03A qui s'occupent des rotations au niveau de la "hanche" car il n'y a pas besoin d'une force énorme mais 2 ASME-MXA pour les "cuisses" car eux par contre ils soutiennent tout le robot 

ils doivent donc être plus puissant  (tout ça *2 car on a deux jambes ! )

 

 

conclusion : N'importe , dans tous les cas ils utilisent le même procédé PPM et c'est personnellement ce qui m’intéresse , le contrôle du servo ; pour le reste ils sont similaires juste le prix et la puissance qui change  




#81629 Robot Bipède 3D [Crowdfunding ?!]

Posté par yougo sur 04 avril 2017 - 08:00 dans Robots à pattes et jambes, humanoïdes, bipèdes, quadrupèdes, hexapodes ...

Bon ben je vais faire chauffer Blender et Photoshop je vais surement poster ce que je fais ici , hésitais pas a critiquer / donner des conseils ;)




#81684 Robot Bipède 3D [Crowdfunding ?!]

Posté par yougo sur 06 avril 2017 - 07:22 dans Robots à pattes et jambes, humanoïdes, bipèdes, quadrupèdes, hexapodes ...

Alors oui je connais blender (pas non plus si bein que ca ) mais je suis plus familier a la modélisation (je l'utilisais pour faire des pièces a imprimer en 3d ) mais alors la simulation il faudrait que je me documente  :whistle2:




#94177 Fabriquer son premier bipède (pièges et astuces)

Posté par yougo sur 08 avril 2018 - 08:59 dans Robots à pattes et jambes, humanoïdes, bipèdes, quadrupèdes, hexapodes ...

Je ne suis pas vraiment neutre a propos du premier point, mais je me permet !

 

-je pense que tant que vous restez sur de la marche STATIQUE, vous pouvez faire des trucs cool quelque soit la taille de votre robot sans trop vous prendre la tette. 

 

-Pour moi il y a un point à ne pas négliger (sauf si vous prenez des plans qui existent) c'est la simulation 3D !

Je veux dire par la qu'il vaut mieux prendre 1 mois pour faire votre simu que de construire le robot tette baissée et au final voir que ca ne marche pas pour x raison (équilibrage du poids par exemple).

Ca peut paraître fastidieux mais je conseille vraiment !  Ca va peut-être vous sauver quelques €, et en plus vous serrez déjà prêt pour la simu quand vous voudrez faire votre prochain projet.




#82808 Drone autonome - Phoenix

Posté par yougo sur 01 mai 2017 - 11:30 dans Drone, Robot volant, et autres machines volantes

Bravo ! le clip est magnifique ;) 

 

Niveau motion capture , on en a déjà  parler dans le forum , mais le petit module français "jeVois" pourrait peut être apporter une solution  ? 

 

https://www.kickstar...-machine-vision

 

http://www.robot-maker.com/forum/topic/11032-projet-jevois-de-laurent-itti/




#94180 Fabriquer son premier bipède (pièges et astuces)

Posté par yougo sur 08 avril 2018 - 01:14 dans Robots à pattes et jambes, humanoïdes, bipèdes, quadrupèdes, hexapodes ...

Je n'ai pas autant de compétences que certains non plus malheureusement ! 

 

Je crois qu'il y a déjà pas mal de sujet a propos de ca sur le forum en voila un : 

 

http://www.robot-maker.com/forum/topic/11529-simulation-robotique/




#85030 IA et Algorithme d'apprentissage

Posté par yougo sur 24 juin 2017 - 07:57 dans Intelligence artificielle

2 petites contributions d'un YouTubeur, qui n'est certes pas un pro en robotique comme Yan LECUN, mais qui est un vulgarisateur scientifique qui en gros résume les vidéos que vous avez envoyé. 

 

https://www.youtube....rEWfhTVg&t=822s

 

et un petit algo, qui dans un robot serait surement rigolot :

 

https://www.youtube....h?v=qZRYGxF6D3w




#111456 Logiciel machine learning automatique [Marche dynamique]

Posté par yougo sur 19 octobre 2020 - 11:13 dans Robots à pattes et jambes, humanoïdes, bipèdes, quadrupèdes, hexapodes ...

Merci pour l'info je vais sortir une Update qui marche mieux bientot dans tous les cas il y avait encore d'autres erreurs




#109887 Logiciel machine learning automatique [Marche dynamique]

Posté par yougo sur 23 mai 2020 - 06:00 dans Robots à pattes et jambes, humanoïdes, bipèdes, quadrupèdes, hexapodes ...

Il y a beaucoup d'outils pour visualiser les fichiers URDF, très peu pour les faire en mode graphique, je sais que blender a des plugins qui font ça tel que Phobos que j'ai pu tester mais honnêtement le temps d'installer blender et le plugins puis de le master je peux faire 10 fichiers à la main donc je ne l'utilise plus.
 

 

Personnellement je fais ça a la main (au final c'est beaucoup de copier coller)  et pour visualiser rapidement ce que je tape j'utilise https://mymodelrobot.appspot.com. Même si des fois il pose problème au niveau de l'orientation de certains joints.
(aussi il faut enlever la balise XML version du début de votre fichier URDF)

 

La partie la plus terrible est le calcul inerties, je me suis fait un script (Python3) que je joins à ce message et qui renvoie directement une balise URDF a partir de la forme et masse de votre link. (Gazebo offre la possibilité de visualiser les inerties ce que je trouve pas mal pour checker que tout est bien à sa place)

 

Edit

Je n'ai toujours pas la permission de joindre du code... Donc ca se passe ici si vous voulez le script :

 

https://gitlab.com/U...t_inerties_urdf

 




#109637 Logiciel machine learning automatique [Marche dynamique]

Posté par yougo sur 14 mai 2020 - 06:59 dans Robots à pattes et jambes, humanoïdes, bipèdes, quadrupèdes, hexapodes ...

Bonjour à tous j'espère que vous allez bien en cette période difficile.

Durant ce confinement j'ai enfin pu relâcher un peu les études ce qui ma laisser le temps pour bidouiller un peu.
À l'époque où je fréquentais ce forum beaucoup d'entre vous aviez du mal a trouver des outils de simulation faciles d'accès et encore plus pour ce qui est du machine learning.

Du coup j'ai fait un petit logiciel dans lequel il suffit de glisser déposer le fichier descripteur de votre robot et hop vous venez le lendemain et il marche (en dynamique, et en théorie aussi :whistle2: ). J'ai pu tester le logiciel avec mes modèles (des bipedes) mais j'aimerais le tester avec d'autres robots. Il y en a beaucoup sur internet mais je me suis dit que quite à utiliser mon Pc autant que ça serve.

Ce que je vous propose c'est donc de m'envoyer vos fichiers URDF et en échange je vous renvoie (ici ou en prive) la vidéo des résultats pour le fun ("pour le fun" car je ne vais pas entrainer vos robots plus de quelques heures et de ce fait les résultats ne seront pas utilisables irl).

Les contraintes sont :

  • Le robot est un robot à pattes/jambes (c'est pourquoi je poste ici).
  • Le fichier descripteur est au format URDF
  • Le fichier URDF lui peut être le même fichier que vousutilizez dans ROS, sans les balises gazebo de préférence.
  • Le logiciel supporte les joints en boucles que les fichiers URDF standards ne supportent pas mais il vous faudra me préciser quel lien va avec quel lien, les limites du joint et l'axe.

 

 

Voilà si ça vous intéresse vous pouvez poster vos URDF, je vais privilégier les quadru (car moins long à entrainer et j'ai déjà fait pas mal de bipedes).

(Je m'engage à supprimer vos modèles URDF + réseau de neurones après l'entrainement et à ne publier les résultats sur ce forum que sous votre autorisation)

Le logiciel est en développement et donc je preshot la question : non il n'est pas encore publiquement dispo.

 

Tout ça j'ai pu l'apprendre à grace au temps passe sur le projet Walk-e donc encore merci à ceux qui ont aidé :wub:

 

A vous de faire chauffer ma carte graphique !
 




#84470 Entraînement d'un réseau de neurones artificiels grâce à un algorithme d...

Posté par yougo sur 07 juin 2017 - 09:51 dans Programmation

(Je tiens à préciser que le sujet n'est pas fini, je suis un peu débordé en ce moment mais ne vous en faites pas tout est déjà fait il ne manque que la rédaction)




#84349 Entraînement d'un réseau de neurones artificiels grâce à un algorithme d...

Posté par yougo sur 03 juin 2017 - 11:04 dans Programmation

Salut tout le monde,
 
il n'y a pas mal de temps, j'avais dit sur un de mes post que j’avais fait un petit réseau de neurones entraîné par un algorithme d'évolution génétique dans le but d'en apprendre un peu plus sur le sujet. 
Il se trouve que je l'ai fini il y a environ 2 mois, mais était donné que c’était ce que je pressentais aux TP d'ISN pour mon BAC je ne pouvais pas le poster... 
Mais bon les épreuves sont finies donc je vous fais un petit explicatif de comment ça marche tout ça :
(juste un détail : je suis un AMATEUR et je rédige cet article pour vous donc ne me lapider pas si je fais une faute)    )
 
 
Avant de présenter le projet que nous allons réalisé il est nécessaire de se pencher sur les questions suivantes : 
 
1) qu’est-ce qu’un réseau de neurones artificiel ?
 
Comme son nom le laisse pensée, un réseau neuronal artificiel est un ensemble d’algorithmes très fortement inspiré de la biologie. Le but était de simuler de façon mathématique le fonctionnement d'un neurone.
 
Nous allons donc en premier temps expliquer comment marche un neurone de façon extrêmement simplifiée (oui oui c'est de la SVT déso les gars) : 
 
les neurones sont des cellules biologiques que l'on trouve dans tout le système nerveux et notamment dans le cerveau, ces cellules sont connectées les unes aux autres.
Ces connexions sont assurées par une terminaison présente sur le neurone, nommé axone.
Par cet axone un neurone peut envoyer un signal électrique aux autres neurones 
 
Le fonctionnement d'un neurone est donc la suivante : 
 
le neurone reçoit(/ou pas) un signal électrique venant des axones d'autres neurones, auquel il est lui-même connecté, et en fonction des signaux reçus , il fait quelque chose de plutôt « binaire » c'est-à-dire :
-soit il envoie aucun courant dans son axone 
-soit il envoie un signal électrique dans son axone
 
 
Capture d’écran (188).png
 
 
On sait aussi que la connexion entre les neurones, qui se fait par les synapses et peut-être plus ou moins forte. Lors d'un apprentissage, la force de ces connexions se modifie. 
Comme nous le montre la nature, connecter des milliards de neurones avec les bonnes connexions synaptiques peut créer un outil très puissant, mais surtout flexible qui est capable de résoudre de nombreux problèmes : le cerveau (c'est sur ça dépend chez qui hein) !
 
 
 
 
 
Maintenant que nous avons vu le fonctionnement approximatif d'un neurone, on peut extrapoler à des fonctions mathématiques qui ont pour but de reproduire leurs fonctionnements : les neurones artificiels.
 
Nous allons directement commencer par un exemple :
 
Créons donc un neurone avec 3 entrées (dendrites) qui vont envoyer des chiffres, X1,2 et 3, soit 1 ou 0 et affecter un coefficient à chacune des entrées (poids) P1, 2 et 3.
 
Le coefficient va modéliser la force de connexion des neurones, le neurone va donc additionner les valeurs reçues par les 3 entrées en prenant en compte les coefficients.
 
Capture d’écran (189).png
 
Si la somme est inférieure à un seuil « S » le neurone renvoyé 0 et si elle est supérieure au seuil le neurone renvoyé 1 (on aurait pu choisir n’importe quels autres chiffres) 
 
Et voilà nous avons reconstruit un neurone artificiel !! (wow) !
 
Pour résumer : le neurone artificiel est une fonction mathématique qui prend un nombre N d'entrée, en fait la somme avec un nombre N de coefficients, puis rend un nombre en sortie. 
 
C'est bien joli tout çà mais à quoi ça sert ?!?
 
Et bien tout comme dans le cerveau, ici un seul neurone n'est pas très efficace, mais combiner en réseau on peut obtenir des résultats de « cerveaux artificiels » très puissant, on peut par exemple citer le fameux algorithme de « deep learning » de Google, qui si on lui donne une image en entrée, est capable de dire ce qu'il y a dans l'image, avec une certitude de plus de 95 % (ce qui est meilleur que le meilleur des humains) !
 
Mais le grand problème avec ce type de programme c'est que l'on va devoir trouver justement tous les « poids » et « seuils » qui relient tous les neurones entrés eux.
Pour trouver les bonnes valeurs, on pourrait par exemple tout chercher a la main, mais il y a différents moyens d'y arriver, ici nous allons le faire grâce à un algorithme dévolution génétique. (à savoir que dans le monde des neurones l’apprentissage par rétroaction est bien plus coté, mais bon j'ai rien compris donc voila...)
 
 
 
2) Qu’est-ce qu’un algorithme dévolution génétique ?
 
Les algorithmes d’évolution génétiques sont inspirés de la théorie de l’évolution de Darwin et utilisent le principe selon lequel, l’entité la plus apte à résoudre un problème va survirer et se reproduire, pour participer à l'évolution de l’espèce.
 
Si nous pouvons utiliser un algorithme de ce type, alors nous n'aurions aucun problème pour trouver tous les poids et seuils, il suffirait de laisser un programme tourner et tester plein de configuration, les croiser, éliminer les moins aptes et garder les plus forts, pour au final trouver les poids qui marchent le mieux ! 
 
Et bien c'est ce qu'on va faire tout de suite ! 
 
 
En fait non je vous arrête tout de suite ! je n'ai pas poser le cadre du projet ! 
 
donc voila le but est de reproduire quelque chose de semblable a cette vidéo (elle m'avait fait triper quand j'ai découvert ça, certains membres s'en souviendront )  
 
 
Le but de ce programme est de faire évoluer des intelligences artificielles (que l'on va appeler poissons arbitrairement) dans un panel (qui sera leur environnement). 
Chacune des IA est construite d'une manière différente grâce à un réseau de neurones qui leur est propre.
Le programme consiste à trouver un poisson avec le réseau de neurone le plus adapté à résoudre un problème. 
Le problème est que: le poisson doit trouver une manière de se déplacer la plus optimisée pour manger le plus de nourriture possible en 10 secondes. 
 
Pour trouver un « super poisson » on va créer beaucoup de poissons différents, les tester puis faire reproduire ceux ayants mangés le plus de nourritures tandis que ceux qui en mangent le moins seront remplacés par les enfants des meilleurs. 
Ce procédé est appelé « algorithme d’évolution génétique » il reproduit en fait le principe de sélection naturelle comme quoi un individu apte à résoudre le problème va survivre et propager sa « solution » au fil du temps 
 
une petite image du projet :
 
Capture d’écran (175).png
 
on voit des "poissons" plus gros que d'autres car ils ont plus manger, donc que leurs réseau de neurones artificiel est plus performant 
 
 
3) Les algos le code et tout le tralala
 
le projet est en JAVA et est présenté par classes. Je ne peut pas commenter toutes les lignes du programme donc je présente les algos principaux , à vous de les adapter à votre langage de prédilection ;)
 
 
1) La classe environnement 
 
C'est la classe qui contrôle toutes les autres classes elle a pour but de faire tout marcher correctement et surtout dans le bon ordre,
Cette classe est un algorithme d'évolution génétique, il recrée dans l'ordre, toutes les étapes de la sélection naturelle , sur les poissons. 
 
Capture d’écran (176).png
 
1- il crée les individus et les nourritures
2- il les laisse évoluer librement 10 secondes 
3- il compare les scores grâce à la classe sélection
4- il accouple et fait muter les poissons grâce à la classe sélection
 
La classe est une boucle  qui se répète infiniment (thread) après avoir appelé la classe tableaux et créé les nourritures et les poissons
 
Capture d’écran (177).png
 
2) La classe tableau 
 
Nous avons fait une classe nommée « tableaux »  qui a pour but de créer tous les tableaux et de garantir le stockage de toutes les informations et l’accès par toutes les autres classes, c'est elle qui va donc le plus remplir la RAM .
Elle stocke : 
 
-Un tableau 2D (2*50 cases) pour les positions des nourritures 
-Un tableau 2D (100*8 cases ) pour les 8 gènes de chaque poissons
-Un tableau 2D (100*3) pour les 3 parties de couleurs RGB de chaque poissons 
-Un tableau 1D qui stocke les scores de chaque poissons
-Elle stocke aussi une variable booléenne qui sert d’interrupteur aux poissons
 
Les tableaux sont tous remplis plus ou moins sur le même modèle : 
prenons l’exemple du remplissage aléatoire du tableau qui contient les couleurs de chaque poissons. On a un algorithme qui part de la colonne 0 , (celle ou va se servir le poisson 0 ), jusqu’à la 99 , à chaque colonne il va entrer un entier aléatoire compris entre 0 et 255 dans les 3 lignes puis passer a la suivante.
 
Capture d’écran (178).png
 
Capture d’écran (179).png
 
Le tableau des scores quant à lui n'est pas rempli car de base un tableau créé est rempli de 0 , ce qui nous arrange car tous les poissons commencent avec un score de 0.
 
La classe tableau , en plus de la méthode principale , se compose de pleins de méthodes getters/setters , qui quand elles sont appelées dans d'autres classes permettent de modifier les tableaux de cette classe. C'est grâce à ces méthodes qu'il y a échange entre les classes. 
 
 
3) La Classe sélection : 
 
En réalité elle s’occupe aussi des accouplements.
 
A) La méthode sélection:
 
Voyons comment nous sommes parvenus à classer les poissons en fonction de leurs codes : 
C'est en fait l'utilisation d'un tableau intermédiaire qui permet ça , 
1 ère ligne : nom 
deuxième : score 
on le remplis la première fois avec tous les scores des poissons :
 
Capture d’écran (180).png
 
Puis on prend les premières cases et on regarde si le score qui correspond est plus grand dans la case d'après , si oui , alors on « pose » notre score dans cette case , puis on continue avec la case plus grande jusqu’à arriver a la fin du tableau : 
 
Capture d’écran (181).png
 
Capture d’écran (182).png
 
on peut noter l'utilisation de variables de stockage temporaires ce qui est très commun en programmation 
 
 
(je vous conseille de taper trie a bulle sur Wikipédia ils ont un GIF très bien pour expliquer le concept :                  https://fr.wikipedia...i/Tri_à_bulles                                )
 
 
B) La méthode accouplement :
 
Ensuite on procède a la partie accouplement , qui en réalité n'est rien d'autre que le remplacement du code génétique des plus mauvais pas celui du plus fort , c'est donc une méthode dite élitiste.
 
Comment ça marche :
 
on va prendre dans le tableau que l'on viens de classer la dernière case, donc celle avec le score le plus important , on peut donc avoir son nom.
 
Une fois que l'on a récupéré le nom du poisson le plus « performant » 
on va procéder à un nombre « d’accouplement »  aléatoire qui va simplement remplacer 
 
Capture d’écran (183).png
 
4) La  classe objets :
 
Cette classe était là pour ajouter des nourritures qui font perdre du score et que les bettes auraient dû esquiver mais ça ne s'est pas fait , elle est donc un peu inutile car elle ne sert qu'en superclasse de la classe nourritures.
 
5) La classe nourritures :
 
Une classe nourritures descend donc de la classe objet mais ce n'est pas si important 
ce sont de simples ronds affichés dans la fenêtre, leurs positions sont stockées dans un tableau à 2 dimensions qui se trouve dans une classe qui regroupe tous les tableaux utilisés dans l’ensemble du programme . 
Cette classe objet est appelée dans la classe Environnement, qui est en quelque sorte la classe qui regroupe toutes les autres, elle est appelée autant de fois que l'on veut de nourritures  (50 fois ici ).
 
Leurs positions d'affichage est définie grâce au tableau qui stocke leurs position dans la classe tableau 
 
 
6) La classe poissons :
 
C'est la deuxième classe objet que nous verrons ici , bien plus compliquée , c'est justement la classe qui va créer tous les poissons.
Cette classe va se servir de tableaux qui sont créés dans la classe Tableaux  :
 
1 tableau dans lequel des poids ont été mis aléatoirement, à chaque poisson , est assigné 8 poids. Ce tableau va nous être très utile lors des croisements notamment.  
 
1 tableau des couleurs , pour rendre le programme plus compréhensible , chaque poisson aura de base une couleur qui lui est définie de la même façon que les poids.
Des chiffres compris entre 0 et 255 (rgb) sont mis aléatoirement dans un tableau , et chaque poisson utilise ses 3 cases qui lui sont assignées pour savoir de quelle couleur ils seront. 
 
1 tableau de scores , encore une fois une case est assignée à un poisson , et si le poisson détecte qu'il a manger une nourriture , il va ajouter +1 au chiffre qui se trouve dans le tableau de score , ceci va être utile lors de la sélection des poissons , pour savoir lequel est le plus performant.
 
Une fois que les poissons ont récupérés tour ces tableaux et les valeurs
 
les poissons sont une classe spéciale qui contient une implémentation de « runnable »
ce qui veut dire que la méthode principale de cette classe va se répéter sans arrêt ,
 voici un schéma de ce qu'il va se passer :
 
Capture d’écran (184).png
 
A) La méthode scanner : 
 
Elle prend en entrée le X et Y du poisson et va ressortir le X et Y de la nourriture la plus proche.
Pour faire ça on utilise une formule de maths simple : 
 
√[(Xpoisson - Xnouriture)² +(Ypoisson+Ynourriture)²] = distance Poisson/Nourriture 
 
on va donc scanner le tableau des positions de nourriture colonne par colonne, 
 
si colonne actuelle sup colonne précédente , alors  on enregistre les coordonnées x y dans des variables de stockage temporaire 
 
 c'est aussi dans la méthode scanner qu'on regarde si le poisson a « mangé »  la nourriture , en effet on va regarder si la distance retenue entre nourriture et poisson n'est pas inférieure au diamètre du poisson , dans ce cas le poisson a donc mangé la nourriture , on ajoute donc +1 dans sa case au tableau de nourritures 
 
B) La méthode Réseau Neuronal.
 
C'est la méthode la plus difficile à comprendre de tout le programme malgré qu’elle soit simple à coder, il faut bien comprendre le principe de réseau de neurones.
 
le neurone artificiel est une fonction mathématique qui prend un nombre N d'entrée , en fait la somme avec un nombre N de coefficient (1 par entrée)  , puis rend un nombre en sortie.
 
Les coefficients multiplicateurs représentent la force de connexion entre les neurones, elle est comprise entre -1,1 et 1,1 
 
elle prend en entrée 4 variables :
les position X et Y du poisson 
les positions X et Y de la nourriture la plus proche trouvée par la méthode scanner
 
Ces quatre données sont entrées dans les 2 neurones et additionnées entre elles après avoir étaé multipliées par les poids qui se trouvent dans le tableau prévu a cet effet 
 
Capture d’écran (185).png
 
En fonction du résultat de ces deux sommes ont va réaliser des actions différentes : 
Se déplacer de 1px  vers la gauche ou la droite 
Se déplacer de 1px  vers le haut ou le bas  
 
J'ai fait un schéma pour se rendre compte  du réseau :
 
Capture d’écran (186).png
 
7) La classe chrono :
 
Cette classe sert à rafraîchir la fenêtre à intervalle régulier, elle supprime toutes les entités présentes dans la fenêtre toutes les 1 ms ce qui permet de voir des mouvements fluides à l’écran 
 
 
8) La classe fenêtre :
 
Rien de très spectaculaire encore , la classe fenêtre fait une fenêtre dans laquelle elle affiche un panel qui est rempli par la classe environnement. 
 
9) La classe Main:
 
C'est la classe qui se lance quand on clique sur le programme, 
elle lance la classe tableau puis la classe fenêtre , qui va déclencher une cascade d'appel de classes : Environnement, poissons , nourritures, chrono , ect ect …  
 
 
 
Voila voila les amis c'est mon expérience perso que j'essaye d'expliquer ici, il doit y avoir des centaines d'autre façons de faire bien plus cool, c'est juste pour vous montrer comment moi j'ai fait !
 
Si il y a des endroit pas clairs dites le moi que j’arrange tout ça, sachez que je fais de mon mieux , c'est très dur de vulgariser des sujets comme ça...   
 
Le code complet arrive bientôt, mais j'ai un problème : les commentaires sont remplis de fautes ! je dois donc arranger ça !
Et aussi je suis pas super douer en français et je viens d'écrire ça aux alentours de minuit donc si vous voyez des fautes partout signalez le ;)   
 
 
 
 
 
 
 
 
 
 
 
 

 

 

 

 

 

 

 

 




#85433 Entraînement d'un réseau de neurones artificiels grâce à un algorithme d...

Posté par yougo sur 05 juillet 2017 - 02:22 dans Programmation

Merci  :ignat_02:  mais ce n'est pas fini

 

Je viens d'avoir les résultats de ça, j'ai eu 20/20 




#85505 Entraînement d'un réseau de neurones artificiels grâce à un algorithme d...

Posté par yougo sur 06 juillet 2017 - 09:34 dans Programmation

Merci, 

 

R2D2 : 

 

Les algos de npl sont extrêmement prisés, je ne suis absolument pas encore apte a faire ça, mais la recherche la dessus avance, le problème c'est qu'il vous faut une grannnnnnnde base de données. il est bien plus simple de faire comprendre une image qu'une phrase. 

 un petit lien si tu aimes lire : 

http://u.cs.biu.ac.il/~yogo/nnlp.pdf

 

c'est sympa mais je n'ai pas fini ;)

 

Didier :

 

* C'est le principe, si le poisson est encore là , c'est car il est parmi les meilleurs. Si il fait parti des meilleurs c'est juste car ses gènes font de lui ce qu'il est. 

 

Le poisson en fait ne sais pas se comporté, il faut faire abstraction du "savoir"  si tu es la ce n'est pas car tu "sais" respiré et que tu as décidé de le gardé, c'est juste que si tu ne lavais pas fait, tu ne serais pas la et toute ta descendance serait aussi éliminée.

 

Il faut vraiment voir le principe du darwinisme a travers cet algo. si le poisson 2 est la en train de manger, ce n'est pas car il en a décidé ainsi , c'est juste que sans ça, il ne serait pas la !

 

* J'ai plusieures versions de l'algo, mais dans beaucoup de versions le poisson 2 ne vas pas changé entre les deux générations, mais par contre on va prendre ses gènes et les faire mutés puis les transférés dans un autre poisson qui a fait un mauvais score, il y a donc des mutations du meilleur poisson qui sont testés, mais on le conserve quand même vivant au cas ou les mutations ne soient pas viables. 

 

*Le poisson ne connais pas du tout le comportement de la génération 17 , puisque la encore les comportements sont juste le résultat d'un assemblage génétique. Le poisson va juste reprendre les mêmes gènes que le précédent. Un comportement n'est pas mesurable, on ne peut pas le stocké sous formes de données, en revance la structure d'un individu, qui elle régi son comportement est (dans se cas ) facilement stockable car elle est générée par le code génétique.

 

Par exemple, si je t'étudie, prends des notes sur ce que tu fais toutes ta vie , il y peu de chances pour que j'arrive a créer un clone de toi avec les mêmes comportements (même si je pouvais hein on est dans la métaphore). par contre si je sais la structure de ton cerveau et de t'es gênes, fastoche ! (bon après il y à a une histoire de vécu ect mais bon c'est un exemple)  

 

voila j’espère clarifié un peu, si c'est pas le cas dites le il n'y a pas de soucis ;)