1
0
mirror of https://github.com/gnss-sdr/gnss-sdr synced 2024-08-19 22:26:10 +00:00

Merge branch 'next' of https://github.com/gnss-sdr/gnss-sdr into next

This commit is contained in:
Carles Fernandez 2018-02-25 02:51:17 +01:00
commit 9f5f8a48c1
10 changed files with 109 additions and 91 deletions

View File

@ -317,6 +317,7 @@ set(GNSSSDR_BOOST_MIN_VERSION "1.45")
set(GNSSSDR_PYTHON_MIN_VERSION "2.7")
set(GNSSSDR_MAKO_MIN_VERSION "0.4.2")
set(GNSSSDR_ARMADILLO_MIN_VERSION "4.200.0")
set(GNSSSDR_MATIO_MIN_VERSION "1.5.3")
@ -1094,7 +1095,12 @@ endif(NOT GNUTLS_OPENSSL_LIBRARY)
# Matio - https://github.com/tbeu/matio
########################################################################
find_package(MATIO)
if(NOT MATIO_FOUND)
if(NOT MATIO_FOUND OR MATIO_VERSION_STRING VERSION_LESS ${GNSSSDR_MATIO_MIN_VERSION})
if(MATIO_FOUND)
message(STATUS " Matio installed version (${MATIO_VERSION_STRING}) is too old (>= ${GNSSSDR_MATIO_MIN_VERSION} is required).")
endif(MATIO_FOUND)
message(STATUS " Matio will be downloaded and built automatically")
message(STATUS " when doing '${CMAKE_MAKE_PROGRAM_PRETTY_NAME}'. ")
find_package(ZLIB)
if(ZLIB_FOUND)
get_filename_component(ZLIB_BASE_DIR ${ZLIB_INCLUDE_DIRS} DIRECTORY)
@ -1112,7 +1118,7 @@ if(NOT MATIO_FOUND)
message(FATAL_ERROR "libtool is required to build matio from source")
endif(NOT EXISTS "/usr/bin/libtoolize")
if(EXISTS "/usr/bin/aclocal-1.15" OR EXISTS "/usr/bin/aclocal-1.14" OR EXISTS "/usr/bin/aclocal-1.13" OR EXISTS "/usr/bin/aclocal-1.11" OR EXISTS "/usr/bin/aclocal-1.10")
message(STATUS "aclocal found")
message(STATUS "Automake found.")
else(EXISTS "/usr/bin/aclocal-1.15" OR EXISTS "/usr/bin/aclocal-1.14" OR EXISTS "/usr/bin/aclocal-1.13" OR EXISTS "/usr/bin/aclocal-1.11" OR EXISTS "/usr/bin/aclocal-1.10")
message(" aclocal has not been found.")
message(" You can try to install it by typing:")
@ -1182,7 +1188,7 @@ if(NOT MATIO_FOUND)
else(ZLIB_FOUND)
message(FATAL_ERROR "*** The zlib library is required to build gnss-sdr")
endif(ZLIB_FOUND)
endif(NOT MATIO_FOUND)
endif(NOT MATIO_FOUND OR MATIO_VERSION_STRING VERSION_LESS ${GNSSSDR_MATIO_MIN_VERSION})

View File

