MSCEqF
1.0
Multi State Constraint Equivariant Filter for visual inertial navigation
Toggle main menu visibility
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 Apache License, Version 2.0
7
// (the "License"); you may not use this file except in compliance with the
8
// License. You may obtain a copy of the License at
9
//
10
// http://www.apache.org/licenses/LICENSE-2.0
11
//
12
// Unless required by applicable law or agreed to in writing, software
13
// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
14
// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
15
// License for the specific language governing permissions and limitations
16
// under the License.
17
//
18
// You can contact the authors at <alessandro.fornasier@ieee.org>
19
20
#ifndef UPDATER_HPP
21
#define UPDATER_HPP
22
23
#include <unordered_set>
24
25
#include "types/fptypes.hpp"
26
#include "msceqf/options/msceqf_options.hpp"
27
#include "msceqf/filter/updater/updater_helper.hpp"
28
#include "msceqf/system/system.hpp"
29
#include "vision/track.hpp"
30
31
namespace
msceqf
32
{
37
class
Updater
38
{
39
public
:
40
Updater(
const
UpdaterOptions
& opts,
const
SystemState
& xi0);
41
53
void
mscUpdate
(
MSCEqFState
& X,
const
Tracks& tracks, std::unordered_set<uint>& ids);
54
55
private
:
66
[[nodiscard]]
bool
linearTriangulation(
const
MSCEqFState
& X,
const
Track
& track,
const
SE3& A_E, Vector3& A_f)
const
;
67
81
void
nonlinearTriangulation(
const
MSCEqFState
& X,
const
Track
& track,
const
SE3& A_E, Vector3& A_f)
const
;
82
93
void
nonlinearTriangulationResidualJacobian(
94
const
MSCEqFState
& X,
const
Track
& track,
const
SE3& A_E,
const
Vector3& A_f, VectorX& res, MatrixX& J)
const
;
95
104
void
UpdateMSCEqF(
MSCEqFState
& X,
const
MatrixX& C,
const
VectorX& delta,
const
MatrixX& R)
const
;
105
106
private
:
107
UpdaterOptions
opts_;
108
109
const
SystemState
& xi0_;
110
111
ProjectionHelperUniquePtr ph_;
112
113
std::map<uint, fp> chi2_table_;
114
115
ColsMap cols_map_;
116
117
std::vector<uint> update_ids_;
118
size_t
total_size_;
119
};
120
121
}
// namespace msceqf
122
123
#endif
// UPDATER_HPP
msceqf::MSCEqFState
this class represent the state of the MSCEqF. This includes the state of the lifted system (element o...
Definition
state.hpp:38
msceqf::SystemState
The SystemState class represent the state of the system posed on the Homogenous space.
Definition
system.hpp:37
msceqf::Updater::mscUpdate
void mscUpdate(MSCEqFState &X, const Tracks &tracks, std::unordered_set< uint > &ids)
Perform a Multi State Constraint update.
msceqf::Track
(Cache friendly) Track struct. Define a feature (labeled via a feature id) detected/tracked at differ...
Definition
track.hpp:38
msceqf::UpdaterOptions
Definition
msceqf_options.hpp:130
include
msceqf
filter
updater
updater.hpp
Generated by
1.17.0