Git Product home page Git Product logo

garpos's Introduction

GARPOS

"GARPOS" (GNSS-Acoustic Ranging combined POsitioning Solver) is an analysis tool for GNSS-Acoustic seafloor positioning.

Version

Latest version is GARPOS v1.0.1 (Apr. 5. 2022)

Major change(s)

  • v1.0.1: to set B-spline's knots by time interval (also need to change "Setup.ini" file)
  • v1.0.1: to use Cholesky decomposition (module "sksparse" is needed)

Citation

for methodology

Watanabe, S., Ishikawa, T., Yokota, Y., & Nakamura, Y. (2020). GARPOS: analysis software for the GNSS-A seafloor positioning with simultaneous estimation of sound speed structure, Front. Earth Sci. (https://doi.org/10.3389/feart.2020.597532).

for code

Shun-ichi Watanabe, Tadashi Ishikawa, Yuto Nakamura & Yusuke Yokota. (2022). GARPOS: Analysis tool for GNSS-Acoustic seafloor positioning (Version 1.0.1). Zenodo. (https://doi.org/10.5281/zenodo.6414642)

Corresponding author

License

"GARPOS" is distributed under the [GPL 3.0] (https://www.gnu.org/licenses/gpl-3.0.html) license.

Algorithm and documentation

Please see Watanabe, S., Ishikawa, T., Yokota, Y., and Nakamura, Y., (2020) https://doi.org/10.3389/feart.2020.597532

Requirements

  • Python 3.7.3
  • Packages NumPy, Scipy, Pandas, Matplotlib, and Scikit-sparse are also required.
  • Fortran 90 compiler (e.g., gfortran)

Environments under Anaconda for Linux is tested.

Compilation of Fortran90-based library

For the calculation of travel time, a Fortran90-based library is needed. For example, the library can be compiled via gfortran as,

gfortran -shared -fPIC -fopenmp -O3 -o lib_raytrace.so sub_raytrace.f90 lib_raytrace.f90

Path to the library should be indicated in "Settings.ini".

Usage

When using GARPOS, you should prepare the following files.

  • Initial site-parameter file (e.g., *initcfg.ini)
  • Acoustic observation data csv file
  • Reference sound speed data csv file
  • Settings file (e.g., Settings.ini)

"bin/solveSingleEpoch.py" is a driver code. Two observation epochs are stored in "sample" directory as demo data.

cd sample
./demo.sh

or run the program manually.

cd sample

# to solve position for each transponder (for epoch SAGA.1903)
solveSingleEpoch.py -i Settings-prep.ini -f initcfg/SAGA/SAGA.1903.kaiyo_k4-initcfg.ini -d demo_prep/SAGA
# to solve position for each transponder (for epoch SAGA.1905)
solveSingleEpoch.py -i Settings-prep.ini -f initcfg/SAGA/SAGA.1905.meiyo_m5-initcfg.ini -d demo_prep/SAGA

# to make the averaged array
makeFixCfg.py -d cfgfix --res_singles "demo_prep/SAGA/*res.dat"

# to solve in array-constraint condition (for epoch SAGA.1903)
solveSingleEpoch.py -i Settings-fix.ini -f cfgfix/SAGA/SAGA.1903.kaiyo_k4-fix.ini -d demo_res/SAGA
# to solve in array-constraint condition (for epoch SAGA.1905)
solveSingleEpoch.py -i Settings-fix.ini -f cfgfix/SAGA/SAGA.1905.meiyo_m5-fix.ini -d demo_res/SAGA

The following files will be created in the directory (specified with "-d" option).

  • Estimated site-parameter file (*res.dat)
  • Modified acoustic observation data csv file (*obs.csv)
  • Model parameter list file (*m.p.dat)
  • A posteriori covariance matrix file (*var.dat)

Note

Please be aware of your storage when searching hyperparameters,

since it will create result files for all combinations of hyperparameters.

List of functions

  • drive_garpos (in garpos_main.py)
  • parallelrun (in garpos_main.py)
    • MPestimate (in mp_estimation.py)
      • init_position (in setup_model.py)
      • make_splineknots (in setup_model.py)
      • derivative2 (in setup_model.py)
      • data_correlation (in setup_model.py)
      • calc_forward (in forward.py)
        • corr_attitude (in coordinate_trans.py)
        • calc_traveltime (in traveltime.py)
      • calc_gamma (in forward.py)
      • jacobian_pos (in forward.py)
        • corr_attitude (in coordinate_trans.py)
        • calc_traveltime (in traveltime.py)
      • outresults (in output.py)

Index list of obs.csv data

No. Index Description
00 SET Names of subset in each observation (typically S01, S02,...)
01 LN Names of survey lines in each observation (typically L01, L02,...)
02 MT ID of mirror transponder (should be consistent with Site-parameter file)
03 TT Observed travel time
04 ResiTT Residuals of travel time (observed - calculated)
05 TakeOff Takeoff angle of ray path (in degrees, Zenith direction = 180 deg.)
06 gamma Correction term setting in the observation equations
07 flag True: data of this acoustic shot is not used as data
08 ST Transmission time of acoustic signal
09 ant_e0 GNSS antenna position (eastward) at ST
10 ant_n0 GNSS antenna position (northward) at ST
11 ant_u0 GNSS antenna position (upward) at ST
12 head0 Heading at ST (in degree)
13 pitch0 Pitch at ST (in degree)
14 roll0 Roll at ST (in degree)
15 RT Reception time of acoustic signal
16 ant_e1 GNSS antenna position (eastward) at RT
17 ant_n1 GNSS antenna position (northward) at RT
18 ant_u1 GNSS antenna position (upward) at RT
19 head1 Heading at RT (in degree)
20 pitch1 Pitch at RT (in degree)
21 roll1 Roll at RT (in degree)
22 dV0 Sound speed variation (for dV0)
23 gradV1e Sound speed variation (for east component of grad(V1))
24 gradV1n Sound speed variation (for north component of grad(V1))
25 gradV2e Sound speed variation (for east component of grad(V2))
26 gradV2n Sound speed variation (for north component of grad(V2))
27 dV Correction term transformed into sound speed variation (gamma x V0)
28 LogResidual Actual residuals in estimation (log(TT) - log(calculated TT)

*Indices #04-#07, #22-#28 will be updated after the estimation.

garpos's People

Contributors

s-watanabe-jhod avatar yusuke-yokota avatar

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.