


Une analyse approfondie de la stratégie de changement de voie d'Apollo et de son application pratique
1. Introduction
1.1. La fonction du changement de voie
En termes simples, la fonction du changement de voie est de sélectionner l'une des lignes de référence parmi les lignes de référence à sélectionner pour être utilisée par les modules de planification suivants.
Il est à noter que le code de changement de voie open source d'Apollo a été fortement réduit, ne laissant qu'un simple cadre. De nombreuses fonctions, telles que le changement de voie actif, le changement de voie passif (en raison d'obstacles), la machine d'état relativement complète, la fenêtre de changement de voie et la sélection d'écart, etc., manquent. Cet article technique affiche uniquement le contenu du framework existant. Concernant le contenu des autres fonctions de changement de voie, veuillez attendre avec impatience les articles suivants
1.2. Machine d'état de changement de voie
La machine d'état de changement de voie actuelle d'Apollo est la suivante :
Il y a quelques points à noter à propos la machine d'état :
- Le IN_CHANGE_LANE comprend ici à la fois les étapes d'exécution du changement de voie et de préparation du changement de voie. Dans des circonstances normales, Apollo adopte d'abord la méthode de commutation de ligne de référence, puis d'exécution de l'action de changement de voie. adoptera également la méthode d'exécution du changement de voie en premier. L'action réside dans la méthode de changement de ligne de référence (l'avantage est qu'au moment où la ligne de référence est changée, la distance latérale de votre propre voiture est proche de 0).
- Le code actuel ne reflète pas le moment où le changement de voie échouera. Il y a également des raisons de croire que cela est dû à la suppression du code concerné.
- L'état complet du changement de voie doit au moins inclure : la préparation du changement de voie, la voie. exécution du changement, maintenance du changement de voie, annulation du changement de voie, achèvement du changement de voie et autres statuts.
2. Analyse du code
2.1.Processus global
Chemin de code pertinent : modules/planification/tâches/décideurs/lane_change_decider. /http://lane_change_decider.cc
- Processing
reference_line_info
est une exception vide.reference_line_info
为空的异常情况. - 如果配置了强制换道
reckless_change_lane
为true
, 则直接更新 Reference Line. - 获取上一帧的换道状态
prev_status
, 刚进入程序时, 可能prev_status
没有状态信息(!prev_status->has_status()
), 此时直接认为处于换道完成状态. - 如果
reference_line_info
的数量为 1(即has_change_lane
为false
), 说明自车处在巡迹状态, 自车当前所在的车道拥有唯一的车道线, 周围没有可变车道, 所以直接更新换道状态即可. - 切换换道的状态机
- 上一帧处在换道状态
ChangeLaneStatus::IN_CHANGE_LANE
: 如果上一帧自车所在的 Lane 和这一帧所在的 Lane 相同, 说明自车还在往目标车道上走. 反之如果上一帧自车所在的 Lane 和这一帧所在的 Lane 不同, 说明自车已经在目标车道上了, 切换已经完成. - 上一帧处在换道失败状态
ChangeLaneStatus::CHANGE_LANE_FAILED
: 如果换道失败, 则冻结状态一段时间, 然后切换到正在换道状态, 为下一次换道做准备. - 上一帧处在换道完成状态
ChangeLaneStatus::CHANGE_LANE_FINISHED
: 换道成功后同样冻结一段时间, 然后切换到正在换道状态, 为下一次换道做准备. 这里冻结时间是为了避免频繁换道.
2.2. 安全检查
IsClearToChangeLane
reckless_change_lane
est true
, puis mettez directement à jour la ligne de référence.- Obtenez la voie du cadre précédent change state
prev_status
, lorsque vous entrez dans le programme pour la première fois, il peut s'agir deprev_status
n'a aucune information d'état (!prev_status->has_status()
), à ce moment-là, c'est directement considéré que le changement de voie est terminé - Si
reference_line_info
est 1 (c'est-à-direhas_change_lane
estfalse
), indiquant que le véhicule est en état de patrouille, et la voie où se trouve actuellement le véhicule a la seule ligne de voie, il n'y a pas de voies variables autour, il suffit donc de mettre à jour directement l'état de changement de voie
- Le cadre précédent était dans le. état de changement de voie
ChangeLaneStatus::IN_CHANGE_LANE
: Si ci-dessus Si la voie où le véhicule se trouve dans un cadre est la même que la voie où il se trouve dans ce cadre, cela signifie que le véhicule continue de marcher vers le voie cible. Au contraire, si la voie où se trouve le véhicule dans le cadre précédent est différente de la voie où se trouve le véhicule dans ce cadre, cela signifie que le véhicule s'est déjà déplacé sur la voie cible, le commutateur s'est déplacé. été terminé. 🎜🎜L'image précédente était dans un état d'échec de changement de voieChangeLaneStatus::CHANGE_LANE_FAILED
: si le changement de voie échoue, l'état sera gelé pendant un certain temps, puis passera à l'état de changement de voie . Préparez-vous pour le prochain changement de voie. 🎜🎜L'image précédente est dans l'état d'achèvement du changement de voieChangeLaneStatus::CHANGE_LANE_FINISHED
: une fois le changement de voie réussi, il se bloquera également pendant un certain temps, puis changera à l'état de changement de voie pour le prochain changement de voie. Préparez-vous aux changements de voie ici pour éviter les changements de voie fréquents 🎜2.2. p>IsClearToChangeLane
détermine si le changement de voie est de sécurité.🎜🎜🎜Cette méthode de jugement de sécurité ne prend pas en compte les obstacles virtuels (Virtual Obstacles) et les obstacles statiques (Static Obstacles).🎜🎜Calculez la projection des obstacles dynamiques sur le Ligne de référence. La signification géométrique de la projection est celle indiquée dans la figure ci-dessous :🎜 🎜🎜🎜🎜
- Si votre voiture change de voie
IsChangeLanePath
, utilisez la relation de projection calculée ci-dessus pour ignorer en dehors de la voie de la ligne de référence cible obstacles.IsChangeLanePath
, 利用上面计算的投影关系来忽略目标参考线的车道之外的障碍物.
- 判断障碍物的行驶方向是否和自车相同
same_direction
. 根据障碍物与自车的行驶方向的关系和速度关系分别计算前向安全距离和后向安全距离.
- 如果自车和障碍物之间的距离大于上面计算的安全距离, 则认为可以安全换道的.
HysteresisFilter
是一种 Open Close 逻辑, 目的是增加安全判断结果的稳定性(上一帧判断结果认为是安全的, 那么这一帧就更倾向于给出是安全的判断, 反之亦然).
2.3. 更新 Reference Line
需要重写的内容是:LaneChangeDecider::PrioritizeChangeLane
- 输入:
<span> </span>is_prioritize_change_lane
. 如果is_prioritize_change_lane
为true
, 则找自车要切换的目标参考线. 反之如果is_prioritize_change_lane
为false
, 则找自车当前位置所在的 Lane 所在的参考线.
-
reference_line_info->splice(reference_line_info->begin(),*reference_line_info, iter)
;将步骤 1 找到的iter
所指向的参考线放在链表的最前面. 由于 Planning 后续模块使用的都是reference_line_info().front()
, 所以链表的最前面就表示当帧就是使用的参考线. splice
的使用详细说明见C++ 基础.
- 输出:
ReferenceLineInfo
Déterminez si l'obstacle se déplace dans la même direction que le véhiculesame_direction
. Calculer séparément en fonction de la relation entre l'obstacle et la direction et la vitesse de conduite du véhicule Distance de sécurité avant et distance de sécurité arrière.
Si la distance entre le véhicule et l'obstacle est supérieure à la distance de sécurité calculée ci-dessus, il est considéré comme sécuritaire de changez de taoïste. HysteresisFilter
est une sorte de logique Open Close, le but est d'augmenter la stabilité du résultat du jugement de sécurité (le résultat du jugement de la trame précédente est considéré comme sûr, alors ceci frame sera plus enclin à donner un jugement sûr, et vice versa).
2.3 Mettre à jour la ligne de référence
Le contenu qui doit être réécrit est : LaneChangeDecider : :PrioritizeChangeLane
🎜🎜Input :<span> </span>is_prioritize_change_lane
. Ifis_prioritize_change_lane
est true
, puis recherchez la ligne de référence cible à changer. Sinon, si is_prioritize_change_lane
est false
, puis recherchez la ligne de référence de la voie où se trouve la position actuelle de la voiture.🎜🎜reference_line_info->splice(reference_line_info->begin(),* reference_line_info, iter)
; Modifiez le iter
La ligne de référence pointée est placée au début de la liste chaînée. Depuis la planification des modules suivants, utilisez reference_line_info().front(), donc le devant de la liste chaînée Cela signifie que le cadre est la ligne de référence utilisée.<span> </span><code style="background-color: rgb(231, 243, 237); padding: 1px 3px ; border-radius : 4px ; overflow-wrap : break-word ; text-indent : 0px ; display : inline-block;">splice
Pour des instructions détaillées, voir les bases de C++.🎜🎜Sortie : ReferenceLineInfo
liste chaînée. 🎜🎜🎜🎜🎜🎜Lien original : https://mp.weixin.qq.com/s/IQkBV8iadaU4Qy70F3Xs3Q🎜
IsChangeLanePath
, utilisez la relation de projection calculée ci-dessus pour ignorer en dehors de la voie de la ligne de référence cible obstacles.IsChangeLanePath
, 利用上面计算的投影关系来忽略目标参考线的车道之外的障碍物.same_direction
. 根据障碍物与自车的行驶方向的关系和速度关系分别计算前向安全距离和后向安全距离.HysteresisFilter
是一种 Open Close 逻辑, 目的是增加安全判断结果的稳定性(上一帧判断结果认为是安全的, 那么这一帧就更倾向于给出是安全的判断, 反之亦然).需要重写的内容是:LaneChangeDecider::PrioritizeChangeLane
<span> </span>is_prioritize_change_lane
. 如果is_prioritize_change_lane
为true
, 则找自车要切换的目标参考线. 反之如果is_prioritize_change_lane
为false
, 则找自车当前位置所在的 Lane 所在的参考线.reference_line_info->splice(reference_line_info->begin(),*reference_line_info, iter)
;将步骤 1 找到的iter
所指向的参考线放在链表的最前面. 由于 Planning 后续模块使用的都是reference_line_info().front()
, 所以链表的最前面就表示当帧就是使用的参考线. splice
的使用详细说明见C++ 基础.ReferenceLineInfo
same_direction
. Calculer séparément en fonction de la relation entre l'obstacle et la direction et la vitesse de conduite du véhicule Distance de sécurité avant et distance de sécurité arrière.HysteresisFilter
est une sorte de logique Open Close, le but est d'augmenter la stabilité du résultat du jugement de sécurité (le résultat du jugement de la trame précédente est considéré comme sûr, alors ceci frame sera plus enclin à donner un jugement sûr, et vice versa).
Le contenu qui doit être réécrit est : LaneChangeDecider : :PrioritizeChangeLane
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Écrit ci-dessus et compréhension personnelle de l'auteur Le Gaussiansplatting tridimensionnel (3DGS) est une technologie transformatrice qui a émergé dans les domaines des champs de rayonnement explicites et de l'infographie ces dernières années. Cette méthode innovante se caractérise par l’utilisation de millions de gaussiennes 3D, ce qui est très différent de la méthode du champ de rayonnement neuronal (NeRF), qui utilise principalement un modèle implicite basé sur les coordonnées pour mapper les coordonnées spatiales aux valeurs des pixels. Avec sa représentation explicite de scènes et ses algorithmes de rendu différenciables, 3DGS garantit non seulement des capacités de rendu en temps réel, mais introduit également un niveau de contrôle et d'édition de scène sans précédent. Cela positionne 3DGS comme un révolutionnaire potentiel pour la reconstruction et la représentation 3D de nouvelle génération. À cette fin, nous fournissons pour la première fois un aperçu systématique des derniers développements et préoccupations dans le domaine du 3DGS.

Hier, lors de l'entretien, on m'a demandé si j'avais posé des questions à longue traîne, j'ai donc pensé faire un bref résumé. Le problème à longue traîne de la conduite autonome fait référence aux cas extrêmes dans les véhicules autonomes, c'est-à-dire à des scénarios possibles avec une faible probabilité d'occurrence. Le problème perçu de la longue traîne est l’une des principales raisons limitant actuellement le domaine de conception opérationnelle des véhicules autonomes intelligents à véhicule unique. L'architecture sous-jacente et la plupart des problèmes techniques de la conduite autonome ont été résolus, et les 5 % restants des problèmes à longue traîne sont progressivement devenus la clé pour restreindre le développement de la conduite autonome. Ces problèmes incluent une variété de scénarios fragmentés, de situations extrêmes et de comportements humains imprévisibles. La « longue traîne » des scénarios limites dans la conduite autonome fait référence aux cas limites dans les véhicules autonomes (VA). Les cas limites sont des scénarios possibles avec une faible probabilité d'occurrence. ces événements rares

0. Écrit à l'avant&& Compréhension personnelle que les systèmes de conduite autonome s'appuient sur des technologies avancées de perception, de prise de décision et de contrôle, en utilisant divers capteurs (tels que caméras, lidar, radar, etc.) pour percevoir l'environnement et en utilisant des algorithmes et des modèles pour une analyse et une prise de décision en temps réel. Cela permet aux véhicules de reconnaître les panneaux de signalisation, de détecter et de suivre d'autres véhicules, de prédire le comportement des piétons, etc., permettant ainsi de fonctionner en toute sécurité et de s'adapter à des environnements de circulation complexes. Cette technologie attire actuellement une grande attention et est considérée comme un domaine de développement important pour l'avenir des transports. . un. Mais ce qui rend la conduite autonome difficile, c'est de trouver comment faire comprendre à la voiture ce qui se passe autour d'elle. Cela nécessite que l'algorithme de détection d'objets tridimensionnels du système de conduite autonome puisse percevoir et décrire avec précision les objets dans l'environnement, y compris leur emplacement,

L'article de StableDiffusion3 est enfin là ! Ce modèle est sorti il y a deux semaines et utilise la même architecture DiT (DiffusionTransformer) que Sora. Il a fait beaucoup de bruit dès sa sortie. Par rapport à la version précédente, la qualité des images générées par StableDiffusion3 a été considérablement améliorée. Il prend désormais en charge les invites multithèmes, et l'effet d'écriture de texte a également été amélioré et les caractères tronqués n'apparaissent plus. StabilityAI a souligné que StableDiffusion3 est une série de modèles avec des tailles de paramètres allant de 800M à 8B. Cette plage de paramètres signifie que le modèle peut être exécuté directement sur de nombreux appareils portables, réduisant ainsi considérablement l'utilisation de l'IA.

La prédiction de trajectoire joue un rôle important dans la conduite autonome. La prédiction de trajectoire de conduite autonome fait référence à la prédiction de la trajectoire de conduite future du véhicule en analysant diverses données pendant le processus de conduite du véhicule. En tant que module central de la conduite autonome, la qualité de la prédiction de trajectoire est cruciale pour le contrôle de la planification en aval. La tâche de prédiction de trajectoire dispose d'une riche pile technologique et nécessite une connaissance de la perception dynamique/statique de la conduite autonome, des cartes de haute précision, des lignes de voie, des compétences en architecture de réseau neuronal (CNN&GNN&Transformer), etc. Il est très difficile de démarrer ! De nombreux fans espèrent se lancer dans la prédiction de trajectoire le plus tôt possible et éviter les pièges. Aujourd'hui, je vais faire le point sur quelques problèmes courants et des méthodes d'apprentissage introductives pour la prédiction de trajectoire ! Connaissances introductives 1. Existe-t-il un ordre d'entrée pour les épreuves de prévisualisation ? R : Regardez d’abord l’enquête, p

Titre original : SIMPL : ASimpleandEfficientMulti-agentMotionPredictionBaselineforAutonomousDriving Lien article : https://arxiv.org/pdf/2402.02519.pdf Lien code : https://github.com/HKUST-Aerial-Robotics/SIMPL Affiliation de l'auteur : Université des sciences de Hong Kong et technologie Idée DJI Paper : cet article propose une base de référence de prédiction de mouvement (SIMPL) simple et efficace pour les véhicules autonomes. Par rapport au cent agent traditionnel

Écrit à l'avant et point de départ Le paradigme de bout en bout utilise un cadre unifié pour réaliser plusieurs tâches dans les systèmes de conduite autonome. Malgré la simplicité et la clarté de ce paradigme, les performances des méthodes de conduite autonome de bout en bout sur les sous-tâches sont encore loin derrière les méthodes à tâche unique. Dans le même temps, les fonctionnalités de vue à vol d'oiseau (BEV) denses, largement utilisées dans les méthodes de bout en bout précédentes, rendent difficile l'adaptation à davantage de modalités ou de tâches. Un paradigme de conduite autonome de bout en bout (SparseAD) centré sur la recherche clairsemée est proposé ici, dans lequel la recherche clairsemée représente entièrement l'ensemble du scénario de conduite, y compris l'espace, le temps et les tâches, sans aucune représentation BEV dense. Plus précisément, une architecture clairsemée unifiée est conçue pour la connaissance des tâches, notamment la détection, le suivi et la cartographie en ligne. De plus, lourd

La détection de cibles est un problème relativement mature dans les systèmes de conduite autonome, parmi lesquels la détection des piétons est l'un des premiers algorithmes à être déployés. Des recherches très complètes ont été menées dans la plupart des articles. Cependant, la perception de la distance à l’aide de caméras fisheye pour une vue panoramique est relativement moins étudiée. En raison de la distorsion radiale importante, la représentation standard du cadre de délimitation est difficile à mettre en œuvre dans les caméras fisheye. Pour alléger la description ci-dessus, nous explorons les conceptions étendues de boîtes englobantes, d'ellipses et de polygones généraux dans des représentations polaires/angulaires et définissons une métrique de segmentation d'instance mIOU pour analyser ces représentations. Le modèle fisheyeDetNet proposé avec une forme polygonale surpasse les autres modèles et atteint simultanément 49,5 % de mAP sur l'ensemble de données de la caméra fisheye Valeo pour la conduite autonome.
