Ma boîte à outils

Les outils que je pratique vraiment, et sept simulations interactives à manipuler directement dans le navigateur.

Compétences techniques

Survolez une carte pour voir à quoi sert chaque outil

ROS 2

Middleware robotique. J'y architecture la communication entre capteurs, planification et actionneurs, via nœuds, topics et services.

Python

Mon langage principal pour le prototypage, la vision et le contrôle, avec NumPy, OpenCV, PyTorch et rclpy.

KiCad

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à.

Autodesk Inventor

CAO paramétrique. Je modélise pièces, assemblages et mises en plan avant impression ou usinage.

Impression 3D multi-matériaux

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.

MoveIt 2

Planification de mouvement sous ROS 2, cinématique inverse et évitement de collisions. Utilisé pour piloter et simuler des bras manipulateurs.

YOLO

Détection d'objets en temps réel. Je l'entraîne sur mes propres jeux d'images pour la reconnaissance en vision robotique.

FPGA

Logique reprogrammable en VHDL, pour les traitements parallèles trop rapides pour un microcontrôleur classique.

PCB Design

Choix des composants, routage des pistes, contraintes de signal et de puissance. Ma carte Illumine a été routée de bout en bout.

CAD

Modélisation 3D, tolérances et assemblages. La base de tout projet mécanique avant de lancer une fabrication.

FEA

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.

C/C++

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.

SPH
Metaballs
Three.js
GLSL
Temps réel
Lancer l'expérience

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.

PID
Électromagnétisme
Asservissement
Canvas 2D
Temps réel
Lancer l'expérience

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.

Lattice-Boltzmann
Thermique
Multiphysique
Canvas 2D
Temps réel
Lancer l'expérience

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.

Verlet
PBD
Aérodynamique
Three.js
Temps réel
Lancer l'expérience

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.

Dynamique véhicule
2 DDL
Résonance
Canvas 2D
Temps réel
Lancer l'expérience

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é.

Chaos
Lagrangien
Runge-Kutta 4
Canvas 2D
Temps réel
Lancer l'expérience

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.

Synchronisation
Oscillateurs couplés
Van der Pol
Kuramoto
Canvas 2D
Lancer l'expérience