背景
我在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() 这两点,是否都是预期行为?
背景
我在apollo EDU版本发现了这个问题,经确认是在Apollo11.0引入的
在阅读
OpenSpaceRoiDeciderPark::AddBoundaryKeyPoint()时,发现当前道路边界宽度的计算逻辑与非_park版本的OpenSpaceRoiDecider::AddBoundaryKeyPoint()存在不一致,且右侧边界分支疑似存在复制错误。相关代码
文件:
当前
_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);文件:
另外,在
_park版本同一个函数后续计算相邻点道路宽度时,使用的也是GetRoadLeftWidth()/GetRoadRightWidth():因此这里的
current_road_width使用GetLaneLeftWidth(),并且左右分支都取 left width,看起来与周围代码和原始实现都不太一致。请问这里的实现是有意为之吗?特别是
_park版本在当前点使用 lane-level width、相邻点使用 road-level width,以及is_left_curb == false时仍使用GetLaneLeftWidth()这两点,是否都是预期行为?