AutoDriver Lane Change

2023-10-25 10:40
文章标签 change lane autodriver

本文主要是介绍AutoDriver Lane Change,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一.Lane Change Process

①Lane Change流程图

②Lane Change逻辑

(1)routing发送两条routes后,planning会生成两条参考线信息,一个是 forward reference line,另一条是 change lane reference line

(2)change_lane_gap_finder工具类在change lane reference line上找到一个可行的间隙,主要用来追踪障碍区和超车障碍物,该过程分为以下几步:

1.在target lane上获取范围内相关障碍物,过滤掉不影响变道的无效障碍物,然后对目标障碍物进行s坐标排序

2.寻找每一个Gap(Gap定义为一个自车大小的一个 Box),检查跟车和超车障碍物,过滤无效Gap

Gap 的合法性检查

  • 自车与目标 Gap 组成的矩形后方车辆无加速行为。

  • 自车与目标 Gap 组成的矩形前方的车辆无减速行为。

  • 自车与目标 Gap 组成的矩形内无不可穿越的物体,如实线,车辆。

Gap查找预处理:

bool ChangeLaneGapFinder::ApplyPreviousGap(

    const std::vector<ObstacleAtTime>& obstacles) {

            //检查跟车和超车后进行加速度,速度检查

                        //如果自车想超车,进行超车速度检查,因为有时候速度达到限制,无法再加速

                                 Speed_limit_upper_bound = target_ref_line_info_ ->reference_line().GetSpeedLimitFromS();

                                  kMinExtraConstraintRatio = 1.3;

                                   if(overtake_speed >speed_limit_upper_bound*kMinExtraConstraintRatio){

                                                //adc超车速度太大

                                                 return false;

                                   }

                     }

                         //评估前车间隙

                        EvaluateFollowObstacle(){

                                  //最近的前车碰撞检查

                                  if(is_committed_change_lane  && is_strict_follow_condition && follow_accel < bufffer_.min_accel()*1.0){  //缓冲最小加速度

                                           //adc跟车速度太小                                                                                              

                                           return false;

                                   }  

                      }

 //添加有效Gap

                 AddGapTag();

}

3.如果筛查的gap是无效的,找新的gap并update

4.做出跟车/超车的决策来追赶Gap

(3)假设找到了一个feasible gap,将检查是否允许变道,一旦change lane reference不允许,将标记为不可行驶

(4)分别在两条参考线上进行Planning规划

EM planner将S-L-T的三维运动规划问题通过S-L,S-T的解耦变成二维规划问题,核心过程如下:

DP Path - Path Decider - QP Path - DP Speed - Speed Decider - QP Speed - SpeedProfile

CalculateTotalCost()递推出每个节点的cost,依据max_acceleration_和max_deceleration_找到下一列可以达到的范围[next_lowest_row, next_highest_row]

采样点中最优的一串点:

(5)Planning规划完成后,将选择最佳参考线,同时还会对可行性做检查同时更新代价,选择代价最小的参考线

二.Lane Change Metric

C1:变道触发

C1-1:无后车时一直不触发LC(trigger/fn)
C1-2:变道触发时机不对(trigger/fp)
C1-3:停着不走反复触发变道

C2:变道过程

C2-1:离后车距离较近;距离前车过近
C2-2:离后车距离较远触发后中断;反复变道等
C2-3:在routing终点急刹;变道失败;
C2-4:侧前方车辆行进干涉path,ADC有横向碰撞风险

C3:变道终止

C3-1:变道被异常打断;

C4:与其他模块相关

C4-1:在变道终点没有触发reroute;
C4-2:变道过程错误出发reroute导致安全问题
C4-3:在不该变道的地方出现Dynamic Routing,导致强制C1

C5:多车道场景

C5-1:多车道变道问题

Xsim Metric:CollisionRisk、BrakeBasedOnFeeling、UnsuitableHarshBrake

三.Debug LaneChange

Lane Change分阶段完成

  • NO_CHANGE_LANE

  • PREPARE_CHANGE_LANE

  • IN_CHANGE_LANE

  • CHANGE_LANE_KEEP

  • CHANGE_LANE_FAILED

  • CHANGE_LANE_SUCCESS

Stage

测试结果指标评判

PREPARE_CHANGE_LANE

1.lane change的触发时机

2.是否误触发

IN_CHANGE_LANE

1.进入lane change的时机

(激进与保守)

2.变道是否有避让其他车辆

3.变道体感

4.变道效率,提交变道是否及时

CHANGE_LANE_FAILED

1.触发时机

2.是否误触发

3.Path是否平滑

4.体感是否平稳

5.是否有避让车辆

CHANGE_LANE_KEEP

