Hi, Ivan,

Hey, thanks for your interest!

In this case we don’t have an error function, instead we recieve the error from the invironment (the simulator). cte² is just a way to accumulate squares of cte throughout the epoch’s iterations for subsequent computing of rmse:

currentEpochError_ = sqrt(epochCumulativeError_ / epochLength_);

and use it as a metric of the error to calculate partial derivatives. Then we drive (send control actions) via PID::TotalError() function for some number of timesteps with the updated parameters, collecting cte² along the way, and evaluate again.

It might be confusing that the function that essentially calculates new steering value is called PID::TotalError(), but that’s what it is called in the starter code and I just didn’t rename.

Show your support

Clapping shows how much you appreciated Ivan Kazakov’s story.