Skip to content

A meter level precision GPS calibrator for out-door robots by fusion sensors of GPS satellite, point cloud, IMU and others. SLAM, various stochastic process models, point set registration, and Kalman filter are used.

License

Notifications You must be signed in to change notification settings

cuitaixiang/gpsCalibration

 
 

Repository files navigation

iMorpheus.ai - high availability sub-meter precise GPS

Through algorithm fusion of multiple data sources from different sensors such as lidar, radar, camera, gps, imu and point cloud, iMorpheus.ai brings about an high availability precision GPS measurement to outdoor robotics developer. iMorpheus integrate a number of advanced algorithm such as slam, kalman filter, ICP, feature selection and Gaussian Process.

We believe precise GPS signal should obtained by computing from cloud rather than measure the satellite, and soly software and cloud can solve the problem rather than expensive hardware. So that we committed into only software to solve the problem.

image

Copyrights

License

Current Version - alpha

The alpha version is a software package operate under off-line mode and using point clould and GPS to give you accurate GPS. Each GPS signal produced also comes with confidence level.

Installation Environment

1. Operating System

Ubuntu 14.04, 16.04

2. Robot Operating System - ROS

ROS provides libraries and tools to help software developers create robot applications. It provides hardware abstraction, device drivers, libraries, visualizers, message-passing, package management, and more. ROS is licensed under an open source, BSD license.

3. Point Cloud Library - PCL

PCL is a large scale, open source project for 2D/3D image and point cloud processing.

4. EIGEN

Eigen is a C++ template library for linear algebra: matrices, vectors, numerical solvers, and related algorithms.

Quick Installation

Download

  • Download by GIT
$ git clone https://github.com/iMorpheusAI/gpsCalibration.git
  • Download by browser - click to download
    After download, you can type command to decompress:
    $ unzip gpsCalibration-master.zip -d gpsCalibration
    

Intallation

Under 'gpsCalibration/install' directory, we provide install scripts for beginners and developers. The scripts include installing ROS, PCL and EIGEN.
a) Basic version (Recommended for general users.) - one hour installation time.
b) Professional version (Recommended for developers.)

  • First download this repertory from github to your local system.
  • For ubuntu 14.04 basic version install, type commands:
$ cd gpsCalibration
$ cd install
$ sudo ./install_u1404_basic.sh 

How to compile and run the project

1. Compile

In directory gpsCalibration, run command:

$ cd gpsCalibration
$ catkin_make 

2. Run

1.Make sure you have the message bag. it includes follow message types sensor_msgs/PointCloud2 and GPS coordinates recording your run trail, even GPS is not accurate and not continuous in time. If you don’t have lidar or GPS data, don’t worry, we have sample data for your trial.

small size demo data -> [download-191MB]
large size demo data -> [download-2.6GB]

Download the compressed demo data, put it into gpsCalibration/data and type commands to decompress:

$ tar -zvxf small_size_demo_data.tar.gz
$ tar -zvxf large_size_demo_data.tar.gz 

After decomproession of small_size_demo_data.tar.gz, you will see:

$ miniDemo/
   ├── bag_0
   └── original_gps_data.txt

2.Open the run.sh in directory "gpsCalibration/" and set needed file directory correctly.

    User Parameters:
    Input filenames:
    1. bag_input_filename:
       input point cloud bag file list
       bag_input_filename= "./data/bag_list.txt"

    2. gps_input_filename:
       original GPS data with type GPRMC
       gps_input_filename= "./data/original_gps_data.txt"
    
    3. result_control:
       output KML files or publish messages to other nodes
       1- output KML files
       2- publish messages to other nodes   
       
    Output filenames:
    4. gps_original_filename:
       original GPS track type with KML format
       gps_original_filename=  "./data/original_gps_track.kml"
       
    5. gps_improved_filename:
       imporved accurate GPS track type with KML format
       gps_improved_filename=  "./data/calibrated_gps_track.kml"

3.In directory gpsCalibration, run commands:

$ source setup.sh
$ cd data
$ vi bag_list.txt
  modify the point cloud data bag path: 
  ./data/miniDemo/bag_0
$ cp ./miniDemo/original_gps_data.txt ./

4.Okay, you can run command:

$ ./run.sh

5.Finally, you get a global position system coordinates matched with your run trail. It is accurate and reliable!

3. Example

We show calibrated results of large size demo data.

3.1 demo results

Download compressed demo results and type commands to decompress:

$ tar -zvxf large_size_demo_result.tar.gz
$ tree large_size_demo_result
  ├── calibrated_gps_track.kml
  └── original_gps_track.kml

Open these KML files in google earth, you can check your results.

About system input and output

1. Input

1.1 .bag

A bag is a file format in ROS for storing ROS message data.

1.2 GPS

The GPSRMC is protocol of GPSRMC's communication: $GPRMC,085223.136,A,3957.6286,N,11619.2078,E,0.06,36.81,180908,,,A*57

2. Output

2.1 KML Files

The results are stored in gpsCalibration/data. We provide calibrated GPS in KML formats.
You can download Google Earth here and open KML files.

2.2 Messages

The messages are shown in gpsCalibration/src/gpsCalibration/msg.
In your node.cpp, you should include head files first:

#include "gpsCalibration/IMMessage.h"
#include "gpsCalibration/IMGPS.h

and type codes in your node.cpp:

ros::Subscriber calibratedGPS= nh.subscribe<>("/imorpheus_gps", 1, GPSHandle);
void GPSHandle(const gpsCalibration::IMMessagePtr& GPSWithWeight)
{
	//Your process codes;
}

Questions

You can ask any question here or send us emails.

About

A meter level precision GPS calibrator for out-door robots by fusion sensors of GPS satellite, point cloud, IMU and others. SLAM, various stochastic process models, point set registration, and Kalman filter are used.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • C++ 93.4%
  • CMake 3.5%
  • Shell 3.1%