@ -1,10 +1,10 @@
.\" Manpage for gnss\-sdr.
.\" Contact carles.fernandez@cttc.es to correct errors or typos.
.TH gnss\-sdr 1 "05 Feb 2017" "0.0.9" "gnss\-sdr man page"
.TH gnss\-sdr 1 "24 Feb 2018" "0.0.9" "gnss\-sdr man page"
.SH NAME
\fBgnss\-sdr\fR \- GNSS Software Defined Receiver.
.SH SYNOPSIS
\fBgnss\-sdr \-config_file=\fR\fI<path\-to\-configuration\-file>\fR [OPTION]...
\fBgnss\-sdr \-c=\fR\fI<path\-to\-configuration\-file>\fR [OPTION]...
.SH DESCRIPTION
\fBgnss\-sdr\fR is a Global Navigation Satellite Systems Software Defined Receiver written in C++. It implements all the signal processing chain, taking as input raw samples coming from the output of an Analog\-to\-Digital Converter, and processing them up to the computation of the Position\-Velocity\-Time solution, including the generation of code and phase measurements.
\.TP
@ -12,31 +12,47 @@
.SH OPTIONS
\fBgnss\-sdr\fR takes the following options:
.TP
\fB\-config_file=\fR\fI<path\-to\-configuration\-file>\fR Set the configuration file.
\fB\-c=\fR\fI<path\-to\-configuration\-file>\fR or \fB\-config_file=\fR\fI<path\-to\-configuration\-file>\fR
Set the configuration file.
.TP
\fB\-signal_source=\fR\fI<path\-to\-raw\-signal\-file>\fR If defined, path to the file containing the signal samples (overrides the data file specified in the configuration file).
\fB\-s=\fR\fI<path\-to\-raw\-signal\-file>\fR or \fB\-signal_source=\fR\fI<path\-to\-raw\-signal\-file>\fR
If defined, path to the file containing the signal samples (overrides the data file specified in the configuration file).
.TP
\fB\-log_dir=\fR\fI<path\-to\-directory>\fR If defined, overrides the default directory where logs are saved.
\fB\-log_dir=\fR\fI<path\-to\-directory>\fR
If defined, overrides the default directory where logs are saved.
.TP
\fB\-doppler_max=\fR\fIdoppler\fR If defined, maximum Doppler value in the search grid, in Hz (overrides the configuration file),
\fB\-doppler_max=\fR\fI<doppler_max>\fR
If defined, maximum Doppler value in the search grid, in Hz (overrides the configuration file).
.TP
\fB\-cn0_samples=\fR\fIsamples\fR Number of correlator outputs used for CN0 estimation.
\fB\-doppler_step=\fR\fI<doppler_step>\fR
If defined, sets the frequency step in the search grid, in Hz (overrides the configuration file).
.TP
\fB\-cn0_min=\fR\fIcn0_min\fR Minimum valid CN0 (in dB-Hz).
\fB\-cn0_samples=\fR\fI<samples>\fR
Number of correlators outputs (one per integration time) used for CN0 estimation. It defaults to 20 outputs.
.TP
\fB\-max_lock_fail=\fR\fImax_lock_fail\fR Number number of lock failures before dropping satellite.
\fB\-cn0_min=\fR\fI<cn0_min>\fR
Minimum valid CN0 (in dB-Hz). It defaults to 25 dB-Hz.
.TP
\fB\-carrier_lock_th=\fR\fIcarrier_lock_th\fR Carrier lock threshold (in rad).
\fB\-max_lock_fail=\fR\fI<max_lock_fail>\fR
Number of lock failures before dropping satellite. It defaults to 50 failures.
.TP
\fB\-dll_bw_hz=\fR\fIdll_bw_hz\fR If defined, bandwidth of the DLL low pass filter, in Hz (overrides the configuration file).
\fB\-carrier_lock_th=\fR\fI<carrier_lock_th>\fR
Carrier lock error threshold (in rad). It defaults to 0.85 rad (48.7 degrees).
.TP
\fB\-pll_bw_hz=\fR\fIpll_bw_hz\fR If defined, bandwidth of the PLL low pass filter, in Hz (overrides the configuration file).
\fB\-dll_bw_hz=\fR\fI<dll_bw_hz>\fR
If defined, bandwidth of the DLL low pass filter, in Hz (overrides the configuration file).
.TP
\fB\-RINEX_version=\fI<version>\fR Specifies the RINEX version (2.11 or 3.02). Default: "3.02".
\fB\-pll_bw_hz=\fR\fI<pll_bw_hz>\fR
If defined, bandwidth of the PLL low pass filter, in Hz (overrides the configuration file).
.TP
\fB\-version\fR Print program version and exit.
\fB\-RINEX_version=\fI<version>\fR
If defined, specifies the RINEX version (2.11 or 3.02). Default: "3.02". Overrides the configuration file.
.TP
\fB\-help\fR Print all the available commandline flags and exit.
\fB\-version\fR
Print program version and exit.
.TP
\fB\-help\fR
Print all the available commandline flags and exit.
.SH SEE ALSO
.BR volk_gnsssdr_profile (1)
\.TP

View File

