close
Skip to content

[Potential Bug][Planning] OpenSpaceRoiDeciderPark::AddBoundaryKeyPoint 中宽度来源及左右分支疑似不一致 #15794

Description

@long-tree

背景

我在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);

这里有两个地方想请确认:

  1. is_left_curb == false 时仍然调用 GetLaneLeftWidth(),看起来右侧边界没有使用右侧宽度。
  2. 变量名为 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() 这两点,是否都是预期行为?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions