42 const std::array<double, 3>& end,
const double delta_s);
45 const double dkappa0,
const double theta1,
46 const double kappa1,
const double dkappa1,
47 const double delta_s);
51 auto cos_theta = [
this](
const double s) {
55 return common::math::IntegrateByGaussLegendre<N>(cos_theta, 0.0, s);
60 auto sin_theta = [
this](
const double s) {
64 return common::math::IntegrateByGaussLegendre<N>(sin_theta, 0.0, s);
69 const size_t param_index)
const {
70 auto gauss_points = common::math::GetGaussLegendrePoints<N>();
71 std::array<double, N> x = gauss_points.first;
72 std::array<double, N> w = gauss_points.second;
74 std::pair<double, double> cartesian_deviation = {0.0, 0.0};
75 for (
size_t i = 0; i < N; ++i) {
76 double r = 0.5 * x[i] + 0.5;
78 double derived_theta = DeriveTheta(param_index, r);
80 cartesian_deviation.first +=
81 w[i] * (-
std::sin(curr_theta)) * derived_theta;
82 cartesian_deviation.second += w[i] *
std::cos(curr_theta) * derived_theta;
85 cartesian_deviation.first *=
param_ * 0.5;
86 cartesian_deviation.second *=
param_ * 0.5;
89 for (
size_t i = 0; i < N; ++i) {
90 double r = 0.5 * x[i] + 0.5;
93 cartesian_deviation.first += 0.5 * w[i] *
std::cos(theta_angle);
94 cartesian_deviation.second += 0.5 * w[i] *
std::sin(theta_angle);
97 return cartesian_deviation;
101 const double ratio)
const;
104 const double ratio)
const;
107 const double r)
const;
118 double DeriveTheta(
const size_t param_index,
119 const double delta_s_ratio)
const;
121 std::array<std::array<double, 7>, 6> coef_deriv_;
Definition: quintic_spiral_path.h:37
static const size_t KAPPA1
Definition: quintic_spiral_path.h:113
PlanningContext is the runtime context in planning. It is persistent across multiple frames...
Definition: atomic_hash_map.h:25
double DeriveDKappaDerivative(const size_t param_index, const double ratio) const
Planning module main class. It processes GPS and IMU as input, to generate planning info...
static const size_t DKAPPA1
Definition: quintic_spiral_path.h:114
double Evaluate(const std::uint32_t order, const double p) const override
Definition: quintic_polynomial_curve1d.h:33
double param_
Definition: polynomial_curve1d.h:37
static const size_t DELTA_S
Definition: quintic_spiral_path.h:115
static const size_t KAPPA0
Definition: quintic_spiral_path.h:110
double DeriveKappaDerivative(const size_t param_index, const double ratio) const
Defines the templated Angle class.
QuinticSpiralPath()=default
Functions to compute integral.
static const size_t THETA1
Definition: quintic_spiral_path.h:112
double ComputeCartesianDeviationY(const double s) const
Definition: quintic_spiral_path.h:59
std::pair< double, double > DeriveCartesianDeviation(const size_t param_index) const
Definition: quintic_spiral_path.h:68
double ComputeCartesianDeviationX(const double s) const
Definition: quintic_spiral_path.h:50
static const size_t THETA0
Definition: quintic_spiral_path.h:109
static const size_t DKAPPA0
Definition: quintic_spiral_path.h:111
double DeriveD2KappaDerivative(const size_t param_index, const double r) const