ApolloAuto / apollo

An open autonomous driving platform
Apache License 2.0
24.69k stars 9.61k forks source link

Planning module frequently fails to make a driving plan #15424

Open HandsomeAIccx opened 3 weeks ago

HandsomeAIccx commented 3 weeks ago

The planning module often fails to make a driving plan. This problem occurs especially when the vehicle’s heading angle deviates slightly from the routing red line during turns. As soon as the deviation occurs, the planning module fails, and I have to exit autonomous driving and manually adjust the vehicle’s heading angle to align with the red line. After that, I can see the trajectory points generated by the planning module in Dreamview again.

I have recorded a file. Could anyone help me identify the cause of this issue? The planning failure occurs around 20 seconds in the file.Thank you very much. planning_fail.record.00000.zip

YuqiHuai commented 3 weeks ago

Based on the error messages in this record file, something went wrong here

https://github.com/ApolloAuto/apollo/blob/03e6dddcc065355281af2e7c4eb27fa8db4d919f/modules/planning/planning_component/on_lane_planning.cc#L559-L568

So this function frame_->FindDriveReferenceLineInfo(); probably returned nullptr for those error planning cycles.

https://github.com/ApolloAuto/apollo/blob/03e6dddcc065355281af2e7c4eb27fa8db4d919f/modules/planning/planning_base/common/frame.cc#L527-L538

Can you provide a bit more detail about how you were executing this scenario? Which simulator? Which map? It would be extremely hard to figure out what went wrong just by looking at the record file.


Update: I somehow came across a scenario today with almost exact symptom, and I noticed the following lines from the log file

E0605 00:35:45.536072  2392 path_optimizer.cc:49] Reference Line 0_0 is not drivable after PIECEWISE_JERK_PATH_OPTIMIZER
I0605 00:35:45.536078  2392 lane_follow_stage.cc:171] [DEBUG] after task[PIECEWISE_JERK_PATH_OPTIMIZER]:path_data:[
]
speed_data:[
]
I0605 00:35:45.536093  2392 lane_follow_stage.cc:173] [DEBUG] PIECEWISE_JERK_PATH_OPTIMIZER time spend: 27.4978 ms.
E0605 00:35:45.536103  2392 lane_follow_stage.cc:177] Failed to run tasks[PIECEWISE_JERK_PATH_OPTIMIZER], Error message: Path Optimizer failed to generate path
E0605 00:35:45.536149  2392 lane_follow_stage.cc:265] Path fallback due to algorithm failure
E0605 00:35:45.536655  2392 path_data.cc:44] Should NOT set discretized path when reference line is nullptr. Please set reference line first.
E0605 00:35:45.536665  2392 lane_follow_stage.cc:288] Speed fallback due to algorithm failure
E0605 00:35:45.536669  2392 speed_profile_generator.cc:38] Fallback using piecewise jerk speed!
W0605 00:35:45.536671  2392 speed_profile_generator.cc:41] init_v = 0, init_a = 0
W0605 00:35:45.536674  2392 speed_profile_generator.cc:47] Already stopped! Nothing to do in GenerateFallbackSpeed()
E0605 00:35:45.536715  2392 reference_line_info.cc:505] path data is empty
E0605 00:35:45.536716  2392 lane_follow_stage.cc:203] Fail to aggregate planning trajectory.
E0605 00:35:45.536722  2392 scenario.cc:79] Stage 'LANE_FOLLOW_DEFAULT_STAGE' returns error

I think this log file might allow others to help figure out the situation.

HandsomeAIccx commented 2 weeks ago

@YuqiHuai Thank you very much. I think that is an occasional error because it was solved by recompiling the planning module!

YuqiHuai commented 1 week ago

@HandsomeAIccx Hi! Glad you resolved the issue later on and I unfortunately could not help more. But based on the log I obtained this isn't an issue that recompiling is supposed to fix. It looked more like one of the tasks in the planning module failed at run-time and caused more errors later on. You likely did not run into this issue again due to non-deterministic ADS behavior. If I do find a root cause in the future I'll provide more detail here!