De la bio avec des Lego

Présentez-nous vos créations...
Avatar de l’utilisateur
jyd80
Level 6
Level 6
 
Messages: 275
Localisation: Plön (Allemagne)
Âge: 43 ans
moceurtechnicexpert

Messagepar jyd80 » Mar Juin 26, 2018 9:49 pm

GBC = great biological computation :)

Bonjour,

Sujet un peu spécial : j'ai développé un projet Lego dans le cadre du boulot (toute excuse est bonne à prendre 8) ). La version finale sera utilisée en septembre lors d'une journée porte ouverte, dans le cadre d'une manifestation de vulgarisation scientifique. L'idée est d'illustrer avec un robot Lego (Mindstorm, hein) le fonctionnement d'un modèle très simple, utilisé en génétique, que l'on appelle "processus de Moran".

Le sujet nécessite une petite introduction. Il s'agit ici d'étudier, d'un point de vue théorique, comment évolue la diversité génétique d'une population d'individus (peu importe l'espèce en question, mais pour simplifier, on va dire des bactéries). On fait les approximations suivantes:
  • La population a une taille finie et fixe (nombre d'individus constant au cours du temps)
  • Il n'y a pas de sélection, c'est-à-dire que chaque individu au sein de la population a des chances égales de survivre et de se reproduire
On parle alors de "modèle neutre à démographie constante".
Le modèle de Moran a été introduit en 1958 (voir [1], en anglais). On introduit les caractéristiques suivantes:
  • A chaque génération t, un individu meurt
  • La place libérée est remplie par la naissance d'un nouvel individu, né d'un (de) parent(s) pris au hasard dans la population à la génération t
Ce modèle assure par construction que la population reste de taille constante. Qui plus est, vu que chaque individu a la même probabilité de décéder et que les parents de la génération suivante sont choisis au hasard, il n'y a pas de sélection. Comparé à d'autres modèles similaires, le modèle de Moran a les charactéristiques suivantes:
  • Le modèle est inter-générationnel, c'est à dire que des individus d'âge différents se côtoient à chaque génération
  • Le modèle est généralement structuré, car en général on choisit les parents parmi les "voisins" de l'emplacement libéré, c'est-à-dire là où l'individu est décédé.
En pratique ça marche comme ça: on définit un trait avec deux variantes. Dans notre cas ça sera le trait "couleur", avec les variantes "blanche" et "orange". Si on considère une population de taille 10, on a quelque chose comme ça:
Code: Tout sélectionner
0 1 0 0 1 1 1 0 1 0

Avec 0 codant les blancs et 1 les oranges.
On prend un individu au hasard, lequel décède subitement d'une mort aussi brutale qu'irréversible, par exemple le 3, qui est de couleur blanche. Ca libère donc de la place:
Code: Tout sélectionner
0 1 X 0 1 1 1 0 1 0

Ensuite on a une naissance, parce que c'est bien fait quand même la nature, et on choisit comme parent l'un des voisins, au hasard (ce sont des bactéries, qui se reproduisent par division à l'identique). Disons le 2, qui est de couleur orange. A la génération suivante, la position 3 est donc de couleur orange et ça donne:
Code: Tout sélectionner
0 1 1 0 1 1 1 0 1 0

Et ça continue encore et encore... cette fois le 6 passe à trépas:
Code: Tout sélectionner
0 1 1 0 1 X 1 0 1 0

Lequel est forcément remplacé par un nouveau 1, vu que les deux parents possible sont identiques et de couleur orange:
Code: Tout sélectionner
0 1 1 0 1 1 1 0 1 0

etc etc. Si on continue, que se passe-t-il ? Et bien on a deux états possibles, qui sont des points de non-retour:
  • soit tous les individus sont blancs (0)
  • soit tous les individus sont oranges (1)
auquel cas le système n'évolue plus, on dit qu'un des deux variants à été "fixé" dans la population et la diversité génétique est alors nulle. Autrement dit, du fait de la taille finie des populations, la diversité génétique est condamnée à être perdue, et ce d'autant plus rapidement que la taille est petite. On appelle ce méchanisme la "dérive génétique". Bref, ça c'est pour le contexte théorique. Si vous m'avez lu jusque là, je vous félicite, et pour vous récompenser je vous montre la version Lego du modèle:



Rien de bien sorcier du point de vue ingénieurie (tout ça pour ça... ;) ), pas de quoi réveiller la nuit un amateur de GBC. Cela dit le robot a présenté quelques challenges intéressant :
  • Les pertes d'adhérence des pneus entrainent un léger décalage qui s'accumule à chaque génération et du coup le tout part vite en sucette. Pour remédier à ça, j'ai mis des crémaillères et la motorisation se fait par 2 fois un triplet de 16t, pressées contre les crémaillères par des suspensions.
  • Le détecteur de couleur est assez sensible et dépend beacoup de la lumière ambiante. Le fait que les billes soient brillantes n'arrange rien. Il y a donc deux réglages manuels: la hauteur de la pince par une crémaillère (méta-pièce Arocs) et le color-sensor par vérin LA.
Les mécanismes sont en prise relativement directe: 12t sur crémaillère pour le levage, VSF sur 24t + biellette. La position de la crémaillère de réglage de hauteur de la pince est maintenue grâce à un couple 20t / 12t, la 12t étant fixée sur un levier amovible, formant un cran d'arrêt.

Au passage, le robot et les dispenseurs sont fait uniquement à partir du camion Arocs 42043 (+ bien sûr les composants électriques Mindstorm EV3). La structure elle est faite à partir de l'excavatrice 42055, et plus précisément, les pièces supplémentaires une fois le modèle B construit (y'en a quelques unes !). Les crémaillères et les pièces studful viennent en plus.

