mirror of
https://github.com/gnss-sdr/gnss-sdr
synced 2025-03-28 06:17: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
@ -136,6 +136,7 @@ endif(ENABLE_CUDA)
|
||||
################################################################################
|
||||
# Optional generator
|
||||
################################################################################
|
||||
option(ENABLE_OWN_GPSTK "Download, build and link GPSTk for system tests" OFF)
|
||||
if(ENABLE_SW_GENERATOR)
|
||||
ExternalProject_Add(
|
||||
gnss-sim
|
||||
@ -156,31 +157,38 @@ if(ENABLE_SW_GENERATOR)
|
||||
################################################################################
|
||||
# Local installation of GPSTk http://www.gpstk.org/
|
||||
################################################################################
|
||||
set(gpstk_RELEASE "2.5")
|
||||
set(gpstk_md5 "9d79f6838d274f5edfd46c780a6b1b72")
|
||||
ExternalProject_Add(
|
||||
gpstk-${gpstk_RELEASE}
|
||||
URL https://sourceforge.net/projects/gpstk/files/gpstk/${gpstk_RELEASE}/gpstk-${gpstk_RELEASE}.src.tar.gz
|
||||
URL_MD5 ${gpstk_md5}
|
||||
SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../../thirdparty/gpstk
|
||||
BINARY_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../../thirdparty/gpstk
|
||||
CONFIGURE_COMMAND ""
|
||||
BUILD_COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/../../thirdparty/gpstk/script_gpstk.sh -c
|
||||
UPDATE_COMMAND ""
|
||||
PATCH_COMMAND ""
|
||||
INSTALL_COMMAND ""
|
||||
)
|
||||
set(GPSTK_INCLUDE_DIRS
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/../../thirdparty/gpstk/dev/install/include CACHE PATH "Local GPSTK headers"
|
||||
)
|
||||
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})
|
||||
add_dependencies(gpstk gpstk-${gpstk_RELEASE})
|
||||
set(GPSTK_BINDIR ${CMAKE_CURRENT_SOURCE_DIR}/../../thirdparty/gpstk/dev/install/bin/ )
|
||||
add_definitions(-DGPSTK_BINDIR="${GPSTK_BINDIR}")
|
||||
set(gpstk_libs gpstk)
|
||||
find_package(GPSTK)
|
||||
if(NOT GPSTK_FOUND OR ENABLE_OWN_GPSTK)
|
||||
set(gpstk_RELEASE "2.5")
|
||||
set(gpstk_md5 "9d79f6838d274f5edfd46c780a6b1b72")
|
||||
ExternalProject_Add(
|
||||
gpstk-${gpstk_RELEASE}
|
||||
URL https://sourceforge.net/projects/gpstk/files/gpstk/${gpstk_RELEASE}/gpstk-${gpstk_RELEASE}.src.tar.gz
|
||||
URL_MD5 ${gpstk_md5}
|
||||
SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../../thirdparty/gpstk
|
||||
BINARY_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../../thirdparty/gpstk
|
||||
CONFIGURE_COMMAND ""
|
||||
BUILD_COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/../../thirdparty/gpstk/script_gpstk.sh -c
|
||||
UPDATE_COMMAND ""
|
||||
PATCH_COMMAND ""
|
||||
INSTALL_COMMAND ""
|
||||
)
|
||||
set(GPSTK_INCLUDE_DIRS ${CMAKE_CURRENT_SOURCE_DIR}/../../thirdparty/gpstk/dev/install/include CACHE PATH "Local GPSTK headers")
|
||||
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})
|
||||
add_dependencies(gpstk gpstk-${gpstk_RELEASE})
|
||||
set(GPSTK_BINDIR ${CMAKE_CURRENT_SOURCE_DIR}/../../thirdparty/gpstk/dev/install/bin/ )
|
||||
add_definitions(-DGPSTK_BINDIR="${GPSTK_BINDIR}")
|
||||
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)
|
||||
|
||||
|
||||
add_definitions(-DTEST_PATH="${CMAKE_SOURCE_DIR}/src/tests/")
|
||||
|
||||
include_directories(
|
||||
@ -481,23 +489,23 @@ if(ENABLE_SYSTEM_TESTING)
|
||||
${CMAKE_SOURCE_DIR}/install/$<TARGET_FILE_NAME:ttff>
|
||||
)
|
||||
|
||||
add_executable(obs_gps_l1_system_test
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/system-tests/obs_gps_l1_system_test.cc )
|
||||
if(NOT ${GTEST_DIR_LOCAL})
|
||||
add_dependencies(obs_gps_l1_system_test gtest-${gtest_RELEASE} )
|
||||
else(NOT ${GTEST_DIR_LOCAL})
|
||||
add_dependencies(obs_gps_l1_system_test gtest)
|
||||
endif(NOT ${GTEST_DIR_LOCAL})
|
||||
include_directories(${GPSTK_INCLUDE_DIRS})
|
||||
target_link_libraries(obs_gps_l1_system_test ${GFlags_LIBS}
|
||||
${GLOG_LIBRARIES}
|
||||
${GTEST_LIBRARIES}
|
||||
gnss_sp_libs
|
||||
gnss_rx
|
||||
${gpstk_libs})
|
||||
add_custom_command(TARGET obs_gps_l1_system_test POST_BUILD
|
||||
COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:obs_gps_l1_system_test>
|
||||
${CMAKE_SOURCE_DIR}/install/$<TARGET_FILE_NAME:obs_gps_l1_system_test>
|
||||
)
|
||||
|
||||
if(ENABLE_SW_GENERATOR)
|
||||
add_executable(obs_gps_l1_system_test ${CMAKE_CURRENT_SOURCE_DIR}/system-tests/obs_gps_l1_system_test.cc )
|
||||
if(NOT ${GTEST_DIR_LOCAL})
|
||||
add_dependencies(obs_gps_l1_system_test gtest-${gtest_RELEASE} )
|
||||
else(NOT ${GTEST_DIR_LOCAL})
|
||||
add_dependencies(obs_gps_l1_system_test gtest)
|
||||
endif(NOT ${GTEST_DIR_LOCAL})
|
||||
include_directories(${GPSTK_INCLUDE_DIRS})
|
||||
target_link_libraries(obs_gps_l1_system_test ${GFlags_LIBS}
|
||||
${GLOG_LIBRARIES}
|
||||
${GTEST_LIBRARIES}
|
||||
gnss_sp_libs
|
||||
gnss_rx
|
||||
${gpstk_libs})
|
||||
add_custom_command(TARGET obs_gps_l1_system_test POST_BUILD
|
||||
COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE: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)
|
||||
|
@ -583,6 +583,7 @@ void Obs_Gps_L1_System_Test::check_results()
|
||||
|
||||
// Compute carrier phase error
|
||||
prn_id = 0;
|
||||
std::vector<double> mean_cp_diff_v;
|
||||
for(iter_diff = cp_diff.begin(); iter_diff != cp_diff.end(); iter_diff++)
|
||||
{
|
||||
// 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)
|
||||
{
|
||||
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;
|
||||
}
|
||||
else
|
||||
@ -605,6 +607,14 @@ void Obs_Gps_L1_System_Test::check_results()
|
||||
|
||||
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
|
||||
prn_id = 0;
|
||||
@ -656,7 +666,7 @@ TEST_F(Obs_Gps_L1_System_Test, Observables_system_test)
|
||||
configure_generator();
|
||||
|
||||
// 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;
|
||||
bool is_gen_rinex_obs_valid = check_valid_rinex_obs( "./" + FLAGS_filename_rinex_obs);
|
||||
|
Loading…
x
Reference in New Issue
Block a user