[Potential Bug][Planning] OpenSpaceRoiDeciderPark::AddBoundaryKeyPoint 中宽度来源及左右分支疑似不一致
Author: long-treeCreated May 19, 2026Updated Jun 5, 2026
背景
我在apollo EDU版本发现了这个问题,经确认是在Apollo11.0引入的
在阅读 OpenSpaceRoiDeciderPark::AddBoundaryKeyPoint() 时,发现当前道路边界宽度的计算逻辑与非 _park 版本的 OpenSpaceRoiDecider::AddBoundaryKeyPoint() 存在不一致,且右侧边界分支疑似存在复制错误。
相关代码
文件:
modules/planning/tasks/open_space_roi_decider_park/open_space_roi_decider_park.cc当前 _park 版本实现:
double current_road_width
= is_left_curb ? nearby_path.GetLaneLeftWidth(check_point_s)
: nearby_path.GetLaneLeftWidth(check_point_s);这里有两个地方想请确认:
is_left_curb == false时仍然调用GetLaneLeftWidth(),看起来右侧边界没有使用右侧宽度。- 变量名为
current_road_width,但这里使用的是GetLaneLeftWidth(),而不是 road-level width。
作为对照,非 _park 版本的对应实现为:
double current_road_width =
is_left_curb ? nearby_path.GetRoadLeftWidth(check_point_s)
: nearby_path.GetRoadRightWidth(check_point_s);文件:
modules/planning/tasks/open_space_roi_decider/open_space_roi_decider.cc另外,在 _park 版本同一个函数后续计算相邻点道路宽度时,使用的也是 GetRoadLeftWidth() / GetRoadRightWidth():
double previous_road_width = is_left_curb
? nearby_path.GetRoadLeftWidth(check_point_s - previous_distance_s)
: nearby_path.GetRoadRightWidth(check_point_s - previous_distance_s);
double next_road_width = is_left_curb
? nearby_path.GetRoadLeftWidth(check_point_s + next_distance_s)
: nearby_path.GetRoadRightWidth(check_point_s + next_distance_s);因此这里的 current_road_width 使用 GetLaneLeftWidth(),并且左右分支都取 left width,看起来与周围代码和原始实现都不太一致。
请问这里的实现是有意为之吗?特别是 _park 版本在当前点使用 lane-level width、相邻点使用 road-level width,以及 is_left_curb == false 时仍使用 GetLaneLeftWidth() 这两点,是否都是预期行为?
Source: ApolloAuto/apollo