Quelques images:
Image
Image
Image
Image
Image
Image
Image
Image
Image

Voilà, c'est à peu près tout. Vu que c'est destiné à être présenté en public (et que ce sera la première fois que je ferai ce genre d'exhibition), tout commentaire et toute question sont plus que bienvenus, je m'efforcerai d'y répondre au mieux pour m'entraîner :)

[EDIT] Photos actualisées. Au passage, le touch sensor à l'opposé du bras sert en mode "calibrage": une pression déclenche la détection de la couleur, qui est indiquée par les diodes sur le boitier, ainsi que par un message sonore. Cela sert à ajuster la hauteur du color sensor en fonction de la lumière ambiante. La tête IR, quant à elle, sert à démarrer et arrêter le programme à distance avec la télécommande.

[1] https://en.wikipedia.org/wiki/Moran_process
Dernière édition par jyd80 le Mer Juin 27, 2018 9:17 pm, édité 1 fois au total.

Avatar de l’utilisateur
Anio
Administrateur
Administrateur
 
Messages: 19486
Âge: 37 ans
revieweurmoceurstarwarsexpertambassadeur

Messagepar Anio » Mar Juin 26, 2018 10:28 pm

Commentaire complètement con, mais j'assume : quand j'ai vu les boules oranges et blanches alignées dans un ordre aléatoire sur les photos, ça m'a fait penser à une épreuve de Fort Boyard. :tare:

Désolé pour cette parenthèse sans intérêt.

Vous pouvez reprendre une activité normale.
Ou poster un message plus intéressant que le mien. :lol:

edit : tu aurais une photo générale de ton MOC pour la frontpage ? :)
Think outside the box.

Tout plein de liens utiles dans mon profil ! :P

Avatar de l’utilisateur
Hugolin
Level 6
Level 6
 
Messages: 342
Localisation: Aicirits 64
Âge: 49 ans
moceurtechnicexpertvainqueurconcours2

Messagepar Hugolin » Mar Juin 26, 2018 10:39 pm

jyd80 a écrit:On prend un individu au hasard, lequel décède subitement d'une mort aussi brutale qu'irréversible

Nonnn!!!! :whine:
Pourquoi, mais pourquoi tant de cruauté, c’est trop, snif je n’en peu plus, et en plus il n’y avais pas de frites à midi aujourd’hui…
Enfin bref, j’ai besoin de repos moi. ::D:

Super projet en tout cas, j’adore. :clap:
Les explications sont bonnes, ca bouge, c’est sur que ça va plaire en expo.
Par contre j’espère que tu es patient car tu risque de passer pas mal de temps à expliquer ce que fait ton moc.
Tu devrait peut être prévoir une plaquette explicative à mettre à coté.
:)
Image

wissamms
Level 6
Level 6
 
Messages: 390
Localisation: Paris
Âge: 40 ans

Messagepar wissamms » Mar Juin 26, 2018 11:14 pm

Merci pour cette explication détaillée et bravo pour le GBC!!

Comment évolue le temps de la dérive génétique jusqu'à fixation en fonction de la taille des échantillons? Est-ce exponentiel?

Tron
Level 4
Level 4
 
Messages: 68
Localisation: Loire-Atlantique (44)
Âge: 25 ans

Messagepar Tron » Mer Juin 27, 2018 1:20 am

C'est vraiment impressionnant et tes explications sont très bien j'ai réussi à comprendre sans problème. :resp:

