28 {
29 double centripetal_acc_cost_sum = 0.0;
30 double centripetal_acc_cost_sqr_sum = 0.0;
31 for (int i = 0; i < lane_sequence.path_point_size(); ++i) {
32 const auto& path_point = lane_sequence.path_point(i);
33 double centripetal_acc = speed * speed * std::fabs(path_point.kappa());
34 double centripetal_acc_cost =
35 centripetal_acc / FLAGS_centripedal_acc_threshold;
36 centripetal_acc_cost_sum += centripetal_acc_cost;
37 centripetal_acc_cost_sqr_sum += centripetal_acc_cost * centripetal_acc_cost;
38 }
39 double mean_cost = centripetal_acc_cost_sqr_sum /
40 (centripetal_acc_cost_sum + FLAGS_double_precision);
41 return std::exp(-FLAGS_centripetal_acc_coeff * mean_cost);
42}