29 #ifndef _hectorslamprocessor_h__ 30 #define _hectorslamprocessor_h__ 32 #include "../map/GridMap.h" 33 #include "../map/OccGridMapUtilConfig.h" 34 #include "../matcher/ScanMatcher.h" 35 #include "../scan/DataPointContainer.h" 37 #include "../util/UtilFunctions.h" 38 #include "../util/DrawInterface.h" 39 #include "../util/HectorDebugInfoInterface.h" 40 #include "../util/MapLockerInterface.h" 58 mapRep =
new MapRepMultiMap(mapResolution, mapSizeX, mapSizeY, multi_res_size, startCoords, drawInterfaceIn, debugInterfaceIn);
71 void update(
const DataContainer& dataContainer,
const Eigen::Vector3f& poseHintWorld,
bool map_without_matching =
false)
75 Eigen::Vector3f newPoseEstimateWorld;
77 if (!map_without_matching){
80 newPoseEstimateWorld = poseHintWorld;
103 drawInterface->
drawPoint(gridMapRef.getWorldCoords((gridMapRef.getMapDimensions().array()-1).cast<float>()));
void setMapUpdateMinDistDiff(float minDist)
virtual void setUpdateFactorFree(float free_factor)=0
HectorDebugInfoInterface * debugInterface
virtual void setColor(double r, double g, double b, double a=1.0)=0
float paramMinDistanceDiffForMapUpdate
Eigen::Matrix3f lastScanMatchCov
virtual void drawPoint(const Eigen::Vector2f &pointWorldFrame)=0
virtual void sendAndResetData()=0
virtual void sendAndResetData()=0
const Eigen::Vector3f & getLastScanMatchPose() const
MapLockerInterface * getMapMutex(int i)
const Eigen::Matrix3f & getLastScanMatchCovariance() const
float paramMinAngleDiffForMapUpdate
virtual Eigen::Vector3f matchData(const Eigen::Vector3f &beginEstimateWorld, const DataContainer &dataContainer, Eigen::Matrix3f &covMatrix)=0
void setMapUpdateMinAngleDiff(float angleChange)
float getScaleToMap() const
virtual void setScale(double scale)=0
DrawInterface * drawInterface
virtual void addMapMutex(int i, MapLockerInterface *mapMutex)=0
void addMapMutex(int i, MapLockerInterface *mapMutex)
virtual float getScaleToMap() const =0
Eigen::Vector3f lastScanMatchPose
void setUpdateFactorOccupied(float occupied_factor)
MapRepresentationInterface * mapRep
virtual const GridMap & getGridMap(int mapLevel=0) const =0
virtual void updateByScan(const DataContainer &dataContainer, const Eigen::Vector3f &robotPoseWorld)=0
static bool poseDifferenceLargerThan(const Eigen::Vector3f &pose1, const Eigen::Vector3f &pose2, float distanceDiffThresh, float angleDiffThresh)
void setUpdateFactorFree(float free_factor)
virtual void onMapUpdated()=0
const GridMap & getGridMap(int mapLevel=0) const
virtual MapLockerInterface * getMapMutex(int i)=0
virtual void setUpdateFactorOccupied(float occupied_factor)=0
HectorSlamProcessor(float mapResolution, int mapSizeX, int mapSizeY, const Eigen::Vector2f &startCoords, int multi_res_size, DrawInterface *drawInterfaceIn=0, HectorDebugInfoInterface *debugInterfaceIn=0)
void update(const DataContainer &dataContainer, const Eigen::Vector3f &poseHintWorld, bool map_without_matching=false)
virtual int getMapLevels() const =0
Eigen::Vector3f lastMapUpdatePose