Donc pour le modèle de Moran si la finalité est d'avoir une dérive génétique et que par conséquent les individus d'une population se retrouvent avec les mêmes gènes (ici soit blanc ou orange) la population ne peut plus évoluer, sauf s'il y a une mutation comme tu l'explique dans la vidéo. Et je me demandais s'il était possible d'intégrer dans ton MOC cette mutation une fois que la population soit entièrement blanche ou orange ? Car je me demande dans quel cas une mutation peut avoir lieu dans un modèle de Moran sachant qu'à la fin il n'y a pus de diversité génétique. :think:

Et je me demandais aussi, dans quel cas on retrouve ce modèle parmi les organismes vivants ? :)
"Le temps est aveugle, l'Homme est stupide." Victor Hugo

Avatar de l’utilisateur
jyd80
Level 6
Level 6
 
Messages: 275
Localisation: Plön (Allemagne)
Âge: 43 ans
moceurtechnicexpert

Messagepar jyd80 » Mer Juin 27, 2018 11:33 am

Anio a écrit:Commentaire complètement con, mais j'assume : quand j'ai vu les boules oranges et blanches alignées dans un ordre aléatoire sur les photos, ça m'a fait penser à une épreuve de Fort Boyard. :tare:

Désolé pour cette parenthèse sans intérêt.

Vous pouvez reprendre une activité normale.
Ou poster un message plus intéressant que le mien. :lol:

edit : tu aurais une photo générale de ton MOC pour la frontpage ? :)

rhoooo, mais que fait la modération ? Mon prochain projet: P3R3 FOUR3T... Oui je réalise que je n'ai pas fait de photo générale, je fais ça ce soir... merci !

Hugolin a écrit:Par contre j’espère que tu es patient car tu risque de passer pas mal de temps à expliquer ce que fait ton moc.
Tu devrait peut être prévoir une plaquette explicative à mettre à coté.
:)


Oui, d'autant plus que ce sera en... Allemand! On aura aussi des apps sur ordi à côté pour jouer avec les paramètres et se rendre mieux compte.

wissamms a écrit:Comment évolue le temps de la dérive génétique jusqu'à fixation en fonction de la taille des échantillons? Est-ce exponentiel?


C'est un peu plus tordu que ça... le temps moyen de fixation d'une mutation est N * H(N - 1), où H est la série harmonique telle que H(n) = somme_[i = 1 .. n] 1 / i).

Tron a écrit:Et je me demandais s'il était possible d'intégrer dans ton MOC cette mutation une fois que la population soit entièrement blanche ou orange ? Car je me demande dans quel cas une mutation peut avoir lieu dans un modèle de Moran sachant qu'à la fin il n'y a pus de diversité génétique. :think:

Et je me demandais aussi, dans quel cas on retrouve ce modèle parmi les organismes vivants ? :)


Il est bien sûr tout à fait possible de "programmer des mutations", c'est même prévu. En pratique cependant, le taux de mutation lié à la sensibilité du color sensor a l'air relativement élevé, plus élevé que ce qu'on observe chez la plupart des organismes. Pour la seconde partie de la question, il s'agit d'un modèle et tous les modèles sont faux (mais certains sont utiles, selon le célèbre adage du statisticien George Box). Le modèle sert de référence, en pratique on l'utilise afin de savoir si ce qu'on observe dans la nature peut être expliqué par un modèle où il n'y a que du hasard (dérive génétique), ou si au contraire il y a d'autres mécanismes en jeu, tels que la sélection. L'importance relative du hasard et de la sélection fait l'objet de vifs débats qui resurgissent de temps en temps. On retrouve ces idées dans le livre "le hasard et la nécessité" du prix Nobel Jacques Monod, mais aussi dans "la vie est belle" de Stephen J Gould. Plus technique, "la théorie neutre de l''évolution moléculaire" de Motoo Kimura a mis au premier plan dans les années 70-80s le role du hasard dans la détermination de la diversité génétique. La dérive génétique affecte en gros tous les êtres vivants, à des degrés variés selon la taille de leur population, mais il y a d'autres mécanismes en jeu. Par contre, dans certains cas comme celui des espèces en voie d'extinction, les tailles de population sont si faibles que rien (ou presque) ne peut contrecarrer l'effet du hasard, vouant l'espèce à une disparition certaine par perte de diversité.

Avatar de l’utilisateur
jyd80
Level 6
Level 6
 
Messages: 275
Localisation: Plön (Allemagne)
Âge: 43 ans
moceurtechnicexpert

Messagepar jyd80 » Mer Juin 27, 2018 9:18 pm

Petite séance photo et j'ai du coup actualisé le message originel. J'ai rajouté quelques précisions supplémentaires à la fin du post. Merci encore pour vos retours :)

Avatar de l’utilisateur
Freestylopitek
Level 6
Level 6
 
Messages: 229

Messagepar Freestylopitek » Jeu Juin 28, 2018 11:40 am

