科创赛事丨赛题解析之左转绕行
场景描述
当自动驾驶汽车在规划的左转道上正常行驶时,原左转道被意外被其他障碍物占用,自动驾驶车辆无法正常左转,此时,要求自动驾驶车辆重新规划绕行线路,实现左转行驶。
场景图示
评判标准
在规定时间90秒内,自动驾驶车辆没有绕行或绕行失败(如:驶出马路、碰撞等行为),本场景计0分, 绕行成功,本场景计100分。其中:
碰撞检测规范:如果主车到障碍物的距离<=0.1,视为发生碰撞。
在路检测规范:要求主车在行驶过程中必须在路(白线范围内),超出白色则视为非在路。
评测参考
解题思路
在省赛的赛题中,有一道静态障碍物绕行的题目,只需要进行简单的调参就可以通过借道逻辑来实现障碍物的绕行。那么左转遇障绕行这道题有什么不同之处呢?从该题的场景图例可知,车辆要想要实现十字路口左转,只有两条车道可选,然而这两条车道都被静态障碍物给占用了,因此通过借道逻辑是无法计算得到绕行轨迹的,但障碍物旁边有一片空旷的区域,因此可以考虑在这个junction范围内使用Open Space算法来实现绕行。Open Spac在apollo中主要用于靠边停车与泊车场景,对于Open Spac我们做简单的了解:
打开planing>config>scenario>pull_over_config.pb.txt文件中找到:
stage_config: {stage_type: PULL_OVER_RETRY_PARKINGenabled: truetask_type: OPEN_SPACE_ROI_DECIDERtask_type: OPEN_SPACE_TRAJECTORY_PROVIDERtask_type: OPEN_SPACE_TRAJECTORY_PARTITIONtask_type: OPEN_SPACE_FALLBACK_DECIDERtask_config: {task_type: OPEN_SPACE_ROI_DECIDERopen_space_roi_decider_config {roi_type: PULL_OVERperception_obstacle_buffer: 0.5}
其中:
OPEN_SPACE_ROI_DECIDER:表示自动驾驶车辆在开放空间可行驶的区域。OPEN_SPACE_TRAJECTORY_PROVIDER :表示给自动驾驶车车辆产生一条在开放空间中可行驶的轨迹。OPEN_SPACE_TRAJECTORY_PARTITION:表示对轨迹的前进和后退进行分割。OPEN_SPACE_FALLBACK_DECIDER:表示对规划失败后的处理机制。
因此大家可以考虑采用以下两种方法来解题。
方法一:
Apollo中关于十字路口左转处理机制是在TRAFFIC_LIGHT_UNPROTECTED_LEFT_TURN场景中,该场景有3个默认的stage,如下图所示,其中,APPROACH的作用是接近十字路口并停车,CREEP的作用是放慢车辆速度,并判断当前是否可以安全通过十字路口,CRUISE的作用是如果周围环境安全的话,就按照巡航速度通过十字路口。参赛者可在该场景中增加一个stage,该stage用于处理当自动驾驶车辆在十字路口,左转道路被占用的情况下调用Open Space的算法来实现绕行,绕行成功后,即可进入CRUISE阶段。
方法二:
参考已有的场景去自行新建一个左转绕行的场景,以此来处理遇到十字路口左转场景下遇到障碍物堵路的情况。
视频教程
如果各位同学对于本题还有疑问,可在下方评论区域提问,预祝各位比赛顺利。