MSCEqF 1.0
Multi State Constraint Equivariant Filter for visual inertial navigation
Loading...
Searching...
No Matches
updater.hpp
1// Copyright (C) 2023 Alessandro Fornasier.
2// Control of Networked Systems, University of Klagenfurt, Austria.
3//
4// All rights reserved.
5//
6// This software is licensed under the terms of the BSD-2-Clause-License with
7// no commercial use allowed, the full terms of which are made available
8// in the LICENSE file. No license in patents is granted.
9//
10// You can contact the authors at <alessandro.fornasier@ieee.org>
11
12#ifndef UPDATER_HPP
13#define UPDATER_HPP
14
15#include <unordered_set>
16
17#include "types/fptypes.hpp"
18#include "msceqf/options/msceqf_options.hpp"
19#include "msceqf/filter/updater/updater_helper.hpp"
20#include "msceqf/system/system.hpp"
21#include "vision/track.hpp"
22
23namespace msceqf
24{
30{
31 public:
32 Updater(const UpdaterOptions& opts, const SystemState& xi0);
33
45 void mscUpdate(MSCEqFState& X, const Tracks& tracks, std::unordered_set<uint>& ids);
46
47 private:
58 [[nodiscard]] bool linearTriangulation(const MSCEqFState& X, const Track& track, const SE3& A_E, Vector3& A_f) const;
59
73 void nonlinearTriangulation(const MSCEqFState& X, const Track& track, const SE3& A_E, Vector3& A_f) const;
74
85 void nonlinearTriangulationResidualJacobian(
86 const MSCEqFState& X, const Track& track, const SE3& A_E, const Vector3& A_f, VectorX& res, MatrixX& J) const;
87
96 void UpdateMSCEqF(MSCEqFState& X, const MatrixX& C, const VectorX& delta, const MatrixX& R) const;
97
98 private:
99 UpdaterOptions opts_;
100
101 const SystemState& xi0_;
102
103 ProjectionHelperUniquePtr ph_;
104
105 std::map<uint, fp> chi2_table_;
106
107 ColsMap cols_map_;
108
109 std::vector<uint> update_ids_;
110 size_t total_size_;
111};
112
113} // namespace msceqf
114
115#endif // UPDATER_HPP
this class represent the state of the MSCEqF. This includes the state of the lifted system (element o...
Definition state.hpp:30
The SystemState class represent the state of the system posed on the Homogenous space.
Definition system.hpp:29
Updater class. This class implements the Multi State Constraint update step of the MSCEqF filter.
Definition updater.hpp:30
void mscUpdate(MSCEqFState &X, const Tracks &tracks, std::unordered_set< uint > &ids)
Perform a Multi State Constraint update.
(Cache friendly) Track struct. Define a feature (labeled via a feature id) detected/tracked at differ...
Definition track.hpp:30
Definition msceqf_options.hpp:122