Aller au contenu principal

Workshop - Numpy et Matplotlib

Ce que ce chapitre apporte

  • Maîtriser les bibliothèques standards de l'ingénierie (numpy, matplotlib.pyplot).
  • Générer des données de simulation (création de vecteurs temporels et physiques).
  • Effectuer des calculs vectoriels (simuler la physique sans boucles lentes).
  • Produire des graphiques de télémétrie exploitables par les ingénieurs de piste.

Atelier à trous. Chaque bloc contient des TODO à compléter : remplacer les points de suspension, puis exécuter. NumPy, Matplotlib et SciPy sont installés dans l'éditeur du navigateur, les figures s'affichent sous le code.

Bienvenue au sein de l'équipe technique.

L'atelier se déroule au département « Performance & Stratégie » d'une écurie de course. Dans le paddock, l'intuition ne suffit pas : les décisions se prennent sur les données.

La première mission consiste à valider les outils de simulation, avec Python, le standard de l'industrie pour le calcul numérique : NumPy traite les flux de données du calculateur (ECU), et Matplotlib trace les courbes de performance.

Au travail. La prochaine session de qualifications approche.

Initialisation des Systèmes

Avant toute intervention, il faut charger les modules de calcul. C'est la procédure standard.

main.py
Sortie
>_ Prêt à exécuter…

Phase 1 : Calibrage des Capteurs (Mise en Jambe)

Briefing Technique

Nous venons d'installer un nouvel accéléromètre. Avant de l'utiliser en piste, nous devons vérifier qu'il répond correctement à une loi physique simple.

La mission : simuler une accélération linéaire parfaite. Si un véhicule accélère à 5,m/s25 , m/s^2 pendant 10 secondes, sa vitesse suit la loi V=atV = a * t. C'est un calcul trivial, qui sert à vérifier que l'environnement Python répond.

main.py
Sortie
>_ Prêt à exécuter…

Phase 2 : Analyse Sécurité

Lien Technique

Maintenant que les capteurs sont calibrés, intéressons-nous au facteur humain. Même nos meilleurs pilotes ont un délai physiologique de réaction.

Contexte

Sur la ligne de départ, chaque milliseconde compte. Cependant, pour la sécurité, nous devons connaître la distance parcourue "à l'aveugle" pendant le temps de réaction du pilote (0.5s0.5s).

Mission : Calculer cette distance pour des vitesses d'approche allant de 50 à 150 km/h.

Note : la télémétrie enregistre en m/s, alors que le tableau de bord affiche des km/h.

main.py
Sortie
>_ Prêt à exécuter…

Phase 3 : Efficacité du Freinage

Lien Technique

Le pilote a réagi, maintenant c'est à la mécanique de jouer. Nos freins atteignent 1000°C en bout de ligne droite.

Contexte

La distance de freinage n'est pas linéaire : elle augmente avec le carré de la vitesse. C'est une loi physique impitoyable que nous devons modéliser pour définir les points de freinage sur le circuit.

Mission : Simuler la courbe d'arrêt jusqu'à 250 km/h pour valider les zones de dégagement.

main.py
Sortie
>_ Prêt à exécuter…

Phase 4 : Aérodynamique et Trajectoire

Lien Technique

Nous maîtrisons le comportement au sol. Mais en cas de perte d'appui aérodynamique sur un vibreur, la voiture peut décoller.

Contexte

L'équipe sécurité demande une simulation de trajectoire balistique en cas de sortie de piste à haute vitesse sur un plan incliné.

Mission : Modéliser la hauteur (yy) en fonction de la distance (xx) pour une sortie à 180 km/h avec un angle de 15°.

y(x)=xtan(alpha)fracgx22(V0cos(alpha))2y(x) = x * \\tan(\\alpha) - \\frac{g * x^2}{2 * (V_0 * \\cos(\\alpha))^2}

Attention : NumPy calcule les angles en radians.

main.py
Sortie
>_ Prêt à exécuter…

Phase 5 : Optimisation Motrice (Power Unit)

Lien Technique

Le châssis est validé. Passons au moteur. Nous devons dire au pilote exactement quand changer de rapport pour une efficacité maximale.

Contexte

Le banc d'essai moteur nous a donné une courbe de puissance polynomiale. La puissance ne monte pas indéfiniment, elle atteint un pic puis s'effondre.

Mission : Trouver informatiquement le régime moteur (RPM) exact où la puissance est maximale.

Pour rappel, P(R)=aR2+bR+cP(R) = aR^2 + bR + c

main.py
Sortie
>_ Prêt à exécuter…

Phase 6 : Déploiement ERS (Logique de Boost)

Lien Technique

La puissance brute ne suffit pas pour doubler. Nous utilisons l'ERS (Energy Recovery System) pour un surplus de puissance temporaire.

Contexte

Le mode "Overtake" délivre un boost exponentiel, mais il est bloqué électroniquement pendant les 5 premières secondes après la sortie de virage pour éviter le patinage.

Mission : Simuler une accélération où le boost s'active brusquement à T=5sT=5s. Cela nécessite une logique conditionnelle vectorielle.

main.py
Sortie
>_ Prêt à exécuter…

Phase 7 : Analyse de Télémétrie (Statistiques de Course)

Lien Technique

La course est terminée. Le pilote prétend avoir été régulier. Les données ne mentent jamais. Vérifions cela.

Contexte

Nous avons extrait les temps au tour du dernier relais. Nous devons calculer la moyenne (performance pure) et l'écart-type (régularité). Un écart-type faible signifie un pilote constant, crucial pour la stratégie des pneus.

main.py
Sortie
>_ Prêt à exécuter…

Vérification

Vérification rapideon peut se reprendre

1.Pourquoi employer un tableau numpy plutôt qu'une liste Python pour des relevés de capteur ?

2.np.mean sur un tableau contenant un nan rend quoi ?

3.Un tableau de 1000 mesures et un tableau de 999 : que donne leur addition ?

4.Pourquoi tracer les données avant de calculer quoi que ce soit ?