Ma boîte à outils

Voici les outils que je pratique vraiment. Vous pouvez aussi manipuler sept simulations interactives 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, puis à 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. Je m'en sers 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. C'est la base de tout projet mécanique avant la 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

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.

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

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

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.

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

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.

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

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

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

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

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.

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