Compétences techniques
Survolez une carte pour voir à quoi sert chaque outil
Middleware robotique. J'y architecture la communication entre capteurs, planification et actionneurs, via nœuds, topics et services.
Mon langage principal pour le prototypage, la vision et le contrôle, avec NumPy, OpenCV, PyTorch et rclpy.
Conception de circuits imprimés en open source, de la schématique au routage jusqu'à la vérification DRC. Toutes mes cartes passent par là.
CAO paramétrique. Je modélise pièces, assemblages et mises en plan avant impression ou usinage.
Fabrication additive multi-matériaux avec supports solubles et mélange souple/rigide. Je passe du modèle à la pièce fonctionnelle en une journée.
Planification de mouvement sous ROS 2, cinématique inverse et évitement de collisions. Utilisé pour piloter et simuler des bras manipulateurs.
Détection d'objets en temps réel. Je l'entraîne sur mes propres jeux d'images pour la reconnaissance en vision robotique.
Logique reprogrammable en VHDL, pour les traitements parallèles trop rapides pour un microcontrôleur classique.
Choix des composants, routage des pistes, contraintes de signal et de puissance. Ma carte Illumine a été routée de bout en bout.
Modélisation 3D, tolérances et assemblages. La base de tout projet mécanique avant de lancer une fabrication.
Analyse par éléments finis sous Abaqus ou Inventor Nastran. Je valide la tenue d'une pièce et j'étudie la convergence du maillage avant de produire.
Programmation embarquée temps réel sur microcontrôleur, quand Python est trop lent ou trop indirect.
Conception
CAO, modélisation 3D et optimisation structurelle
Prototypage
Impression 3D multi-matériaux et fabrication rapide
Développement
Code embarqué et robotique
Le coin labo
Sept simulations de physique et d'IA, écrites pour le plaisir de voir les équations bouger. Tirez sur les curseurs et observez.
S'ouvre dans un nouvel onglet, plus confortable sur ordinateur.
Fluide dans un paraboloïde
Un liquide simulé en temps réel dans un verre parabolique. Touillez-le avec la souris, cliquez pour éclabousser, et réglez tout dans le panneau : viscosité (de l'eau au miel), gravité, couleur, nombre de particules…
Sous le capot
Sous la surface, ~900 particules suivent une simulation SPH (Smoothed Particle Hydrodynamics, schéma « double density relaxation » de Clavet et al., 2005) : gravité, viscosité par impulsions entre paires, relaxation de densité avec double pression (anti-agglutinement), le tout accéléré par une grille de hachage spatial, et collision projetée sur la paroi y = kx². Le rendu transforme ensuite ces particules en surface continue : champ de densité gaussien (metaballs) seuillé dans un shader GLSL qui dérive normales, réfraction, reflets spéculaires et effet Fresnel directement sur le GPU.
Lévitation magnétique asservie
Une bille en acier maintenue en l'air par un électroaimant piloté en boucle fermée. Réglez Kp, Ki et Kd en direct, perturbez la bille, changez sa masse ou bruitez le capteur, et regardez la courbe de réponse : le système se stabilise, oscille… ou décroche.
Sous le capot
Un vrai problème de mécatronique : le système est instable en boucle ouverte (la force magnétique F = C·(i/x)² croît quand la bille approche). La simulation intègre la dynamique m·ẍ = m·g − F à 480 Hz, avec retard de bobine du premier ordre (L/R), saturation du courant, bruit de mesure et dérivée filtrée. Le correcteur PID travaille autour du courant d'équilibre i_eq = x·√(mg/C), avec anti-windup par blocage de l'intégrale. L'analyse linéarisée (stable ssi Kp > i_eq/x₀ et Kd > 0) se vérifie en direct avec les préréglages.
Convection de Rayleigh-Bénard
Une couche de fluide chauffée par le bas, refroidie par le haut : regardez-la s'organiser en cellules puis en panaches turbulents. Chauffez ou refroidissez localement à la souris, jouez sur la viscosité et l'intensité du chauffage, suivez les poussières entraînées par l'écoulement.
Sous le capot
Deux réseaux de Boltzmann couplés sur la même grille : D2Q9 pour l'écoulement (collision BGK, parois haut/bas sans glissement, bords périodiques) et D2Q5 pour la température (advection-diffusion, plaques à température imposée). Le couplage de Boussinesq injecte une poussée verticale gβ·(T−T₀) dans l'équilibre de collision : au-delà du seuil critique, la conduction pure devient instable et les cellules de convection apparaissent. Les traceurs sont advectés par interpolation bilinéaire du champ de vitesse.
Tissu masse-ressort dans le vent
Un drapeau qui claque dans un vent turbulent. Attrapez-le, tirez dessus (trop fort et il se déchire), réglez la force et la direction du vent, la gravité, la raideur… et tournez autour de la scène en 3D.
Sous le capot
Le tissu est une grille de particules reliée par des contraintes de distance (trame, chaîne, cisaillement), intégrée en Verlet puis projetée façon Position Based Dynamics. Le vent applique à chaque triangle une force aérodynamique F = n·(n·v_rel)·|v_rel|·k, où v_rel tient compte de la vitesse du tissu, le claquement du drapeau émerge tout seul de ce couplage. Une contrainte étirée au-delà du seuil casse et les triangles adjacents disparaissent : la déchirure se propage naturellement. Rendu Three.js avec normales recalculées à chaque image.
Suspension quart-de-véhicule
Une roue, un ressort, un amortisseur et un quart de caisse sur une route qui défile. Réglez la raideur et l'amortissement, changez de revêtement, envoyez un nid-de-poule, et lisez le verdict : la caisse filtre-t-elle la route ? Le préréglage « amortisseur mort » vaut le détour.
Sous le capot
Le modèle quart-de-véhicule classique à 2 degrés de liberté : masse suspendue (caisse) sur ressort ks + amortisseur cs, masse non suspendue (roue) sur la raideur du pneu kt, équations écrites autour de l'équilibre statique et intégrées en semi-implicite à 960 Hz (le pneu est raide). Le profil de route défile sous la roue à la vitesse choisie : pavés sinusoïdaux, bruit de valeur filtré, dos d'âne gaussiens, nids-de-poule en demi-cosinus. Les indicateurs sont calculés en direct : fréquence propre f₀ = √(ks/ms)/2π, amortissement réduit ζ = cs/2√(ks·ms), et RMS de l'accélération de caisse comme critère de confort.
Pendule double chaotique
Deux barres articulées lâchées ensemble, et une nuée de pendules pâles partis à un cheveu près. Regardez-les rester confondus, puis diverger d'un coup. Attrapez les masses à la souris, changez longueurs, masses et gravité, ralentissez le temps.
Sous le capot
Le double pendule suit ses équations lagrangiennes complètes, intégrées par un schéma de Runge-Kutta d'ordre 4 à 480 Hz. Sans frottement l'énergie se conserve, ce que l'affichage vérifie en direct (dérive quasi nulle). C'est un système hamiltonien non linéaire, déterministe mais chaotique. Une quinzaine de copies partent à moins d'un millième de radian les unes des autres, et l'écart entre elles grandit de façon exponentielle, la signature d'un exposant de Lyapunov positif. Le graphe du bas trace cet écart en échelle logarithmique, une droite montante tant que le chaos n'a pas tout décorrélé.
Métronomes qui se synchronisent
Cinq métronomes lancés à des rythmes quelconques sur une même planche posée sur des rouleaux. Sans rien toucher, ils finissent par battre ensemble. Bloquez la planche et ils redeviennent indépendants, désaccordez-les et la synchronisation lâche.
Sous le capot
Chaque métronome est un pendule entretenu par un échappement, modélisé à la Pantaleone par un terme de Van der Pol qui fixe l'amplitude du tic-tac. Le seul couplage passe par la planche mobile : quand un balancier pousse d'un côté, la planche recule et entraîne tous les autres. Les N balanciers et la planche forment un système d'équations résolu explicitement puis intégré en Runge-Kutta 4 à 480 Hz. De phases quelconques, l'ensemble converge vers un battement commun, ce que mesure le paramètre d'ordre de Kuramoto r (de 0, désordre, à 1, synchronisation), tracé en direct.