2020 工作日志

按天翻看 2020 年的工作日志。

61 则 第 5 / 7 页

2020-05-14

HDMAPMDK-1132 杆牌车道线端点的 id tracing

杆牌车道线端点面临的tracing问题相比较于线性object的tracing十分简单,只存在Id的映射,而没有offset和length的映射。

然而要考虑的问题也不少:

  1. Procedure
  2. Id Typing System是一个顽疾,需要想办法应对

本质上这个问题的根源在于,我们在定义Id的时候全部使用了Long Id,而MDM的定义中使用了Int,很有可能造成溢出问题。

打开这一天

2020-05-13

Bugfix: HDMAPMDK-1211 想到解法

  • 根本原因是因为产线切分不合理

原因分析

可以看到,在车道变道还没有结束时(车道中心线正在跨越车道线),就已经进行了切分,且这种切分是有可能跨越Rp的。

由于附着在lanecenter形状点上的lane border观测信息会忠实地根据几何,利用scan line的方式将两侧的车道线记录下来,没有根据语再过滤。因此在车道线跨越车道的位置,与车道线相交的车道中心线会将该车道线同时记录在左右lane border ref上

在现有的代码逻辑下,根据语义对相交车道线的border ref进行过滤时会根据车道变道类型推断出待删除的border ref

而当前逻辑在碰到这类切分的时候失效,从而导致这个问题。

解法

核心点在于找到相交车道线的变道趋势,考虑到这类切分可能跨越rp,因此过滤不应当以rp为单位进行。

  1. 首先将车道线利用edge lifting组织成path(可以为日后的graph重构考虑): Seq[LaneCenter]
  2. 找到待修正lane Center,以及待修正的lane border(这里假设这类lane Center一定是变道导致的)
  3. 根据laneCenter path计算出该LaneCenter的变道趋势
  4. 做过滤

交给了子良做

面试一人没过

打开这一天

2020-05-12

  • 面试:两个候选人均不合格,思考如何快速甄别候选人,耗时3小时
  • bugfix: HDMAPMDK-1211 删除错误border问题,在上次修复中没有修复成功 有思路了但没写完
  • 去健身了

打开这一天

2020-05-11

  • HDMAPMDK-1122 道路边缘线缺失问题没有复现,决定不再花时间调研原因
  • 代谢增长论半小时
  • Visitor重构使得它支持同起点终点的line
  • 准备了一个面试题

打开这一天

2020-05-09

PolyLine修复以及测试

PolyLine的问题主要在于有可能在PolyLine生成的时候给重复点进去,从而导致一系列几何有关segment的计算问题:

  1. 向量计算,两个重复点计算出零向量
  2. 长度计算,segment长度为0,很容易出Nan问题

于是在构造PolyLine时,对PolyLine中的点进行检查,如果有发现重复点,就抛出异常

检查出下列问题:

  • Jts中getEnd出现问题

  • Jts LinearLocation会存在normalize的问题

    val loc1 = new LinearLocation(0, 1, 1.0)
    val loc2 = new LinearLocation(0, 2, 0.0)
    
    loc1 compareTo loc2
    // the output is -1
    
  • Interpolate的时候有可能会取到两个过于近的点

打开这一天

2020-05-08

内存泄漏问题

  • 内存泄漏问题的直接原因是因为new 了野指针之后没有delet
  • 在update current position之后 map kit 调用了prepareGuidanceData,目的是找到离当前位置最近的guidance data
  • prepareGuidanceData调用了NavInfoProviderImpl::getTrafficLights & NavInfoProviderImpl::getCarParks
  • 以NavInfoProviderImpl::getTrafficLights为例,是在调用时new出NaviEventOnPath中的数据指针
  • 然而并没有delete
  • 还发现DestEvent存在这个问题

解决方案:核心在于不允许野指针存在,决定对NaviEventProvider做一个重构

  • 首先在NaviInfoProvider中添加两个field trafficlight_events & carpark_events
  • 在NaviInfoGenerator中,route updated之后更新这两个field
  • 然后在每次get的时候根据当前车辆位置做一个过滤
  • 因此要重构PathReader::getAttributes,原因在于之前的实现只考虑了相对于当前车的offset,现在需要一个相对于Path的Offset接口

打开这一天

2020-04-28

考了科一用了半天时间

HDMAPMDK-1130 宽度问题,三个问题

  1. spec规定在变道时候没有车道宽度
  2. intersecion线太长导致的split line

HDMAPMDK-1121重新修复

状态极差

打开这一天