gtsam_points
Loading...
Searching...
No Matches
compact.hpp
1// SPDX-License-Identifier: MIT
2// Copyright (c) 2021 Kenji Koide (k.koide@aist.go.jp)
3#pragma once
4
5#include <Eigen/Core>
6
7namespace gtsam_points {
8
9template <int D>
10inline Eigen::Matrix<float, 6, 1> compact_cov(const Eigen::Matrix<double, D, D>& cov) {
11 Eigen::Matrix<float, 6, 1> compact;
12 compact << cov(0, 0), cov(1, 0), cov(1, 1), cov(2, 0), cov(2, 1), cov(2, 2);
13 return compact;
14}
15
16inline Eigen::Matrix4d uncompact_cov(const Eigen::Matrix<float, 6, 1>& compact) {
17 Eigen::Matrix4d cov = Eigen::Matrix4d::Zero();
18 cov(0, 0) = compact(0);
19 cov(1, 0) = cov(0, 1) = compact(1);
20 cov(1, 1) = compact(2);
21 cov(2, 0) = cov(0, 2) = compact(3);
22 cov(2, 1) = cov(1, 2) = compact(4);
23 cov(2, 2) = compact(5);
24 return cov;
25}
26
27} // namespace gtsam_points