MROB
SE3cov.hpp
1 /* Copyright (c) 2022, Gonzalo Ferrer
2  *
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6  *
7  * http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  *
15  * @brief SE3 compounding class
16  * @file SE3.hpp
17  *
18  * @date Created on: July, 2021
19  * @author Gonzalo Ferrer, Aleksei Panchenko
20  * g.ferrer@skoltech.ru
21  * Mobile Robotics Lab, Skoltech
22  */
23 
24 #ifndef SE3COV_HPP_
25 #define SE3COV_HPP_
26 
27 #include "mrob/matrix_base.hpp"
28 #include "mrob/SE3.hpp"
29 
37 namespace mrob
38 {
39  class SE3Cov : public SE3
40  {
41  public:
46  SE3Cov(void);
47 
54  SE3Cov(const SE3 &pose, const Mat6 &cov);
55 
59  SE3Cov(const SE3Cov &pose);
64  Mat6 cov() const;
65 
71  SE3Cov compound_2nd_order(const SE3Cov &pose) const;
72 
79  SE3Cov compound_2nd_order(const SE3 &pose, const Mat6 &cov) const; // does right hand side update
80 
86  SE3Cov compound_4th_order(const SE3Cov &pose) const;
87 
94  SE3Cov compound_4th_order(const SE3 &pose, const Mat6 &cov) const;
95 
99  void print();
100 
105  SE3Cov mul(const SE3Cov &rhs) const;
106 
111  SE3Cov operator*(const SE3Cov &rhs) const;
112 
113 
119  std::string toString() const;
120 
121  protected:
136  Mat6 covariance_;
137  };
138 
145  Mat6 curly_wedge(const Mat61& xi);
146 
147 } // end namespace
148 
149 #endif // SE3COV_HPP_
Mat6 curly_wedge(const Mat61 &xi)
Curly wedge operator.
Definition: SE3cov.cpp:146
Mat6 covariance_
This is the 6x6 covariance matrix of the current pose. Convention is , where are the orientation ang...
Definition: SE3cov.hpp:136
SE3Cov compound_2nd_order(const SE3Cov &pose) const
SE3 pose uncertainty compounding of the second order.
Definition: SE3cov.cpp:58
Definition: SE3.hpp:50
SE3Cov compound_4th_order(const SE3Cov &pose) const
SE3pose uncertainy compounding of the fourth order.
Definition: SE3cov.cpp:116
SE3Cov(void)
Default construct a new SE3Cov object.
Definition: SE3cov.cpp:30
std::string toString() const
Generates string representation of the SE3cov object.
Definition: SE3cov.cpp:139
void print()
Prints current state of pose and covariance.
Definition: SE3cov.cpp:121
SE3Cov operator*(const SE3Cov &rhs) const
Multiplication operator. Does pose covariance compounding.
Definition: SE3cov.cpp:134
Definition: SE3cov.hpp:39
SE3Cov mul(const SE3Cov &rhs) const
Multiplication method mul as an interface for compounding.
Definition: SE3cov.cpp:129
Special Euclidean (group) in 3d Is the group representing rotations and translations, that is, rigid body transformations. SE3 = {T = [R t] | R SO3 , t Re^3 } [0 1] Associated to the groups of RBT, there is the Lie algebra se3 representing the same transformation in the tangent space around the identity. Particularly, xi =[w , v] Re^6, where w Re^3 represents the rotation and v the translation. We will preserve this order in this class.
Definition: matrix_base.hpp:36
Mat6 cov() const
cov() returns current covariance matrix state
Definition: SE3cov.cpp:46