gtsam
Loading...
Searching...
No Matches
HybridValues.h
Go to the documentation of this file.
1/* ----------------------------------------------------------------------------
2
3 * GTSAM Copyright 2010, Georgia Tech Research Corporation,
4 * Atlanta, Georgia 30332-0415
5 * All Rights Reserved
6 * Authors: Frank Dellaert, et al. (see THANKS for the full author list)
7
8 * See LICENSE for the license information
9
10 * -------------------------------------------------------------------------- */
11
18
19#pragma once
20
22#include <gtsam/inference/Key.h>
25
26#include <map>
27#include <string>
28#include <vector>
29
30namespace gtsam {
31
37class GTSAM_EXPORT HybridValues {
38 private:
40 VectorValues continuous_;
41
43 DiscreteValues discrete_;
44
46 Values nonlinear_;
47
48 public:
51
53 HybridValues() = default;
54
56 HybridValues(const VectorValues& cv, const DiscreteValues& dv);
57
59 HybridValues(const VectorValues& cv, const DiscreteValues& dv,
60 const Values& v);
61
63 HybridValues(const DiscreteValues& dv, const Values& v);
64
68
70 void print(const std::string& s = "HybridValues",
71 const KeyFormatter& keyFormatter = DefaultKeyFormatter) const;
72
74 bool equals(const HybridValues& other, double tol = 1e-9) const;
75
79
81 const VectorValues& continuous() const;
82
84 const DiscreteValues& discrete() const;
85
87 const Values& nonlinear() const;
88
90 bool existsVector(Key j);
91
93 bool existsDiscrete(Key j);
94
96 bool existsNonlinear(Key j);
97
99 bool exists(Key j);
100
107 HybridValues retract(const VectorValues& delta) const;
108
113 HybridValues& insert(Key j, const Vector& value);
114
119 HybridValues& insert(Key j, size_t value);
120
128 template <typename T>
129 HybridValues& insertNonlinear(Key j, const T& value) {
130 nonlinear_.insert<T>(j, value);
131 return *this;
132 }
133
135 void insert_or_assign(Key j, const Vector& value);
136
138 void insert_or_assign(Key j, size_t value);
139
142 HybridValues& insert(const VectorValues& values);
143
146 HybridValues& insert(const DiscreteValues& values);
147
150 HybridValues& insert(const Values& values);
151
154 HybridValues& insert(const HybridValues& values);
155
160 Vector& at(Key j);
161
166 size_t& atDiscrete(Key j);
167
172 HybridValues& update(const VectorValues& values);
173
178 HybridValues& update(const DiscreteValues& values);
179
184 HybridValues& update(const Values& values);
185
190 HybridValues& update(const HybridValues& values);
191
193 VectorValues continuousSubset(const KeyVector& keys) const;
194
198
205 std::string html(
206 const KeyFormatter& keyFormatter = DefaultKeyFormatter) const;
207
209};
210
211// traits
212template <>
213struct traits<HybridValues> : public Testable<HybridValues> {};
214
215} // namespace gtsam
Factor Graph Values.
A non-templated config holding any types of Manifold-group elements.
Global functions in a separate testing namespace.
Definition chartTesting.h:28
string html(const DiscreteValues &values, const KeyFormatter &keyFormatter, const DiscreteValues::Names &names)
Free version of html.
Definition DiscreteValues.cpp:160
KeyFormatter DefaultKeyFormatter
Assign default key formatter.
Definition Key.cpp:30
FastVector< Key > KeyVector
Define collection type once and for all - also used in wrappers.
Definition Key.h:91
std::function< std::string(Key)> KeyFormatter
Typedef for a function to format a key, i.e. to convert it to a string.
Definition Key.h:35
std::uint64_t Key
Integer nonlinear key type.
Definition types.h:43
A manifold defines a space in which there is a notion of a linear tangent space that can be centered ...
Definition Group.h:37
A helper that implements the traits interface for GTSAM types.
Definition Testable.h:152
A map from keys to values.
Definition DiscreteValues.h:34
HybridValues represents a collection of DiscreteValues and VectorValues.
Definition HybridValues.h:37
HybridValues & insertNonlinear(Key j, const T &value)
Insert a nonlinear value with key j.
Definition HybridValues.h:129
bool exists(Key j)
Check whether a variable with key j exists.
Definition HybridValues.cpp:71
const VectorValues & continuous() const
Return the multi-dimensional vector values.
Definition HybridValues.cpp:56
void print(const std::string &s="HybridValues", const KeyFormatter &keyFormatter=DefaultKeyFormatter) const
print required by Testable for unit testing
Definition HybridValues.cpp:39
bool equals(const HybridValues &other, double tol=1e-9) const
equals required by Testable for unit testing
Definition HybridValues.cpp:50
bool existsDiscrete(Key j)
Check whether a variable with key j exists in DiscreteValues.
Definition HybridValues.cpp:65
const DiscreteValues & discrete() const
Return the discrete values.
Definition HybridValues.cpp:58
bool existsNonlinear(Key j)
Check whether a variable with key j exists in values.
Definition HybridValues.cpp:69
HybridValues()=default
Default constructor creates an empty HybridValues.
HybridValues retract(const VectorValues &delta) const
Add a delta config to current config and returns a new config.
Definition HybridValues.cpp:76
bool existsVector(Key j)
Check whether a variable with key j exists in VectorValues.
Definition HybridValues.cpp:63
HybridValues & insert(Key j, const Vector &value)
Insert a vector value with key j.
Definition HybridValues.cpp:82
const Values & nonlinear() const
Return the nonlinear values.
Definition HybridValues.cpp:60
VectorValues represents a collection of vector-valued variables associated each with a unique integer...
Definition VectorValues.h:73
A non-templated config holding any types of Manifold-group elements.
Definition Values.h:65