1.状态Keep保持是否稳定

2.能否及时解除keep状态

obsGapTag

1.Gap寻找是否合适

(激进与保守)

这篇关于AutoDriver Lane Change的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/281998

相关文章

fzu 2277 Change 线段树

Problem 2277 Change Time Limit: 2000 mSec    Memory Limit : 262144 KB  Problem Description There is a rooted tree with n nodes, number from 1-n. Root’s number is 1.Each node has a value ai.

时间序列|change point detection

change point detection 被称为变点检测,其基本定义是在一个序列或过程中,当某个统计特性(分布类型、分布参数)在某时间点受系统性因素而非偶然因素影响发生变化,我们就称该时间点为变点。变点识别即利用统计量或统计方法或机器学习方法将该变点位置估计出来。 Change Point Detection的类型 online 指连续观察某一随机过程,监测到变点时停止检验,不运用到

674 - Coin Change

一道很水的DP,但我做的时候也很费劲,由于存在面值为1的时候,所以所有面额都至少有1种方法。 推导出状态方程就是 dp(V,step) += dp(V - i * coin[step],step - 1); 其中V为当前的面值,coin[step]为硬币的面额,递归边界,如果step == 0(也就是递归到硬币面额为1的时候,返回1); #include<cstdio>#include<

Flink新增特性 | CDC(Change Data Capture) 原理和实践应用

点击上方蓝色字体,选择“设为星标” 回复”资源“获取更多资源 大数据技术与架构 点击右侧关注,大数据开发领域最强公众号! 大数据真好玩 点击右侧关注,大数据真好玩! CDC简介 CDC,Change Data Capture,变更数据获取的简称,使用CDC我们可以从数据库中获取已提交的更改并将这些更改发送到下游,供下游使用。这些变更可以包括INSERT,DELETE,UPDATE等。

(Lane Deteciton-1)PersFormer

介绍 在自动驾驶中,下游模块如规划和控制通常需要将车道位置表示为正交的鸟瞰图(BEV)而不是前视图表示。使用BEV表示有助于更好地与环境中的交互式代理(如车辆、道路标志、交通灯等)对齐任务,并且与其他传感器(如LiDAR和雷达)兼容。 传统方法及其局限性: 简单投影方法:一种传统的方法是将透视视图中的车道简单地投影到BEV空间中。这种方法虽然直接,但会导致投影的车道线在高度变化的场景(如上

Unity3D DOTS系列之Struct Change核心机制详解

前言 在Unity3D的DOTS(Data-Oriented Technology Stack)体系中,Struct Change是一个核心的内存管理机制,它涉及对Entity和Component数据的重新排列和内存分配。DOTS通过ECS(Entity Component System)模型,将游戏中的对象(Entity)、属性(Component)和行为(System)分离,以数据驱动的方式

How can I change from OpenAI to ChatOpenAI in langchain and Flask?

题意:“在 LangChain 和 Flask 中,如何将 OpenAI 更改为 ChatOpenAI?” 问题背景: This is an implementation based on langchain and flask and refers to an implementation to be able to stream responses from the OpenAI

elementUI——checkbox复选框监听不到change事件,通过watch监听来解决——基础积累

今天在写后台管理系统的时候,遇到一个需求,就是要求监听复选框的change事件,场景就是:两个复选框互斥,且可以取消勾选。 就是这两个复选框可以同时都不勾选,如果勾选的话,另一个一定要取消勾选。 通过checkbox组件的change事件,是无法触发的。 可以通过watch来监听解决此问题。 比如上面的两个复选框值分别是:checked和cateChecked,可以通过监听每个值得变化

问题解决:mysql执行插入操作,报“You can change this value on the server by setting the max_allowed_packet”

文章目录 问题场景问题环境问题原因解决方案临时方案永久方案(需要重启mysql服务) 结果总结随缘求赞 问题场景 项目开发过程中,数据库是使用MYSQL。因为有一个表的字段是设置为LONGTEXT,最大可以存放 4GB的内容。而这次,在控制台执行SQL,因为大小过大,导致报错。具体报错提示如下: Packet for query is too large (11234222

朴世龙院士团队《Global Change Biology 》精确量化全球植被生产力对极端温度的响应阈值!

本文首发于“生态学者”微信公众号! 随着全球气候变暖的加剧,极端温度事件对陆地生态系统的影响日益显著。植被作为生态系统的重要组成部分,其生产力对温度变化的响应尤为敏感。然而,关于极端温度如何以及在何种程度上影响植被生产力的具体机制,科学界尚未形成统一认识。这一问题不仅关系到生态系统的健康和稳定,也直接影响到全球生物多样性和人类社会的可持续发展。 本研究通过分析2001年至2018年的生