Original Authors: CAO Shaozu (shaozu.cao AT gmail.com)
modifier: zzwu29
The gnss_comm package contains basic definitions and utility functions for GNSS raw measurement processing.
This package requires some features of C++11.
This package is developed under ROS Kinetic environment.
Our code uses Eigen 3.3.3 for matrix manipulation. After downloading and unzipping the Eigen source code package, you may install it with the following commands:
cd eigen-3.3.3/
mkdir build
cd build
cmake ..
sudo make install
We use google's glog library for message output. If you are using Ubuntu, install it by:
sudo apt-get install libgoogle-glog-dev
If you are on other OS or just want to build it from source, please follow these instructions to install it.
Clone the repository to your catkin workspace (for example ~/catkin_ws/
):
cd ~/catkin_ws/src/
git clone https://github.com/HKUST-Aerial-Robotics/gnss_comm.git
Then build the package with:
cd ~/catkin_ws/
catkin_make
source ~/catkin_ws/devel/setup.bash
If you encounter any problem during the building of gnss_comm, try with docker in the next section.
To simplify the building process, we add docker in our code. Docker is like a sandbox so it can isolate our code from your local environment. To run with docker, first make sure ros and docker are installed on your machine. Then add your account to docker
group by sudo usermod -aG docker $USER
. Relaunch the terminal or logout and re-login if you get Permission denied
error, type:
cd ~/catkin_ws/src/gnss_comm/docker
make build
The docker image gnss_comm:latest
should be successfully built after a while. Then you can check all available docker images in your local machine by docker image ls
command.
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. |
The toolkit provided in this package requires gnss_comm library.
cd ~/catkin_ws/
catkin_make
source devel/setup.bash
rosrun gvins_dataset_toolkit bag2rinex INPUT_BAG_FILEPATH OUTPUT_RINEX_FILEPATH
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/
.
cd ~/catkin_ws/
catkin_make
source devel/setup.bash
rosrun gvins_dataset_toolkit bag2rtk_solution INPUT_BAG_FILEPATH OUTPUT_RINEX_FILEPATH
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) |
Many of the definitions and utility functions in this package are adapted from RTKLIB.
The source code is released under GPLv3 license.