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:
parent
e379dd7e1b
commit
7df15841b4
src/tests
@ -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);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user