2020 Work Log

Browse the 2020 work log day by day.

61 则 第 5 / 7 页

2020-05-14

HDMAPMDK-1132 Id tracing for pole sign lane line endpoints

The tracing problem faced by pole sign lane line endpoints is much simpler compared to that of linear objects. There is only Id mapping, without offset and length mapping.

However, there are still several issues to consider:

  1. Procedure
  2. The Id Typing System is a persistent problem that needs to be addressed.

Essentially, the root of this problem is that we used Long ID for all Id definitions, while the MDM definition uses Int, which could easily cause overflow issues.

打开这一天

2020-05-13

Bugfix: HDMAPMDK-1211 found a solution

  • Root cause: unreasonable segmentation of the production line

Root cause analysis

It can be seen that segmentation occurred before the lane change was complete (the lane center line was crossing the lane line), and such segmentation may cross Rp.

Since the lane border observation information attached to the lane center shape points faithfully records the lane lines on both sides based on geometry using the scan line method without semantic filtering, the lane center line that intersects with the lane line will record that lane line simultaneously in both left and right lane border refs at the location where the lane line crosses the lane.

In the current code logic, when filtering the border refs of intersecting lane lines based on semantics, the border refs to be deleted are inferred according to the lane change type.

However, the current logic fails when encountering such segmentation, leading to this issue.

Solution

The core point is to find the lane change trend of the intersecting lane lines. Considering that such segmentation may cross the Rp, filtering should not be performed on a per-Rp basis.

  1. First, organize lane lines into paths using edge lifting (considering future graph reconstruction): Seq[LaneCenter]
  2. Find the lane center to be corrected and the lane border to be corrected (assuming that such lane centers are definitely caused by lane changes)
  3. Calculate the lane change trend of the lane center based on the lane center path
  4. Perform filtering

Assigned to Ziliang

Interviewed one person, didn’t pass.

打开这一天

2020-05-12

  • Interview: Both candidates were unqualified. Thought about how to quickly screen candidates, took 3 hours.
  • Bugfix: HDMAPMDK-1211 - Delete incorrect border issue. The previous fix did not succeed. Had an idea but didn’t finish writing.
  • Went to the gym.

打开这一天

2020-05-11

  • HDMAPMDK-1122: The issue of missing road edge lines could not be reproduced, so I decided not to spend more time investigating the cause.
  • Spent half an hour on the theory of metabolic growth.
  • Refactored Visitor to support lines with the same start and end points.
  • Prepared a set of interview questions.

打开这一天

2020-05-09

PolyLine Fix and Test

The main issue with PolyLine is that it may contain duplicate points during construction, leading to a series of segment-related geometric calculation problems:

  1. Vector calculation: Two duplicate points produce a zero vector.
  2. Length calculation: A segment length of 0 easily leads to NaN issues.

Therefore, when constructing a PolyLine, we check the points and throw an exception if any duplicate points are found.

The following issues were identified:

  • getEnd in JTS has problems.

  • LinearLocation in JTS may have normalization issues.

    val loc1 = new LinearLocation(0, 1, 1.0)
    val loc2 = new LinearLocation(0, 2, 0.0)
    
    loc1 compareTo loc2
    // the output is -1
    
  • During interpolation, two points that are too close to each other may be selected.

打开这一天

2020-05-08

Memory Leak Issue

  • The direct cause of the memory leak is that a wild pointer was new’d but never delete’d.
  • After updating the current position, MapKit called prepareGuidanceData to find the guidance data closest to the current position.
  • prepareGuidanceData invoked NavInfoProviderImpl::getTrafficLights and NavInfoProviderImpl::getCarParks.
  • Taking NavInfoProviderImpl::getTrafficLights as an example, it news a data pointer in NaviEventOnPath at call time.
  • However, there is no corresponding delete.
  • It was also found that DestEvent has the same issue.

Solution: The core principle is to disallow wild pointers, so a refactoring of NaviEventProvider was decided upon.

  • First, add two fields traffic_light_events and car_park_events in NaviInfoProvider.
  • In NaviInfoGenerator, update these two fields after the route is updated.
  • Then, during each get call, filter based on the current vehicle position.
  • Therefore, PathReader::getAttributes needs to be refactored, because the previous implementation only considered the offset relative to the current vehicle, but now an offset interface relative to the Path is required.

打开这一天

2020-04-28

Took the Subject 1 exam and it took half a day.

HDMAPMDK-1130 width issue, three problems:

  1. Spec states that there is no lane width during lane change.
  2. Split line caused by the intersection line being too long.

HDMAPMDK-1121 re-fixed.

Very poor state.

打开这一天