class mola::MulranDataset
Overview
RawDataSource from Mulran datasets. Each “sequence” directory contains these sensor streams:
lidar
: Ouster OS1-64 LIDAR. As mrpt::obs::CObservationPointCloud with XYZIRT channels.gps
: Consumer-grade GNSS receiver, as mrpt::obs::CObservationGPS with a message type NMEA GGA (mrpt::obs::gnss::Message_NMEA_GGA). HDOP in that struct is computed as reported standard deviation from the dataset, divided by HDOP_REFERENCE_METERS.radar
: Navtech CIR204-H (Not implemented yet).imu
: As mrpt::obs::CObservationIMU.Ground truth poses
Point clouds are published as mrpt::obs::CObservationPointCloud with clouds of types mrpt::maps::CPointsMapXYZIRT, with these populated fields:
XYZ
I
: Intensity, range [0.0 - 1.0?]T
: Time of each point, in range [-0.05, 0.05] seconds (scan rate=10 Hz), such that “t=0” (the observation/scan timestamp) corresponds to the moment the scanner is facing forward.
Expected contents under base_dir
directory:
Example base_dir
: /mnt/storage/MulRan/
Sequences: KAIST01
, KAIST02
, etc.
MulRan/ ├── KAIST01 │ ├── data_stamp.csv │ ├── global_pose.csv │ ├── gps.csv │ ├── navtech_top_stamp.csv │ ├── Ouster │ │ ├── 1561000444390857630.bin │ │ ├── 1561000444489636410.bin │ │ ... │ ├── ouster_front_stamp.csv │ └── xsens_imu.csv ...
#include <MulranDataset.h> class MulranDataset: public mola::RawDataSourceBase, public mola::OfflineDatasetSource, public mola::Dataset_UI { public: // structs struct Entry; // fields static constexpr double HDOP_REFERENCE_METERS = 4.5; // methods virtual void spinOnce(); virtual bool hasGroundTruthTrajectory() const; virtual trajectory_t getGroundTruthTrajectory() const; mrpt::obs::CObservationPointCloud::Ptr getPointCloud(timestep_t step) const; mrpt::obs::CObservationGPS::Ptr getGPS(timestep_t step) const; mrpt::obs::CObservationIMU::Ptr getIMU(timestep_t step) const; virtual size_t datasetSize() const; virtual mrpt::obs::CSensoryFrame::Ptr datasetGetObservations(size_t timestep) const; bool hasGPS() const; virtual size_t datasetUI_size() const; virtual size_t datasetUI_lastQueriedTimestep() const; virtual double datasetUI_playback_speed() const; virtual void datasetUI_playback_speed(double speed); virtual bool datasetUI_paused() const; virtual void datasetUI_paused(bool paused); virtual void datasetUI_teleport(size_t timestep); };
Inherited Members
public: // structs struct SensorViewerImpl; // methods virtual void initialize(const Yaml& cfg) = 0; virtual size_t datasetSize() const = 0; virtual mrpt::obs::CSensoryFrame::Ptr datasetGetObservations(size_t timestep) const = 0; virtual bool hasGroundTruthTrajectory() const; virtual trajectory_t getGroundTruthTrajectory() const; virtual size_t datasetUI_size() const = 0; virtual size_t datasetUI_lastQueriedTimestep() const = 0; virtual double datasetUI_playback_speed() const = 0; virtual void datasetUI_playback_speed(double speed) = 0; virtual bool datasetUI_paused() const = 0; virtual void datasetUI_paused(bool paused) = 0; virtual void datasetUI_teleport(size_t timestep) = 0;
Methods
virtual void spinOnce()
Runs any required action on a timely manner
virtual bool hasGroundTruthTrajectory() const
Returns true if a groundtruth is available for the vehicle trajectory.
See also:
virtual trajectory_t getGroundTruthTrajectory() const
If hasGroundTruthTrajectory() returns true, this returns the dataset groundtruth for the vehicle trajectory.
Note that timestamps for datasets are not wall-clock time (“now”), but old timestamps of when original observations were grabbed.
See also:
mrpt::obs::CObservationPointCloud::Ptr getPointCloud(timestep_t step) const
Direct programmatic access to dataset observations. The return may be nullptr if the given index is not of the requested type.
step
is in the range 0
to getGroundTruthTrajectory()-1
virtual size_t datasetSize() const
Number of different time steps available to call getObservations()
virtual mrpt::obs::CSensoryFrame::Ptr datasetGetObservations(size_t timestep) const
Returns the set of observations available for the given time step.
virtual size_t datasetUI_size() const
Number of different time steps available to call getObservations()
virtual size_t datasetUI_lastQueriedTimestep() const
Returns the latest requested observation, range [0, datasetSize()]
virtual void datasetUI_teleport(size_t timestep)
Forces continue replaying in this moment in time