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寻找是否合适

(激进与保守)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Apollo车道变换是一个自动驾驶系统中的关键功能之一,它允许车辆在道路上安全地完成车道变换操作。车道变换是指车辆从当前车道切换到其他相邻车道的行为。Apollo车道变换能够基于周围环境和交通状况,智能地规划和执行车道变换动作。 Apollo车道变换的实现需要利用Apollo自动驾驶系统的传感器和算法。首先,通过使用传感器(如摄像头、激光雷达、毫米波雷达和超声波传感器等)获取车辆周围环境的数据。然后,通过利用内部的地图和定位系统来感知和跟踪车辆的位置和周围车辆的位置。 接下来,Apollo算法将根据收集到的数据和车辆状态,进行车道变换规划。它会考虑到周围车辆的位置、速度和加速度等信息,以及道路标志和限速标志等规则,并结合自身车辆的动态性能,确定合适的时机和轨迹进行车道变换。 最后,Apollo系统会利用车辆的执行控制系统,如制动、加速和转向等,实际执行车道变换动作。在执行过程中,车辆会不断根据实时的环境信息和算法的指导进行调整和优化,确保车道变换操作的安全和准确性。 综上所述,Apollo车道变换是一项复杂的任务,它涉及多个传感器和算法的协同工作,旨在确保车辆能够在高效和安全的条件下在道路上完成车道变换操作。这一功能在自动驾驶技术的发展中起到了重要的作用,可以提高车辆的自动化水平和道路行驶的舒适性。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值