mirror of
https://github.com/introlab/rtabmap.git
synced 2026-09-02 17:40:23 +08:00
exportGraph: added RGBD-SLAM format (10) without motion capture coordinate transformation (#332)
This commit is contained in:
@@ -47,7 +47,7 @@ namespace graph {
|
|||||||
|
|
||||||
bool RTABMAP_EXP exportPoses(
|
bool RTABMAP_EXP exportPoses(
|
||||||
const std::string & filePath,
|
const std::string & filePath,
|
||||||
int format, // 0=Raw (*.txt), 1=RGBD-SLAM (*.txt), 2=KITTI (*.txt), 3=TORO (*.graph), 4=g2o (*.g2o)
|
int format, // 0=Raw (*.txt), 1=RGBD-SLAM motion capture (*.txt) (10=without change of coordinate frame), 2=KITTI (*.txt), 3=TORO (*.graph), 4=g2o (*.g2o)
|
||||||
const std::map<int, Transform> & poses,
|
const std::map<int, Transform> & poses,
|
||||||
const std::multimap<int, Link> & constraints = std::multimap<int, Link>(), // required for formats 3 and 4
|
const std::multimap<int, Link> & constraints = std::multimap<int, Link>(), // required for formats 3 and 4
|
||||||
const std::map<int, double> & stamps = std::map<int, double>(), // required for format 1
|
const std::map<int, double> & stamps = std::map<int, double>(), // required for format 1
|
||||||
@@ -55,7 +55,7 @@ namespace graph {
|
|||||||
|
|
||||||
bool RTABMAP_EXP importPoses(
|
bool RTABMAP_EXP importPoses(
|
||||||
const std::string & filePath,
|
const std::string & filePath,
|
||||||
int format, // 0=Raw, 1=RGBD-SLAM, 2=KITTI, 3=TORO, 4=g2o, 5=NewCollege(t,x,y), 6=Malaga Urban GPS, 7=St Lucia INS, 8=Karlsruhe
|
int format, // 0=Raw, 1=RGBD-SLAM motion capture (10=without change of coordinate frame), 2=KITTI, 3=TORO, 4=g2o, 5=NewCollege(t,x,y), 6=Malaga Urban GPS, 7=St Lucia INS, 8=Karlsruhe
|
||||||
std::map<int, Transform> & poses,
|
std::map<int, Transform> & poses,
|
||||||
std::multimap<int, Link> * constraints = 0, // optional for formats 3 and 4
|
std::multimap<int, Link> * constraints = 0, // optional for formats 3 and 4
|
||||||
std::map<int, double> * stamps = 0); // optional for format 1
|
std::map<int, double> * stamps = 0); // optional for format 1
|
||||||
|
|||||||
@@ -52,7 +52,7 @@ namespace graph {
|
|||||||
|
|
||||||
bool exportPoses(
|
bool exportPoses(
|
||||||
const std::string & filePath,
|
const std::string & filePath,
|
||||||
int format, // 0=Raw, 1=RGBD-SLAM, 2=KITTI, 3=TORO, 4=g2o
|
int format, // 0=Raw, 1=RGBD-SLAM motion capture (10=without change of coordinate frame), 2=KITTI, 3=TORO, 4=g2o
|
||||||
const std::map<int, Transform> & poses,
|
const std::map<int, Transform> & poses,
|
||||||
const std::multimap<int, Link> & constraints, // required for formats 3 and 4
|
const std::multimap<int, Link> & constraints, // required for formats 3 and 4
|
||||||
const std::map<int, double> & stamps, // required for format 1
|
const std::map<int, double> & stamps, // required for format 1
|
||||||
@@ -104,17 +104,21 @@ bool exportPoses(
|
|||||||
{
|
{
|
||||||
for(std::map<int, Transform>::const_iterator iter=poses.begin(); iter!=poses.end(); ++iter)
|
for(std::map<int, Transform>::const_iterator iter=poses.begin(); iter!=poses.end(); ++iter)
|
||||||
{
|
{
|
||||||
if(format == 1) // rgbd-slam format
|
if(format == 1 || format == 10) // rgbd-slam format
|
||||||
{
|
{
|
||||||
// put the pose in rgbd-slam world reference
|
Transform pose = iter->second;
|
||||||
Transform t( 0, 0, 1, 0,
|
if(format == 1)
|
||||||
0, -1, 0, 0,
|
{
|
||||||
1, 0, 0, 0);
|
// put the pose in rgbd-slam world reference
|
||||||
Transform pose = t.inverse() * iter->second;
|
Transform t( 0, 0, 1, 0,
|
||||||
t = Transform( 0, 0, 1, 0,
|
0, -1, 0, 0,
|
||||||
-1, 0, 0, 0,
|
1, 0, 0, 0);
|
||||||
0,-1, 0, 0);
|
pose = t.inverse() * pose;
|
||||||
pose = t.inverse() * pose * t;
|
t = Transform( 0, 0, 1, 0,
|
||||||
|
-1, 0, 0, 0,
|
||||||
|
0,-1, 0, 0);
|
||||||
|
pose = t.inverse() * pose * t;
|
||||||
|
}
|
||||||
|
|
||||||
// Format: stamp x y z qx qy qz qw
|
// Format: stamp x y z qx qy qz qw
|
||||||
Eigen::Quaternionf q = pose.getQuaternionf();
|
Eigen::Quaternionf q = pose.getQuaternionf();
|
||||||
@@ -163,7 +167,7 @@ bool exportPoses(
|
|||||||
|
|
||||||
bool importPoses(
|
bool importPoses(
|
||||||
const std::string & filePath,
|
const std::string & filePath,
|
||||||
int format, // 0=Raw, 1=RGBD-SLAM, 2=KITTI, 3=TORO, 4=g2o, 5=NewCollege(t,x,y), 6=Malaga Urban GPS, 7=St Lucia INS, 8=Karlsruhe, 9=EuRoC MAC
|
int format, // 0=Raw, 1=RGBD-SLAM motion capture (10=without change of coordinate frame), 2=KITTI, 3=TORO, 4=g2o, 5=NewCollege(t,x,y), 6=Malaga Urban GPS, 7=St Lucia INS, 8=Karlsruhe, 9=EuRoC MAC
|
||||||
std::map<int, Transform> & poses,
|
std::map<int, Transform> & poses,
|
||||||
std::multimap<int, Link> * constraints, // optional for formats 3 and 4
|
std::multimap<int, Link> * constraints, // optional for formats 3 and 4
|
||||||
std::map<int, double> * stamps) // optional for format 1 and 9
|
std::map<int, double> * stamps) // optional for format 1 and 9
|
||||||
@@ -407,7 +411,7 @@ bool importPoses(
|
|||||||
UERROR("Error parsing \"%s\" with NewCollege format (should have 3 values: stamp x y, found %d)", str.c_str(), (int)strList.size());
|
UERROR("Error parsing \"%s\" with NewCollege format (should have 3 values: stamp x y, found %d)", str.c_str(), (int)strList.size());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if(format == 1) // rgbd-slam format
|
else if(format == 1 || format==10) // rgbd-slam format
|
||||||
{
|
{
|
||||||
std::list<std::string> strList = uSplit(str);
|
std::list<std::string> strList = uSplit(str);
|
||||||
if(strList.size() == 8)
|
if(strList.size() == 8)
|
||||||
@@ -426,16 +430,19 @@ bool importPoses(
|
|||||||
{
|
{
|
||||||
stamps->insert(std::make_pair(id, stamp));
|
stamps->insert(std::make_pair(id, stamp));
|
||||||
}
|
}
|
||||||
// we need to remove optical rotation
|
if(format == 1)
|
||||||
// z pointing front, x left, y down
|
{
|
||||||
Transform t( 0, 0, 1, 0,
|
// we need to remove optical rotation
|
||||||
-1, 0, 0, 0,
|
// z pointing front, x left, y down
|
||||||
0,-1, 0, 0);
|
Transform t( 0, 0, 1, 0,
|
||||||
pose = t * pose * t.inverse();
|
-1, 0, 0, 0,
|
||||||
t = Transform( 0, 0, 1, 0,
|
0,-1, 0, 0);
|
||||||
0, -1, 0, 0,
|
pose = t * pose * t.inverse();
|
||||||
1, 0, 0, 0);
|
t = Transform( 0, 0, 1, 0,
|
||||||
pose = t*pose;
|
0, -1, 0, 0,
|
||||||
|
1, 0, 0, 0);
|
||||||
|
pose = t*pose;
|
||||||
|
}
|
||||||
poses.insert(std::make_pair(id, pose));
|
poses.insert(std::make_pair(id, pose));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -347,19 +347,19 @@ bool CameraImages::readPoses(std::list<Transform> & outputPoses, std::list<doubl
|
|||||||
UERROR("Cannot read pose file \"%s\".", filePath.c_str());
|
UERROR("Cannot read pose file \"%s\".", filePath.c_str());
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
else if((format != 1 && format != 5 && format != 6 && format != 7 && format != 9) && poses.size() != this->imagesCount())
|
else if((format != 1 && format != 10 && format != 5 && format != 6 && format != 7 && format != 9) && poses.size() != this->imagesCount())
|
||||||
{
|
{
|
||||||
UERROR("The pose count is not the same as the images (%d vs %d)! Please remove "
|
UERROR("The pose count is not the same as the images (%d vs %d)! Please remove "
|
||||||
"the pose file path if you don't want to use it (current file path=%s).",
|
"the pose file path if you don't want to use it (current file path=%s).",
|
||||||
(int)poses.size(), this->imagesCount(), filePath.c_str());
|
(int)poses.size(), this->imagesCount(), filePath.c_str());
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
else if((format == 1 || format == 5 || format == 6 || format == 7 || format == 9) && inOutStamps.size() == 0)
|
else if((format == 1 || format == 10 || format == 5 || format == 6 || format == 7 || format == 9) && inOutStamps.size() == 0)
|
||||||
{
|
{
|
||||||
UERROR("When using RGBD-SLAM, GPS, MALAGA, ST LUCIA and EuRoC MAV formats, images must have timestamps!");
|
UERROR("When using RGBD-SLAM, GPS, MALAGA, ST LUCIA and EuRoC MAV formats, images must have timestamps!");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
else if(format == 1 || format == 5 || format == 6 || format == 7 || format == 9)
|
else if(format == 1 || format == 10 || format == 5 || format == 6 || format == 7 || format == 9)
|
||||||
{
|
{
|
||||||
UDEBUG("");
|
UDEBUG("");
|
||||||
//Match ground truth values with images
|
//Match ground truth values with images
|
||||||
|
|||||||
@@ -101,6 +101,7 @@ private Q_SLOTS:
|
|||||||
void exportDatabase();
|
void exportDatabase();
|
||||||
void extractImages();
|
void extractImages();
|
||||||
void exportPosesRaw();
|
void exportPosesRaw();
|
||||||
|
void exportPosesRGBDSLAMMotionCapture();
|
||||||
void exportPosesRGBDSLAM();
|
void exportPosesRGBDSLAM();
|
||||||
void exportPosesKITTI();
|
void exportPosesKITTI();
|
||||||
void exportPosesTORO();
|
void exportPosesTORO();
|
||||||
|
|||||||
@@ -154,6 +154,7 @@ protected Q_SLOTS:
|
|||||||
void generateGraphDOT();
|
void generateGraphDOT();
|
||||||
void exportPosesRaw();
|
void exportPosesRaw();
|
||||||
void exportPosesRGBDSLAM();
|
void exportPosesRGBDSLAM();
|
||||||
|
void exportPosesRGBDSLAMMotionCapture();
|
||||||
void exportPosesKITTI();
|
void exportPosesKITTI();
|
||||||
void exportPosesTORO();
|
void exportPosesTORO();
|
||||||
void exportPosesG2O();
|
void exportPosesG2O();
|
||||||
|
|||||||
@@ -242,6 +242,7 @@ DatabaseViewer::DatabaseViewer(const QString & ini, QWidget * parent) :
|
|||||||
connect(ui_->actionGenerate_local_graph_dot, SIGNAL(triggered()), this, SLOT(generateLocalGraph()));
|
connect(ui_->actionGenerate_local_graph_dot, SIGNAL(triggered()), this, SLOT(generateLocalGraph()));
|
||||||
connect(ui_->actionRaw_format_txt, SIGNAL(triggered()), this , SLOT(exportPosesRaw()));
|
connect(ui_->actionRaw_format_txt, SIGNAL(triggered()), this , SLOT(exportPosesRaw()));
|
||||||
connect(ui_->actionRGBD_SLAM_format_txt, SIGNAL(triggered()), this , SLOT(exportPosesRGBDSLAM()));
|
connect(ui_->actionRGBD_SLAM_format_txt, SIGNAL(triggered()), this , SLOT(exportPosesRGBDSLAM()));
|
||||||
|
connect(ui_->actionRGBD_SLAM_motion_capture_format_txt, SIGNAL(triggered()), this , SLOT(exportPosesRGBDSLAMMotionCapture()));
|
||||||
connect(ui_->actionKITTI_format_txt, SIGNAL(triggered()), this , SLOT(exportPosesKITTI()));
|
connect(ui_->actionKITTI_format_txt, SIGNAL(triggered()), this , SLOT(exportPosesKITTI()));
|
||||||
connect(ui_->actionTORO_graph, SIGNAL(triggered()), this , SLOT(exportPosesTORO()));
|
connect(ui_->actionTORO_graph, SIGNAL(triggered()), this , SLOT(exportPosesTORO()));
|
||||||
connect(ui_->actionG2o_g2o, SIGNAL(triggered()), this , SLOT(exportPosesG2O()));
|
connect(ui_->actionG2o_g2o, SIGNAL(triggered()), this , SLOT(exportPosesG2O()));
|
||||||
@@ -1981,10 +1982,14 @@ void DatabaseViewer::exportPosesRaw()
|
|||||||
{
|
{
|
||||||
exportPoses(0);
|
exportPoses(0);
|
||||||
}
|
}
|
||||||
void DatabaseViewer::exportPosesRGBDSLAM()
|
void DatabaseViewer::exportPosesRGBDSLAMMotionCapture()
|
||||||
{
|
{
|
||||||
exportPoses(1);
|
exportPoses(1);
|
||||||
}
|
}
|
||||||
|
void DatabaseViewer::exportPosesRGBDSLAM()
|
||||||
|
{
|
||||||
|
exportPoses(10);
|
||||||
|
}
|
||||||
void DatabaseViewer::exportPosesKITTI()
|
void DatabaseViewer::exportPosesKITTI()
|
||||||
{
|
{
|
||||||
exportPoses(2);
|
exportPoses(2);
|
||||||
@@ -2177,7 +2182,7 @@ void DatabaseViewer::exportPoses(int format)
|
|||||||
{
|
{
|
||||||
std::map<int, Transform> localTransforms;
|
std::map<int, Transform> localTransforms;
|
||||||
QStringList items;
|
QStringList items;
|
||||||
items.push_back("Robot");
|
items.push_back("Robot (base frame)");
|
||||||
items.push_back("Camera");
|
items.push_back("Camera");
|
||||||
items.push_back("Scan");
|
items.push_back("Scan");
|
||||||
bool ok;
|
bool ok;
|
||||||
@@ -2186,7 +2191,7 @@ void DatabaseViewer::exportPoses(int format)
|
|||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if(item.compare("Robot") != 0)
|
if(item.compare("Robot (base frame)") != 0)
|
||||||
{
|
{
|
||||||
bool cameraFrame = item.compare("Camera") == 0;
|
bool cameraFrame = item.compare("Camera") == 0;
|
||||||
for(std::map<int, Transform>::iterator iter=optimizedPoses.begin(); iter!=optimizedPoses.end(); ++iter)
|
for(std::map<int, Transform>::iterator iter=optimizedPoses.begin(); iter!=optimizedPoses.end(); ++iter)
|
||||||
@@ -2274,7 +2279,7 @@ void DatabaseViewer::exportPoses(int format)
|
|||||||
}
|
}
|
||||||
|
|
||||||
std::map<int, double> stamps;
|
std::map<int, double> stamps;
|
||||||
if(format == 1)
|
if(format == 1 || format == 10)
|
||||||
{
|
{
|
||||||
for(std::map<int, Transform>::iterator iter=poses.begin(); iter!=poses.end(); ++iter)
|
for(std::map<int, Transform>::iterator iter=poses.begin(); iter!=poses.end(); ++iter)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -359,6 +359,7 @@ MainWindow::MainWindow(PreferencesDialog * prefDialog, QWidget * parent, bool sh
|
|||||||
connect(_ui->actionGenerate_map, SIGNAL(triggered()), this , SLOT(generateGraphDOT()));
|
connect(_ui->actionGenerate_map, SIGNAL(triggered()), this , SLOT(generateGraphDOT()));
|
||||||
connect(_ui->actionRaw_format_txt, SIGNAL(triggered()), this , SLOT(exportPosesRaw()));
|
connect(_ui->actionRaw_format_txt, SIGNAL(triggered()), this , SLOT(exportPosesRaw()));
|
||||||
connect(_ui->actionRGBD_SLAM_format_txt, SIGNAL(triggered()), this , SLOT(exportPosesRGBDSLAM()));
|
connect(_ui->actionRGBD_SLAM_format_txt, SIGNAL(triggered()), this , SLOT(exportPosesRGBDSLAM()));
|
||||||
|
connect(_ui->actionRGBD_SLAM_motion_capture_format_txt, SIGNAL(triggered()), this , SLOT(exportPosesRGBDSLAMMotionCapture()));
|
||||||
connect(_ui->actionKITTI_format_txt, SIGNAL(triggered()), this , SLOT(exportPosesKITTI()));
|
connect(_ui->actionKITTI_format_txt, SIGNAL(triggered()), this , SLOT(exportPosesKITTI()));
|
||||||
connect(_ui->actionTORO_graph, SIGNAL(triggered()), this , SLOT(exportPosesTORO()));
|
connect(_ui->actionTORO_graph, SIGNAL(triggered()), this , SLOT(exportPosesTORO()));
|
||||||
connect(_ui->actionG2o_g2o, SIGNAL(triggered()), this , SLOT(exportPosesG2O()));
|
connect(_ui->actionG2o_g2o, SIGNAL(triggered()), this , SLOT(exportPosesG2O()));
|
||||||
@@ -5177,10 +5178,14 @@ void MainWindow::exportPosesRaw()
|
|||||||
{
|
{
|
||||||
exportPoses(0);
|
exportPoses(0);
|
||||||
}
|
}
|
||||||
void MainWindow::exportPosesRGBDSLAM()
|
void MainWindow::exportPosesRGBDSLAMMotionCapture()
|
||||||
{
|
{
|
||||||
exportPoses(1);
|
exportPoses(1);
|
||||||
}
|
}
|
||||||
|
void MainWindow::exportPosesRGBDSLAM()
|
||||||
|
{
|
||||||
|
exportPoses(10);
|
||||||
|
}
|
||||||
void MainWindow::exportPosesKITTI()
|
void MainWindow::exportPosesKITTI()
|
||||||
{
|
{
|
||||||
exportPoses(2);
|
exportPoses(2);
|
||||||
@@ -5200,7 +5205,7 @@ void MainWindow::exportPoses(int format)
|
|||||||
{
|
{
|
||||||
std::map<int, Transform> localTransforms;
|
std::map<int, Transform> localTransforms;
|
||||||
QStringList items;
|
QStringList items;
|
||||||
items.push_back("Robot");
|
items.push_back("Robot (base frame)");
|
||||||
items.push_back("Camera");
|
items.push_back("Camera");
|
||||||
items.push_back("Scan");
|
items.push_back("Scan");
|
||||||
bool ok;
|
bool ok;
|
||||||
@@ -5209,7 +5214,7 @@ void MainWindow::exportPoses(int format)
|
|||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if(item.compare("Robot") != 0)
|
if(item.compare("Robot (base frame)") != 0)
|
||||||
{
|
{
|
||||||
bool cameraFrame = item.compare("Camera") == 0;
|
bool cameraFrame = item.compare("Camera") == 0;
|
||||||
_exportPosesFrame = cameraFrame?1:2;
|
_exportPosesFrame = cameraFrame?1:2;
|
||||||
@@ -5302,7 +5307,7 @@ void MainWindow::exportPoses(int format)
|
|||||||
}
|
}
|
||||||
|
|
||||||
std::map<int, double> stamps;
|
std::map<int, double> stamps;
|
||||||
if(format == 1)
|
if(format == 1 || format == 10)
|
||||||
{
|
{
|
||||||
for(std::map<int, Transform>::iterator iter=poses.begin(); iter!=poses.end(); ++iter)
|
for(std::map<int, Transform>::iterator iter=poses.begin(); iter!=poses.end(); ++iter)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -61,7 +61,7 @@
|
|||||||
<rect>
|
<rect>
|
||||||
<x>0</x>
|
<x>0</x>
|
||||||
<y>0</y>
|
<y>0</y>
|
||||||
<width>413</width>
|
<width>398</width>
|
||||||
<height>288</height>
|
<height>288</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
@@ -287,7 +287,7 @@
|
|||||||
<rect>
|
<rect>
|
||||||
<x>0</x>
|
<x>0</x>
|
||||||
<y>0</y>
|
<y>0</y>
|
||||||
<width>412</width>
|
<width>397</width>
|
||||||
<height>288</height>
|
<height>288</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
@@ -647,7 +647,7 @@
|
|||||||
<x>0</x>
|
<x>0</x>
|
||||||
<y>0</y>
|
<y>0</y>
|
||||||
<width>1547</width>
|
<width>1547</width>
|
||||||
<height>22</height>
|
<height>25</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
<widget class="QMenu" name="menuFile">
|
<widget class="QMenu" name="menuFile">
|
||||||
@@ -660,6 +660,7 @@
|
|||||||
</property>
|
</property>
|
||||||
<addaction name="actionRaw_format_txt"/>
|
<addaction name="actionRaw_format_txt"/>
|
||||||
<addaction name="actionRGBD_SLAM_format_txt"/>
|
<addaction name="actionRGBD_SLAM_format_txt"/>
|
||||||
|
<addaction name="actionRGBD_SLAM_motion_capture_format_txt"/>
|
||||||
<addaction name="actionKITTI_format_txt"/>
|
<addaction name="actionKITTI_format_txt"/>
|
||||||
<addaction name="actionTORO_graph"/>
|
<addaction name="actionTORO_graph"/>
|
||||||
<addaction name="actionG2o_g2o"/>
|
<addaction name="actionG2o_g2o"/>
|
||||||
@@ -1299,7 +1300,7 @@
|
|||||||
<x>0</x>
|
<x>0</x>
|
||||||
<y>0</y>
|
<y>0</y>
|
||||||
<width>318</width>
|
<width>318</width>
|
||||||
<height>197</height>
|
<height>219</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
<attribute name="label">
|
<attribute name="label">
|
||||||
@@ -1459,9 +1460,9 @@
|
|||||||
<property name="geometry">
|
<property name="geometry">
|
||||||
<rect>
|
<rect>
|
||||||
<x>0</x>
|
<x>0</x>
|
||||||
<y>-151</y>
|
<y>0</y>
|
||||||
<width>519</width>
|
<width>282</width>
|
||||||
<height>791</height>
|
<height>885</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
<attribute name="label">
|
<attribute name="label">
|
||||||
@@ -1994,8 +1995,8 @@
|
|||||||
<rect>
|
<rect>
|
||||||
<x>0</x>
|
<x>0</x>
|
||||||
<y>0</y>
|
<y>0</y>
|
||||||
<width>310</width>
|
<width>307</width>
|
||||||
<height>243</height>
|
<height>171</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
<attribute name="label">
|
<attribute name="label">
|
||||||
@@ -2123,7 +2124,7 @@
|
|||||||
<x>0</x>
|
<x>0</x>
|
||||||
<y>0</y>
|
<y>0</y>
|
||||||
<width>185</width>
|
<width>185</width>
|
||||||
<height>485</height>
|
<height>487</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
<attribute name="label">
|
<attribute name="label">
|
||||||
@@ -2723,16 +2724,25 @@
|
|||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Raw format (*.txt)</string>
|
<string>Raw format (*.txt)</string>
|
||||||
</property>
|
</property>
|
||||||
|
<property name="toolTip">
|
||||||
|
<string>Raw format (12 values transform)</string>
|
||||||
|
</property>
|
||||||
</action>
|
</action>
|
||||||
<action name="actionRGBD_SLAM_format_txt">
|
<action name="actionRGBD_SLAM_format_txt">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>RGBD-SLAM format (*.txt)</string>
|
<string>RGBD-SLAM format (*.txt)</string>
|
||||||
</property>
|
</property>
|
||||||
|
<property name="toolTip">
|
||||||
|
<string>RGBD-SLAM (stamp tx ty tz qx qy qz qw)</string>
|
||||||
|
</property>
|
||||||
</action>
|
</action>
|
||||||
<action name="actionKITTI_format_txt">
|
<action name="actionKITTI_format_txt">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>KITTI format (*.txt)</string>
|
<string>KITTI format (*.txt)</string>
|
||||||
</property>
|
</property>
|
||||||
|
<property name="toolTip">
|
||||||
|
<string>KITTI (stamp + 12 values transform)</string>
|
||||||
|
</property>
|
||||||
</action>
|
</action>
|
||||||
<action name="actionTORO_graph">
|
<action name="actionTORO_graph">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
@@ -2804,6 +2814,14 @@
|
|||||||
<string>Update all loop closure covariances...</string>
|
<string>Update all loop closure covariances...</string>
|
||||||
</property>
|
</property>
|
||||||
</action>
|
</action>
|
||||||
|
<action name="actionRGBD_SLAM_motion_capture_format_txt">
|
||||||
|
<property name="text">
|
||||||
|
<string>RGBD-SLAM motion capture format (*.txt)</string>
|
||||||
|
</property>
|
||||||
|
<property name="toolTip">
|
||||||
|
<string>RGBD-SLAM (stamp tx ty tz qx qy qz qw)</string>
|
||||||
|
</property>
|
||||||
|
</action>
|
||||||
</widget>
|
</widget>
|
||||||
<customwidgets>
|
<customwidgets>
|
||||||
<customwidget>
|
<customwidget>
|
||||||
|
|||||||
@@ -27,7 +27,7 @@
|
|||||||
<x>0</x>
|
<x>0</x>
|
||||||
<y>0</y>
|
<y>0</y>
|
||||||
<width>1012</width>
|
<width>1012</width>
|
||||||
<height>22</height>
|
<height>25</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
<widget class="QMenu" name="menuFile">
|
<widget class="QMenu" name="menuFile">
|
||||||
@@ -40,6 +40,7 @@
|
|||||||
</property>
|
</property>
|
||||||
<addaction name="actionRaw_format_txt"/>
|
<addaction name="actionRaw_format_txt"/>
|
||||||
<addaction name="actionRGBD_SLAM_format_txt"/>
|
<addaction name="actionRGBD_SLAM_format_txt"/>
|
||||||
|
<addaction name="actionRGBD_SLAM_motion_capture_format_txt"/>
|
||||||
<addaction name="actionKITTI_format_txt"/>
|
<addaction name="actionKITTI_format_txt"/>
|
||||||
<addaction name="actionTORO_graph"/>
|
<addaction name="actionTORO_graph"/>
|
||||||
<addaction name="actionG2o_g2o"/>
|
<addaction name="actionG2o_g2o"/>
|
||||||
@@ -1395,11 +1396,17 @@
|
|||||||
<property name="text">
|
<property name="text">
|
||||||
<string>KITTI format (*.txt)</string>
|
<string>KITTI format (*.txt)</string>
|
||||||
</property>
|
</property>
|
||||||
|
<property name="toolTip">
|
||||||
|
<string>KITTI (stamp + 12 values transform)</string>
|
||||||
|
</property>
|
||||||
</action>
|
</action>
|
||||||
<action name="actionRGBD_SLAM_format_txt">
|
<action name="actionRGBD_SLAM_format_txt">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>RGBD-SLAM format (*.txt)</string>
|
<string>RGBD-SLAM format (*.txt)</string>
|
||||||
</property>
|
</property>
|
||||||
|
<property name="toolTip">
|
||||||
|
<string>RGBD-SLAM (stamp tx ty tz qx qy qz qw)</string>
|
||||||
|
</property>
|
||||||
</action>
|
</action>
|
||||||
<action name="actionTORO_graph">
|
<action name="actionTORO_graph">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
@@ -1415,6 +1422,9 @@
|
|||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Raw format (*.txt)</string>
|
<string>Raw format (*.txt)</string>
|
||||||
</property>
|
</property>
|
||||||
|
<property name="toolTip">
|
||||||
|
<string>Raw format (12 values transform)</string>
|
||||||
|
</property>
|
||||||
</action>
|
</action>
|
||||||
<action name="actionG2o_g2o">
|
<action name="actionG2o_g2o">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
@@ -1523,6 +1533,14 @@
|
|||||||
<string>Tara Stereo USB Camera</string>
|
<string>Tara Stereo USB Camera</string>
|
||||||
</property>
|
</property>
|
||||||
</action>
|
</action>
|
||||||
|
<action name="actionRGBD_SLAM_motion_capture_format_txt">
|
||||||
|
<property name="text">
|
||||||
|
<string>RGBD-SLAM motion capture format (*.txt)</string>
|
||||||
|
</property>
|
||||||
|
<property name="toolTip">
|
||||||
|
<string>RGBD-SLAM (stamp tx ty tz qx qy qz qw)</string>
|
||||||
|
</property>
|
||||||
|
</action>
|
||||||
</widget>
|
</widget>
|
||||||
<customwidgets>
|
<customwidgets>
|
||||||
<customwidget>
|
<customwidget>
|
||||||
|
|||||||
@@ -94,9 +94,9 @@
|
|||||||
<property name="geometry">
|
<property name="geometry">
|
||||||
<rect>
|
<rect>
|
||||||
<x>0</x>
|
<x>0</x>
|
||||||
<y>-436</y>
|
<y>-812</y>
|
||||||
<width>680</width>
|
<width>681</width>
|
||||||
<height>2986</height>
|
<height>2983</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
<layout class="QVBoxLayout" name="verticalLayout_16">
|
<layout class="QVBoxLayout" name="verticalLayout_16">
|
||||||
@@ -2941,7 +2941,7 @@ when using the file type, logs are saved in LogRtabmap.txt (located in the worki
|
|||||||
<item>
|
<item>
|
||||||
<widget class="QStackedWidget" name="stackedWidget_src">
|
<widget class="QStackedWidget" name="stackedWidget_src">
|
||||||
<property name="currentIndex">
|
<property name="currentIndex">
|
||||||
<number>1</number>
|
<number>0</number>
|
||||||
</property>
|
</property>
|
||||||
<widget class="QWidget" name="page_41">
|
<widget class="QWidget" name="page_41">
|
||||||
<layout class="QVBoxLayout" name="verticalLayout_64">
|
<layout class="QVBoxLayout" name="verticalLayout_64">
|
||||||
@@ -3061,7 +3061,7 @@ when using the file type, logs are saved in LogRtabmap.txt (located in the worki
|
|||||||
<item>
|
<item>
|
||||||
<widget class="QStackedWidget" name="stackedWidget_rgbd">
|
<widget class="QStackedWidget" name="stackedWidget_rgbd">
|
||||||
<property name="currentIndex">
|
<property name="currentIndex">
|
||||||
<number>6</number>
|
<number>7</number>
|
||||||
</property>
|
</property>
|
||||||
<widget class="QWidget" name="page_32">
|
<widget class="QWidget" name="page_32">
|
||||||
<layout class="QVBoxLayout" name="verticalLayout_63">
|
<layout class="QVBoxLayout" name="verticalLayout_63">
|
||||||
@@ -4834,7 +4834,7 @@ when using the file type, logs are saved in LogRtabmap.txt (located in the worki
|
|||||||
<item>
|
<item>
|
||||||
<widget class="QStackedWidget" name="stackedWidget_image">
|
<widget class="QStackedWidget" name="stackedWidget_image">
|
||||||
<property name="currentIndex">
|
<property name="currentIndex">
|
||||||
<number>1</number>
|
<number>2</number>
|
||||||
</property>
|
</property>
|
||||||
<widget class="QWidget" name="page_7">
|
<widget class="QWidget" name="page_7">
|
||||||
<layout class="QVBoxLayout" name="verticalLayout_30">
|
<layout class="QVBoxLayout" name="verticalLayout_30">
|
||||||
@@ -5349,7 +5349,7 @@ when using the file type, logs are saved in LogRtabmap.txt (located in the worki
|
|||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>RGBD-SLAM</string>
|
<string>RGBD-SLAM (motion capture)</string>
|
||||||
</property>
|
</property>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
@@ -5392,6 +5392,11 @@ when using the file type, logs are saved in LogRtabmap.txt (located in the worki
|
|||||||
<string>EuRoC MAV</string>
|
<string>EuRoC MAV</string>
|
||||||
</property>
|
</property>
|
||||||
</item>
|
</item>
|
||||||
|
<item>
|
||||||
|
<property name="text">
|
||||||
|
<string>RGBD-SLAM</string>
|
||||||
|
</property>
|
||||||
|
</item>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="9" column="0">
|
<item row="9" column="0">
|
||||||
@@ -5497,7 +5502,7 @@ when using the file type, logs are saved in LogRtabmap.txt (located in the worki
|
|||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>RGBD-SLAM</string>
|
<string>RGBD-SLAM (motion capture)</string>
|
||||||
</property>
|
</property>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
@@ -5540,6 +5545,11 @@ when using the file type, logs are saved in LogRtabmap.txt (located in the worki
|
|||||||
<string>EuRoC MAV</string>
|
<string>EuRoC MAV</string>
|
||||||
</property>
|
</property>
|
||||||
</item>
|
</item>
|
||||||
|
<item>
|
||||||
|
<property name="text">
|
||||||
|
<string>RGBD-SLAM</string>
|
||||||
|
</property>
|
||||||
|
</item>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="4" column="0">
|
<item row="4" column="0">
|
||||||
|
|||||||
Reference in New Issue
Block a user