mirror of
https://github.com/introlab/rtabmap.git
synced 2026-09-02 17:40:23 +08:00
LiDAR capture support in standalone library (#1264)
* Working rtabmap_lidar-mapping example (live and pcap) * finalizing merge, added some deprecated * fixed build * Working deskewing for Lidar + Camera/IMU (no camera pose correction yet) and Lidar + Odom Sensor in main UI. * backward compatibility * fixed some not used variable warnings, fixed qt build for lidar mapping example * Refactored CameraMobile, added AREngine background support, fixed LidarVPL16 build error with PCL 1.8 * ARCoreJava: buffer last depth image in case its stamp i higher than pose stamp. CameraMobile: added pose buffer. SensorCaptureThread: to get pose, odomSensor should be explicitly set, but can be same as lidar or camera inputs. * Working external lidar on iOS * util3d::commonFiltering()/adjustNormalsToViewPoint() added organized cloud support. MainWindow: updated odomSensor setup * fixed winsock include order * reverted camera tool * disable imu filtering when odom sensor is used * Updated package version * fixed windows build * fixing more windows build erros
This commit is contained in:
@@ -53,6 +53,7 @@ public:
|
||||
QWidget * parent = 0,
|
||||
const ParametersMap & parameters = ParametersMap());
|
||||
virtual ~CameraViewer();
|
||||
void setDecimation(int value);
|
||||
|
||||
public Q_SLOTS:
|
||||
void showImage(const rtabmap::SensorData & data);
|
||||
|
||||
@@ -37,7 +37,6 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
#include "rtabmap/core/RtabmapEvent.h"
|
||||
#include "rtabmap/core/SensorData.h"
|
||||
#include "rtabmap/core/OdometryEvent.h"
|
||||
#include "rtabmap/core/CameraInfo.h"
|
||||
#include "rtabmap/core/Optimizer.h"
|
||||
#include "rtabmap/core/GlobalMap.h"
|
||||
#include "rtabmap/gui/PreferencesDialog.h"
|
||||
@@ -47,9 +46,10 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
#include <pcl/PolygonMesh.h>
|
||||
#include <pcl/pcl_base.h>
|
||||
#include <pcl/TextureMesh.h>
|
||||
#include <rtabmap/core/SensorCaptureInfo.h>
|
||||
|
||||
namespace rtabmap {
|
||||
class CameraThread;
|
||||
class SensorCaptureThread;
|
||||
class OdometryThread;
|
||||
class IMUThread;
|
||||
class CloudViewer;
|
||||
@@ -192,6 +192,7 @@ protected Q_SLOTS:
|
||||
void selectDepthAIOAKD();
|
||||
void selectDepthAIOAKDLite();
|
||||
void selectDepthAIOAKDPro();
|
||||
void selectVLP16();
|
||||
void dumpTheMemory();
|
||||
void dumpThePrediction();
|
||||
void sendGoal();
|
||||
@@ -206,7 +207,7 @@ protected Q_SLOTS:
|
||||
void selectScreenCaptureFormat(bool checked);
|
||||
void takeScreenshot();
|
||||
void updateElapsedTime();
|
||||
void processCameraInfo(const rtabmap::CameraInfo & info);
|
||||
void processCameraInfo(const rtabmap::SensorCaptureInfo & info);
|
||||
void processOdometry(const rtabmap::OdometryEvent & odom, bool dataIgnored);
|
||||
void applyPrefSettings(PreferencesDialog::PANEL_FLAGS flags);
|
||||
void applyPrefSettings(const rtabmap::ParametersMap & parameters);
|
||||
@@ -241,7 +242,7 @@ protected Q_SLOTS:
|
||||
Q_SIGNALS:
|
||||
void statsReceived(const rtabmap::Statistics &);
|
||||
void statsProcessed();
|
||||
void cameraInfoReceived(const rtabmap::CameraInfo &);
|
||||
void cameraInfoReceived(const rtabmap::SensorCaptureInfo &);
|
||||
void cameraInfoProcessed();
|
||||
void odometryReceived(const rtabmap::OdometryEvent &, bool);
|
||||
void odometryProcessed();
|
||||
@@ -316,11 +317,6 @@ protected:
|
||||
const QString & newDatabasePathOutput() const { return _newDatabasePathOutput; }
|
||||
|
||||
virtual ParametersMap getCustomParameters() {return ParametersMap();}
|
||||
virtual Camera * createCamera(
|
||||
Camera ** odomSensor,
|
||||
Transform & odomSensorExtrinsics,
|
||||
double & odomSensorTimeOffset,
|
||||
float & odomSensorScaleFactor);
|
||||
|
||||
void postProcessing(
|
||||
bool refineNeighborLinks,
|
||||
@@ -344,7 +340,7 @@ private:
|
||||
Ui_mainWindow * _ui;
|
||||
|
||||
State _state;
|
||||
rtabmap::CameraThread * _camera;
|
||||
rtabmap::SensorCaptureThread * _sensorCapture;
|
||||
rtabmap::OdometryThread * _odomThread;
|
||||
rtabmap::IMUThread * _imuThread;
|
||||
|
||||
|
||||
@@ -60,6 +60,8 @@ namespace rtabmap {
|
||||
class Signature;
|
||||
class LoopClosureViewer;
|
||||
class Camera;
|
||||
class SensorCapture;
|
||||
class Lidar;
|
||||
class CalibrationDialog;
|
||||
class CreateSimpleCalibrationDialog;
|
||||
|
||||
@@ -77,7 +79,7 @@ public:
|
||||
kPanelAll = 15
|
||||
};
|
||||
// TODO, tried to change the name of PANEL_FLAGS to PanelFlags... but signals/slots errors appeared...
|
||||
Q_DECLARE_FLAGS(PANEL_FLAGS, PanelFlag)
|
||||
Q_DECLARE_FLAGS(PANEL_FLAGS, PanelFlag);
|
||||
|
||||
enum Src {
|
||||
kSrcUndef = -1,
|
||||
@@ -113,7 +115,10 @@ public:
|
||||
kSrcImages = 201,
|
||||
kSrcVideo = 202,
|
||||
|
||||
kSrcDatabase = 300
|
||||
kSrcDatabase = 300,
|
||||
|
||||
kSrcLidar = 400,
|
||||
kSrcLidarVLP16 = 400,
|
||||
};
|
||||
|
||||
public:
|
||||
@@ -253,6 +258,7 @@ public:
|
||||
PreferencesDialog::Src getSourceDriver() const;
|
||||
QString getSourceDriverStr() const;
|
||||
QString getSourceDevice() const;
|
||||
PreferencesDialog::Src getLidarSourceDriver() const;
|
||||
PreferencesDialog::Src getOdomSourceDriver() const;
|
||||
|
||||
bool isSourceDatabaseStampsUsed() const;
|
||||
@@ -271,6 +277,7 @@ public:
|
||||
bool isSourceStereoDepthGenerated() const;
|
||||
bool isSourceStereoExposureCompensation() const;
|
||||
bool isSourceScanFromDepth() const;
|
||||
bool isSourceScanDeskewing() const;
|
||||
int getSourceScanDownsampleStep() const;
|
||||
double getSourceScanRangeMin() const;
|
||||
double getSourceScanRangeMax() const;
|
||||
@@ -284,7 +291,8 @@ public:
|
||||
QString getIMUPath() const;
|
||||
int getIMURate() const;
|
||||
Camera * createCamera(bool useRawImages = false, bool useColor = true); // return camera should be deleted if not null
|
||||
Camera * createOdomSensor(Transform & extrinsics, double & timeOffset, float & scaleFactor); // return camera should be deleted if not null
|
||||
SensorCapture * createOdomSensor(Transform & extrinsics, double & timeOffset, float & scaleFactor, double & waitTime); // return odom sensor should be deleted if not null
|
||||
Lidar * createLidar(); // return lidar should be deleted if not null
|
||||
|
||||
int getIgnoredDCComponents() const;
|
||||
|
||||
@@ -324,6 +332,7 @@ public Q_SLOTS:
|
||||
void calibrate();
|
||||
void calibrateSimple();
|
||||
void calibrateOdomSensorExtrinsics();
|
||||
void testLidar();
|
||||
|
||||
private Q_SLOTS:
|
||||
void closeDialog ( QAbstractButton * button );
|
||||
@@ -332,6 +341,7 @@ private Q_SLOTS:
|
||||
void loadConfigFrom();
|
||||
bool saveConfigTo();
|
||||
void resetConfig();
|
||||
void loadPreset();
|
||||
void makeObsoleteGeneralPanel();
|
||||
void makeObsoleteCloudRenderingPanel();
|
||||
void makeObsoleteLoggingPanel();
|
||||
@@ -389,6 +399,7 @@ private Q_SLOTS:
|
||||
void selectSourceSvoPath();
|
||||
void selectSourceRealsense2JsonPath();
|
||||
void selectSourceDepthaiBlobPath();
|
||||
void selectVlp16PcapPath();
|
||||
void updateSourceGrpVisibility();
|
||||
void testOdometry();
|
||||
void testCamera();
|
||||
@@ -417,6 +428,7 @@ private:
|
||||
void setupKpRoiPanel();
|
||||
bool parseModel(QList<QGroupBox*> & boxes, QStandardItem * parentItem, int currentLevel, int & absoluteIndex);
|
||||
void resetSettings(QGroupBox * groupBox);
|
||||
void loadPreset(const std::string & presetHexHeader);
|
||||
void addParameter(const QObject * object, int value);
|
||||
void addParameter(const QObject * object, bool value);
|
||||
void addParameter(const QObject * object, double value);
|
||||
|
||||
Reference in New Issue
Block a user