Program Listing for File joint_state.h¶
↰ Return to documentation for file (states/joint_state.h)
#pragma once
#include <spdlog/spdlog.h>
#include "lupnt/core/definitions.h"
#include "lupnt/dynamics/dynamics.h"
#include "lupnt/filters/filter.h"
#include "lupnt/states/state.h"
namespace lupnt {
// define Params
enum EstType { ESTIMATED, CONSIDERED, FIXED };
class JointState {
private:
std::vector<State> states_;
std::vector<Ptr<Dynamics>> dynamics_;
std::vector<ParamState> params_;
std::vector<std::vector<EstType>> est_types_;
std::vector<Ptr<ProcessNoiseFunction>> proc_noise_;
MatXd est_matrix_; // K x N matrix where M is the number of estimated parameters and N is the
// number of states (N = K + M)
MatXd consider_matrix_; // M x N matrix where M is the number of consider parameters and N is
// the number of states
std::vector<std::vector<std::pair<double, double>>>
tauqs_; // Time constants and sigmas for first-order Gauss Markov
double tau_default_ = 1e12; // Default time constant for first-order Gauss-Markov
int size_ = 0;
int state_size_ = 0;
int param_size_ = 0;
int considered_param_size_ = 0;
int estimated_param_size_ = 0;
int fixed_param_size_ = 0;
int stm_size_ = 0;
public:
int GetSize() const { return state_size_ + param_size_; };
int GetStateSize() const { return state_size_; };
int GetParamSize() const { return param_size_; };
int GetStmSize() const { return stm_size_; };
int GetEstimatedParamSize() const { return estimated_param_size_; };
int GetConsideredParamSize() const { return considered_param_size_; };
int GetFixedParamSize() const { return fixed_param_size_; };
State GetState() const;
State GetStmState() const;
ParamState GetParams() const;
void Add(const State& state, Ptr<Dynamics>&& dynamics,
Ptr<ProcessNoiseFunction>&& proc_noise = nullptr,
const ParamState& param = ParamState(0), std::vector<EstType> est_types = {},
std::vector<std::pair<double, double>> tauq = {});
// void Add(State state, Ptr<DynamicsWithParams> dynamics,
// Ptr<FilterProcessNoiseFunction> proc_noise = nullptr);
FilterDynamicsFunction GetDynamicsFunction();
ProcessNoiseFunction GetProcessNoiseFunction();
MatXd GetProcessNoiseMappingMatrix();
};
} // namespace lupnt