Sur un principe similaire, il y à un gars qui crée des systemes binaire à partir de train duplo : http://www.cr31.co.uk/
Son but ultime étant de créer une machine de turing en train duplo :petuncable:

Avatar de l’utilisateur
boby
Level 7
Level 7
 
Messages: 620
Localisation: Nantes
Âge: 27 ans

Messagepar boby » Ven Juin 29, 2018 10:59 am

Merci pour ces superbes explications !

Juste une petite remarque : Tu aurais aussi pu utiliser un tapis roulant avec des chenilles pour augmenter la précision sur ta translation. En tout cas ça marche déjà bien !
Corentin

Mon youtube : http://www.youtube.com/user/Erysme
Actuellement en prépa, je n'ai plus beaucoup de temps pour toucher aux Lego.

Avatar de l’utilisateur
jyd80
Level 6
Level 6
 
Messages: 275
Localisation: Plön (Allemagne)
Âge: 43 ans
moceurtechnicexpert

Messagepar jyd80 » Ven Juin 29, 2018 12:52 pm

boby a écrit:Tu aurais aussi pu utiliser un tapis roulant avec des chenilles pour augmenter la précision sur ta translation.


Oui, j'y ai pensé mais:
  • Les chenilles caoutchouc sont trop petites, donc il en aurait fallu 4 pour avoir une bonne stabilité, ou alors 2 chenilles + roues... (mais chariot plus complexe...)
  • Les chenilles de type excavatrice, même avec les nouveaux pattins, produisent des déplacements assez saccadés qui conduiraient à des balancements du bras du robot

Une autre approche que j'explore c'est d'avoir le robot fixe et le rack avec les billes mobile...

Avatar de l’utilisateur
MattGrinin
Level 7
Level 7
 
Messages: 657
Localisation: Banlieue toulousaine
Âge: 44 ans

Messagepar MattGrinin » Ven Juin 29, 2018 2:07 pm

Tu l'as codé comment le mindstorms ?

Avatar de l’utilisateur
jyd80
Level 6
Level 6
 
Messages: 275
Localisation: Plön (Allemagne)
Âge: 43 ans
moceurtechnicexpert

Messagepar jyd80 » Sam Juin 30, 2018 9:10 am

MattGrinin a écrit:Tu l'as codé comment le mindstorms ?


Avec le soft officiel Lego, ce qui est une vraie galère tellement il est rudimentaire et bogué... multiple sauvegardes nécessaires :s J'ai cru voir qu'il y a une API python (et C?), je vais étudier ça de plus près à l'occasion...

Nico86
Level 8
Level 8
 
Messages: 815
Localisation: Poitiers
Âge: 44 ans
collectionneur

Messagepar Nico86 » Sam Juin 30, 2018 9:42 am

jyd80 a écrit: J'ai cru voir qu'il y a une API python (et C?), je vais étudier ça de plus près à l'occasion...

Perso j'utilise RobotC. C'est du pseudo C associé à un EDI très pratique. Parce que développer un programme un tant soit peu compliqué avec le SW Lego c'est juste pas possible. Il est bien fait, mais d'une part un programme un peu long devient une usine à gaz visuellement, et d'autre part quand on connaît un langage type C c'est beaucoup plus rapide de coder que d'assembler des blocs visuellement. De mémoire la licence à vie de RobotC m'a coûté autour de 80$.

Avatar de l’utilisateur
jyd80
Level 6
Level 6
 
Messages: 275
Localisation: Plön (Allemagne)
Âge: 43 ans
moceurtechnicexpert

Messagepar jyd80 » Sam Juin 30, 2018 8:57 pm

Nico86 a écrit:Perso j'utilise RobotC. C'est du pseudo C associé à un EDI très pratique. Parce que développer un programme un tant soit peu compliqué avec le SW Lego c'est juste pas possible. Il est bien fait, mais d'une part un programme un peu long devient une usine à gaz visuellement, et d'autre part quand on connaît un langage type C c'est beaucoup plus rapide de coder que d'assembler des blocs visuellement. De mémoire la licence à vie de RobotC m'a coûté autour de 80$.


Merci pour le tuyau, je ne connaissais pas et vais y jeter un oeil, ça a l'air bien intéressant !

Avatar de l’utilisateur
MattGrinin
Level 7
Level 7
 
Messages: 657
Localisation: Banlieue toulousaine
Âge: 44 ans

Messagepar MattGrinin » Mar Juil 03, 2018 3:33 pm

Il me semble qu'il y a un truc en Java aussi (mais à confirmer)

Edit : trouvé http://www.lejos.org/ev3.php


Retourner vers Vos MOCs Technic

Qui est en ligne ?

Utilisateurs parcourant actuellement ce forum : Aucun utilisateur inscrit et 12 invités