(R) Processus gaussien pour approximer la dynamique des véhicules

 (R) Processus gaussien pour approximer la dynamique des véhicules


Il y a quelque temps, je travaillais sur la localisation avec le GPS et je pensais: pourrions-nous coder la dynamique des véhicules directement dans le noyau GP?

Je sais que les GP sont utilisés pour modéliser les paramètres dans les modèles physiques. Mais mon idée était que la trajectoire d’une voiture ressemble à un échantillon de GP lisse. Une voiture plus rapide prend des chemins plus lisses, tout comme les échelles de longueur plus longues produisent un GPS plus fluide. Au lieu de modélisationy(x) directement, j’ai utilisé la distance cumulative s comme entrée et formé deux GPS distincts:

  • x(s)
  • y(s)

Les deux utilisent un noyau RBF. Nous maximisons donc essentiellement la fonction de probabilité:

https://preview.redd.it/ksoisiw9r9ef1.png?width=430&format=png&auto=webp&s=e01f1827f3c74550f596de2ee02fe4b7d2e93178

Qui se traduit par quelque chose comme

« Compte tenu de la vitesse, à quel point est-il probable que ces points de données proviennent de ce véhicule? »

L’algorithme se passe comme ceci:

  1. Collecter des données
  2. Optimiser le noyau
  3. Construire le l(v) fonction
  4. Optimiser le tour

J’ai adapté l’échelle de longueur du noyau l En fonction de la vitesse: l(v). Pour ce faire, j’ai enregistré des données de conduite en lots à différentes vitesses constantes, optimisé le GP sur chaque lot, puis adaptez un simple l(v) relation, qui s’est avérée très linéaire.

Avec le noyau optimisé en main, vous pouvez poser des questions comme:

«Compte tenu de cette course et d’une vitesse, ma voiture peut-elle la suivre?"

Comme le GP est un modèle probabiliste, il ne donne pas de réponse binaire que nous avons demandée. Nous pourrions optimiser pour «la vitesse la plus probable» de la même manière que nous avons optimisé les échelles de longueur. Cependant, cela ressemblerait davantage à demander: «Quelle est la vitesse la plus probable que cette course peut être réalisée?», Ce qui est acceptable pour garder votre Tesla sur la route, mais pas optimale pour la course. Mon approche était de définir une tolérance acceptable pour l’écart par rapport à la racine. Avec ces contraintes en main, je gère une optimisation basée sur une fenêtre heuristique pour une raceline donnée:

https://i.redd.it/e7qteia2s9ef1.gif

Résultats?

Les temps de plan LAP exécutés par le simulateur étaient proches des tours de l’homme. Le modèle ne tenait pas compte des limites d’accélération, de sorte que les performances réelles ont légèrement échoué au plan prévu, mais je pense que cela a prouvé le concept.

Il y a beaucoup de choses qui pourraient être améliorées dans le modèle. L’une des plus grandes limites est les modèles indépendants des coordonnées X et Y. Certaines des choses que j’ai aussi essayées:

  1. Angle absolu et modèle de distance cumulative – Celui-ci considère la dynamique en termes de l’angle de cap absolu par rapport à la distance cumulative. Cela résout le problème de l’intercorrélation entre les coordonnées X et Y, mais introduit deux autres problèmes. Tout d’abord, pour revenir du domaine angle, vous devez vous intégrer. Cela entraînera des erreurs à dérive. Et même si vous ne voulez pas revenir à l’espace de trajectoire, vous perdez toujours le lien direct entre la définition d’erreur des deux domaines. Et deuxièmement, cette fonction n’est pas entièrement lisse, vous avez donc besoin d’un noyau plus chic pour capturer les fonctionnalités. Un matérn au moins.
  2. «Dépliement de la trajectoire» – c’était l’un de mes favoris, car il est le plus proche de l’analogie de la modélisation de la relation Y avec le style de route directement et ondulé. Dans le domaine d’origine, vous feriez face au problème multivaleur, où pour une seule valeur X, il peut y avoir plusieurs valeurs Y. On peut «déplier» le tour (boucle) en réduisant les angles d’angle jusqu’à ce que vous ayez déplié les points vers une fonction à valeur unique. Cela, cependant, détruit également le lien vers les valeurs d’erreur de domaine d’origine.

Voici le code et les données si vous souhaitez l’améliorer:
https://github.com/miikkasna/gpdynalgo

soumis par / U / Northafternoon4930
(lien) (Commentaires)



Source link

Related post