Giter Site home page Giter Site logo

gvins-dataset's Introduction

GVINS-Dataset

Author/Maintainer: CAO Shaozu (shaozu.cao AT gmail.com), LU Xiuyuan (xluaj AT connect.ust.hk), SHEN Shaojie (eeshaojie AT ust.hk)

This repository hosts dataset collected during the development of GVINS. The dataset contains GNSS raw measurement, visual and inertial data which are necessary for GNSS-Visual-Inertial fusion algorithm.

1. Sensor Suit

sensorsuit

1.1. VI-Sensor

The visual and inertial data are collected using a VI-Sensor. The VI-Sensor has two Aptina MT9V034 image sensors, which form a stereo camera together, and a Analog Devices ADIS 16448 IMU. The image and inertial data from the VI-Sensor are well synchronized by hardware design. A detailed spec sheet of this sensor can be found here. The camera and IMU parameters can be found in GVINS-Dataset/data/visensor_parameters/.

1.2. u-blox ZED-F9P Receiver

We use u-blox ZED-F9P to collect GNSS raw measurements and ground truth location. The ZED-F9P owns an internal RTK engine which is capable to provide receiver's location at an accuracy of 1cm in open area. To obtain the RTK solution, a real-time RTCM stream from a 3km away GNSS observation station is fed to the receiver. The GNSS antenna in our platform is a Tallysman’s TW3882.

2. Synchronization

The time system between the VI-Sensor and the GNSS receiver is synchronized via Pluse Per Second (PPS) signal. The synchronization process is illustrated in the figure below:

sync_diagram

  1. The GNSS receiver reports the time information of next PPS signal. In our system the reporting frequency is set to 1Hz.
  2. The PPS signal from the GNSS receiver is used to trigger the external interrupt of VI-Sensor. In our system the frequency of PPS is set to 0.2 Hz.
  3. When VI-Sensor is interrupted by the PPS signal, it reports its local time to the host computer.

In this way the host computer knows both the global and local timestamps of the PPS signal so these two time systems get aligned together.

3. Dataset Details

The dataset is released in the form of rosbag and currently there are two rosbags available:

name duration size link
sports_field 25min 20.5GB OneDrive
complex_environment 32min 26.1GB OneDrive
urban_driving 41min 33.4GB OneDrive

The data items within the rosbag are listed below:

topic type frequency description
/cam0/image_raw sensor_msgs/Image 20Hz right camera
/cam1/image_raw sensor_msgs/Image 20Hz left camera
/imu0 sensor_msgs/Imu 200Hz IMU
/external_trigger gvins/LocalSensorExternalTrigger - publish when VI-Sensor is trigger. definition
/ublox_driver/receiver_lla sensor_msgs/NavSatFix 10Hz Receiver's GNSS solution (brief).
/ublox_driver/receiver_pvt gnss_comm/GnssPVTSolnMsg 10Hz Receiver's GNSS solution (verbose). definition
/ublox_driver/range_meas gnss_comm/GnssMeasMsg 10Hz GNSS raw measurement. definition
/ublox_driver/ephem gnss_comm/GnssEphemMsg - The broadcast ephemeris of GPS, Galileo and BeiDou. definition
/ublox_driver/glo_ephem gnss_comm/GnssGloEphemMsg - The broadcast ephemeris of GLONASS. definition
/ublox_driver/iono_params gnss_comm/StampedFloat64Array - The broadcast ionospheric parameters. definition
/ublox_driver/time_pulse_info gnss_comm/GnssTimePulseInfoMsg 1Hz The time information of next PPS signal. definition.

4. Toolkit

The toolkit provided in this package requires gnss_comm library.

4.1. Convert GNSS raw measurement to RINEX File

Many GNSS softwares like RTKLIB accept RINEX file as the input. To convert the GNSS raw measurements in the rosbag to the corresponding RINEX file, firstly clone this repo to your catkin workspace and set INPUT_BAG_FILEPATH and OUTPUT_RINEX_FILEPATH in toolkit/src/bag2rinex.cpp. Then build and run the toolkit with:

cd ~/catkin_ws/
catkin_make
source devel/setup.bash
rosrun gvins_dataset_toolkit bag2rinex

The observation RINEX file should be generated after a while. The corresponding GNSS ephemeris RINEX file can be found in GVINS-Dataset/data/ephemeris_rinex/.

4.2 Save RTK solution to csv file

To extract the RTK solution and status to a local csv file, firstly set INPUT_BAG_FILEPATH and OUTPUT_RTK_FILEPATH in toolkit/src/bag2rtk_solution.cpp. Then build and run the toolkit with:

