Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

README improvements for first time users #65

Open
wants to merge 2 commits into
base: develop-weekly
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
103 changes: 55 additions & 48 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,58 @@ The software consists of three main components:
* Precise Orbit Determination (POD), and
* Various scripts for combination and analysis of solutions


## Getting started

You can quickly download a ready-to-run Ginan environment using docker by running:

mkdir ginan-data
docker run -it -v ginan-data:/data gnssanalysis/ginan:v3.0.0 bash
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This works locally for me when I have sudo out the front. An additional line on that below would be good to inform users that may have trouble getting it started


This command connects the `ginan-data` directory on the host (your pc), with the `/data` directory in the container, to allow file access between the two systems, and opens a command line (`bash`) for executing commands.

You will need to have [docker](https://docs.docker.com/get-docker/) installed to use this method.

To verify you have the Ginan executables available once at the Ginan command line, run:

pea --help


### Download example dependencies

Download all of the example data using the scripts and filelists provided. From `/ginan`:

```bash
cd inputData/data
./getData.sh
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

These scripts will download into the /ginan directory, which is not mapped to the local machine (and therefore will disappear once the terminal is closed).

This may be ok for the inputs if that's what we want, but the output directory also points at locations within /ginan.
Just a note to the user in the README would be fine at this point, but we may want to change this a bit so that outputs go to the ginan-data directory that you've created.

cd ../products
./getProducts.sh
```

### Ready!

Congratulations! You are now ready to trial the examples from the `exampleConfigs` directory. See Ginan's manual for detailed explanation of each example. Note that examples have relative paths to files in them and rely on the presence of `products` and `data` directories inside the `inputData` directory.

The paths are relative to the `exampleConfigs` directory and hence all the examples must be run from the `exampleConfigs` directory.

To run the first example of the PEA:

```bash
cd /ginan/exampleConfigs
pea --config ppp_example.yaml
```

This should create `outputs/ppp_example` directory with various `*.trace` files, which contain details about stations processing, a `Network*.trace` file, which contains the results of Kalman filtering, and other auxiliary output files as configured in the yamls.


### Python tools

We use Python for automated process (download), postprocessing and visualisation. To use the developed tools, we recommrnd to use a virtual environment (or Anaconda equivalent). A requirements file is available in the `scripts/` directory and can be run via

```python
pip3 install -r requirements.txt
```

## Using Ginan with an AppImage

You can quickly download a precompiled binary of Ginan's pea from the `develop-weekly-appimage` branch of github.
Expand All @@ -51,22 +103,8 @@ or on windows:
ginan/Ginan-x86_64.AppImage


## Using Ginan with Docker

You can quickly download a ready-to-run Ginan environment using docker by running:

docker run -it -v ${host_data_folder}:/data gnssanalysis/ginan:v3.0.0 bash

This command connects the `${host_data_folder}` directory on the host (your pc), with the `/data` directory in the container, to allow file access between the two systems, and opens a command line (`bash`) for executing commands.

You will need to have [docker](https://docs.docker.com/get-docker/) installed to use this method.

To verify you have the Ginan executables available once at the Ginan command line, run:

pea --help

## Installing from source

## Installation from source
### Supported Platforms

Ginan is supported and tested on the following platforms
Expand Down Expand Up @@ -97,14 +135,8 @@ If using gcc verion 11 or about, the minimum version of libraries are:

Scripts to install dependencies for Ubuntu 18.04/20.04, 22.04, Fedora 38 are available on the `scripts/installation` directory. Users on other system might need to have a look at the `scripts/installation/generic.md` file, which contains the major steps.

### Python

We use Python for automated process (download), postprocessing and visualisation. To use the developed tools, we recommand to use a virtual-environement (or Anaconda equivalent). A requirements file is available in the `scripts/` directory and can be run via
```python
pip3 install -r requirements.txt
```

### Build

Prepare a directory to build in - it's better practice to keep this separated from the source code.
From the Ginan git root directory:

Expand Down Expand Up @@ -225,33 +257,8 @@ The documentation can then be found at `Docs/codeDocs/index.html`.
Note that documentation is also generated automatically if `make` is called without arguments and `doxygen` and `graphviz` dependencies are satisfied.


## Ready!
Congratulations! You are now ready to trial the examples from the `exampleConfigs` directory. See Ginan's manual for detailed explanation of each example. Note that examples have relative paths to files in them and rely on the presence of `products` and `data` directories inside the `inputData` directory. Make sure you've run `s3_filehandler.py` from the Build step of these instructions.

The paths are relative to the `exampleConfigs` directory and hence all the examples must be run from the `exampleConfigs` directory.

NB: Examples may be configured to use mongoDB. If you have not installed it, please set `mongo: enable` to false in the pea config files.

To run the first example of the PEA:

```bash
cd ../exampleConfigs

../bin/pea --config ppp_example.yaml
```

This should create `outputs/ppp_example` directory with various `*.trace` files, which contain details about stations processing, a `Network*.trace` file, which contains the results of Kalman filtering, and other auxiliary output files as configured in the yamls.

You can remove the need for path specification to the executable by using the symlink within `exampleConfigs`, or by adding Ginan's bin directory to `~/.bashrc` file:
```
PATH="path_to_ginan_bin:$PATH"
```

## Scripts
In addition to the Ginan binaries, [scripts](scripts.index) are available to assist with downloading input files, and viewing and comparing generated outputs.

### Acknowledgements

### Acknowledgements:
We have used routines obtained from RTKLIB, released under a BSD-2 license, these routines have been preserved with modifications in the folder `cpp/src/rtklib`. The original source code from RTKLib can be obtained from https://github.com/tomojitakasu/RTKLIB.

We have used routines obtained from Better Enums, released under the BSD-2 license, these routines have been preserved in the folder `cpp/src/3rdparty` The original source code from Better Enums can be obtained from http://github.com/aantron/better-enums.
Expand Down
2 changes: 1 addition & 1 deletion exampleConfigs/fit_sp3_pseudoobs.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -181,7 +181,7 @@ estimation_parameters:


mongo:
enable: primary
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Same as the pod example below, not sure if Mongo is needed on this. If not, happy to not have mongo enabled

enable: none
primary_database: <CONFIG>
output_measurements: primary
output_states: primary
Expand Down
2 changes: 1 addition & 1 deletion exampleConfigs/pod_example.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -473,7 +473,7 @@ estimation_parameters:


mongo:
enable: primary
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I haven't run this example, but may need mongo to do precise orbit determination (I'll let others comment on this)

enable: none
#enable: none
output_components: primary
output_states: primary
Expand Down
2 changes: 1 addition & 1 deletion exampleConfigs/ppp_example.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -278,7 +278,7 @@ estimation_parameters:


mongo: # Mongo is a database used to store results and intermediate values for later analysis and inter-process communication
enable: primary # Enable and connect to mongo database {none,primary,secondary,both}
enable: none # Enable and connect to mongo database {none,primary,secondary,both}
primary_uri: mongodb://localhost:27017 # Location and port of the mongo database to connect to
primary_database: <CONFIG>
primary_suffix: "" # Suffix to append to database elements to make distinctions between runs for comparison
Expand Down
2 changes: 1 addition & 1 deletion exampleConfigs/record_snr.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ processing_options:
process: true

mongo:
enable: primary
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

SNR recording goes into the Mongo database, so this will need to stay as is

enable: none
output_trace: primary
output_config: primary
primary_uri: "mongodb://localhost:27017"
Expand Down
2 changes: 1 addition & 1 deletion exampleConfigs/rt_ppp_example.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -185,7 +185,7 @@ estimation_parameters:

mongo: # Mongo is a database used to store results and intermediate values for later analysis and inter-process communication

enable: primary # Enable and connect to mongo database {none,primary,secondary,both}
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Mongo is required for running Ginan in real-time so this will need to stay as is

enable: none # Enable and connect to mongo database {none,primary,secondary,both}
primary_uri: mongodb://localhost:27017 # Location and port of the mongo database to connect to
primary_database: <CONFIG>
output_components: primary # Output components of measurements {none,primary,secondary,both}
Expand Down