mirror of
https://github.com/introlab/rtabmap.git
synced 2026-10-04 00:57:46 +08:00
Added FastCV support (see FAST/CV parameter). VWDictionary: loading fixed dictionary only on updates (to avoid loading it multiple times when memory is reset).
This commit is contained in:
@@ -192,6 +192,7 @@ option(WITH_OKVIS "Include OKVIS support" ON)
|
|||||||
option(WITH_MSCKF_VIO "Include MSCKF_VIO support" OFF)
|
option(WITH_MSCKF_VIO "Include MSCKF_VIO support" OFF)
|
||||||
option(WITH_VINS "Include VINS-Fusion support" ON)
|
option(WITH_VINS "Include VINS-Fusion support" ON)
|
||||||
option(WITH_MADGWICK "Include Madgwick IMU filtering support" ON)
|
option(WITH_MADGWICK "Include Madgwick IMU filtering support" ON)
|
||||||
|
option(WITH_FASTCV "Include FastCV support" ON)
|
||||||
option(PCL_OMP "With PCL OMP implementations" ON)
|
option(PCL_OMP "With PCL OMP implementations" ON)
|
||||||
|
|
||||||
set(RTABMAP_QT_VERSION AUTO CACHE STRING "Force a specific Qt version.")
|
set(RTABMAP_QT_VERSION AUTO CACHE STRING "Force a specific Qt version.")
|
||||||
@@ -517,6 +518,12 @@ IF(WITH_VINS)
|
|||||||
ENDIF(vins_FOUND)
|
ENDIF(vins_FOUND)
|
||||||
ENDIF(WITH_VINS)
|
ENDIF(WITH_VINS)
|
||||||
|
|
||||||
|
IF(WITH_FASTCV)
|
||||||
|
FIND_PACKAGE(FastCV QUIET)
|
||||||
|
IF(FastCV_FOUND)
|
||||||
|
MESSAGE(STATUS "Found FastCV: ${FastCV_INCLUDE_DIRS}")
|
||||||
|
ENDIF(FastCV_FOUND)
|
||||||
|
ENDIF(WITH_FASTCV)
|
||||||
|
|
||||||
IF(WITH_ORB_SLAM2 AND NOT G2O_FOUND)
|
IF(WITH_ORB_SLAM2 AND NOT G2O_FOUND)
|
||||||
FIND_PACKAGE(ORB_SLAM2 QUIET)
|
FIND_PACKAGE(ORB_SLAM2 QUIET)
|
||||||
@@ -645,6 +652,9 @@ ENDIF()
|
|||||||
IF(NOT libpointmatcher_FOUND)
|
IF(NOT libpointmatcher_FOUND)
|
||||||
SET(POINTMATCHER "//")
|
SET(POINTMATCHER "//")
|
||||||
ENDIF(NOT libpointmatcher_FOUND)
|
ENDIF(NOT libpointmatcher_FOUND)
|
||||||
|
IF(NOT FastCV_FOUND)
|
||||||
|
SET(FASTCV "//")
|
||||||
|
ENDIF(NOT FastCV_FOUND)
|
||||||
IF(NOT loam_velodyne_FOUND)
|
IF(NOT loam_velodyne_FOUND)
|
||||||
SET(LOAM "//")
|
SET(LOAM "//")
|
||||||
ENDIF(NOT loam_velodyne_FOUND)
|
ENDIF(NOT loam_velodyne_FOUND)
|
||||||
@@ -977,6 +987,14 @@ IF(OpenCV_FOUND)
|
|||||||
ENDIF()
|
ENDIF()
|
||||||
ENDIF(OpenCV_FOUND)
|
ENDIF(OpenCV_FOUND)
|
||||||
|
|
||||||
|
IF(FastCV_FOUND)
|
||||||
|
MESSAGE(STATUS " With FastCV = YES (License: Apache v2)")
|
||||||
|
ELSEIF(NOT WITH_FASTCV)
|
||||||
|
MESSAGE(STATUS " With FastCV = NO (WITH_FASTCV=OFF)")
|
||||||
|
ELSE()
|
||||||
|
MESSAGE(STATUS " With FastCV = NO (FastCV not found)")
|
||||||
|
ENDIF()
|
||||||
|
|
||||||
IF(Sqlite3_FOUND)
|
IF(Sqlite3_FOUND)
|
||||||
MESSAGE(STATUS " With external SQLite3 = YES (License: Public Domain)")
|
MESSAGE(STATUS " With external SQLite3 = YES (License: Public Domain)")
|
||||||
ELSE()
|
ELSE()
|
||||||
|
|||||||
@@ -51,6 +51,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|||||||
@K4A@#define RTABMAP_K4A
|
@K4A@#define RTABMAP_K4A
|
||||||
@CVSBA@#define RTABMAP_CVSBA
|
@CVSBA@#define RTABMAP_CVSBA
|
||||||
@POINTMATCHER@#define RTABMAP_POINTMATCHER
|
@POINTMATCHER@#define RTABMAP_POINTMATCHER
|
||||||
|
@FASTCV@#define RTABMAP_FASTCV
|
||||||
@LOAM@#define RTABMAP_LOAM
|
@LOAM@#define RTABMAP_LOAM
|
||||||
@DC1394@#define RTABMAP_DC1394
|
@DC1394@#define RTABMAP_DC1394
|
||||||
@FLYCAPTURE2@#define RTABMAP_FLYCAPTURE2
|
@FLYCAPTURE2@#define RTABMAP_FLYCAPTURE2
|
||||||
|
|||||||
@@ -0,0 +1,37 @@
|
|||||||
|
# - Find FastCV (https://developer.qualcomm.com/software/fastcv-sdk)
|
||||||
|
#
|
||||||
|
# It sets the following variables:
|
||||||
|
# FastCV_FOUND - Set to false, or undefined, if FastCV isn't found.
|
||||||
|
# FastCV_INCLUDE_DIRS - The FastCV include directory.
|
||||||
|
# FastCV_LIBRARIES - The FastCV library to link against.
|
||||||
|
|
||||||
|
IF(NOT WIN32 AND NOT APPLE)
|
||||||
|
|
||||||
|
EXECUTE_PROCESS( COMMAND uname -m COMMAND tr -d '\n' OUTPUT_VARIABLE ARCHITECTURE )
|
||||||
|
MESSAGE( STATUS "Architecture: ${ARCHITECTURE}" )
|
||||||
|
|
||||||
|
# Currently only tested on aarch64!
|
||||||
|
IF(${ARCHITECTURE} STREQUAL "aarch64")
|
||||||
|
find_path(FastCV_INCLUDE_DIRS NAMES fastcv.h PATH_SUFFIXES fastcv)
|
||||||
|
find_library(FastCV_LIBRARY NAMES fastcvopt fastcv)
|
||||||
|
ENDIF(${ARCHITECTURE} STREQUAL "aarch64")
|
||||||
|
ENDIF(NOT WIN32 AND NOT APPLE)
|
||||||
|
|
||||||
|
IF (FastCV_INCLUDE_DIRS AND FastCV_LIBRARY)
|
||||||
|
SET(FastCV_FOUND TRUE)
|
||||||
|
ENDIF (FastCV_INCLUDE_DIRS AND FastCV_LIBRARY)
|
||||||
|
|
||||||
|
IF (FastCV_FOUND)
|
||||||
|
SET(FastCV_LIBRARIES ${FastCV_LIBRARY})
|
||||||
|
|
||||||
|
# show which RealSense was found only if not quiet
|
||||||
|
IF (NOT FastCV_FIND_QUIETLY)
|
||||||
|
MESSAGE(STATUS "Found FastCV: ${FastCV_LIBRARIES}")
|
||||||
|
ENDIF (NOT FastCV_FIND_QUIETLY)
|
||||||
|
ELSE (FastCV_FOUND)
|
||||||
|
# fatal error if RealSense is required but not found
|
||||||
|
IF (FastCV_FIND_REQUIRED)
|
||||||
|
MESSAGE(FATAL_ERROR "Could not find FastCV")
|
||||||
|
ENDIF (FastCV_FIND_REQUIRED)
|
||||||
|
ENDIF (FastCV_FOUND)
|
||||||
|
|
||||||
@@ -289,6 +289,14 @@ private:
|
|||||||
int maxThreshold_;
|
int maxThreshold_;
|
||||||
int gridRows_;
|
int gridRows_;
|
||||||
int gridCols_;
|
int gridCols_;
|
||||||
|
int fastCV_;
|
||||||
|
|
||||||
|
bool fastCVinit_;
|
||||||
|
int fastCVMaxFeatures_;
|
||||||
|
int fastCVLastImageHeight_;
|
||||||
|
uint32_t* fastCVCorners_= NULL;
|
||||||
|
uint32_t* fastCVCornerScores_ = NULL;
|
||||||
|
void* fastCVTempBuf_ = NULL;
|
||||||
|
|
||||||
cv::Ptr<cv::FeatureDetector> _fast;
|
cv::Ptr<cv::FeatureDetector> _fast;
|
||||||
cv::Ptr<CV_FAST_GPU> _gpuFast;
|
cv::Ptr<CV_FAST_GPU> _gpuFast;
|
||||||
|
|||||||
@@ -290,6 +290,7 @@ class RTABMAP_EXP Parameters
|
|||||||
RTABMAP_PARAM(FAST, MaxThreshold, int, 200, "Maximum threshold. Used only when FAST/GridRows and FAST/GridCols are set.");
|
RTABMAP_PARAM(FAST, MaxThreshold, int, 200, "Maximum threshold. Used only when FAST/GridRows and FAST/GridCols are set.");
|
||||||
RTABMAP_PARAM(FAST, GridRows, int, 0, "Grid rows (0 to disable). Adapts the detector to partition the source image into a grid and detect points in each cell.");
|
RTABMAP_PARAM(FAST, GridRows, int, 0, "Grid rows (0 to disable). Adapts the detector to partition the source image into a grid and detect points in each cell.");
|
||||||
RTABMAP_PARAM(FAST, GridCols, int, 0, "Grid cols (0 to disable). Adapts the detector to partition the source image into a grid and detect points in each cell.");
|
RTABMAP_PARAM(FAST, GridCols, int, 0, "Grid cols (0 to disable). Adapts the detector to partition the source image into a grid and detect points in each cell.");
|
||||||
|
RTABMAP_PARAM(FAST, CV, int, 0, "Enable FastCV implementation if non-zero (and RTAB-Map is built with FastCV support). Values should be 9 and 10.");
|
||||||
|
|
||||||
RTABMAP_PARAM(GFTT, QualityLevel, double, 0.001, "");
|
RTABMAP_PARAM(GFTT, QualityLevel, double, 0.001, "");
|
||||||
RTABMAP_PARAM(GFTT, MinDistance, double, 3, "");
|
RTABMAP_PARAM(GFTT, MinDistance, double, 3, "");
|
||||||
|
|||||||
@@ -115,7 +115,8 @@ private:
|
|||||||
bool _incrementalFlann;
|
bool _incrementalFlann;
|
||||||
float _rebalancingFactor;
|
float _rebalancingFactor;
|
||||||
float _nndrRatio;
|
float _nndrRatio;
|
||||||
std::string _dictionaryPath; // a pre-computed dictionary (.txt)
|
std::string _dictionaryPath; // a pre-computed dictionary (.txt or .db)
|
||||||
|
std::string _newDictionaryPath; // a pre-computed dictionary (.txt or .db)
|
||||||
bool _newWordsComparedTogether;
|
bool _newWordsComparedTogether;
|
||||||
int _lastWordId;
|
int _lastWordId;
|
||||||
bool useDistanceL1_;
|
bool useDistanceL1_;
|
||||||
|
|||||||
+83
-72
@@ -1,17 +1,17 @@
|
|||||||
|
|
||||||
SET(SRC_FILES
|
SET(SRC_FILES
|
||||||
Rtabmap.cpp
|
Rtabmap.cpp
|
||||||
RtabmapThread.cpp
|
RtabmapThread.cpp
|
||||||
|
|
||||||
Statistics.cpp
|
Statistics.cpp
|
||||||
|
|
||||||
Memory.cpp
|
Memory.cpp
|
||||||
|
|
||||||
DBDriver.cpp
|
DBDriver.cpp
|
||||||
DBDriverSqlite3.cpp
|
DBDriverSqlite3.cpp
|
||||||
DBReader.cpp
|
DBReader.cpp
|
||||||
|
|
||||||
Recovery.cpp
|
Recovery.cpp
|
||||||
|
|
||||||
Camera.cpp
|
Camera.cpp
|
||||||
CameraThread.cpp
|
CameraThread.cpp
|
||||||
@@ -33,88 +33,88 @@ SET(SRC_FILES
|
|||||||
camera/CameraStereoImages.cpp
|
camera/CameraStereoImages.cpp
|
||||||
camera/CameraStereoVideo.cpp
|
camera/CameraStereoVideo.cpp
|
||||||
camera/CameraStereoZed.cpp
|
camera/CameraStereoZed.cpp
|
||||||
camera/CameraStereoTara.cpp
|
camera/CameraStereoTara.cpp
|
||||||
camera/CameraVideo.cpp
|
camera/CameraVideo.cpp
|
||||||
|
|
||||||
EpipolarGeometry.cpp
|
EpipolarGeometry.cpp
|
||||||
VisualWord.cpp
|
VisualWord.cpp
|
||||||
VWDictionary.cpp
|
VWDictionary.cpp
|
||||||
BayesFilter.cpp
|
BayesFilter.cpp
|
||||||
Parameters.cpp
|
Parameters.cpp
|
||||||
Signature.cpp
|
Signature.cpp
|
||||||
Features2d.cpp
|
Features2d.cpp
|
||||||
Transform.cpp
|
Transform.cpp
|
||||||
GeodeticCoords.cpp
|
GeodeticCoords.cpp
|
||||||
|
|
||||||
util2d.cpp
|
util2d.cpp
|
||||||
|
|
||||||
util3d.cpp
|
util3d.cpp
|
||||||
util3d_filtering.cpp
|
util3d_filtering.cpp
|
||||||
util3d_mapping.cpp
|
util3d_mapping.cpp
|
||||||
util3d_transforms.cpp
|
util3d_transforms.cpp
|
||||||
util3d_registration.cpp
|
util3d_registration.cpp
|
||||||
util3d_surface.cpp
|
util3d_surface.cpp
|
||||||
util3d_features.cpp
|
util3d_features.cpp
|
||||||
util3d_correspondences.cpp
|
util3d_correspondences.cpp
|
||||||
util3d_motion_estimation.cpp
|
util3d_motion_estimation.cpp
|
||||||
|
|
||||||
SensorData.cpp
|
SensorData.cpp
|
||||||
Graph.cpp
|
Graph.cpp
|
||||||
Compression.cpp
|
Compression.cpp
|
||||||
Link.cpp
|
Link.cpp
|
||||||
LaserScan.cpp
|
LaserScan.cpp
|
||||||
|
|
||||||
Optimizer.cpp
|
Optimizer.cpp
|
||||||
optimizer/OptimizerTORO.cpp
|
optimizer/OptimizerTORO.cpp
|
||||||
optimizer/OptimizerG2O.cpp
|
optimizer/OptimizerG2O.cpp
|
||||||
optimizer/OptimizerGTSAM.cpp
|
optimizer/OptimizerGTSAM.cpp
|
||||||
optimizer/OptimizerCVSBA.cpp
|
optimizer/OptimizerCVSBA.cpp
|
||||||
|
|
||||||
Registration.cpp
|
Registration.cpp
|
||||||
RegistrationIcp.cpp
|
RegistrationIcp.cpp
|
||||||
RegistrationVis.cpp
|
RegistrationVis.cpp
|
||||||
|
|
||||||
Odometry.cpp
|
Odometry.cpp
|
||||||
OdometryThread.cpp
|
OdometryThread.cpp
|
||||||
odometry/OdometryF2M.cpp
|
odometry/OdometryF2M.cpp
|
||||||
odometry/OdometryMono.cpp
|
odometry/OdometryMono.cpp
|
||||||
odometry/OdometryF2F.cpp
|
odometry/OdometryF2F.cpp
|
||||||
odometry/OdometryFovis.cpp
|
odometry/OdometryFovis.cpp
|
||||||
odometry/OdometryViso2.cpp
|
odometry/OdometryViso2.cpp
|
||||||
odometry/OdometryDVO.cpp
|
odometry/OdometryDVO.cpp
|
||||||
odometry/OdometryOkvis.cpp
|
odometry/OdometryOkvis.cpp
|
||||||
odometry/OdometryORBSLAM2.cpp
|
odometry/OdometryORBSLAM2.cpp
|
||||||
odometry/OdometryLOAM.cpp
|
odometry/OdometryLOAM.cpp
|
||||||
odometry/OdometryMSCKF.cpp
|
odometry/OdometryMSCKF.cpp
|
||||||
odometry/OdometryVINS.cpp
|
odometry/OdometryVINS.cpp
|
||||||
|
|
||||||
IMUThread.cpp
|
IMUThread.cpp
|
||||||
IMUFilter.cpp
|
IMUFilter.cpp
|
||||||
imufilter/ComplementaryFilter.cpp
|
imufilter/ComplementaryFilter.cpp
|
||||||
|
|
||||||
Stereo.cpp
|
Stereo.cpp
|
||||||
StereoDense.cpp
|
StereoDense.cpp
|
||||||
StereoCameraModel.cpp
|
StereoCameraModel.cpp
|
||||||
stereo/StereoBM.cpp
|
stereo/StereoBM.cpp
|
||||||
stereo/StereoSGBM.cpp
|
stereo/StereoSGBM.cpp
|
||||||
|
|
||||||
OccupancyGrid.cpp
|
OccupancyGrid.cpp
|
||||||
|
|
||||||
MarkerDetector.cpp
|
MarkerDetector.cpp
|
||||||
|
|
||||||
GainCompensator.cpp
|
GainCompensator.cpp
|
||||||
|
|
||||||
rtflann/ext/lz4.c
|
rtflann/ext/lz4.c
|
||||||
rtflann/ext/lz4hc.c
|
rtflann/ext/lz4hc.c
|
||||||
FlannIndex.cpp
|
FlannIndex.cpp
|
||||||
|
|
||||||
#clams stuff
|
#clams stuff
|
||||||
clams/discrete_depth_distortion_model_helpers.cpp
|
clams/discrete_depth_distortion_model_helpers.cpp
|
||||||
clams/discrete_depth_distortion_model.cpp
|
clams/discrete_depth_distortion_model.cpp
|
||||||
clams/frame_projector.cpp
|
clams/frame_projector.cpp
|
||||||
clams/slam_calibrator.cpp
|
clams/slam_calibrator.cpp
|
||||||
|
|
||||||
opencv/ORBextractor.cc
|
opencv/ORBextractor.cc
|
||||||
)
|
)
|
||||||
|
|
||||||
IF(OpenCV_VERSION_MAJOR EQUAL 2)
|
IF(OpenCV_VERSION_MAJOR EQUAL 2)
|
||||||
@@ -348,6 +348,17 @@ IF(libpointmatcher_FOUND)
|
|||||||
)
|
)
|
||||||
ENDIF(libpointmatcher_FOUND)
|
ENDIF(libpointmatcher_FOUND)
|
||||||
|
|
||||||
|
IF(FastCV_FOUND)
|
||||||
|
SET(INCLUDE_DIRS
|
||||||
|
${INCLUDE_DIRS}
|
||||||
|
${FastCV_INCLUDE_DIRS}
|
||||||
|
)
|
||||||
|
SET(LIBRARIES
|
||||||
|
${LIBRARIES}
|
||||||
|
${FastCV_LIBRARIES}
|
||||||
|
)
|
||||||
|
ENDIF(FastCV_FOUND)
|
||||||
|
|
||||||
IF(loam_velodyne_FOUND)
|
IF(loam_velodyne_FOUND)
|
||||||
SET(INCLUDE_DIRS
|
SET(INCLUDE_DIRS
|
||||||
${INCLUDE_DIRS}
|
${INCLUDE_DIRS}
|
||||||
|
|||||||
+124
-1
@@ -65,6 +65,10 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|||||||
#include <opencv2/xfeatures2d/cuda.hpp>
|
#include <opencv2/xfeatures2d/cuda.hpp>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef RTABMAP_FASTCV
|
||||||
|
#include <fastcv.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
namespace rtabmap {
|
namespace rtabmap {
|
||||||
|
|
||||||
void Feature2D::filterKeypointsByDepth(
|
void Feature2D::filterKeypointsByDepth(
|
||||||
@@ -1081,13 +1085,66 @@ FAST::FAST(const ParametersMap & parameters) :
|
|||||||
minThreshold_(Parameters::defaultFASTMinThreshold()),
|
minThreshold_(Parameters::defaultFASTMinThreshold()),
|
||||||
maxThreshold_(Parameters::defaultFASTMaxThreshold()),
|
maxThreshold_(Parameters::defaultFASTMaxThreshold()),
|
||||||
gridRows_(Parameters::defaultFASTGridRows()),
|
gridRows_(Parameters::defaultFASTGridRows()),
|
||||||
gridCols_(Parameters::defaultFASTGridCols())
|
gridCols_(Parameters::defaultFASTGridCols()),
|
||||||
|
fastCV_(Parameters::defaultFASTCV()),
|
||||||
|
fastCVinit_(false),
|
||||||
|
fastCVMaxFeatures_(10000),
|
||||||
|
fastCVLastImageHeight_(0)
|
||||||
{
|
{
|
||||||
|
#ifdef RTABMAP_FASTCV
|
||||||
|
char sVersion[128] = { 0 };
|
||||||
|
fcvGetVersion(sVersion, 128);
|
||||||
|
UINFO("fastcv version = %s", sVersion);
|
||||||
|
int ix;
|
||||||
|
if ((ix = fcvSetOperationMode(FASTCV_OP_PERFORMANCE)))
|
||||||
|
{
|
||||||
|
UERROR("fcvSetOperationMode return=%d, OpenCV FAST will be used instead!", ix);
|
||||||
|
fastCV_ = 0;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
fcvMemInit();
|
||||||
|
|
||||||
|
if (!(fastCVCorners_ = (uint32_t*)fcvMemAlloc(fastCVMaxFeatures_ * sizeof(uint32_t) * 2, 16)) ||
|
||||||
|
!(fastCVCornerScores_ = (uint32_t*)fcvMemAlloc( fastCVMaxFeatures_ * sizeof(uint32_t), 16 )))
|
||||||
|
{
|
||||||
|
UERROR("could not alloc fastcv mem, using opencv fast instead!");
|
||||||
|
|
||||||
|
if (fastCVCorners_)
|
||||||
|
{
|
||||||
|
fcvMemFree(fastCVCorners_);
|
||||||
|
fastCVCorners_ = NULL;
|
||||||
|
}
|
||||||
|
if (fastCVCornerScores_)
|
||||||
|
{
|
||||||
|
fcvMemFree(fastCVCornerScores_);
|
||||||
|
fastCVCornerScores_ = NULL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
fastCVinit_ = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
parseParameters(parameters);
|
parseParameters(parameters);
|
||||||
}
|
}
|
||||||
|
|
||||||
FAST::~FAST()
|
FAST::~FAST()
|
||||||
{
|
{
|
||||||
|
#ifdef RTABMAP_FASTCV
|
||||||
|
if(fastCVinit_)
|
||||||
|
{
|
||||||
|
fcvMemDeInit();
|
||||||
|
|
||||||
|
if (fastCVCorners_)
|
||||||
|
fcvMemFree(fastCVCorners_);
|
||||||
|
if (fastCVCornerScores_)
|
||||||
|
fcvMemFree(fastCVCornerScores_);
|
||||||
|
if (fastCVTempBuf_)
|
||||||
|
fcvMemFree(fastCVTempBuf_);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void FAST::parseParameters(const ParametersMap & parameters)
|
void FAST::parseParameters(const ParametersMap & parameters)
|
||||||
@@ -1104,6 +1161,9 @@ void FAST::parseParameters(const ParametersMap & parameters)
|
|||||||
Parameters::parse(parameters, Parameters::kFASTGridRows(), gridRows_);
|
Parameters::parse(parameters, Parameters::kFASTGridRows(), gridRows_);
|
||||||
Parameters::parse(parameters, Parameters::kFASTGridCols(), gridCols_);
|
Parameters::parse(parameters, Parameters::kFASTGridCols(), gridCols_);
|
||||||
|
|
||||||
|
Parameters::parse(parameters, Parameters::kFASTCV(), fastCV_);
|
||||||
|
UASSERT(fastCV_ == 0 || fastCV_ == 9 || fastCV_ == 10);
|
||||||
|
|
||||||
UASSERT_MSG(threshold_ >= minThreshold_, uFormat("%d vs %d", threshold_, minThreshold_).c_str());
|
UASSERT_MSG(threshold_ >= minThreshold_, uFormat("%d vs %d", threshold_, minThreshold_).c_str());
|
||||||
UASSERT_MSG(threshold_ <= maxThreshold_, uFormat("%d vs %d", threshold_, maxThreshold_).c_str());
|
UASSERT_MSG(threshold_ <= maxThreshold_, uFormat("%d vs %d", threshold_, maxThreshold_).c_str());
|
||||||
|
|
||||||
@@ -1183,6 +1243,69 @@ std::vector<cv::KeyPoint> FAST::generateKeypointsImpl(const cv::Mat & image, con
|
|||||||
{
|
{
|
||||||
UASSERT(!image.empty() && image.channels() == 1 && image.depth() == CV_8U);
|
UASSERT(!image.empty() && image.channels() == 1 && image.depth() == CV_8U);
|
||||||
std::vector<cv::KeyPoint> keypoints;
|
std::vector<cv::KeyPoint> keypoints;
|
||||||
|
|
||||||
|
#ifdef RTABMAP_FASTCV
|
||||||
|
if(fastCV_>0)
|
||||||
|
{
|
||||||
|
// Note: mask not supported, it should be the inverse of the current mask used (0=where to extract)
|
||||||
|
uint32_t nCorners = 0;
|
||||||
|
|
||||||
|
UASSERT(fastCVCorners_ != NULL && fastCVCornerScores_ != NULL);
|
||||||
|
if (nonmaxSuppression_)
|
||||||
|
{
|
||||||
|
if(fastCVTempBuf_==NULL || (fastCVTempBuf_!= NULL && fastCVLastImageHeight_!= image.rows))
|
||||||
|
{
|
||||||
|
if (fastCVTempBuf_)
|
||||||
|
{
|
||||||
|
fcvMemFree(fastCVTempBuf_);
|
||||||
|
fastCVTempBuf_ = NULL;
|
||||||
|
}
|
||||||
|
if(!(fastCVTempBuf_ = (uint32_t*)fcvMemAlloc( (3*fastCVMaxFeatures_+image.rows+1)*4, 16 )))
|
||||||
|
{
|
||||||
|
UERROR("could not alloc fastcv mem for temp buf (%s=true)", Parameters::kFASTNonmaxSuppression().c_str());
|
||||||
|
fastCVLastImageHeight_ = 0;
|
||||||
|
return keypoints;
|
||||||
|
}
|
||||||
|
fastCVLastImageHeight_ = image.rows;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// image.data should be 128 bits aligned
|
||||||
|
UDEBUG("%dx%d (step=%d) thr=%d maxFeatures=%d", image.cols, image.rows, image.step1(), threshold_, fastCVMaxFeatures_);
|
||||||
|
if(fastCV_ == 10)
|
||||||
|
{
|
||||||
|
fcvCornerFast10Scoreu8(image.data, image.cols, image.rows, 0, threshold_, 0, fastCVCorners_, fastCVCornerScores_, fastCVMaxFeatures_, &nCorners, nonmaxSuppression_?1:0, fastCVTempBuf_);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
fcvCornerFast9Scoreu8_v2(image.data, image.cols, image.rows, image.step1(), threshold_, 0, fastCVCorners_, fastCVCornerScores_, fastCVMaxFeatures_, &nCorners, nonmaxSuppression_?1:0, fastCVTempBuf_);
|
||||||
|
}
|
||||||
|
UDEBUG("number of corners found = %d:", nCorners);
|
||||||
|
keypoints.resize(nCorners);
|
||||||
|
for (uint32_t i = 0; i < nCorners; i++)
|
||||||
|
{
|
||||||
|
keypoints[i].pt.x = fastCVCorners_[i * 2];
|
||||||
|
keypoints[i].pt.y = fastCVCorners_[(i * 2) + 1];
|
||||||
|
keypoints[i].size = 3;
|
||||||
|
keypoints[i].response = fastCVCornerScores_[i];
|
||||||
|
}
|
||||||
|
|
||||||
|
if(this->getMaxFeatures() > 0)
|
||||||
|
{
|
||||||
|
this->limitKeypoints(keypoints, this->getMaxFeatures());
|
||||||
|
}
|
||||||
|
return keypoints;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
if(fastCV_>0)
|
||||||
|
{
|
||||||
|
UWARN( "RTAB-Map is not built with FastCV support. OpenCV's FAST is used instead. "
|
||||||
|
"Please set %s to 0. This message will only appear once.",
|
||||||
|
Parameters::kFASTCV().c_str());
|
||||||
|
fastCV_ = 0;
|
||||||
|
}
|
||||||
|
|
||||||
cv::Mat imgRoi(image, roi);
|
cv::Mat imgRoi(image, roi);
|
||||||
cv::Mat maskRoi;
|
cv::Mat maskRoi;
|
||||||
if(!mask.empty())
|
if(!mask.empty())
|
||||||
|
|||||||
@@ -49,6 +49,7 @@ FlannIndex::~FlannIndex()
|
|||||||
|
|
||||||
void FlannIndex::release()
|
void FlannIndex::release()
|
||||||
{
|
{
|
||||||
|
UDEBUG("");
|
||||||
if(index_)
|
if(index_)
|
||||||
{
|
{
|
||||||
if(featuresType_ == CV_8UC1)
|
if(featuresType_ == CV_8UC1)
|
||||||
@@ -76,6 +77,7 @@ void FlannIndex::release()
|
|||||||
isLSH_ = false;
|
isLSH_ = false;
|
||||||
addedDescriptors_.clear();
|
addedDescriptors_.clear();
|
||||||
removedIndexes_.clear();
|
removedIndexes_.clear();
|
||||||
|
UDEBUG("");
|
||||||
}
|
}
|
||||||
|
|
||||||
unsigned int FlannIndex::indexedFeatures() const
|
unsigned int FlannIndex::indexedFeatures() const
|
||||||
@@ -138,6 +140,7 @@ void FlannIndex::buildLinearIndex(
|
|||||||
bool useDistanceL1,
|
bool useDistanceL1,
|
||||||
float rebalancingFactor)
|
float rebalancingFactor)
|
||||||
{
|
{
|
||||||
|
UDEBUG("");
|
||||||
this->release();
|
this->release();
|
||||||
UASSERT(index_ == 0);
|
UASSERT(index_ == 0);
|
||||||
UASSERT(features.type() == CV_32FC1 || features.type() == CV_8UC1);
|
UASSERT(features.type() == CV_32FC1 || features.type() == CV_8UC1);
|
||||||
@@ -178,6 +181,7 @@ void FlannIndex::buildLinearIndex(
|
|||||||
addedDescriptors_.insert(std::make_pair(nextIndex_, features));
|
addedDescriptors_.insert(std::make_pair(nextIndex_, features));
|
||||||
|
|
||||||
nextIndex_ = features.rows;
|
nextIndex_ = features.rows;
|
||||||
|
UDEBUG("");
|
||||||
}
|
}
|
||||||
|
|
||||||
void FlannIndex::buildKDTreeIndex(
|
void FlannIndex::buildKDTreeIndex(
|
||||||
@@ -186,6 +190,7 @@ void FlannIndex::buildKDTreeIndex(
|
|||||||
bool useDistanceL1,
|
bool useDistanceL1,
|
||||||
float rebalancingFactor)
|
float rebalancingFactor)
|
||||||
{
|
{
|
||||||
|
UDEBUG("");
|
||||||
this->release();
|
this->release();
|
||||||
UASSERT(index_ == 0);
|
UASSERT(index_ == 0);
|
||||||
UASSERT(features.type() == CV_32FC1 || features.type() == CV_8UC1);
|
UASSERT(features.type() == CV_32FC1 || features.type() == CV_8UC1);
|
||||||
@@ -226,6 +231,7 @@ void FlannIndex::buildKDTreeIndex(
|
|||||||
addedDescriptors_.insert(std::make_pair(nextIndex_, features));
|
addedDescriptors_.insert(std::make_pair(nextIndex_, features));
|
||||||
|
|
||||||
nextIndex_ = features.rows;
|
nextIndex_ = features.rows;
|
||||||
|
UDEBUG("");
|
||||||
}
|
}
|
||||||
|
|
||||||
void FlannIndex::buildKDTreeSingleIndex(
|
void FlannIndex::buildKDTreeSingleIndex(
|
||||||
@@ -235,6 +241,7 @@ void FlannIndex::buildKDTreeSingleIndex(
|
|||||||
bool useDistanceL1,
|
bool useDistanceL1,
|
||||||
float rebalancingFactor)
|
float rebalancingFactor)
|
||||||
{
|
{
|
||||||
|
UDEBUG("");
|
||||||
this->release();
|
this->release();
|
||||||
UASSERT(index_ == 0);
|
UASSERT(index_ == 0);
|
||||||
UASSERT(features.type() == CV_32FC1 || features.type() == CV_8UC1);
|
UASSERT(features.type() == CV_32FC1 || features.type() == CV_8UC1);
|
||||||
@@ -275,6 +282,7 @@ void FlannIndex::buildKDTreeSingleIndex(
|
|||||||
addedDescriptors_.insert(std::make_pair(nextIndex_, features));
|
addedDescriptors_.insert(std::make_pair(nextIndex_, features));
|
||||||
|
|
||||||
nextIndex_ = features.rows;
|
nextIndex_ = features.rows;
|
||||||
|
UDEBUG("");
|
||||||
}
|
}
|
||||||
|
|
||||||
void FlannIndex::buildLSHIndex(
|
void FlannIndex::buildLSHIndex(
|
||||||
@@ -284,6 +292,7 @@ void FlannIndex::buildLSHIndex(
|
|||||||
unsigned int multi_probe_level,
|
unsigned int multi_probe_level,
|
||||||
float rebalancingFactor)
|
float rebalancingFactor)
|
||||||
{
|
{
|
||||||
|
UDEBUG("");
|
||||||
this->release();
|
this->release();
|
||||||
UASSERT(index_ == 0);
|
UASSERT(index_ == 0);
|
||||||
UASSERT(features.type() == CV_8UC1);
|
UASSERT(features.type() == CV_8UC1);
|
||||||
@@ -300,6 +309,7 @@ void FlannIndex::buildLSHIndex(
|
|||||||
addedDescriptors_.insert(std::make_pair(nextIndex_, features));
|
addedDescriptors_.insert(std::make_pair(nextIndex_, features));
|
||||||
|
|
||||||
nextIndex_ = features.rows;
|
nextIndex_ = features.rows;
|
||||||
|
UDEBUG("");
|
||||||
}
|
}
|
||||||
|
|
||||||
bool FlannIndex::isBuilt()
|
bool FlannIndex::isBuilt()
|
||||||
|
|||||||
@@ -605,6 +605,12 @@ ParametersMap Parameters::parseArguments(int argc, char * argv[], bool onlyParam
|
|||||||
std::cout << str << std::setw(spacing - str.size()) << "true" << std::endl;
|
std::cout << str << std::setw(spacing - str.size()) << "true" << std::endl;
|
||||||
#else
|
#else
|
||||||
std::cout << str << std::setw(spacing - str.size()) << "false" << std::endl;
|
std::cout << str << std::setw(spacing - str.size()) << "false" << std::endl;
|
||||||
|
#endif
|
||||||
|
str = "With FastCV:";
|
||||||
|
#ifdef RTABMAP_FASTCV
|
||||||
|
std::cout << str << std::setw(spacing - str.size()) << "true" << std::endl;
|
||||||
|
#else
|
||||||
|
std::cout << str << std::setw(spacing - str.size()) << "false" << std::endl;
|
||||||
#endif
|
#endif
|
||||||
str = "With Madgwick:";
|
str = "With Madgwick:";
|
||||||
#ifdef RTABMAP_MADGWICK
|
#ifdef RTABMAP_MADGWICK
|
||||||
|
|||||||
@@ -66,7 +66,7 @@ VWDictionary::VWDictionary(const ParametersMap & parameters) :
|
|||||||
_incrementalFlann(Parameters::defaultKpIncrementalFlann()),
|
_incrementalFlann(Parameters::defaultKpIncrementalFlann()),
|
||||||
_rebalancingFactor(Parameters::defaultKpFlannRebalancingFactor()),
|
_rebalancingFactor(Parameters::defaultKpFlannRebalancingFactor()),
|
||||||
_nndrRatio(Parameters::defaultKpNndrRatio()),
|
_nndrRatio(Parameters::defaultKpNndrRatio()),
|
||||||
_dictionaryPath(Parameters::defaultKpDictionaryPath()),
|
_newDictionaryPath(Parameters::defaultKpDictionaryPath()),
|
||||||
_newWordsComparedTogether(Parameters::defaultKpNewWordsComparedTogether()),
|
_newWordsComparedTogether(Parameters::defaultKpNewWordsComparedTogether()),
|
||||||
_lastWordId(0),
|
_lastWordId(0),
|
||||||
useDistanceL1_(false),
|
useDistanceL1_(false),
|
||||||
@@ -93,11 +93,10 @@ void VWDictionary::parseParameters(const ParametersMap & parameters)
|
|||||||
|
|
||||||
UASSERT_MSG(_nndrRatio > 0.0f, uFormat("String=%s value=%f", uContains(parameters, Parameters::kKpNndrRatio())?parameters.at(Parameters::kKpNndrRatio()).c_str():"", _nndrRatio).c_str());
|
UASSERT_MSG(_nndrRatio > 0.0f, uFormat("String=%s value=%f", uContains(parameters, Parameters::kKpNndrRatio())?parameters.at(Parameters::kKpNndrRatio()).c_str():"", _nndrRatio).c_str());
|
||||||
|
|
||||||
std::string dictionaryPath = _dictionaryPath;
|
|
||||||
bool incrementalDictionary = _incrementalDictionary;
|
bool incrementalDictionary = _incrementalDictionary;
|
||||||
if((iter=parameters.find(Parameters::kKpDictionaryPath())) != parameters.end())
|
if((iter=parameters.find(Parameters::kKpDictionaryPath())) != parameters.end())
|
||||||
{
|
{
|
||||||
dictionaryPath = (*iter).second.c_str();
|
_newDictionaryPath = (*iter).second.c_str();
|
||||||
}
|
}
|
||||||
if((iter=parameters.find(Parameters::kKpIncrementalDictionary())) != parameters.end())
|
if((iter=parameters.find(Parameters::kKpIncrementalDictionary())) != parameters.end())
|
||||||
{
|
{
|
||||||
@@ -115,11 +114,7 @@ void VWDictionary::parseParameters(const ParametersMap & parameters)
|
|||||||
{
|
{
|
||||||
this->setIncrementalDictionary();
|
this->setIncrementalDictionary();
|
||||||
}
|
}
|
||||||
else
|
_incrementalDictionary = incrementalDictionary;
|
||||||
{
|
|
||||||
this->setFixedDictionary(dictionaryPath);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void VWDictionary::setIncrementalDictionary()
|
void VWDictionary::setIncrementalDictionary()
|
||||||
@@ -133,21 +128,23 @@ void VWDictionary::setIncrementalDictionary()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
_dictionaryPath = "";
|
_dictionaryPath = "";
|
||||||
|
_newDictionaryPath = "";
|
||||||
}
|
}
|
||||||
|
|
||||||
void VWDictionary::setFixedDictionary(const std::string & dictionaryPath)
|
void VWDictionary::setFixedDictionary(const std::string & dictionaryPath)
|
||||||
{
|
{
|
||||||
|
UDEBUG("");
|
||||||
if(!dictionaryPath.empty())
|
if(!dictionaryPath.empty())
|
||||||
{
|
{
|
||||||
if((!_incrementalDictionary && _dictionaryPath.compare(dictionaryPath) != 0) ||
|
if((!_incrementalDictionary && _dictionaryPath.compare(dictionaryPath) != 0) ||
|
||||||
_visualWords.size() == 0)
|
_visualWords.size() == 0)
|
||||||
{
|
{
|
||||||
UDEBUG("incremental=%d, oldPath=%s newPath=%s, visual words=%d",
|
UINFO("incremental=%d, oldPath=%s newPath=%s, visual words=%d",
|
||||||
_incrementalDictionary?1:0, _dictionaryPath.c_str(), dictionaryPath.c_str(), (int)_visualWords.size());
|
_incrementalDictionary?1:0, _dictionaryPath.c_str(), dictionaryPath.c_str(), (int)_visualWords.size());
|
||||||
|
|
||||||
if(UFile::getExtension(dictionaryPath).compare("db") == 0)
|
if(UFile::getExtension(dictionaryPath).compare("db") == 0)
|
||||||
{
|
{
|
||||||
UDEBUG("Loading fixed vocabulary \"%s\", this may take a while...", dictionaryPath.c_str());
|
UWARN("Loading fixed vocabulary \"%s\", this may take a while...", dictionaryPath.c_str());
|
||||||
DBDriver * driver = DBDriver::create();
|
DBDriver * driver = DBDriver::create();
|
||||||
if(driver->openConnection(dictionaryPath, false))
|
if(driver->openConnection(dictionaryPath, false))
|
||||||
{
|
{
|
||||||
@@ -252,9 +249,11 @@ void VWDictionary::setFixedDictionary(const std::string & dictionaryPath)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
this->update();
|
_dictionaryPath = dictionaryPath;
|
||||||
|
_newDictionaryPath = dictionaryPath;
|
||||||
_incrementalDictionary = false;
|
_incrementalDictionary = false;
|
||||||
UDEBUG("Loaded %d words!", (int)_visualWords.size());
|
this->update();
|
||||||
|
UWARN("Loaded %d words!", (int)_visualWords.size());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if(!_incrementalDictionary)
|
else if(!_incrementalDictionary)
|
||||||
@@ -275,6 +274,7 @@ void VWDictionary::setFixedDictionary(const std::string & dictionaryPath)
|
|||||||
_incrementalDictionary = false;
|
_incrementalDictionary = false;
|
||||||
}
|
}
|
||||||
_dictionaryPath = dictionaryPath;
|
_dictionaryPath = dictionaryPath;
|
||||||
|
_newDictionaryPath = dictionaryPath;
|
||||||
}
|
}
|
||||||
|
|
||||||
void VWDictionary::setNNStrategy(NNStrategy strategy)
|
void VWDictionary::setNNStrategy(NNStrategy strategy)
|
||||||
@@ -402,13 +402,19 @@ cv::Mat VWDictionary::convert32FToBin(const cv::Mat & descriptorsIn)
|
|||||||
|
|
||||||
void VWDictionary::update()
|
void VWDictionary::update()
|
||||||
{
|
{
|
||||||
ULOGGER_DEBUG("");
|
ULOGGER_DEBUG("incremental=%d", _incrementalDictionary?1:0);
|
||||||
if(!_incrementalDictionary && !_notIndexedWords.size())
|
if(!_incrementalDictionary)
|
||||||
{
|
{
|
||||||
// No need to update the search index if we
|
// reload the fixed dictionary if it has been cleared or not yet initialized
|
||||||
// use a fixed dictionary and the index is
|
this->setFixedDictionary(_newDictionaryPath);
|
||||||
// already built
|
|
||||||
return;
|
if(!_incrementalDictionary && !_notIndexedWords.size())
|
||||||
|
{
|
||||||
|
// No need to update the search index if we
|
||||||
|
// use a fixed dictionary and the index is
|
||||||
|
// already built
|
||||||
|
return;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(_notIndexedWords.size() || _visualWords.size() == 0 || _removedIndexedWords.size())
|
if(_notIndexedWords.size() || _visualWords.size() == 0 || _removedIndexedWords.size())
|
||||||
@@ -643,12 +649,6 @@ void VWDictionary::clear(bool printWarningsIfNotEmpty)
|
|||||||
_unusedWords.clear();
|
_unusedWords.clear();
|
||||||
_flannIndex->release();
|
_flannIndex->release();
|
||||||
useDistanceL1_ = false;
|
useDistanceL1_ = false;
|
||||||
|
|
||||||
if(!_incrementalDictionary)
|
|
||||||
{
|
|
||||||
// reload the fixed dictionary
|
|
||||||
this->setFixedDictionary(_dictionaryPath);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int VWDictionary::getNextId()
|
int VWDictionary::getNextId()
|
||||||
|
|||||||
@@ -66,6 +66,13 @@ AboutDialog::AboutDialog(QWidget * parent) :
|
|||||||
_ui->label_orboctree->setText("No");
|
_ui->label_orboctree->setText("No");
|
||||||
_ui->label_orboctree_license->setEnabled(false);
|
_ui->label_orboctree_license->setEnabled(false);
|
||||||
#endif
|
#endif
|
||||||
|
#ifdef RTABMAP_FASTCV
|
||||||
|
_ui->label_fastcv->setText("Yes");
|
||||||
|
_ui->label_fastcv_license->setEnabled(true);
|
||||||
|
#else
|
||||||
|
_ui->label_fastcv->setText("No");
|
||||||
|
_ui->label_fastcv_license->setEnabled(false);
|
||||||
|
#endif
|
||||||
#ifdef RTABMAP_OCTOMAP
|
#ifdef RTABMAP_OCTOMAP
|
||||||
_ui->label_octomap->setText("Yes");
|
_ui->label_octomap->setText("Yes");
|
||||||
_ui->label_octomap_license->setEnabled(true);
|
_ui->label_octomap_license->setEnabled(true);
|
||||||
|
|||||||
@@ -869,6 +869,7 @@ PreferencesDialog::PreferencesDialog(QWidget * parent) :
|
|||||||
_ui->fastGridCols->setObjectName(Parameters::kFASTGridCols().c_str());
|
_ui->fastGridCols->setObjectName(Parameters::kFASTGridCols().c_str());
|
||||||
_ui->fastGpu->setObjectName(Parameters::kFASTGpu().c_str());
|
_ui->fastGpu->setObjectName(Parameters::kFASTGpu().c_str());
|
||||||
_ui->fastKeypointRatio->setObjectName(Parameters::kFASTGpuKeypointsRatio().c_str());
|
_ui->fastKeypointRatio->setObjectName(Parameters::kFASTGpuKeypointsRatio().c_str());
|
||||||
|
_ui->fastCV->setObjectName(Parameters::kFASTCV().c_str());
|
||||||
|
|
||||||
//ORB detector
|
//ORB detector
|
||||||
_ui->doubleSpinBox_ORBScaleFactor->setObjectName(Parameters::kORBScaleFactor().c_str());
|
_ui->doubleSpinBox_ORBScaleFactor->setObjectName(Parameters::kORBScaleFactor().c_str());
|
||||||
|
|||||||
+242
-209
@@ -162,9 +162,9 @@ p, li { white-space: pre-wrap; }
|
|||||||
<property name="geometry">
|
<property name="geometry">
|
||||||
<rect>
|
<rect>
|
||||||
<x>0</x>
|
<x>0</x>
|
||||||
<y>-124</y>
|
<y>0</y>
|
||||||
<width>593</width>
|
<width>597</width>
|
||||||
<height>652</height>
|
<height>751</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
<layout class="QVBoxLayout" name="verticalLayout_2">
|
<layout class="QVBoxLayout" name="verticalLayout_2">
|
||||||
@@ -185,6 +185,26 @@ p, li { white-space: pre-wrap; }
|
|||||||
</property>
|
</property>
|
||||||
<item>
|
<item>
|
||||||
<layout class="QGridLayout" name="gridLayout_2" columnstretch="0,0,1">
|
<layout class="QGridLayout" name="gridLayout_2" columnstretch="0,0,1">
|
||||||
|
<item row="25" column="2">
|
||||||
|
<widget class="QLabel" name="label_fovis_license">
|
||||||
|
<property name="text">
|
||||||
|
<string>GPLv2</string>
|
||||||
|
</property>
|
||||||
|
<property name="wordWrap">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="1" column="0">
|
||||||
|
<widget class="QLabel" name="label_7">
|
||||||
|
<property name="text">
|
||||||
|
<string>OpenCV version :</string>
|
||||||
|
</property>
|
||||||
|
<property name="wordWrap">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
<item row="2" column="1">
|
<item row="2" column="1">
|
||||||
<widget class="QLabel" name="label_pcl_version">
|
<widget class="QLabel" name="label_pcl_version">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
@@ -198,7 +218,7 @@ p, li { white-space: pre-wrap; }
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="10" column="1">
|
<item row="11" column="1">
|
||||||
<widget class="QLabel" name="label_realsense2">
|
<widget class="QLabel" name="label_realsense2">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string/>
|
<string/>
|
||||||
@@ -211,7 +231,7 @@ p, li { white-space: pre-wrap; }
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="28" column="0">
|
<item row="29" column="0">
|
||||||
<widget class="QLabel" name="label_35">
|
<widget class="QLabel" name="label_35">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>With OKVIS :</string>
|
<string>With OKVIS :</string>
|
||||||
@@ -221,7 +241,7 @@ p, li { white-space: pre-wrap; }
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="26" column="1">
|
<item row="27" column="1">
|
||||||
<widget class="QLabel" name="label_dvo">
|
<widget class="QLabel" name="label_dvo">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string/>
|
<string/>
|
||||||
@@ -234,7 +254,7 @@ p, li { white-space: pre-wrap; }
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="7" column="1">
|
<item row="8" column="1">
|
||||||
<widget class="QLabel" name="label_openni2">
|
<widget class="QLabel" name="label_openni2">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string/>
|
<string/>
|
||||||
@@ -257,7 +277,7 @@ p, li { white-space: pre-wrap; }
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="10" column="2">
|
<item row="11" column="2">
|
||||||
<widget class="QLabel" name="label_realsense2_license">
|
<widget class="QLabel" name="label_realsense2_license">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Apache-2</string>
|
<string>Apache-2</string>
|
||||||
@@ -267,7 +287,7 @@ p, li { white-space: pre-wrap; }
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="28" column="1">
|
<item row="29" column="1">
|
||||||
<widget class="QLabel" name="label_okvis">
|
<widget class="QLabel" name="label_okvis">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string/>
|
<string/>
|
||||||
@@ -280,7 +300,7 @@ p, li { white-space: pre-wrap; }
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="30" column="0">
|
<item row="31" column="0">
|
||||||
<widget class="QLabel" name="label_34">
|
<widget class="QLabel" name="label_34">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>With MSCKF :</string>
|
<string>With MSCKF :</string>
|
||||||
@@ -290,7 +310,7 @@ p, li { white-space: pre-wrap; }
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="21" column="1">
|
<item row="22" column="1">
|
||||||
<widget class="QLabel" name="label_octomap">
|
<widget class="QLabel" name="label_octomap">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string/>
|
<string/>
|
||||||
@@ -303,7 +323,7 @@ p, li { white-space: pre-wrap; }
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="30" column="1">
|
<item row="31" column="1">
|
||||||
<widget class="QLabel" name="label_msckf">
|
<widget class="QLabel" name="label_msckf">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string/>
|
<string/>
|
||||||
@@ -326,7 +346,7 @@ p, li { white-space: pre-wrap; }
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="14" column="0">
|
<item row="15" column="0">
|
||||||
<widget class="QLabel" name="label_38">
|
<widget class="QLabel" name="label_38">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>With K4W2 :</string>
|
<string>With K4W2 :</string>
|
||||||
@@ -336,7 +356,7 @@ p, li { white-space: pre-wrap; }
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="13" column="1">
|
<item row="14" column="1">
|
||||||
<widget class="QLabel" name="label_zed">
|
<widget class="QLabel" name="label_zed">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string/>
|
<string/>
|
||||||
@@ -349,7 +369,7 @@ p, li { white-space: pre-wrap; }
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="22" column="0">
|
<item row="23" column="0">
|
||||||
<widget class="QLabel" name="label_24">
|
<widget class="QLabel" name="label_24">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>With CPU-TSDF :</string>
|
<string>With CPU-TSDF :</string>
|
||||||
@@ -359,7 +379,17 @@ p, li { white-space: pre-wrap; }
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="25" column="0">
|
<item row="12" column="0">
|
||||||
|
<widget class="QLabel" name="label_16">
|
||||||
|
<property name="text">
|
||||||
|
<string>With stereo dc1394 :</string>
|
||||||
|
</property>
|
||||||
|
<property name="wordWrap">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="26" column="0">
|
||||||
<widget class="QLabel" name="label_26">
|
<widget class="QLabel" name="label_26">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>With Viso2 :</string>
|
<string>With Viso2 :</string>
|
||||||
@@ -369,7 +399,7 @@ p, li { white-space: pre-wrap; }
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="27" column="0">
|
<item row="28" column="0">
|
||||||
<widget class="QLabel" name="label_28">
|
<widget class="QLabel" name="label_28">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>With ORB SLAM 2 :</string>
|
<string>With ORB SLAM 2 :</string>
|
||||||
@@ -389,7 +419,7 @@ p, li { white-space: pre-wrap; }
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="24" column="0">
|
<item row="25" column="0">
|
||||||
<widget class="QLabel" name="label_25">
|
<widget class="QLabel" name="label_25">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>With FOVIS :</string>
|
<string>With FOVIS :</string>
|
||||||
@@ -399,7 +429,7 @@ p, li { white-space: pre-wrap; }
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="13" column="0">
|
<item row="14" column="0">
|
||||||
<widget class="QLabel" name="label_21">
|
<widget class="QLabel" name="label_21">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>With stereo Zed :</string>
|
<string>With stereo Zed :</string>
|
||||||
@@ -409,7 +439,7 @@ p, li { white-space: pre-wrap; }
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="27" column="1">
|
<item row="28" column="1">
|
||||||
<widget class="QLabel" name="label_orbslam2">
|
<widget class="QLabel" name="label_orbslam2">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string/>
|
<string/>
|
||||||
@@ -422,7 +452,7 @@ p, li { white-space: pre-wrap; }
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="11" column="2">
|
<item row="12" column="2">
|
||||||
<widget class="QLabel" name="label_dc1394_license">
|
<widget class="QLabel" name="label_dc1394_license">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>LGPL</string>
|
<string>LGPL</string>
|
||||||
@@ -432,27 +462,7 @@ p, li { white-space: pre-wrap; }
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="1" column="0">
|
<item row="26" column="2">
|
||||||
<widget class="QLabel" name="label_7">
|
|
||||||
<property name="text">
|
|
||||||
<string>OpenCV version :</string>
|
|
||||||
</property>
|
|
||||||
<property name="wordWrap">
|
|
||||||
<bool>true</bool>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="24" column="2">
|
|
||||||
<widget class="QLabel" name="label_fovis_license">
|
|
||||||
<property name="text">
|
|
||||||
<string>GPLv2</string>
|
|
||||||
</property>
|
|
||||||
<property name="wordWrap">
|
|
||||||
<bool>true</bool>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="25" column="2">
|
|
||||||
<widget class="QLabel" name="label_viso2_license">
|
<widget class="QLabel" name="label_viso2_license">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>GPLv3</string>
|
<string>GPLv3</string>
|
||||||
@@ -462,7 +472,7 @@ p, li { white-space: pre-wrap; }
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="12" column="0">
|
<item row="13" column="0">
|
||||||
<widget class="QLabel" name="label_17">
|
<widget class="QLabel" name="label_17">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>With stereo FlyCapture2 :</string>
|
<string>With stereo FlyCapture2 :</string>
|
||||||
@@ -472,7 +482,7 @@ p, li { white-space: pre-wrap; }
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="16" column="0">
|
<item row="17" column="0">
|
||||||
<widget class="QLabel" name="label_77">
|
<widget class="QLabel" name="label_77">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>With TORO :</string>
|
<string>With TORO :</string>
|
||||||
@@ -482,7 +492,7 @@ p, li { white-space: pre-wrap; }
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="24" column="1">
|
<item row="25" column="1">
|
||||||
<widget class="QLabel" name="label_fovis">
|
<widget class="QLabel" name="label_fovis">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string/>
|
<string/>
|
||||||
@@ -495,7 +505,7 @@ p, li { white-space: pre-wrap; }
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="21" column="0">
|
<item row="22" column="0">
|
||||||
<widget class="QLabel" name="label_20">
|
<widget class="QLabel" name="label_20">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>With Octomap :</string>
|
<string>With Octomap :</string>
|
||||||
@@ -505,7 +515,17 @@ p, li { white-space: pre-wrap; }
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="12" column="1">
|
<item row="22" column="2">
|
||||||
|
<widget class="QLabel" name="label_octomap_license">
|
||||||
|
<property name="text">
|
||||||
|
<string>BSD</string>
|
||||||
|
</property>
|
||||||
|
<property name="wordWrap">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="13" column="1">
|
||||||
<widget class="QLabel" name="label_flycapture2">
|
<widget class="QLabel" name="label_flycapture2">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string/>
|
<string/>
|
||||||
@@ -518,7 +538,17 @@ p, li { white-space: pre-wrap; }
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="22" column="1">
|
<item row="9" column="0">
|
||||||
|
<widget class="QLabel" name="label_15">
|
||||||
|
<property name="text">
|
||||||
|
<string>With Freenect2 :</string>
|
||||||
|
</property>
|
||||||
|
<property name="wordWrap">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="23" column="1">
|
||||||
<widget class="QLabel" name="label_cputsdf">
|
<widget class="QLabel" name="label_cputsdf">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string/>
|
<string/>
|
||||||
@@ -531,26 +561,6 @@ p, li { white-space: pre-wrap; }
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="21" column="2">
|
|
||||||
<widget class="QLabel" name="label_octomap_license">
|
|
||||||
<property name="text">
|
|
||||||
<string>BSD</string>
|
|
||||||
</property>
|
|
||||||
<property name="wordWrap">
|
|
||||||
<bool>true</bool>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="8" column="0">
|
|
||||||
<widget class="QLabel" name="label_15">
|
|
||||||
<property name="text">
|
|
||||||
<string>With Freenect2 :</string>
|
|
||||||
</property>
|
|
||||||
<property name="wordWrap">
|
|
||||||
<bool>true</bool>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="2" column="0">
|
<item row="2" column="0">
|
||||||
<widget class="QLabel" name="label_11">
|
<widget class="QLabel" name="label_11">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
@@ -561,7 +571,7 @@ p, li { white-space: pre-wrap; }
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="8" column="2">
|
<item row="9" column="2">
|
||||||
<widget class="QLabel" name="label_freenect2_license">
|
<widget class="QLabel" name="label_freenect2_license">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Apache v2 and/or GPLv2</string>
|
<string>Apache v2 and/or GPLv2</string>
|
||||||
@@ -571,7 +581,7 @@ p, li { white-space: pre-wrap; }
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="9" column="0">
|
<item row="10" column="0">
|
||||||
<widget class="QLabel" name="label_22">
|
<widget class="QLabel" name="label_22">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>With RealSense :</string>
|
<string>With RealSense :</string>
|
||||||
@@ -581,7 +591,7 @@ p, li { white-space: pre-wrap; }
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="19" column="0">
|
<item row="20" column="0">
|
||||||
<widget class="QLabel" name="label_18">
|
<widget class="QLabel" name="label_18">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>With cvsba :</string>
|
<string>With cvsba :</string>
|
||||||
@@ -591,7 +601,7 @@ p, li { white-space: pre-wrap; }
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="19" column="1">
|
<item row="20" column="1">
|
||||||
<widget class="QLabel" name="label_cvsba">
|
<widget class="QLabel" name="label_cvsba">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string/>
|
<string/>
|
||||||
@@ -604,7 +614,17 @@ p, li { white-space: pre-wrap; }
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="18" column="1">
|
<item row="18" column="0">
|
||||||
|
<widget class="QLabel" name="label_14">
|
||||||
|
<property name="text">
|
||||||
|
<string>With g2o :</string>
|
||||||
|
</property>
|
||||||
|
<property name="wordWrap">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="19" column="1">
|
||||||
<widget class="QLabel" name="label_gtsam">
|
<widget class="QLabel" name="label_gtsam">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string/>
|
<string/>
|
||||||
@@ -630,17 +650,17 @@ p, li { white-space: pre-wrap; }
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="17" column="0">
|
<item row="7" column="2">
|
||||||
<widget class="QLabel" name="label_14">
|
<widget class="QLabel" name="label_freenect_license">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>With g2o :</string>
|
<string>Apache v2 and/or GPLv2</string>
|
||||||
</property>
|
</property>
|
||||||
<property name="wordWrap">
|
<property name="wordWrap">
|
||||||
<bool>true</bool>
|
<bool>true</bool>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="11" column="1">
|
<item row="12" column="1">
|
||||||
<widget class="QLabel" name="label_dc1394">
|
<widget class="QLabel" name="label_dc1394">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string/>
|
<string/>
|
||||||
@@ -653,27 +673,7 @@ p, li { white-space: pre-wrap; }
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="6" column="2">
|
<item row="19" column="0">
|
||||||
<widget class="QLabel" name="label_freenect_license">
|
|
||||||
<property name="text">
|
|
||||||
<string>Apache v2 and/or GPLv2</string>
|
|
||||||
</property>
|
|
||||||
<property name="wordWrap">
|
|
||||||
<bool>true</bool>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="7" column="2">
|
|
||||||
<widget class="QLabel" name="label_openni2_license">
|
|
||||||
<property name="text">
|
|
||||||
<string>Apache v2</string>
|
|
||||||
</property>
|
|
||||||
<property name="wordWrap">
|
|
||||||
<bool>true</bool>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="18" column="0">
|
|
||||||
<widget class="QLabel" name="label_19">
|
<widget class="QLabel" name="label_19">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>With GTSAM :</string>
|
<string>With GTSAM :</string>
|
||||||
@@ -683,7 +683,27 @@ p, li { white-space: pre-wrap; }
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="6" column="1">
|
<item row="8" column="2">
|
||||||
|
<widget class="QLabel" name="label_openni2_license">
|
||||||
|
<property name="text">
|
||||||
|
<string>Apache v2</string>
|
||||||
|
</property>
|
||||||
|
<property name="wordWrap">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="1" column="2">
|
||||||
|
<widget class="QLabel" name="label_opencv_license">
|
||||||
|
<property name="text">
|
||||||
|
<string>BSD</string>
|
||||||
|
</property>
|
||||||
|
<property name="wordWrap">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="7" column="1">
|
||||||
<widget class="QLabel" name="label_freenect">
|
<widget class="QLabel" name="label_freenect">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string/>
|
<string/>
|
||||||
@@ -706,27 +726,17 @@ p, li { white-space: pre-wrap; }
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="1" column="2">
|
<item row="7" column="0">
|
||||||
<widget class="QLabel" name="label_opencv_license">
|
<widget class="QLabel" name="label_12">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>BSD</string>
|
<string>With Freenect :</string>
|
||||||
</property>
|
</property>
|
||||||
<property name="wordWrap">
|
<property name="wordWrap">
|
||||||
<bool>true</bool>
|
<bool>true</bool>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="11" column="0">
|
<item row="18" column="1">
|
||||||
<widget class="QLabel" name="label_16">
|
|
||||||
<property name="text">
|
|
||||||
<string>With stereo dc1394 :</string>
|
|
||||||
</property>
|
|
||||||
<property name="wordWrap">
|
|
||||||
<bool>true</bool>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="17" column="1">
|
|
||||||
<widget class="QLabel" name="label_g2o">
|
<widget class="QLabel" name="label_g2o">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string/>
|
<string/>
|
||||||
@@ -739,16 +749,6 @@ p, li { white-space: pre-wrap; }
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="6" column="0">
|
|
||||||
<widget class="QLabel" name="label_12">
|
|
||||||
<property name="text">
|
|
||||||
<string>With Freenect :</string>
|
|
||||||
</property>
|
|
||||||
<property name="wordWrap">
|
|
||||||
<bool>true</bool>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="3" column="1">
|
<item row="3" column="1">
|
||||||
<widget class="QLabel" name="label_vtk_version">
|
<widget class="QLabel" name="label_vtk_version">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
@@ -762,7 +762,17 @@ p, li { white-space: pre-wrap; }
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="8" column="1">
|
<item row="21" column="0">
|
||||||
|
<widget class="QLabel" name="label_29">
|
||||||
|
<property name="text">
|
||||||
|
<string>With libpointmatcher :</string>
|
||||||
|
</property>
|
||||||
|
<property name="wordWrap">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="9" column="1">
|
||||||
<widget class="QLabel" name="label_freenect2">
|
<widget class="QLabel" name="label_freenect2">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string/>
|
<string/>
|
||||||
@@ -775,7 +785,7 @@ p, li { white-space: pre-wrap; }
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="9" column="1">
|
<item row="10" column="1">
|
||||||
<widget class="QLabel" name="label_realsense">
|
<widget class="QLabel" name="label_realsense">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string/>
|
<string/>
|
||||||
@@ -788,20 +798,30 @@ p, li { white-space: pre-wrap; }
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="20" column="0">
|
<item row="11" column="0">
|
||||||
<widget class="QLabel" name="label_29">
|
<widget class="QLabel" name="label_33">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>With libpointmatcher :</string>
|
<string>With RealSense2 :</string>
|
||||||
</property>
|
</property>
|
||||||
<property name="wordWrap">
|
<property name="wordWrap">
|
||||||
<bool>true</bool>
|
<bool>true</bool>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="10" column="0">
|
<item row="31" column="2">
|
||||||
<widget class="QLabel" name="label_33">
|
<widget class="QLabel" name="label_msckf_license">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>With RealSense2 :</string>
|
<string>Penn Software License</string>
|
||||||
|
</property>
|
||||||
|
<property name="wordWrap">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="27" column="2">
|
||||||
|
<widget class="QLabel" name="label_dvo_license">
|
||||||
|
<property name="text">
|
||||||
|
<string>GPLv3</string>
|
||||||
</property>
|
</property>
|
||||||
<property name="wordWrap">
|
<property name="wordWrap">
|
||||||
<bool>true</bool>
|
<bool>true</bool>
|
||||||
@@ -821,40 +841,7 @@ p, li { white-space: pre-wrap; }
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="30" column="2">
|
<item row="30" column="0">
|
||||||
<widget class="QLabel" name="label_msckf_license">
|
|
||||||
<property name="text">
|
|
||||||
<string>Penn Software License</string>
|
|
||||||
</property>
|
|
||||||
<property name="wordWrap">
|
|
||||||
<bool>true</bool>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="26" column="2">
|
|
||||||
<widget class="QLabel" name="label_dvo_license">
|
|
||||||
<property name="text">
|
|
||||||
<string>GPLv3</string>
|
|
||||||
</property>
|
|
||||||
<property name="wordWrap">
|
|
||||||
<bool>true</bool>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="23" column="1">
|
|
||||||
<widget class="QLabel" name="label_openchisel">
|
|
||||||
<property name="text">
|
|
||||||
<string/>
|
|
||||||
</property>
|
|
||||||
<property name="alignment">
|
|
||||||
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
|
|
||||||
</property>
|
|
||||||
<property name="wordWrap">
|
|
||||||
<bool>true</bool>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="29" column="0">
|
|
||||||
<widget class="QLabel" name="label_36">
|
<widget class="QLabel" name="label_36">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>With loam_velodyne :</string>
|
<string>With loam_velodyne :</string>
|
||||||
@@ -874,17 +861,20 @@ p, li { white-space: pre-wrap; }
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="18" column="2">
|
<item row="24" column="1">
|
||||||
<widget class="QLabel" name="label_gtsam_license">
|
<widget class="QLabel" name="label_openchisel">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>BSD</string>
|
<string/>
|
||||||
|
</property>
|
||||||
|
<property name="alignment">
|
||||||
|
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
|
||||||
</property>
|
</property>
|
||||||
<property name="wordWrap">
|
<property name="wordWrap">
|
||||||
<bool>true</bool>
|
<bool>true</bool>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="20" column="1">
|
<item row="21" column="1">
|
||||||
<widget class="QLabel" name="label_libpointmatcher">
|
<widget class="QLabel" name="label_libpointmatcher">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string/>
|
<string/>
|
||||||
@@ -897,7 +887,17 @@ p, li { white-space: pre-wrap; }
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="29" column="1">
|
<item row="19" column="2">
|
||||||
|
<widget class="QLabel" name="label_gtsam_license">
|
||||||
|
<property name="text">
|
||||||
|
<string>BSD</string>
|
||||||
|
</property>
|
||||||
|
<property name="wordWrap">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="30" column="1">
|
||||||
<widget class="QLabel" name="label_loam">
|
<widget class="QLabel" name="label_loam">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string/>
|
<string/>
|
||||||
@@ -910,7 +910,7 @@ p, li { white-space: pre-wrap; }
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="7" column="0">
|
<item row="8" column="0">
|
||||||
<widget class="QLabel" name="label_13">
|
<widget class="QLabel" name="label_13">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>With OpenNI2 :</string>
|
<string>With OpenNI2 :</string>
|
||||||
@@ -920,6 +920,29 @@ p, li { white-space: pre-wrap; }
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
|
<item row="27" column="0">
|
||||||
|
<widget class="QLabel" name="label_27">
|
||||||
|
<property name="text">
|
||||||
|
<string>With DVO :</string>
|
||||||
|
</property>
|
||||||
|
<property name="wordWrap">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="26" column="1">
|
||||||
|
<widget class="QLabel" name="label_viso2">
|
||||||
|
<property name="text">
|
||||||
|
<string/>
|
||||||
|
</property>
|
||||||
|
<property name="alignment">
|
||||||
|
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
|
||||||
|
</property>
|
||||||
|
<property name="wordWrap">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
<item row="0" column="0">
|
<item row="0" column="0">
|
||||||
<widget class="QLabel" name="label_32">
|
<widget class="QLabel" name="label_32">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
@@ -933,30 +956,7 @@ p, li { white-space: pre-wrap; }
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="26" column="0">
|
<item row="28" column="2">
|
||||||
<widget class="QLabel" name="label_27">
|
|
||||||
<property name="text">
|
|
||||||
<string>With DVO :</string>
|
|
||||||
</property>
|
|
||||||
<property name="wordWrap">
|
|
||||||
<bool>true</bool>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="25" column="1">
|
|
||||||
<widget class="QLabel" name="label_viso2">
|
|
||||||
<property name="text">
|
|
||||||
<string/>
|
|
||||||
</property>
|
|
||||||
<property name="alignment">
|
|
||||||
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
|
|
||||||
</property>
|
|
||||||
<property name="wordWrap">
|
|
||||||
<bool>true</bool>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="27" column="2">
|
|
||||||
<widget class="QLabel" name="label_orbslam2_license">
|
<widget class="QLabel" name="label_orbslam2_license">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>GPLv3</string>
|
<string>GPLv3</string>
|
||||||
@@ -966,7 +966,7 @@ p, li { white-space: pre-wrap; }
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="23" column="0">
|
<item row="24" column="0">
|
||||||
<widget class="QLabel" name="label_30">
|
<widget class="QLabel" name="label_30">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>With OpenChisel :</string>
|
<string>With OpenChisel :</string>
|
||||||
@@ -976,7 +976,7 @@ p, li { white-space: pre-wrap; }
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="16" column="1">
|
<item row="17" column="1">
|
||||||
<widget class="QLabel" name="label_toro">
|
<widget class="QLabel" name="label_toro">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string/>
|
<string/>
|
||||||
@@ -989,7 +989,7 @@ p, li { white-space: pre-wrap; }
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="17" column="2">
|
<item row="18" column="2">
|
||||||
<widget class="QLabel" name="label_g2o_license">
|
<widget class="QLabel" name="label_g2o_license">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>BSD</string>
|
<string>BSD</string>
|
||||||
@@ -999,7 +999,7 @@ p, li { white-space: pre-wrap; }
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="28" column="2">
|
<item row="29" column="2">
|
||||||
<widget class="QLabel" name="label_okvis_license">
|
<widget class="QLabel" name="label_okvis_license">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>BSD</string>
|
<string>BSD</string>
|
||||||
@@ -1009,7 +1009,7 @@ p, li { white-space: pre-wrap; }
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="29" column="2">
|
<item row="30" column="2">
|
||||||
<widget class="QLabel" name="label_loam_license">
|
<widget class="QLabel" name="label_loam_license">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>BSD</string>
|
<string>BSD</string>
|
||||||
@@ -1039,7 +1039,7 @@ p, li { white-space: pre-wrap; }
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="20" column="2">
|
<item row="21" column="2">
|
||||||
<widget class="QLabel" name="label_libpointmatcher_license">
|
<widget class="QLabel" name="label_libpointmatcher_license">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>BSD</string>
|
<string>BSD</string>
|
||||||
@@ -1049,7 +1049,7 @@ p, li { white-space: pre-wrap; }
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="22" column="2">
|
<item row="23" column="2">
|
||||||
<widget class="QLabel" name="label_cputsdf_license">
|
<widget class="QLabel" name="label_cputsdf_license">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>BSD</string>
|
<string>BSD</string>
|
||||||
@@ -1069,7 +1069,7 @@ p, li { white-space: pre-wrap; }
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="19" column="2">
|
<item row="20" column="2">
|
||||||
<widget class="QLabel" name="label_cvsba_license">
|
<widget class="QLabel" name="label_cvsba_license">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>GPLv2</string>
|
<string>GPLv2</string>
|
||||||
@@ -1079,7 +1079,7 @@ p, li { white-space: pre-wrap; }
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="16" column="2">
|
<item row="17" column="2">
|
||||||
<widget class="QLabel" name="label_toro_license">
|
<widget class="QLabel" name="label_toro_license">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Creative Commons [Attribution-NonCommercial-ShareAlike]</string>
|
<string>Creative Commons [Attribution-NonCommercial-ShareAlike]</string>
|
||||||
@@ -1089,7 +1089,7 @@ p, li { white-space: pre-wrap; }
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="9" column="2">
|
<item row="10" column="2">
|
||||||
<widget class="QLabel" name="label_realsense_license">
|
<widget class="QLabel" name="label_realsense_license">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Apache-2</string>
|
<string>Apache-2</string>
|
||||||
@@ -1112,7 +1112,7 @@ p, li { white-space: pre-wrap; }
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="15" column="0">
|
<item row="16" column="0">
|
||||||
<widget class="QLabel" name="label_68">
|
<widget class="QLabel" name="label_68">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>With K4A :</string>
|
<string>With K4A :</string>
|
||||||
@@ -1122,7 +1122,7 @@ p, li { white-space: pre-wrap; }
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="14" column="1">
|
<item row="15" column="1">
|
||||||
<widget class="QLabel" name="label_k4w2">
|
<widget class="QLabel" name="label_k4w2">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string/>
|
<string/>
|
||||||
@@ -1135,7 +1135,7 @@ p, li { white-space: pre-wrap; }
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="15" column="1">
|
<item row="16" column="1">
|
||||||
<widget class="QLabel" name="label_k4a">
|
<widget class="QLabel" name="label_k4a">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string/>
|
<string/>
|
||||||
@@ -1148,7 +1148,7 @@ p, li { white-space: pre-wrap; }
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="15" column="2">
|
<item row="16" column="2">
|
||||||
<widget class="QLabel" name="label_g2o_license_3">
|
<widget class="QLabel" name="label_g2o_license_3">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>MIT</string>
|
<string>MIT</string>
|
||||||
@@ -1158,6 +1158,39 @@ p, li { white-space: pre-wrap; }
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
|
<item row="6" column="0">
|
||||||
|
<widget class="QLabel" name="label_39">
|
||||||
|
<property name="text">
|
||||||
|
<string>With FastCV :</string>
|
||||||
|
</property>
|
||||||
|
<property name="wordWrap">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="6" column="1">
|
||||||
|
<widget class="QLabel" name="label_fastcv">
|
||||||
|
<property name="text">
|
||||||
|
<string/>
|
||||||
|
</property>
|
||||||
|
<property name="alignment">
|
||||||
|
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
|
||||||
|
</property>
|
||||||
|
<property name="wordWrap">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="6" column="2">
|
||||||
|
<widget class="QLabel" name="label_fastcv_license">
|
||||||
|
<property name="text">
|
||||||
|
<string>Apache v2</string>
|
||||||
|
</property>
|
||||||
|
<property name="wordWrap">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</item>
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
|
|||||||
@@ -64,8 +64,8 @@
|
|||||||
<rect>
|
<rect>
|
||||||
<x>0</x>
|
<x>0</x>
|
||||||
<y>0</y>
|
<y>0</y>
|
||||||
<width>680</width>
|
<width>681</width>
|
||||||
<height>3082</height>
|
<height>3071</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
<layout class="QVBoxLayout" name="verticalLayout_16">
|
<layout class="QVBoxLayout" name="verticalLayout_16">
|
||||||
@@ -95,7 +95,7 @@
|
|||||||
<enum>QFrame::Raised</enum>
|
<enum>QFrame::Raised</enum>
|
||||||
</property>
|
</property>
|
||||||
<property name="currentIndex">
|
<property name="currentIndex">
|
||||||
<number>22</number>
|
<number>29</number>
|
||||||
</property>
|
</property>
|
||||||
<widget class="QWidget" name="page_22">
|
<widget class="QWidget" name="page_22">
|
||||||
<layout class="QVBoxLayout" name="verticalLayout_29" stretch="0,1">
|
<layout class="QVBoxLayout" name="verticalLayout_29" stretch="0,1">
|
||||||
@@ -19857,6 +19857,32 @@ Lower the ratio -> higher the precision.</string>
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
|
<item row="3" column="1">
|
||||||
|
<widget class="QLabel" name="label_561">
|
||||||
|
<property name="text">
|
||||||
|
<string>Enable FastCV implementation if non-zero. Values should be 9 and 10 to choose which FastCV approach is used..</string>
|
||||||
|
</property>
|
||||||
|
<property name="wordWrap">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<property name="textInteractionFlags">
|
||||||
|
<set>Qt::LinksAccessibleByMouse|Qt::TextSelectableByMouse</set>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="3" column="0">
|
||||||
|
<widget class="QSpinBox" name="fastCV">
|
||||||
|
<property name="minimum">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="maximum">
|
||||||
|
<number>10</number>
|
||||||
|
</property>
|
||||||
|
<property name="value">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
|
|||||||
Reference in New Issue
Block a user