rpng / vicon2gt

Vicon-IMU fusion for groundtruth trajectory generation.
GNU General Public License v3.0
96 stars 17 forks source link

Did not get the same EuRoC dataset trajectory error #1

Closed tianlong312 closed 1 year ago

tianlong312 commented 1 year ago

Hi there,

I am trying to match the EuRoC dataset trajectory error in your report before I use it for my own dataset. However, I am not getting values close to your results in the report. Below is how I used this tool:

  1. In EuRoC mav folder, convert imu0 and vicon0 folder into a single rosbag
  2. Change exp_eth.launch file (I only changed "dataset", "folder" and "state_freq"=200Hz ) and roslaunch exp_eth.launch
  3. SE3 aligned the trajectory from exp_eth.launch and trajectory in EuRoC state_groundtruth_estimate folder but the trajectory error is much bigger than your values in report (about 10x bigger).

Could you please let me know where could possibly be wrong in the process?

goldbattle commented 1 year ago

Are you referring to this table in the report? image

If you read it, it did perform pos+yaw alignment. What tool are you using to compute the error? If you wish to reproduce this (note that the code has changed since the report was generated so there will be some difference), then do the following:

  1. Extract each /mav0/state_groundtruth_estimate0/data.csv from the ASL format of the bags
  2. Convert these from the csv to the txt format using format_convert
  3. Run and generate a trajectory from the bag files using vicon2gt
  4. Compute the error using pos+yaw alignment (for example error_comparison)

Here is the raw data if you have trouble getting it: asl_eth_raw.zip And here is an example plotting script with data: example_eurocmav_plotting.zip I have also pushed an example run script here similar to the simulation one in the repo: https://github.com/rpng/vicon2gt/blob/a5d3ff2a2996b7de168a39b537d976043f3783fc/scripts/run_ros_eth.sh

Hope this helps you.

tianlong312 commented 1 year ago

Hi Patrick,

Thank you so much for your quick reply. Yes I'm referring to the table above. I am using evo for the pos alignment, right now just want to focus on pos alignment and get the correct position error.

One thing I want to clarify is that in your step 3, the bag files you mentioned are not the bag files you can directly download from their website right? Instead, we should create our own bag by adding /mav0/imu0/data.csv and /mav0/vicon0/data.csv topics.

goldbattle commented 1 year ago

The bag files provided by the dataset already have the vicon topics in it. I am not sure how you are converting them into a bag, but I recommend just directly using the bags themselves. The optimized groundtruth isn't found in the bag files and is only in the ASL format zip file.

path:        /home/patrick/datasets/euroc_mav/V1_01_easy.bag
version:     2.0
duration:    2:24s (144s)
start:       Jun 25 2014 12:54:33.28 (1403715273.28)
end:         Jun 25 2014 12:56:58.00 (1403715418.00)
size:        2.0 GB
messages:    107819
compression: none [1945/1945 chunks]
types:       asctec_hl_comm/MotorSpeed      [3070a95b3ba41b42ea1ab4ed7544fc82]
             geometry_msgs/TransformStamped [b5764a33bfeb3588febc2682852579b0]
             sensor_msgs/Image              [060021388200f6f0f447d0fcd9c64743]
             sensor_msgs/Imu                [6a62c6daae103f4ff57a132d6f95cec2]
topics:      /cam0/image_raw                   2912 msgs    : sensor_msgs/Image             
             /cam1/image_raw                   2912 msgs    : sensor_msgs/Image             
             /fcu/imu                         29123 msgs    : sensor_msgs/Imu               
             /fcu/motor_speed                 29123 msgs    : asctec_hl_comm/MotorSpeed     
             /imu0                            29120 msgs    : sensor_msgs/Imu               
             /vicon/firefly_sbx/firefly_sbx   14629 msgs    : geometry_msgs/TransformStamped

RE: use of EVO. Make sure the output format is correct, I personally have never used, so you are on your own there to verify it is performing alignment correctly. "pos alignment" requires you to specify an alignment type. I recommend that you read the following paper so you are familiar with this process: https://rpg.ifi.uzh.ch/docs/IROS18_Zhang.pdf

tianlong312 commented 1 year ago

Thanks! I see, what I've done is I wrote a python script to convert mav0/vicon0 and mav0/imu0 in the ASL format zip file into a bag. And then I use the bag I created with vicon2gt. I thought that would be equivalent to using the downloaded bag directly. However, they do not seem to be the same.