RoadGradeCurvature — Pente et courbure comme proxy risque/energie

01/10/2025

Métadonnées

  • ID artefact : A026
  • Référence principale : Lin & Shi (2017), Road grade estimation based on the curvature of the vertical profile of a road.
  • Thème : simulation / detection / road-geometry
  • Liens internes :
    • Fiche de lecture : literature/notes/2018_road_grade_curvature.md
    • Corpus : ADSPlatforms2025-OpenSourceReview (à vérifier / compléter si besoin)
  • État : ébauche d’artefact – à consolider après premiers tests RS3

1. Idée centrale de l’artefact

L’article de Lin & Shi propose une méthode pour estimer la pente (road grade) à partir de la courbure du profil vertical de la route, en exploitant des données géométriques de la chaussée (profil en long) plutôt que des mesures directes de capteurs.

Pour RS3 / Telemachus, cet artefact formalise l’idée suivante :

Utiliser un modèle de profil vertical de route (altitude vs abscisse curviligne) pour dériver la pente et la courbure verticale, afin de générer (ou contrôler) des signaux IMU cohérents avec la géométrie réelle de la route, et d’enrichir les données Telemachus avec des attributs de géométrie verticale.

En pratique :

  • RS3 peut simuler un véhicule évoluant sur un profil vertical paramétré (ou issu de données réelles IGN / LIDAR).
  • À partir de ce profil, on calcule :
    • la pente locale (first derivative),
    • la courbure verticale (second derivative),
    • éventuellement des indicateurs de “sévérité” de pente et de bosse/creux.
  • Ces informations nourrissent :
    • la génération des signaux d’accélération longitudinale / verticale,
    • la détection d’événements de type “forte pente”, “sommet de côte”, “creux”, etc.,
    • des champs de géométrie route dans Telemachus (ex : road_vertical_curvature, road_grade, grade_severity_class).

2. Hypothèses et simplifications

D’après la fiche de lecture :

  • La route est modélisée comme un profil en long lisse (polynôme, clothoïde verticale, segments de cercle, etc.).
  • Les erreurs de mesure (altitude, position) sont supposées modérées et/ou filtrées.
  • On travaille le plus souvent sur un profil déjà reconstruit (par exemple via topographie, LIDAR, ou une carte d’élévation) – pas forcément en temps réel.
  • Le véhicule suit approximativement l’axe de la voie, ce qui permet d’approximer la pente longitudinale par la dérivée de l’altitude le long de la trajectoire.

Pour RS3, on reprend ces hypothèses mais :

  • on a contrôle complet sur le profil vertical (car on le génère ou on l’importe),
  • on peut injecter du bruit réaliste a posteriori si besoin,
  • on peut explorer des cas extrêmes (forte pente, dos-d’âne, cassures, etc.).

3. Design d’un module RS3 « Vertical road profile »

3.1. Entrées

  • Une description de la route sous forme de profil :
    • soit analytique : liste de segments (pentes constantes, arcs circulaires, clothoïdes verticales),
    • soit discrète : vecteur (s_i, z_i) avec s = abscisse curviligne, z = altitude.
  • Un trajet RS3 défini en fonction de s(t) (position curviligne vs temps).
  • Paramètres :
    • pas de discrétisation en s ou en t,
    • méthodes de dérivation (différences finies, filtrage Savitzky–Golay, spline…),
    • niveaux de bruit optionnels sur l’altitude.

3.2. Sorties

Pour chaque échantillon temporel RS3 (10 Hz ou plus) :

  • grade(t) : pente locale (en %, en rad ou en degrés),
  • vertical_curvature(t) : courbure verticale (ou rayon de courbure),
  • indicateurs dérivés :
    • grade_class(t) : {plat, faible pente, pente moyenne, forte pente},
    • vertical_feature(t) : {sommet, creux, rampe, contre-pente, …},
  • signaux IMU cohérents :
    • composante gravitaire projetée sur l’axe longitudinal,
    • accélération verticale liée au rayon de courbure (en combinaison avec la vitesse).

