Skip to content

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

@long-tree

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
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions