ApolloAuto / apollo

An open autonomous driving platform
Apache License 2.0
25.02k stars 9.67k forks source link

path optimization and piecewise jerk optimization #9599

Closed stdpython closed 4 years ago

stdpython commented 5 years ago

hello, i have two question here.

  1. i read the EM planner paper, it use the DP to build a convex space, then optimize by QP, i think it should be great, BUT in apollo2.0, remove the qp optimization, i wonder why?
  2. the piecewise jerk optimization seems not the convex optimization, i wonder whether the it can reach the global optimum in 4000 interaction? And 4000 interaction can make sure for the succeed in path optimization? and if failed in path optimization, what will happen?
jmtao commented 4 years ago

@stdpython DP is very time consuming. Secondly, sometimes we may fail to find path(s) just because of the resolution and the position of the sampled point(s). Our current solution is : (1) find path boundaries based on map, traffic rules, and obstacles. The area inside is "drivable". (2) and then use piecewise jerk algorithm to find path(s). It fixed the above two major issues in DP solution.

stdpython commented 4 years ago

thank you for response. In DP we use heuristic speed data to measure the dynamic obstacles, but in piece_wise jerk optimization, we only map the static obstacle to build the l_i constrain. why not add dynamic obstacles constrain by using heuristic speed data like DP way.

jmtao commented 4 years ago

@stdpython when planning speed with dynamic obstacles, we still use DP.

stdpython commented 4 years ago

Ok, I see. Then how to keep path consistency between frames, In DP+QP, the cost function include minimize the path distance to last frame's path. BUT in piece_wise jerk optimization doesn't have such design, so it confuse me about the path's consistency.

stdpython commented 4 years ago

It is my mistake. EM minimization did not include the path distance to last frame's path,it minimizes distance to the DP path. AND we should keep decision consistency rather than path consistency, is is right?

HongyiSun commented 4 years ago

Our planning task is actually divided into path planning and speed planning. The change you mention was on path planning side to deal with the static obstacles with the piecewise_jerk_path_optimizer(which is QP). While on speed planning, we are still using DP + QP(piecewise_jerk_speed_optimizer) framework.

In the piecewise_jerk_path_optimizer, instead of consider the distance with last frame's path, we only consider the current state, or say the path should always consist with current state, which is enough to have the path at least smoothly connect with current state, and we don't really need to keep consistency with a future path. AND yes, we have to keep the path decision consistency trying to avoid decision change on the middle of a side pass.

DrumAliens commented 4 years ago

A couple of questions on the piecewise jerk algorithm

stdpython commented 4 years ago

@DrumAliens I didn't find any doc for the approach, and the approach does work on Frenet Frame Space.

lucianzhong commented 4 years ago

@stdpython Have you find paper or document which are helpful for the approach? I'm very confused after reading these codes.

stdpython commented 4 years ago

@lucianzhong I don't find the paper but there is an sharing report by Yajia Zhang who raise this planning algorithm. Hope it can help you. The sharing report

lucianzhong commented 4 years ago

@stdpython Thanks a lot. 非常感谢