Apollo: path optimization and piecewise jerk optimization

Created on 5 Sep 2019  ·  11Comments  ·  Source: ApolloAuto/apollo

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?
  • OS Platform and Distribution (e.g., Linux Ubuntu 16.04):
  • Apollo installed from (source or binary):
  • Apollo version (1.5, 2.0, 3.5):
Planning Question

Most helpful comment

@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

All 11 comments

@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.

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.

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

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.

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?

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.

A couple of questions on the piecewise jerk algorithm

  • is there any documentation/paper for the maths behind this approach
  • does it still make use of the Frenet Frame space

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

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

@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

@stdpython Thanks a lot. 非常感谢

Was this page helpful?
0 / 5 - 0 ratings

Related issues

lql7595 picture lql7595  ·  3Comments

chilihua picture chilihua  ·  3Comments

c-xyli picture c-xyli  ·  3Comments

YaoQii picture YaoQii  ·  3Comments

lesun90 picture lesun90  ·  3Comments