Updated how RtabmapCmdEvent should be called (using UVariant). MainWindow: added new actions to export poses (KITTI, RGBD-SLAM and TORO formats)

This commit is contained in:
matlabbe
2015-08-01 23:42:36 -04:00
parent 2877a14360
commit 554b8978a0
14 changed files with 990 additions and 478 deletions

View File

@@ -108,15 +108,15 @@ public:
bool labelLocation(int id, const std::string & label);
bool setUserData(int id, const cv::Mat & data);
void generateDOTGraph(const std::string & path, int id=0, int margin=5);
void generateTOROGraph(const std::string & path, bool optimized, bool global);
void exportPoses(const std::string & path, bool optimized, bool global);
void exportPoses(
const std::string & path,
bool optimized,
bool global,
int type // 0=raw/KITTI format, 1=rgbd-slam format, 2=TORO
);
void resetMemory();
void dumpPrediction() const;
void dumpData() const;
void dumpPoses(
const std::string & path,
const std::map<int, Transform> & poses,
const std::map<int, double> & stamps = std::map<int, double>()) const;
void parseParameters(const ParametersMap & parameters);
void setWorkingDirectory(std::string path);
void rejectLoopClosure(int oldId, int newId);

View File

@@ -31,6 +31,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#include <rtabmap/utilite/UEvent.h>
#include <rtabmap/utilite/UVariant.h>
#include "rtabmap/core/Statistics.h"
#include "rtabmap/core/Parameters.h"
@@ -58,53 +59,72 @@ class RtabmapEventCmd : public UEvent
public:
enum dummy {d}; // Hack, to fix Eclipse complaining about not defined Cmd enum ?!
enum Cmd {
kCmdInit,
kCmdInit, // params: [string] database path + ParametersMap
kCmdResetMemory,
kCmdClose,
kCmdDumpMemory,
kCmdDumpPrediction,
kCmdGenerateDOTGraph, // params: path
kCmdGenerateDOTLocalGraph, // params: path, id, margin
kCmdGenerateTOROGraphLocal, // params: path, optimized
kCmdGenerateTOROGraphGlobal, // params: path, optimized
kCmdExportPosesGlobal,
kCmdExportPosesLocal,
kCmdGenerateDOTGraph, // params: [bool] global, [string] path, if global=false: [int] id, [int] margin
kCmdExportPoses, // params: [bool] global, [bool] optimized, [string] path, [int] type (0=KITTI/raw format, 1=RGBD-SLAM format, 2=TORO)
kCmdCleanDataBuffer,
kCmdPublish3DMapLocal, // params: optimized
kCmdPublish3DMapGlobal, // params: optimized
kCmdPublishTOROGraphGlobal, // params: optimized
kCmdPublishTOROGraphLocal, // params: optimized
kCmdPublish3DMap, // params: [bool] global, [bool] optimized, [bool] graphOnly
kCmdTriggerNewMap,
kCmdPause,
kCmdGoal, // params: label or location ID
kCmdGoal, // params: [string] label or [int] location ID
kCmdCancelGoal,
kCmdLabel}; // // params: label or location ID
kCmdLabel // params: [string] label or [int] location ID
};
public:
RtabmapEventCmd(Cmd cmd, const std::string & strValue = "", int intValue = 0, const ParametersMap & parameters = ParametersMap()) :
RtabmapEventCmd(Cmd cmd, const ParametersMap & parameters = ParametersMap()) :
UEvent(0),
_cmd(cmd),
_strValue(strValue),
_intValue(intValue),
_parameters(parameters){}
cmd_(cmd),
parameters_(parameters){}
RtabmapEventCmd(Cmd cmd, const UVariant & value1, const ParametersMap & parameters = ParametersMap()) :
UEvent(0),
cmd_(cmd),
value1_(value1),
parameters_(parameters){}
RtabmapEventCmd(Cmd cmd, const UVariant & value1, const UVariant & value2, const ParametersMap & parameters = ParametersMap()) :
UEvent(0),
cmd_(cmd),
value1_(value1),
value2_(value2),
parameters_(parameters){}
RtabmapEventCmd(Cmd cmd, const UVariant & value1, const UVariant & value2, const UVariant & value3, const ParametersMap & parameters = ParametersMap()) :
UEvent(0),
cmd_(cmd),
value1_(value1),
value2_(value2),
value3_(value3),
parameters_(parameters){}
RtabmapEventCmd(Cmd cmd, const UVariant & value1, const UVariant & value2, const UVariant & value3, const UVariant & value4, const ParametersMap & parameters = ParametersMap()) :
UEvent(0),
cmd_(cmd),
value1_(value1),
value2_(value2),
value3_(value3),
value4_(value4),
parameters_(parameters){}
virtual ~RtabmapEventCmd() {}
Cmd getCmd() const {return _cmd;}
Cmd getCmd() const {return cmd_;}
void setStr(const std::string & str) {_strValue = str;}
const std::string & getStr() const {return _strValue;}
const UVariant & value1() const {return value1_;}
const UVariant & value2() const {return value2_;}
const UVariant & value3() const {return value3_;}
const UVariant & value4() const {return value4_;}
void setInt(int v) {_intValue = v;}
int getInt() const {return _intValue;}
const ParametersMap & getParameters() const {return _parameters;}
const ParametersMap & getParameters() const {return parameters_;}
virtual std::string getClassName() const {return std::string("RtabmapEventCmd");}
private:
Cmd _cmd;
std::string _strValue;
int _intValue;
ParametersMap _parameters;
Cmd cmd_;
UVariant value1_;
UVariant value2_;
UVariant value3_;
UVariant value4_;
ParametersMap parameters_;
};
class RtabmapEventInit : public UEvent

View File

@@ -61,17 +61,10 @@ public:
kStateChangingParameters,
kStateDumpingMemory,
kStateDumpingPrediction,
kStateGeneratingDOTGraph,
kStateGeneratingDOTLocalGraph,
kStateGeneratingTOROGraphLocal,
kStateGeneratingTOROGraphGlobal,
kStateExportingPosesLocal,
kStateExportingPosesGlobal,
kStateExportingDOTGraph,
kStateExportingPoses,
kStateCleanDataBuffer,
kStatePublishingMapLocal,
kStatePublishingMapGlobal,
kStatePublishingTOROGraphLocal,
kStatePublishingTOROGraphGlobal,
kStatePublishingMap,
kStateTriggeringMap,
kStateAddingUserData,
kStateSettingGoal,
@@ -99,8 +92,7 @@ private:
void addData(const OdometryEvent & odomEvent);
bool getData(OdometryEvent & data);
void pushNewState(State newState, const ParametersMap & parameters = ParametersMap());
void publishMap(bool optimized, bool full) const;
void publishGraph(bool optimized, bool full) const;
void publishMap(bool optimized, bool full, bool graphOnly) const;
private:
UMutex _stateMutex;