3.3. Intégration dans la pipeline RS3

  • Nouveau module : core2.road_vertical_profile ou plugin dédié :
    • inséré dans la phase de génération de la géométrie route,
    • accessible par le module de simulation IMU (pour ajouter les composantes gravitationnelles et dynamiques correctes).
  • Possibilité de surcoucher un profil vertical “idéal” avec :
    • du bruit d’altitude,
    • des erreurs de calibration IMU,
    • des biais sur la mesure de grade (comme dans la littérature).

4. Lien avec Telemachus

L’artefact A026 pousse à enrichir le modèle Telemachus avec des champs décrivant la géométrie verticale de la route :

  • Dans les tables trajectoires / samples :

    • road_grade : pente locale (float),
    • road_vertical_curvature : courbure verticale (float),
    • road_grade_class : classe discrète (string / enum),
    • éventuellement road_vertical_feature (sommet, creux, etc.).
  • Dans les tables route / segments :

    • agrégats par segment : pente moyenne, pente max, rayon de courbure minimal,
    • labels de segments critiques : “forte pente”, “dos d’âne”, “cassure verticale”, etc.

Ces champs deviennent des entrées naturelles pour :

  • des modèles de consommation/énergie (pente),
  • des modèles de risque (pente + courbure horizontale),
  • des algos de détection d’anomalies route.

5. Plan d’expérimentations RS3

Idées d’expériences concrètes à documenter :

  1. Cas d’école analytique

    • Construire quelques profils verticaux simples :
      • rampe uniforme, bosse (arc de cercle), creux, succession de rampes.
    • Simuler une trajectoire RS3 à vitesse constante.
    • Vérifier numériquement :
      • la cohérence entre grade(t) et la composante gravitaire projetée sur IMU,
      • la relation entre vertical_curvature et l’accélération verticale obtenue.
  2. Scénarios “routes réelles synthétiques”

    • Importer un profil vertical approximant une route réelle (par ex. via un petit fichier CSV synthétique).
    • Simuler plusieurs vitesses (urbaine, périurbaine, montagne).
    • Étudier l’impact de la pente :
      • sur le profil d’accélération longitudinale,
      • sur des indicateurs de confort / dynamique (p. ex. jerk vertical).
  3. Sensibilité au bruit d’altitude

    • Ajouter différents niveaux de bruit sur z(s).
    • Comparer des méthodes de lissage / dérivation (simple diff, Savitzky–Golay, spline).
    • Quantifier l’erreur sur grade et vertical_curvature.
  4. Export Telemachus

    • Générer un petit dataset RS3 + Telemachus avec :
      • champs de géométrie verticale,
      • signaux IMU correspondants.
    • S’en servir comme jeu de démonstration pour la standardisation des champs road_grade / road_vertical_curvature.

6. Liens avec d’autres artefacts / travaux

  • Lien naturel avec :
    • artefacts liés à la géométrie horizontale (road curvature, clothoïdes),
    • artefacts sur les événements de conduite (forte pente, freinage en descente…),
    • analyses de risque en courbe (combiner pente + courbure + vitesse).
  • Potentiellement utile pour :
    • un futur dataset “Road Genome” où chaque segment de route est enrichi d’attributs géométriques complets,
    • des études VAE sur la contribution de RS3 à la modélisation géométrique de la route.

7. Prochaines étapes

  • Décider si A026 reste un artefact conceptuel ou si on en fait un prototype RS3 complet (module road_vertical_profile).
  • Si oui, créer l’issue associée dans le repo RS3 (design + tâches de dev).
  • Définir précisément les champs Telemachus à ajouter / confirmer pour la géométrie verticale.
  • Documenter au moins un scénario RS3 (profil vertical + trajectoire + visualisations) pour la démonstration.