cd ~/catkin_ws/
catkin_make
source devel/setup.bash
rosrun gvins_dataset_toolkit bag2rtk_solution

Each record in the generated csv file is in the form of:

gnss_ts_ns, ecef_px, ecef_py, ecef_pz, enu_vx, enu_vy, enu_vz, fix_type, valid_fix, diff_soln, carr_soln

, with each item described in the following:

name description
gnss_ts_ns GNSS time of the navigation epoch (expressed as Unix timestamp in ns)
ecef_p* The x, y, z component of the position in ECEF frame
enu_v* The x, y, z component of the velocity in ENU frame
fix_type GNSS fix type (0=no fix, 1=dead reckoning only, 2=2D-fix, 3=3D-fix, 4=GNSS+dead reckoning combined, 5=time only fix)
valid_fix if fix valid (1=valid fix)
diff_soln if differential correction were applied (1=applied)
carr_soln carrier phase range solution status (0=no carrier phase, 1=float, 2=fix)

5. License

The dataset is released under CC-BY-NC-SA-4.0 license.

gvins-dataset's People

Contributors

shaozu avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

gvins-dataset's Issues

I'd like to ask CSV files

Would you mind if I'm asking CSV files converted from urban _driving.bag?
Actually I tried to convert it into CSV and most of data are converted well, however, raw measurements, such as range, doppler and etc, have problems with missing and wrong some data.
Please, let me ask a correct data including raw measurements.
Thanks in advance.

distortion_model

Hi,Can you tell me what the distortion model of this data set is?

error opening .bag file

I tried to use the gvins-dataset toolbox to convert GNSS raw data to RINEX file format, but there was no prompt Bag file failed to open. I don't know why? Similarly, saving RTK solution as CSV file also failed. It is worth noting that my file uses the data source provided in gvins
image
这是我的输入信息
image

Question: testing VINS-Fusion with GVINS-Dataset

Thank you very much for sharing both GVINS and this dataset.

Evaluating VINS-Fusion as visual-inertial (1 camera + 1 IMU) and global optimization with GNSS processed with RTKLIB, for Sports Field bag, estimations beyond 600 meters start to oscillate severely, as if the transformation WGPS_T_WVIO returned suddenly to identity matrix and then it is inmediatly corrected.

imagen

I suspect this is due to not limiting the size of the optimization problem in the global optimization node, as the version I am using takes into account every available result from VIO and GNSS (i.e. optimize() in globalOpt.cpp includes the whole localPoseMap). I have checked this here https://github.com/HKUST-Aerial-Robotics/VINS-Fusion/blob/master/global_fusion/src/globalOpt.cpp.

imagen

The time spent in global optimization increases over time, leading to vins_node's death after the bag has been played for 18 minutes 20 secs.: feeding the global optimization node with the standalone version of VINS-Mono succeeds estimating the whole trayectory, yet the huge oscillations remain (figure above shows the global optimization time using VINS-Mono as VIO).

I am not completely sure I have not modified anything sensitive in the VINS-Fusion code, is this issue usual? I believe the problem resides in the global optimization not being limited.

Thank you for your time.

alpha and eta values for the MEI model

Hi all,
I'm not particularly familiar with the MEI camera model, so I had a look at the paper first.

It seems the matrix K depends on two parameters that are not provided by the yaml: alpha (required to get the skew) and eta, which depends on the parametric curve used.

What assumptions have been made for alpha and eta?
Can in first approximation assume alpha = 0 and eta = -1?

Thanks,
Marco.

How to set the frequency of PPS signal to 0.2 Hz by u-center?

You mentioned that in the README:

  1. The GNSS receiver reports the time information of next PPS signal. In our system the reporting frequency is set to 1Hz.
  2. The PPS signal from the GNSS receiver is used to trigger the external interrupt of VI-Sensor. In our system the frequency of PPS is set to 0.2 Hz.
    Did you set that by u-center as below?
    image
    But I don't know how to set the frequency of PPS signal to 0.2 Hz. And how to set the reporting frequency to 1Hz?

Convert error

Here is my modification:

#define INPUT_BAG_FILEPATH "/home/XXXX/GVINS/sports_field/sports_field.bag"
#define OUTPUT_RINEX_FILEPATH "/home/XXXX/GVINS/sports_field/"

and it reports error:

rosrun gvins_dataset_toolkit bag2rinex
段错误 (核心已转储)

Camera calibration dataset / pinhole camera model

@shaozu thank you for making these datasets available to the public.
We would like to run code on your dataset that supports only the pinhole camera model, not the Mei model. Do you think you could provide a calibration dataset such that we can run kalibr and use the model that we support? Or maybe you have calibrated a pinhole camera model yourself already or it would be very easy for you to do?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.