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, puis à 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. Je m'en sers 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. C'est la base de tout projet mécanique avant la 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
J'ai écrit sept simulations de physique et d'IA 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 et cliquez pour éclabousser. Dans le panneau, réglez la viscosité (de l'eau au miel), la gravité, la couleur et le nombre de particules.
Sous le capot
Environ 900 particules suivent une simulation SPH (Smoothed Particle Hydrodynamics), avec le schéma « double density relaxation » de Clavet et al. (2005). Chaque particule subit la gravité et la viscosité, appliquée par impulsions entre paires. Une relaxation de densité à double pression évite qu'elles s'agglutinent. Une grille de hachage spatial accélère le calcul, et les collisions sont projetées sur la paroi y = kx². Le rendu transforme ensuite les particules en surface continue. Un champ de densité gaussien (metaballs) est seuillé dans un shader GLSL, qui calcule les normales, la réfraction, les reflets spéculaires et l'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, puis regardez la courbe de réponse. Selon les réglages, le système se stabilise, oscille ou décroche.
Sous le capot
Le système est instable en boucle ouverte, car 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. Elle inclut un retard de bobine du premier ordre (L/R), la saturation du courant, le bruit de mesure et une dérivée filtrée. Le correcteur PID travaille autour du courant d'équilibre i_eq = x·√(mg/C), avec un anti-windup par blocage de l'intégrale. L'analyse linéarisée donne une condition de stabilité (stable si et seulement si Kp > i_eq/x₀ et Kd > 0), que les préréglages permettent de vérifier en direct.
Convection de Rayleigh-Bénard
Une couche de fluide est chauffée par le bas et refroidie par le haut. Regardez-la s'organiser en cellules, puis en panaches turbulents. Chauffez ou refroidissez localement à la souris, changez la viscosité et l'intensité du chauffage, et suivez les poussières entraînées par l'écoulement.
Sous le capot
Deux réseaux de Boltzmann couplés partagent la même grille. D2Q9 gère l'écoulement (collision BGK, parois haut et bas sans glissement, bords périodiques). D2Q5 gère 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 claque dans un vent turbulent. Attrapez-le et tirez dessus (trop fort, il se déchire). Réglez la force et la direction du vent, la gravité et la raideur, puis tournez autour de la scène en 3D.
Sous le capot
Le tissu est une grille de particules reliées par des contraintes de distance (trame, chaîne, cisaillement). Il est intégré en Verlet, puis projeté 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 naît tout seul de ce couplage. Une contrainte étirée au-delà du seuil casse et les triangles adjacents disparaissent. La déchirure se propage alors naturellement. Le rendu utilise Three.js, avec les 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 ? Essayez aussi le préréglage « amortisseur mort ».
Sous le capot
C'est le modèle classique du quart de véhicule, à 2 degrés de liberté. La masse suspendue (caisse) repose sur un ressort ks et un amortisseur cs. La masse non suspendue (roue) repose sur la raideur du pneu kt. Les équations sont écrites autour de l'équilibre statique et intégrées en semi-implicite à 960 Hz, car le pneu est raide. Le profil de route défile sous la roue à la vitesse choisie, avec quatre types de profils : pavés sinusoïdaux, bruit de valeur filtré, dos d'âne gaussiens et 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 sont lâchées ensemble, avec 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 les longueurs, les masses et la gravité, et 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. C'est la marque d'un exposant de Lyapunov positif. Le graphe du bas trace cet écart en échelle logarithmique. Il forme une droite montante tant que le chaos n'a pas tout décorrélé.
Métronomes qui se synchronisent
Cinq métronomes sont 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. À partir de phases quelconques, l'ensemble converge vers un battement commun. Le paramètre d'ordre de Kuramoto r mesure cette convergence, de 0 (désordre) à 1 (synchronisation), et il est tracé en direct.