123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187 |
- #ifndef MAPPOINT_H
- #define MAPPOINT_H
- #include"KeyFrame.h"
- #include"Frame.h"
- #include"Map.h"
- #include<opencv2/core/core.hpp>
- #include<mutex>
- #include <boost/serialization/serialization.hpp>
- #include <boost/serialization/array.hpp>
- #include <boost/serialization/map.hpp>
- namespace ORB_SLAM3
- {
- class KeyFrame;
- class Map;
- class Frame;
- class MapPoint
- {
- public:
- MapPoint();
- MapPoint(const cv::Mat &Pos, KeyFrame* pRefKF, Map* pMap);
- MapPoint(const double invDepth, cv::Point2f uv_init, KeyFrame* pRefKF, KeyFrame* pHostKF, Map* pMap);
- MapPoint(const cv::Mat &Pos, Map* pMap, Frame* pFrame, const int &idxF);
- void SetWorldPos(const cv::Mat &Pos);
- cv::Mat GetWorldPos();
- cv::Mat GetNormal();
- cv::Matx31f GetWorldPos2();
- cv::Matx31f GetNormal2();
- KeyFrame* GetReferenceKeyFrame();
- std::map<KeyFrame*,std::tuple<int,int>> GetObservations();
- int Observations();
- void AddObservation(KeyFrame* pKF,int idx);
- void EraseObservation(KeyFrame* pKF);
- std::tuple<int,int> GetIndexInKeyFrame(KeyFrame* pKF);
- bool IsInKeyFrame(KeyFrame* pKF);
- void SetBadFlag();
- bool isBad();
- void Replace(MapPoint* pMP);
- MapPoint* GetReplaced();
- void IncreaseVisible(int n=1);
- void IncreaseFound(int n=1);
- float GetFoundRatio();
- inline int GetFound(){
- return mnFound;
- }
- void ComputeDistinctiveDescriptors();
- cv::Mat GetDescriptor();
- void UpdateNormalAndDepth();
- void SetNormalVector(cv::Mat& normal);
- float GetMinDistanceInvariance();
- float GetMaxDistanceInvariance();
- int PredictScale(const float ¤tDist, KeyFrame*pKF);
- int PredictScale(const float ¤tDist, Frame* pF);
- Map* GetMap();
- void UpdateMap(Map* pMap);
- public:
- long unsigned int mnId;
- static long unsigned int nNextId;
- long int mnFirstKFid;
- long int mnFirstFrame;
- int nObs;
-
- float mTrackProjX;
- float mTrackProjY;
- float mTrackDepth;
- float mTrackDepthR;
- float mTrackProjXR;
- float mTrackProjYR;
- bool mbTrackInView, mbTrackInViewR;
- int mnTrackScaleLevel, mnTrackScaleLevelR;
- float mTrackViewCos, mTrackViewCosR;
- long unsigned int mnTrackReferenceForFrame;
- long unsigned int mnLastFrameSeen;
-
- long unsigned int mnBALocalForKF;
- long unsigned int mnFuseCandidateForKF;
-
- long unsigned int mnLoopPointForKF;
- long unsigned int mnCorrectedByKF;
- long unsigned int mnCorrectedReference;
- cv::Mat mPosGBA;
- long unsigned int mnBAGlobalForKF;
- long unsigned int mnBALocalForMerge;
-
- cv::Mat mPosMerge;
- cv::Mat mNormalVectorMerge;
-
- double mInvDepth;
- double mInitU;
- double mInitV;
- KeyFrame* mpHostKF;
- static std::mutex mGlobalMutex;
- unsigned int mnOriginMapId;
- protected:
-
- cv::Mat mWorldPos;
- cv::Matx31f mWorldPosx;
-
- std::map<KeyFrame*,std::tuple<int,int> > mObservations;
-
- cv::Mat mNormalVector;
- cv::Matx31f mNormalVectorx;
-
- cv::Mat mDescriptor;
-
- KeyFrame* mpRefKF;
-
- int mnVisible;
- int mnFound;
-
- bool mbBad;
- MapPoint* mpReplaced;
-
- float mfMinDistance;
- float mfMaxDistance;
- Map* mpMap;
- std::mutex mMutexPos;
- std::mutex mMutexFeatures;
- std::mutex mMutexMap;
- };
- }
- #endif
|