DBReader.h
Go to the documentation of this file.
00001 /*
00002 Copyright (c) 2010-2016, Mathieu Labbe - IntRoLab - Universite de Sherbrooke
00003 All rights reserved.
00004 
00005 Redistribution and use in source and binary forms, with or without
00006 modification, are permitted provided that the following conditions are met:
00007     * Redistributions of source code must retain the above copyright
00008       notice, this list of conditions and the following disclaimer.
00009     * Redistributions in binary form must reproduce the above copyright
00010       notice, this list of conditions and the following disclaimer in the
00011       documentation and/or other materials provided with the distribution.
00012     * Neither the name of the Universite de Sherbrooke nor the
00013       names of its contributors may be used to endorse or promote products
00014       derived from this software without specific prior written permission.
00015 
00016 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
00017 ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
00018 WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
00019 DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY
00020 DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
00021 (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
00022 LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
00023 ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
00024 (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
00025 SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
00026 */
00027 
00028 #ifndef DBREADER_H_
00029 #define DBREADER_H_
00030 
00031 #include "rtabmap/core/RtabmapExp.h" // DLL export/import defines
00032 
00033 #include <rtabmap/utilite/UTimer.h>
00034 #include <rtabmap/core/Transform.h>
00035 #include <rtabmap/core/Camera.h>
00036 
00037 #include <opencv2/core/core.hpp>
00038 
00039 #include <set>
00040 #include <list>
00041 
00042 namespace rtabmap {
00043 
00044 class DBDriver;
00045 
00046 class RTABMAP_EXP DBReader : public Camera {
00047 public:
00048         DBReader(const std::string & databasePath,
00049                          float frameRate = 0.0f, // -1 = use Database stamps, 0 = inf
00050                          bool odometryIgnored = false,
00051                          bool ignoreGoalDelay = false,
00052                          bool goalsIgnored = false,
00053                          int startIndex = 0,
00054                          int cameraIndex = -1);
00055         DBReader(const std::list<std::string> & databasePaths,
00056                          float frameRate = 0.0f, // -1 = use Database stamps, 0 = inf
00057                          bool odometryIgnored = false,
00058                          bool ignoreGoalDelay = false,
00059                          bool goalsIgnored = false,
00060                          int startIndex = 0,
00061                          int cameraIndex = -1);
00062         virtual ~DBReader();
00063 
00064         virtual bool init(
00065                         const std::string & calibrationFolder = ".",
00066                         const std::string & cameraName = "");
00067 
00068         virtual bool isCalibrated() const;
00069         virtual std::string getSerial() const;
00070         virtual bool odomProvided() const {return !_odometryIgnored;}
00071 
00072 protected:
00073         virtual SensorData captureImage(CameraInfo * info = 0);
00074 
00075 private:
00076         SensorData getNextData(CameraInfo * info = 0);
00077 
00078 private:
00079         std::list<std::string> _paths;
00080         bool _odometryIgnored;
00081         bool _ignoreGoalDelay;
00082         bool _goalsIgnored;
00083         int _startIndex;
00084         int _cameraIndex;
00085 
00086         DBDriver * _dbDriver;
00087         UTimer _timer;
00088         std::set<int> _ids;
00089         std::set<int>::iterator _currentId;
00090         double _previousStamp;
00091         int _previousMapID;
00092         bool _calibrated;
00093 };
00094 
00095 } /* namespace rtabmap */
00096 #endif /* DBREADER_H_ */


rtabmap
Author(s): Mathieu Labbe
autogenerated on Sat Jul 23 2016 11:44:15