@ -28,6 +28,7 @@ include_directories(
${CMAKE_SOURCE_DIR}/src/algorithms/PVT/gnuradio_blocks
${CMAKE_SOURCE_DIR}/src/algorithms/PVT/libs
${CMAKE_SOURCE_DIR}/src/algorithms/libs/rtklib
${CMAKE_SOURCE_DIR}/src/algorithms/libs
${ARMADILLO_INCLUDE_DIRS}
${Boost_INCLUDE_DIRS}
${GLOG_INCLUDE_DIRS}

View File

@ -36,7 +36,7 @@
#include <boost/math/common_factor_rt.hpp>
#include <boost/serialization/map.hpp>
#include "configuration_interface.h"
#include "gnss_sdr_flags.h"
using google::LogMessage;
@ -70,11 +70,30 @@ RtklibPvt::RtklibPvt(ConfigurationInterface* configuration,
// RINEX version
int rinex_version = configuration->property(role + ".rinex_version", 3);
if( (rinex_version < 2) || (rinex_version > 3) )
if ( FLAGS_RINEX_version.compare("3.01") == 0 )
{
//warn user and set the default
rinex_version = 3;
}
else if ( FLAGS_RINEX_version.compare("3.02") == 0 )
{
rinex_version = 3;
}
else if ( FLAGS_RINEX_version.compare("3") == 0 )
{
rinex_version = 3;
}
else if ( FLAGS_RINEX_version.compare("2.11") == 0 )
{
rinex_version = 2;
}
else if ( FLAGS_RINEX_version.compare("2.10") == 0 )
{
rinex_version = 2;
}
else if ( FLAGS_RINEX_version.compare("2") == 0 )
{
rinex_version = 2;
}
// RTCM Printer settings
bool flag_rtcm_tty_port = configuration->property(role + ".flag_rtcm_tty_port", false);

View File

@ -43,7 +43,6 @@
#include <boost/date_time/local_time/local_time.hpp>
#include <boost/date_time/posix_time/posix_time.hpp>
#include <glog/logging.h>
#include "gnss_sdr_flags.h"
using google::LogMessage;
@ -143,57 +142,17 @@ Rinex_Printer::Rinex_Printer(int conf_version)
observationCode["GPS_L1_CA_v2"] = "1";
observationCode["GLONASS_G1_CA_v2"] = "1";
if ( FLAGS_RINEX_version.compare("3.01") == 0 )
{
version = 3;
stringVersion = "3.01";
}
else if ( FLAGS_RINEX_version.compare("3.02") == 0 )
{
version = 3;
stringVersion = "3.02";
}
else if ( FLAGS_RINEX_version.compare("3") == 0 )
{
version = 3;
stringVersion = "3.02";
}
else if ( FLAGS_RINEX_version.compare("2.11") == 0 )
{
version = 2;
stringVersion = "2.11";
}
else if ( FLAGS_RINEX_version.compare("2.10") == 0 )
{
version = 2;
stringVersion = "2.10";
}
else if ( FLAGS_RINEX_version.compare("2") == 0 )
if(conf_version == 2)
{
version = 2;
stringVersion = "2.11";
}
else
{
LOG(WARNING) << "Unknown RINEX version " << FLAGS_RINEX_version << " (must be 2.11 or 3.02). Using 3.02";
version = 3;
stringVersion = "3.02";
}
if(conf_version != 0)
{
if(conf_version == 2)
{
version = 2;
stringVersion = "2.11";
}
if(conf_version == 3)
{
version = 3;
stringVersion = "3.02";
}
}
numberTypesObservations = 4; // Number of available types of observable in the system
fake_cnav_iode = 1;
}

View File

@ -24,6 +24,7 @@ include_directories(
${CMAKE_SOURCE_DIR}/src/core/interfaces
${CMAKE_SOURCE_DIR}/src/core/receiver
${CMAKE_SOURCE_DIR}/src/algorithms/channel/libs
${CMAKE_SOURCE_DIR}/src/algorithms/libs
${GLOG_INCLUDE_DIRS}
${GFlags_INCLUDE_DIRS}
${Boost_INCLUDE_DIRS}
@ -34,4 +35,4 @@ file(GLOB CHANNEL_ADAPTER_HEADERS "*.h")
list(SORT CHANNEL_ADAPTER_HEADERS)
add_library(channel_adapters ${CHANNEL_ADAPTER_SOURCES} ${CHANNEL_ADAPTER_HEADERS})
source_group(Headers FILES ${CHANNEL_ADAPTER_HEADERS})
target_link_libraries(channel_adapters channel_fsm ${GNURADIO_RUNTIME_LIBRARIES} ${Boost_LIBRARIES})
target_link_libraries(channel_adapters channel_fsm ${GNURADIO_RUNTIME_LIBRARIES} ${Boost_LIBRARIES} gnss_sdr_flags)

View File

@ -33,6 +33,7 @@
#include <boost/lexical_cast.hpp>
#include <glog/logging.h>
#include "configuration_interface.h"
#include "gnss_sdr_flags.h"
using google::LogMessage;
@ -74,8 +75,9 @@ Channel::Channel(ConfigurationInterface *configuration, unsigned int channel,
// IMPORTANT: Do not change the order between set_doppler_step and set_threshold
unsigned int doppler_step = configuration->property("Acquisition_" + implementation_ + boost::lexical_cast<std::string>(channel_) + ".doppler_step" ,0);
if(doppler_step == 0) doppler_step = configuration->property("Acquisition_" + implementation_+".doppler_step", 500);
unsigned int doppler_step = configuration->property("Acquisition_" + implementation_ + boost::lexical_cast<std::string>(channel_) + ".doppler_step", 0);
if(doppler_step == 0) doppler_step = configuration->property("Acquisition_" + implementation_ + ".doppler_step", 500);
if(FLAGS_doppler_step != 0) doppler_step = static_cast<unsigned int>(FLAGS_doppler_step);
DLOG(INFO) << "Channel "<< channel_ << " Doppler_step = " << doppler_step;
acq_->set_doppler_step(doppler_step);

View File

@ -33,29 +33,31 @@
#include <cstdint>
#include <iostream>
DEFINE_string(c, "-", "Path to the configuration file (if set, overrides --config_file)");
DEFINE_string(c, "-", "Path to the configuration file (if set, overrides --config_file).");
DEFINE_string(s, "-",
"If defined, path to the file containing the signal samples (overrides the configuration file and --signal_source)");
"If defined, path to the file containing the signal samples (overrides the configuration file and --signal_source).");
DEFINE_string(signal_source, "-",
"If defined, path to the file containing the signal samples (overrides the configuration file)");
"If defined, path to the file containing the signal samples (overrides the configuration file).");
DEFINE_int32(doppler_max, 0, "If defined, maximum Doppler value in the search grid, in Hz (overrides the configuration file)");
DEFINE_int32(doppler_max, 0, "If defined, sets the maximum Doppler value in the search grid, in Hz (overrides the configuration file).");
DEFINE_int32(cn0_samples, 20, "Number of correlator outputs used for CN0 estimation");
DEFINE_int32(doppler_step, 0, "If defined, sets the frequency step in the search grid, in Hz (overrides the configuration file).");
DEFINE_int32(cn0_min, 25, "Minimum valid CN0 (in dB-Hz)");
DEFINE_int32(cn0_samples, 20, "Number of correlator outputs used for CN0 estimation.");
DEFINE_int32(max_lock_fail, 50, "Number number of lock failures before dropping satellite");
DEFINE_int32(cn0_min, 25, "Minimum valid CN0 (in dB-Hz).");
DEFINE_double(carrier_lock_th, 0.85, "Carrier lock threshold (in rad)");
DEFINE_int32(max_lock_fail, 50, "Number number of lock failures before dropping satellite.");
DEFINE_string(RINEX_version, "3.02", "Specifies the RINEX version (2.11 or 3.02)");
DEFINE_double(carrier_lock_th, 0.85, "Carrier lock threshold (in rad).");
DEFINE_double(dll_bw_hz, 0.0, "If defined, bandwidth of the DLL low pass filter, in Hz (overrides the configuration file)");
DEFINE_string(RINEX_version, "-", "If defined, specifies the RINEX version (2.11 or 3.02). Overrides the configuration file.");
DEFINE_double(pll_bw_hz, 0.0, "If defined, bandwidth of the PLL low pass filter, in Hz (overrides the configuration file)");
DEFINE_double(dll_bw_hz, 0.0, "If defined, bandwidth of the DLL low pass filter, in Hz (overrides the configuration file).");
DEFINE_double(pll_bw_hz, 0.0, "If defined, bandwidth of the PLL low pass filter, in Hz (overrides the configuration file).");
#if GFLAGS_GREATER_2_0
@ -68,6 +70,14 @@ static bool ValidateDopplerMax(const char* flagname, int32_t value)
return false;
}
static bool ValidateDopplerStep(const char* flagname, int32_t value)
{
if (value >= 0 && value < 10000) // value is ok
return true;
std::cout << "Invalid value for " << flagname << ": " << value << std::endl;
return false;
}
static bool ValidateCn0Samples(const char* flagname, int32_t value)
{
if (value > 0 && value < 10000) // value is ok
@ -118,6 +128,7 @@ static bool ValidatePllBw(const char* flagname, double value)
DEFINE_validator(doppler_max, &ValidateDopplerMax);
DEFINE_validator(doppler_step, &ValidateDopplerStep);
DEFINE_validator(cn0_samples, &ValidateCn0Samples);
DEFINE_validator(cn0_min, &ValidateCn0Min);
DEFINE_validator(max_lock_fail, &ValidateMaxLockFail);

View File

@ -34,28 +34,29 @@
#include <gflags/gflags.h>
DECLARE_string(c); //<! Path to the configuration file
DECLARE_string(config_file); //<! Path to the configuration file
DECLARE_string(c); //<! Path to the configuration file.
DECLARE_string(config_file); //<! Path to the configuration file.
DECLARE_string(log_dir); //<! Path to the folder in which logging will be stored
DECLARE_string(log_dir); //<! Path to the folder in which logging will be stored.
// Declare flags for signal sources
DECLARE_string(s); //<! Path to the file containing the signal samples
DECLARE_string(signal_source); //<! Path to the file containing the signal samples
DECLARE_string(s); //<! Path to the file containing the signal samples.
DECLARE_string(signal_source); //<! Path to the file containing the signal samples.
// Declare flags for acquisition blocks
DECLARE_int32(doppler_max); //<!If defined, maximum Doppler value in the search grid, in Hz (overrides the configuration file)
DECLARE_int32(doppler_max); //<! If defined, maximum Doppler value in the search grid, in Hz (overrides the configuration file).
DECLARE_int32(doppler_step); //<! If defined, sets the frequency step in the search grid, in Hz, in Hz (overrides the configuration file).
// Declare flags for tracking blocks
DECLARE_int32(cn0_samples); //<! Number of correlator outputs used for CN0 estimation
DECLARE_int32(cn0_min); //<! Minimum valid CN0 (in dB-Hz)
DECLARE_int32(max_lock_fail); //<! Number number of lock failures before dropping satellite
DECLARE_double(carrier_lock_th); //<! Carrier lock threshold (in rad)
DECLARE_double(dll_bw_hz); //<! Bandwidth of the DLL low pass filter, in Hz (overrides the configuration file)
DECLARE_double(pll_bw_hz); //<! Bandwidth of the PLL low pass filter, in Hz (overrides the configuration file)
DECLARE_int32(cn0_samples); //<! Number of correlator outputs used for CN0 estimation.
DECLARE_int32(cn0_min); //<! Minimum valid CN0 (in dB-Hz).
DECLARE_int32(max_lock_fail); //<! Number number of lock failures before dropping satellite.
DECLARE_double(carrier_lock_th); //<! Carrier lock threshold (in rad).
DECLARE_double(dll_bw_hz); //<! Bandwidth of the DLL low pass filter, in Hz (overrides the configuration file).
DECLARE_double(pll_bw_hz); //<! Bandwidth of the PLL low pass filter, in Hz (overrides the configuration file).
// Declare flags for PVT
DECLARE_string(RINEX_version); //<! RINEX version
DECLARE_string(RINEX_version); //<! If defined, specifies the RINEX version (2.11 or 3.02). Overrides the configuration file.
#endif

View File

@ -44,7 +44,9 @@
#include <memory>
#include <boost/exception/diagnostic_information.hpp>
#include <boost/exception_ptr.hpp>
#include <boost/filesystem.hpp>
#include <boost/filesystem/operations.hpp> // for create_directories, exists
#include <boost/filesystem/path.hpp> // for path, operator<<
#include <boost/filesystem/path_traits.hpp> // for filesystem
#include <glog/logging.h>
#include "control_thread.h"
#include "concurrent_queue.h"