载入中...
搜索中...
未找到
g2o_types.h
浏览该文件的文档.
1#pragma once
2
3#include "common_include.h"
4#include "config.h"
5
11class PoseVertex : public g2o::BaseVertex<6, SE3d> {
12public:
13 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
14
15 void setToOriginImpl() override { _estimate = SE3d(); }
16
17 bool read(std::istream &in) override { return false; }
18
19 bool write(std::ostream &os) const override { return false; }
20
21 void oplusImpl(const double *arr) override {
22 Vec6d update;
23 update << arr[0], arr[1], arr[2], arr[3], arr[4], arr[5];
24 _estimate = SE3d::exp(update) * _estimate;
25 }
26};
27
32class PointVertex : public g2o::BaseVertex<3, Vec3d> {
33public:
34 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
35
36 void setToOriginImpl() override { _estimate = Vec3d(); }
37
38 bool read(std::istream &in) override { return false; }
39
40 bool write(std::ostream &os) const override { return false; }
41
42 void oplusImpl(const double *arr) override {
43 Vec3d update;
44 update << arr[0], arr[1], arr[2];
45 _estimate = _estimate + update;
46 }
47};
48
53class PoseEdge : public g2o::BaseUnaryEdge<2, Vec2d, PoseVertex> {
54public:
55 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
56 bool read(std::istream &in) override { return false; }
57
58 bool write(std::ostream &out) const override { return false; }
59
60 PoseEdge(const Vec3d &worldPoint, const Mat3d &K)
61 : m_point(worldPoint)
62 , m_K(K) {}
63
64 void computeError() override;
65
66 void linearizeOplus() override;
67
68private:
71};
72
77class PosePointEdge : public g2o::BaseBinaryEdge<2, Vec2d, PoseVertex, PointVertex> {
78public:
79 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
80 bool read(std::istream &in) override { return false; }
81
82 bool write(std::ostream &out) const override { return false; }
83
84 void computeError() override;
85
87 : m_K(K) {}
88
89 virtual void linearizeOplus() override;
90
91private:
93};
94
地图点顶点
Definition g2o_types.h:32
bool write(std::ostream &os) const override
Definition g2o_types.h:40
bool read(std::istream &in) override
Definition g2o_types.h:38
EIGEN_MAKE_ALIGNED_OPERATOR_NEW void setToOriginImpl() override
Definition g2o_types.h:36
void oplusImpl(const double *arr) override
Definition g2o_types.h:42
只含有位姿的一元边
Definition g2o_types.h:53
bool write(std::ostream &out) const override
Definition g2o_types.h:58
Mat3d m_K
相机的内参矩阵K
Definition g2o_types.h:70
void computeError() override
Definition g2o_types.cc:5
EIGEN_MAKE_ALIGNED_OPERATOR_NEW bool read(std::istream &in) override
Definition g2o_types.h:56
void linearizeOplus() override
Definition g2o_types.cc:13
PoseEdge(const Vec3d &worldPoint, const Mat3d &K)
Definition g2o_types.h:60
Vec3d m_point
地图点的位置信息
Definition g2o_types.h:69
位姿和地图点二元边
Definition g2o_types.h:77
EIGEN_MAKE_ALIGNED_OPERATOR_NEW bool read(std::istream &in) override
Definition g2o_types.h:80
virtual void linearizeOplus() override
Definition g2o_types.cc:39
void computeError() override
Definition g2o_types.cc:29
Mat3d m_K
相机的内参矩阵K
Definition g2o_types.h:92
bool write(std::ostream &out) const override
Definition g2o_types.h:82
PosePointEdge(const Mat3d &K)
Definition g2o_types.h:86
位姿顶点
Definition g2o_types.h:11
void oplusImpl(const double *arr) override
Definition g2o_types.h:21
EIGEN_MAKE_ALIGNED_OPERATOR_NEW void setToOriginImpl() override
Definition g2o_types.h:15
bool write(std::ostream &os) const override
Definition g2o_types.h:19
bool read(std::istream &in) override
Definition g2o_types.h:17
引入所有所需头文件,定义所有所需超参数
#define NAMESPACE_END
Definition common_include.h:41
#define NAMESPACE_BEGIN
Definition common_include.h:40
Sophus::SE3d SE3d
Definition common_include.h:57
Eigen::Matrix3d Mat3d
Definition common_include.h:50
Eigen::Vector3d Vec3d
Definition common_include.h:47
Eigen::Matrix< double, 6, 1 > Vec6d
Definition common_include.h:49
编写slam系统的超参数信息类