载入中...
搜索中...
未找到
viewer.h
浏览该文件的文档.
1
11#pragma once
12
13#include "camera.h"
14#include "common_include.h"
15#include "config.h"
16#include "map.h"
17
19
26class Viewer {
27public:
28 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
29 typedef std::shared_ptr<Viewer> Ptr;
30 typedef std::vector<MapPoint::Ptr> PointsType;
31
32 Viewer(const Viewer &) = delete;
33 Viewer &operator=(const Viewer &) = delete;
34 static Ptr getInstance() {
35 static Ptr viewer(new Viewer);
36 return viewer;
37 }
38
39 void run();
40
41 void drawFrame(const Frame &frame, const float *color);
42
44 std::unique_lock<std::mutex> lck(m_mutex);
46 }
47
48 void drawImage(pangolin::GlTexture &texture);
49
50 void drawKeyFrames();
51
52 void updateFrame(Frame::Ptr frame) {
53 std::unique_lock<std::mutex> viewLck(m_mutex);
54 m_frame = frame;
55 }
56
57 void setMap(const Map::Ptr &map) { m_map = map; }
58
59 void setCamera(const Camera::Ptr &camera) { m_camera = camera; }
60
61 void drawMapPoints();
62
63 void updatePoints(PointsType &&points) {
64 std::unique_lock<std::mutex> lck(m_mutex);
65 m_points = std::move(points);
66 }
67
68 void followCurrFrame(pangolin::OpenGlRenderState &renderState);
69
70 bool getFlag() {
71 std::unique_lock<std::mutex> lck(m_mutex);
72 return m_isStop;
73 }
74
75 void setFlag() {
76 std::unique_lock<std::mutex> lck(m_mutex);
77 m_isStop = true;
78 }
79
80private:
81 Viewer() = default;
84 std::mutex m_mutex;
87 bool m_isStop = false;
88};
89
定义Camera相机类
EIGEN_MAKE_ALIGNED_OPERATOR_NEW typedef std::shared_ptr< Camera > Ptr
Definition camera.h:27
static float CURR_FRAME_COLOR[3]
定义绘制当前帧的颜色
Definition config.h:42
Frame维护了一帧内的信息
Definition map.h:76
EIGEN_MAKE_ALIGNED_OPERATOR_NEW typedef std::shared_ptr< Frame > Ptr
Definition map.h:79
EIGEN_MAKE_ALIGNED_OPERATOR_NEW typedef std::shared_ptr< Map > Ptr
Definition map.h:125
绘制激活的地图信息和前端的当前帧信息
Definition viewer.h:26
void updatePoints(PointsType &&points)
Definition viewer.h:63
Camera::Ptr m_camera
相机,用来提供相机位姿
Definition viewer.h:83
std::vector< MapPoint::Ptr > PointsType
Definition viewer.h:30
void drawFrame(const Frame &frame, const float *color)
在Pangolin中绘制Frame
Definition viewer.cc:66
bool getFlag()
Definition viewer.h:70
EIGEN_MAKE_ALIGNED_OPERATOR_NEW typedef std::shared_ptr< Viewer > Ptr
Definition viewer.h:29
Viewer & operator=(const Viewer &)=delete
void setCamera(const Camera::Ptr &camera)
Definition viewer.h:59
void setFlag()
Definition viewer.h:75
PointsType m_points
需要绘制的地图点信息
Definition viewer.h:86
static Ptr getInstance()
Definition viewer.h:34
Viewer()=default
void drawCurrFrame()
Definition viewer.h:43
void run()
Definition viewer.cc:5
void updateFrame(Frame::Ptr frame)
Definition viewer.h:52
bool m_isStop
展示线程结束标识符
Definition viewer.h:87
void followCurrFrame(pangolin::OpenGlRenderState &renderState)
Definition viewer.cc:164
Frame::Ptr m_frame
前端刚刚完成位姿估计的那一帧
Definition viewer.h:85
void drawImage(pangolin::GlTexture &texture)
绘制含有三维信息的特征点
Definition viewer.cc:117
Viewer(const Viewer &)=delete
void drawKeyFrames()
绘制地图中激活的地图点和激活的关键帧
Definition viewer.cc:137
void drawMapPoints()
在pangolin窗口中,绘制激活的地图点
Definition viewer.cc:154
void setMap(const Map::Ptr &map)
Definition viewer.h:57
std::mutex m_mutex
Viewer的互斥量维护m_frame的线程安全
Definition viewer.h:84
Map::Ptr m_map
地图,用来提供激活地图点和激活关键帧
Definition viewer.h:82
引入所有所需头文件,定义所有所需超参数
#define NAMESPACE_END
Definition common_include.h:41
#define NAMESPACE_BEGIN
Definition common_include.h:40
编写slam系统的超参数信息类
定义slam系统的数据结构包括Feature、Frame、MapPoint、Map