1
0
mirror of https://github.com/gnss-sdr/gnss-sdr synced 2025-03-31 15:57:02 +00:00

Use GPSTk if found, let the user change that with -DENABLE_OWN_GPSTK=ON

Add diff stdev error computation for carrier phase
This commit is contained in:
Carles Fernandez 2016-12-30 14:36:41 +01:00
parent e379dd7e1b
commit 7df15841b4
2 changed files with 61 additions and 43 deletions

@ -136,6 +136,7 @@ endif(ENABLE_CUDA)
################################################################################ ################################################################################
# Optional generator # Optional generator
################################################################################ ################################################################################
option(ENABLE_OWN_GPSTK "Download, build and link GPSTk for system tests" OFF)
if(ENABLE_SW_GENERATOR) if(ENABLE_SW_GENERATOR)
ExternalProject_Add( ExternalProject_Add(
gnss-sim gnss-sim
@ -156,31 +157,38 @@ if(ENABLE_SW_GENERATOR)
################################################################################ ################################################################################
# Local installation of GPSTk http://www.gpstk.org/ # Local installation of GPSTk http://www.gpstk.org/
################################################################################ ################################################################################
set(gpstk_RELEASE "2.5") find_package(GPSTK)
set(gpstk_md5 "9d79f6838d274f5edfd46c780a6b1b72") if(NOT GPSTK_FOUND OR ENABLE_OWN_GPSTK)
ExternalProject_Add( set(gpstk_RELEASE "2.5")
gpstk-${gpstk_RELEASE} set(gpstk_md5 "9d79f6838d274f5edfd46c780a6b1b72")
URL https://sourceforge.net/projects/gpstk/files/gpstk/${gpstk_RELEASE}/gpstk-${gpstk_RELEASE}.src.tar.gz ExternalProject_Add(
URL_MD5 ${gpstk_md5} gpstk-${gpstk_RELEASE}
SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../../thirdparty/gpstk URL https://sourceforge.net/projects/gpstk/files/gpstk/${gpstk_RELEASE}/gpstk-${gpstk_RELEASE}.src.tar.gz
BINARY_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../../thirdparty/gpstk URL_MD5 ${gpstk_md5}
CONFIGURE_COMMAND "" SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../../thirdparty/gpstk
BUILD_COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/../../thirdparty/gpstk/script_gpstk.sh -c BINARY_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../../thirdparty/gpstk
UPDATE_COMMAND "" CONFIGURE_COMMAND ""
PATCH_COMMAND "" BUILD_COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/../../thirdparty/gpstk/script_gpstk.sh -c
INSTALL_COMMAND "" UPDATE_COMMAND ""
) PATCH_COMMAND ""
set(GPSTK_INCLUDE_DIRS INSTALL_COMMAND ""
${CMAKE_CURRENT_SOURCE_DIR}/../../thirdparty/gpstk/dev/install/include CACHE PATH "Local GPSTK headers" )
) set(GPSTK_INCLUDE_DIRS ${CMAKE_CURRENT_SOURCE_DIR}/../../thirdparty/gpstk/dev/install/include CACHE PATH "Local GPSTK headers")
add_library(gpstk UNKNOWN IMPORTED) add_library(gpstk UNKNOWN IMPORTED)
set_property(TARGET gpstk PROPERTY IMPORTED_LOCATION ${CMAKE_CURRENT_SOURCE_DIR}/../../thirdparty/gpstk/dev/install/lib/${CMAKE_FIND_LIBRARY_PREFIXES}gpstk${CMAKE_SHARED_LIBRARY_SUFFIX}) set_property(TARGET gpstk PROPERTY IMPORTED_LOCATION ${CMAKE_CURRENT_SOURCE_DIR}/../../thirdparty/gpstk/dev/install/lib/${CMAKE_FIND_LIBRARY_PREFIXES}gpstk${CMAKE_SHARED_LIBRARY_SUFFIX})
add_dependencies(gpstk gpstk-${gpstk_RELEASE}) add_dependencies(gpstk gpstk-${gpstk_RELEASE})
set(GPSTK_BINDIR ${CMAKE_CURRENT_SOURCE_DIR}/../../thirdparty/gpstk/dev/install/bin/ ) set(GPSTK_BINDIR ${CMAKE_CURRENT_SOURCE_DIR}/../../thirdparty/gpstk/dev/install/bin/ )
add_definitions(-DGPSTK_BINDIR="${GPSTK_BINDIR}") add_definitions(-DGPSTK_BINDIR="${GPSTK_BINDIR}")
set(gpstk_libs gpstk) set(gpstk_libs gpstk)
else(NOT GPSTK_FOUND OR ENABLE_OWN_GPSTK)
set(gpstk_libs ${GPSTK_LIBRARIES})
set(GPSTK_INCLUDE_DIRS ${GPSTK_INCLUDE_DIR})
set(GPSTK_BINDIR ${GPSTK_LIBRARY}/../bin/ )
add_definitions(-DGPSTK_BINDIR="${GPSTK_BINDIR}")
endif(NOT GPSTK_FOUND OR ENABLE_OWN_GPSTK)
endif(ENABLE_SW_GENERATOR) endif(ENABLE_SW_GENERATOR)
add_definitions(-DTEST_PATH="${CMAKE_SOURCE_DIR}/src/tests/") add_definitions(-DTEST_PATH="${CMAKE_SOURCE_DIR}/src/tests/")
include_directories( include_directories(
@ -481,23 +489,23 @@ if(ENABLE_SYSTEM_TESTING)
${CMAKE_SOURCE_DIR}/install/$<TARGET_FILE_NAME:ttff> ${CMAKE_SOURCE_DIR}/install/$<TARGET_FILE_NAME:ttff>
) )
add_executable(obs_gps_l1_system_test if(ENABLE_SW_GENERATOR)
${CMAKE_CURRENT_SOURCE_DIR}/system-tests/obs_gps_l1_system_test.cc ) add_executable(obs_gps_l1_system_test ${CMAKE_CURRENT_SOURCE_DIR}/system-tests/obs_gps_l1_system_test.cc )
if(NOT ${GTEST_DIR_LOCAL}) if(NOT ${GTEST_DIR_LOCAL})
add_dependencies(obs_gps_l1_system_test gtest-${gtest_RELEASE} ) add_dependencies(obs_gps_l1_system_test gtest-${gtest_RELEASE} )
else(NOT ${GTEST_DIR_LOCAL}) else(NOT ${GTEST_DIR_LOCAL})
add_dependencies(obs_gps_l1_system_test gtest) add_dependencies(obs_gps_l1_system_test gtest)
endif(NOT ${GTEST_DIR_LOCAL}) endif(NOT ${GTEST_DIR_LOCAL})
include_directories(${GPSTK_INCLUDE_DIRS}) include_directories(${GPSTK_INCLUDE_DIRS})
target_link_libraries(obs_gps_l1_system_test ${GFlags_LIBS} target_link_libraries(obs_gps_l1_system_test ${GFlags_LIBS}
${GLOG_LIBRARIES} ${GLOG_LIBRARIES}
${GTEST_LIBRARIES} ${GTEST_LIBRARIES}
gnss_sp_libs gnss_sp_libs
gnss_rx gnss_rx
${gpstk_libs}) ${gpstk_libs})
add_custom_command(TARGET obs_gps_l1_system_test POST_BUILD add_custom_command(TARGET obs_gps_l1_system_test POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:obs_gps_l1_system_test> COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:obs_gps_l1_system_test>
${CMAKE_SOURCE_DIR}/install/$<TARGET_FILE_NAME:obs_gps_l1_system_test> ${CMAKE_SOURCE_DIR}/install/$<TARGET_FILE_NAME:obs_gps_l1_system_test>
) )
endif(ENABLE_SW_GENERATOR)
endif(ENABLE_SYSTEM_TESTING) endif(ENABLE_SYSTEM_TESTING)

@ -583,6 +583,7 @@ void Obs_Gps_L1_System_Test::check_results()
// Compute carrier phase error // Compute carrier phase error
prn_id = 0; prn_id = 0;
std::vector<double> mean_cp_diff_v;
for(iter_diff = cp_diff.begin(); iter_diff != cp_diff.end(); iter_diff++) for(iter_diff = cp_diff.begin(); iter_diff != cp_diff.end(); iter_diff++)
{ {
// For each satellite with reference and measurements aligned in time // For each satellite with reference and measurements aligned in time
@ -596,6 +597,7 @@ void Obs_Gps_L1_System_Test::check_results()
if(number_obs > 0) if(number_obs > 0)
{ {
mean_diff = mean_diff / number_obs; mean_diff = mean_diff / number_obs;
mean_cp_diff_v.push_back(mean_diff);
std::cout << "-- Mean carrier phase difference for sat " << prn_id << ": " << mean_diff << std::endl; std::cout << "-- Mean carrier phase difference for sat " << prn_id << ": " << mean_diff << std::endl;
} }
else else
@ -605,6 +607,14 @@ void Obs_Gps_L1_System_Test::check_results()
prn_id++; prn_id++;
} }
sum_ = std::accumulate(mean_cp_diff_v.begin(), mean_cp_diff_v.end(), 0.0);
mean_ = sum_ / mean_cp_diff_v.size();
accum = 0.0;
std::for_each (std::begin(mean_cp_diff_v), std::end(mean_cp_diff_v), [&](const double d) {
accum += (d - mean_) * (d - mean_);
});
double stdev_cp = std::sqrt(accum / (mean_cp_diff_v.size() - 1));
std::cout << "Carrier phase diff error stdev = " << stdev_cp << " whole cycles (19 cm)" << std::endl;
// Compute Doppler error // Compute Doppler error
prn_id = 0; prn_id = 0;
@ -656,7 +666,7 @@ TEST_F(Obs_Gps_L1_System_Test, Observables_system_test)
configure_generator(); configure_generator();
// Generate signal raw signal samples and observations RINEX file // Generate signal raw signal samples and observations RINEX file
generate_signal(); //generate_signal();
std::cout << "Validating generated reference RINEX obs file: " << FLAGS_filename_rinex_obs << " ..." << std::endl; std::cout << "Validating generated reference RINEX obs file: " << FLAGS_filename_rinex_obs << " ..." << std::endl;
bool is_gen_rinex_obs_valid = check_valid_rinex_obs( "./" + FLAGS_filename_rinex_obs); bool is_gen_rinex_obs_valid = check_valid_rinex_obs( "./" + FLAGS_filename_rinex_obs);