CathIAS / TLIO

Tight Learned Inertial Odometry
Other
277 stars 69 forks source link

How can we change the time over which we are regressing data? #20

Closed raabuchanan closed 3 years ago

raabuchanan commented 3 years ago

In the paper you introduce a notation of 200hz-05s-3s which you say takes 3s of 200Hz data and regresses the displacement for the last 0.5s

I see options to change the IMU frequency and window size but how can we change the middle number, time over which we regress displacement?

Also is the current settings 200Hz-1s-1s as described in the paper?

Thanks

nbgit10 commented 3 years ago

My understanding might be incorrect so take this with a grain of salt:

In main_net.py you can select past_time, window_time and future time. Default is 0-1-0 [s]. That corresponds to the 200Hz-1s-1s mentioned in the paper. Window time defines how much data is taken into account, you have already identified that. Setting future time to a positive value, e.g. 1s, you can predict into the future. I believe, but you would need to check how the windowing is done exactly in dataset_fb.py, this would then mean that you predict the displacement from the beginning of the window up until 1s into the future. Setting the past time works the same. I believe you would need to set the three to "2.5 - 0.5 - 0" to get the 200Hz-05s-3s of the paper. Again, check for yourself in the init-Method of the FbSequenceDataset where self.index_map is set.

For the frequency, you have identified that already. Just note that the imu_base_freq is actually not a multiple as written in the comment but the frequency of your GT data and imu_freq the frequency of your IMU data. If for inference you want to run that at a different frequency you need to change sample_freq.

CathIAS commented 3 years ago

Thank you @nbgit10 so much for the reply! My sincere apologies for the delay of coming back to this.

The total input to the network has dimension of past_time+window_time+future_time. To get 200hz-05s-3s, set past_time=2.5, window_time=0.5, and future_time=0. The displacement output goes with window_time. Setting future_time to a positive value means taking future data to predict the current window, which makes the system noncausal.

The default setting as past_time=0, window_time=1, and future_time=0 is exactly 200hz-1s-1s.

For the frequency, 200hz comes from imu_freq, however your IMU raw data may be of a higher frequency, and the code allows subsampling (check dataset_fb.py), this is the imu_base_freq and it has to be a multiple of imu_freq. sample_freq on the other hand, is the frequency of taking window_time data samples for training and testing, and imu_freq has to be a multiple of that.