Running the code:
rosrun mapper_emvs_stereo run_emvs --flagfile=<config file>
The <config file>
is used to define the set of parameters passed on the program. Examples of configuration files are provided in the mapper_emvs_stereo/cfg
folder for different datasets and variants of the algorithm.
- alg1: Algorithm 1 in the paper. Only stereo fusion across cameras. This is the default variant if nothing is specified in the folder name.
- fusionfuncs: Configurations for using different fusion functions for across-camera fusion -- minimum (min), Harmonic Mean (HM), Geometric Mean (GM), Arithmetic Mean (AM), Root Mean Square (RMS), maximum (max).
- alg2: Algorithm 2 in the paper. Includes both temporal and stereo camera fusion. Different combinations of Arithmetic Mean (A) and Harmonic Mean (H) can be applied for temporal (t) and camera (c) fusion. For example,
AtHc
implies across-camera fusion happens first using Harmonic Mean, followed by temporal fusion using Arithmetic Mean. The order is important. - shuffled: Special case of algorithm 2, where the event sub-intervals of the stereo pair are shuffled before fusion. Denoted by
_shuffled
in the folder name suffix. - full: When a long data stream is broken into chunks and processed independently to produce a sequence of depth maps. Denoted by
_full
in the folder name.
The main parameters of the .conf
files are described below. Please take a look at mapper_emvs_stereo/src/main.cpp
for a comprehensive list.
- bag_filename: Path to single ROSBag file containing all events and camera poses. Otherwise, use the next 3 parameters when the data is available is separate bag files.
- bag_filename_left: Path to ROSbag file containing left camera events
- bag_filename_right: Path to ROSbag file containing right camera events
- bag_filename_pose: Path to ROSbag file containing pose of stereo rig
- out_path: Path to output results
- calib_type: Refers to how calibration data has been provided (YAML, JSON, hard-coded etc.), depending on the source of the dataset. Refer to the
.conf
files to find the correct value of this parameter for each dataset. - calib_path: Path to intrinsic and extrinsic camera calibration file, needed for certain datasets specified by
calib_type
. - mocap_calib_path: Path to hand-eye calibration file, needed for certain datasets specified by
calib_type
. - event_topic0: Left event camera topic
- event_topic1: Right event camera topic
- event_topic2 : Third event camera topic for trinocular fusion
- pose_topic: Topic containing the pose of the stereo rig
- min_depth: Minimum estimable depth of the scene
- max_depth: Maximum estimable depth of the scene
- start_time_s: Time (in seconds) from which we start processing events
- stop_time_s: Time (in seconds) till which events are processed
- dimZ: Number of depth planes to place within the assumed scene depth range. By default, the planes are uniformly distributed in inverse depth space. To place depth planes uniformly along depth space, turn the setting
DEFINE_USE_INVERSE_DEPTH
inmapper_emvs_stereo/CMakeLists.txt
toOFF
. - process_method: 1, 2 or 5.
- 1: Algorithm 1 (fusion only across cameras);
- 2: Algorithm 2 (fusion across cameras and time);
- 5: Algorithm 2 + shuffling (shuffle sub-intervals before fusion)
- stereo_fusion: A number between 1-6. It decides the method used to fuse DSIs across cameras.
- 1: min;
- 2: Harmonic mean;
- 3: Geometric mean;
- 4: Arithmetic mean;
- 5: RMS mean;
- 6: max
- temporal_fusion: This parameter is used only when
process_method=2
. It describes the method used to fuse DSIs in time. Currently, only 2 (Harmonic mean) and 4 (Arithmetic mean) are supported. - num_intervals: This parameter is used only when
process_method=2
. Algorithm 2 divides the entire data duration into this many sub-intervals of equal duration. - ts: Timestamp (in seconds) of the left camera trajectory at which the reference view of the DSI is set. By default, it is set at mid-point of start and stop times.
- adaptive_threshold_c: Parameter for Gaussian adaptive thresholding filter applied on the DSI before extracting depth map
- median_filter_size: Kernel size of median filter applied on DSI for removing noise
- full_seq: Divide a data sequence into smaller sections in time and process each chunk independently. A sliding window of a certain duration and stride is used to process the whole input sequence. This is used for generating sequences of depth maps over long sequences of data.
- duration: Used only when
full_seq=true
. It specifies the duration (in seconds) each chunk of data that is processed independently. - out_skip: Used only when
full_seq=true
. It desribes the stride (in seconds) of the sliding window used to process the entire input sequence. The output depth frame rate is modulated with this parameter. - max_confidence: Use this value to manually set the upper limit of the range of values in each DSI, before normalization to [0, 255]. If set to 0 (by default), the maximum value of each DSI is used as its upper limit. For long sequences, setting a constant upper limit for all DSIs regularizes depth map filtering, and prevents sections with low event count from generating noisy depth estimates. In conjunction with
adaptive_threshold_c
, this values regulates the trade-off between reconstructing more 3D points and filtering out noise. Icreasing this parameter makes noise filtering stricter.