40 state_ << x(0), x(1), 0, 0;
61 Eigen::Vector2d measure;
62 measure << z[0], z[1];
75 std::exp(-0.5 * residual.transpose() * cov.inverse() * residual) /
76 std::sqrt(2 * M_PI * cov.determinant());
91 measure_matrix_ << 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1;
100 state_ << x(0), x(1), 0, x(2);
106 float sin_theta =
static_cast<float>(std::sin(
state_(3)));
107 float cos_theta =
static_cast<float>(std::cos(
state_(3)));
125 Eigen::Vector3d measure;
126 measure << z[0], z[1], z[2];
127 Eigen::Matrix3d cov =
136 state_ << z[0], z[1], 0, z[2];
148 if (measures_.size() <
static_cast<unsigned int>(window_)) {
149 measures_.push_back(z);
151 measures_[index_] = z;
153 index_ = (index_ + 1) % window_;
154 int n =
static_cast<int>(measures_.size());
156 state_.resizeLike(z);
157 state_.setConstant(0);
158 for (
int i = 0; i < n; ++i) {
159 state_ += measures_[i];
163 variance_.resize(state_.rows(), state_.rows());
164 variance_.setConstant(0);
165 for (
int i = 0; i < n; ++i) {
166 auto z = measures_[i] - state_;
167 variance_ += z * z.transpose();
185 state_ = z + alpha_ * (state_ - z);
195 bool operator()(Eigen::VectorXd a, Eigen::VectorXd b)
const {
206 measures_.push_back(z);
207 std::sort(measures_.begin(), measures_.end(),
customLess);
208 if (measures_.size() >
static_cast<unsigned int>(window_)) {
209 measures_.resize(window_);
214 Eigen::VectorXd x = measures_[0];
215 for (
size_t i = 1; i < measures_.size(); ++i) {
218 x = x /
static_cast<double>(measures_.size());
void Predict(float delta_t)
void Correct(const Eigen::VectorXd &z)
Eigen::Vector4d get_state() const
Eigen::Matrix4d process_noise_
Eigen::Matrix< double, 3, 4 > measure_matrix_
Eigen::Matrix< double, 4, 3 > kalman_gain_
Eigen::Matrix< double, 4, 1 > state_
Eigen::Matrix4d variance_
Eigen::Matrix3d measure_noise_
Eigen::Matrix4d state_transition_matrix_
void SetAlpha(float alpha)
Eigen::VectorXd get_state() const
void AddMeasure(const Eigen::VectorXd &z)
void Correct(const Eigen::VectorXd &z)
Eigen::Vector4d get_state() const
Eigen::Matrix< double, 4, 1 > predict_state_
KalmanFilterConstVelocity()
Eigen::Matrix4d state_transition_matrix_
Eigen::Matrix2d measure_noise_
Eigen::Matrix< double, 4, 2 > kalman_gain_
void Init(const Eigen::VectorXd &x)
Eigen::Matrix4d variance_
Eigen::Matrix< double, 4, 1 > state_
void MagicVelocity(const Eigen::VectorXd &vel)
Eigen::Matrix4d process_noise_
Eigen::Matrix< double, 2, 4 > measure_matrix_
void Predict(float delta_t)
void MagicPosition(const Eigen::VectorXd &pos)
Eigen::VectorXd get_state() const
void AddMeasure(const Eigen::VectorXd &z)
void SetWindow(int window)
void AddMeasure(const Eigen::VectorXd &z)
void SetWindow(int window)
const Eigen::MatrixXd & get_variance() const
const Eigen::VectorXd & get_state() const
struct apollo::perception::camera::@13 customLess