From 35c2b0248a166ad6f4f3710350c772df623193ac Mon Sep 17 00:00:00 2001 From: Carles Fernandez Date: Tue, 23 May 2017 09:44:48 +0200 Subject: [PATCH 1/6] Expose more RTKLIB configuration parameters --- src/algorithms/PVT/adapters/rtklib_pvt.cc | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/algorithms/PVT/adapters/rtklib_pvt.cc b/src/algorithms/PVT/adapters/rtklib_pvt.cc index 3582b2600..30aabfb16 100644 --- a/src/algorithms/PVT/adapters/rtklib_pvt.cc +++ b/src/algorithms/PVT/adapters/rtklib_pvt.cc @@ -350,6 +350,12 @@ RtklibPvt::RtklibPvt(ConfigurationInterface* configuration, double sigma_pos = configuration->property(role + ".sigma_pos", 0.0); + double code_phase_error_ratio_l1 = configuration->property(role + ".code_phase_error_ratio_l1", 100.0); + double code_phase_error_ratio_l2 = configuration->property(role + ".code_phase_error_ratio_l2", 100.0); + double code_phase_error_ratio_l5 = configuration->property(role + ".code_phase_error_ratio_l5", 100.0); + double carrier_phase_error_factor_a = configuration->property(role + ".carrier_phase_error_factor_a", 0.003); + double carrier_phase_error_factor_b = configuration->property(role + ".carrier_phase_error_factor_b", 0.003); + snrmask_t snrmask = { {}, {{},{}} }; prcopt_t rtklib_configuration_options = {positioning_mode, /* positioning mode (PMODE_XXX) see src/algorithms/libs/rtklib/rtklib.h */ @@ -379,8 +385,8 @@ RtklibPvt::RtklibPvt(ConfigurationInterface* configuration, 0, /* base position for relative mode */ /* 0:pos in prcopt, 1:average of single pos, */ /* 2:read from file, 3:rinex header, 4:rtcm pos */ - {100.0,100.0,100.0}, /* eratio[NFREQ] code/phase error ratio */ - {100.0,0.003,0.003,0.0,1.0}, /* err[5]: measurement error factor [0]:reserved, [1-3]:error factor a/b/c of phase (m) , [4]:doppler frequency (hz) */ + {code_phase_error_ratio_l1,code_phase_error_ratio_l2,code_phase_error_ratio_l5}, /* eratio[NFREQ] code/phase error ratio */ + {100.0,carrier_phase_error_factor_a,carrier_phase_error_factor_b,0.0,1.0}, /* err[5]: measurement error factor [0]:reserved, [1-3]:error factor a/b/c of phase (m) , [4]:doppler frequency (hz) */ {bias_0,iono_0,trop_0}, /* std[3]: initial-state std [0]bias,[1]iono [2]trop*/ {sigma_bias,sigma_iono,sigma_trop,sigma_acch,sigma_accv,sigma_pos}, /* prn[6] process-noise std */ 5e-12, /* sclkstab: satellite clock stability (sec/sec) */ From 6e179decdefbcec94d8d501e64fb78a81fe0dd61 Mon Sep 17 00:00:00 2001 From: Carles Fernandez Date: Wed, 24 May 2017 09:55:45 +0200 Subject: [PATCH 2/6] Expose RAIM algorithm to user configuration --- src/algorithms/PVT/adapters/rtklib_pvt.cc | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/algorithms/PVT/adapters/rtklib_pvt.cc b/src/algorithms/PVT/adapters/rtklib_pvt.cc index 30aabfb16..0672f22bd 100644 --- a/src/algorithms/PVT/adapters/rtklib_pvt.cc +++ b/src/algorithms/PVT/adapters/rtklib_pvt.cc @@ -260,9 +260,10 @@ RtklibPvt::RtklibPvt(ConfigurationInterface* configuration, int reject_GPS_IIA = 0; /* Set whether the GPS Block IIA satellites in eclipse are excluded or not. The eclipsing Block IIA satellites often degrade the PPP solutions due to unpredicted behavior of yaw‐attitude. Only applicable to PPP‐* modes.*/ - int raim_fde = 0; /* Set whether RAIM (receiver autonomous integrity monitoring) FDE (fault detection and exclusion) feature is enabled or not. - In case of RAIM FDE enabled, a satellite is excluded if SSE (sum of squared errors) of residuals is over a threshold. - The excluded satellite is selected to indicate the minimum SSE. */ + /* Set whether RAIM (receiver autonomous integrity monitoring) FDE (fault detection and exclusion) feature is enabled or not. + In case of RAIM FDE enabled, a satellite is excluded if SSE (sum of squared errors) of residuals is over a threshold. + The excluded satellite is selected to indicate the minimum SSE. */ + int raim_fde = configuration->property(role + ".raim_fde", 0); int nsys = 0; if ((gps_1C_count > 0) || (gps_2S_count > 0)) nsys += SYS_GPS; From 20592f29a9efc375c31389bce62dd6e85229d507 Mon Sep 17 00:00:00 2001 From: Carles Fernandez Date: Wed, 24 May 2017 12:14:52 +0200 Subject: [PATCH 3/6] Expose reject_GPS_IIA parameter to user configuration --- src/algorithms/PVT/adapters/rtklib_pvt.cc | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/algorithms/PVT/adapters/rtklib_pvt.cc b/src/algorithms/PVT/adapters/rtklib_pvt.cc index 0672f22bd..4b6341f44 100644 --- a/src/algorithms/PVT/adapters/rtklib_pvt.cc +++ b/src/algorithms/PVT/adapters/rtklib_pvt.cc @@ -257,8 +257,10 @@ RtklibPvt::RtklibPvt(ConfigurationInterface* configuration, int sat_PCV = 0; /* Set whether the satellite antenna PCV (phase center variation) model is used or not. This feature requires a Satellite Antenna PCV File. */ int rec_PCV = 0; /* Set whether the receiver antenna PCV (phase center variation) model is used or not. This feature requires a Receiver Antenna PCV File. */ int phwindup = 0; /* Set whether the phase windup correction for PPP modes is applied or not. Only applicable to PPP‐* modes.*/ - int reject_GPS_IIA = 0; /* Set whether the GPS Block IIA satellites in eclipse are excluded or not. - The eclipsing Block IIA satellites often degrade the PPP solutions due to unpredicted behavior of yaw‐attitude. Only applicable to PPP‐* modes.*/ + + /* Set whether the GPS Block IIA satellites in eclipse are excluded or not. + The eclipsing Block IIA satellites often degrade the PPP solutions due to unpredicted behavior of yaw‐attitude. Only applicable to PPP‐* modes.*/ + int reject_GPS_IIA = configuration->property(role + ".reject_GPS_IIA", 0); /* Set whether RAIM (receiver autonomous integrity monitoring) FDE (fault detection and exclusion) feature is enabled or not. In case of RAIM FDE enabled, a satellite is excluded if SSE (sum of squared errors) of residuals is over a threshold. From 9f7e9f9a8674735ff1452722314f498dca45e99a Mon Sep 17 00:00:00 2001 From: Carles Fernandez Date: Wed, 24 May 2017 15:43:32 +0200 Subject: [PATCH 4/6] Expose Earth tide correction to user configuration --- src/algorithms/PVT/adapters/rtklib_pvt.cc | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/algorithms/PVT/adapters/rtklib_pvt.cc b/src/algorithms/PVT/adapters/rtklib_pvt.cc index 4b6341f44..0de546abb 100644 --- a/src/algorithms/PVT/adapters/rtklib_pvt.cc +++ b/src/algorithms/PVT/adapters/rtklib_pvt.cc @@ -256,7 +256,9 @@ RtklibPvt::RtklibPvt(ConfigurationInterface* configuration, /* RTKLIB positioning options */ int sat_PCV = 0; /* Set whether the satellite antenna PCV (phase center variation) model is used or not. This feature requires a Satellite Antenna PCV File. */ int rec_PCV = 0; /* Set whether the receiver antenna PCV (phase center variation) model is used or not. This feature requires a Receiver Antenna PCV File. */ - int phwindup = 0; /* Set whether the phase windup correction for PPP modes is applied or not. Only applicable to PPP‐* modes.*/ + + /* Set whether the phase windup correction for PPP modes is applied or not. Only applicable to PPP‐* modes.*/ + int phwindup = configuration->property(role + ".phwindup", 0); /* Set whether the GPS Block IIA satellites in eclipse are excluded or not. The eclipsing Block IIA satellites often degrade the PPP solutions due to unpredicted behavior of yaw‐attitude. Only applicable to PPP‐* modes.*/ @@ -267,6 +269,8 @@ RtklibPvt::RtklibPvt(ConfigurationInterface* configuration, The excluded satellite is selected to indicate the minimum SSE. */ int raim_fde = configuration->property(role + ".raim_fde", 0); + int earth_tide = configuration->property(role + ".earth_tide", 0); + int nsys = 0; if ((gps_1C_count > 0) || (gps_2S_count > 0)) nsys += SYS_GPS; if ((gal_1B_count > 0) || (gal_E5a_count > 0) || (gal_E5b_count > 0)) nsys += SYS_GAL; @@ -378,12 +382,12 @@ RtklibPvt::RtklibPvt(ConfigurationInterface* configuration, iono_model, /* ionosphere option (IONOOPT_XXX) */ trop_model, /* troposphere option (TROPOPT_XXX) */ dynamics_model, /* dynamics model (0:none, 1:velocity, 2:accel) */ - 0, /* earth tide correction (0:off,1:solid,2:solid+otl+pole) */ + earth_tide, /* earth tide correction (0:off,1:solid,2:solid+otl+pole) */ number_filter_iter, /* number of filter iteration */ 0, /* code smoothing window size (0:none) */ 0, /* interpolate reference obs (for post mission) */ 0, /* sbssat_t sbssat SBAS correction options */ - 0, /* sbsion_t sbsion[MAXBAND+1] SBAS satellite selection (0:all) */ + 0, /* sbsion_t sbsion[MAXBAND+1] SBAS satellite selection (0:all) */ 0, /* rover position for fixed mode */ 0, /* base position for relative mode */ /* 0:pos in prcopt, 1:average of single pos, */ From 765939a3e0f3bbb50ec1c726f7104078049f230a Mon Sep 17 00:00:00 2001 From: uhaider Date: Sat, 27 May 2017 23:28:20 +0500 Subject: [PATCH 5/6] Updated README.md, added X310 --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 30b1aa441..4b24a1dc9 100644 --- a/README.md +++ b/README.md @@ -771,7 +771,7 @@ SignalSource.subdevice=B:0 ; UHD subdevice specification (for USRP1 use A:0 or B ~~~~~~ -***Example: Configuring the USRP X300 with two front-ends for receiving signals in L1 and L2 bands*** +***Example: Configuring the USRP X300/X310 with two front-ends for receiving signals in L1 and L2 bands*** ~~~~~~ ;######### SIGNAL_SOURCE CONFIG ############ From f69cc2491c7b1e576a8bd2303686b9fb76cebba3 Mon Sep 17 00:00:00 2001 From: Javier Date: Wed, 31 May 2017 11:45:26 +0200 Subject: [PATCH 6/6] Adding UHD device filter by serial number option --- src/algorithms/signal_source/adapters/uhd_signal_source.cc | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/algorithms/signal_source/adapters/uhd_signal_source.cc b/src/algorithms/signal_source/adapters/uhd_signal_source.cc index 4728543d3..1c59b7113 100644 --- a/src/algorithms/signal_source/adapters/uhd_signal_source.cc +++ b/src/algorithms/signal_source/adapters/uhd_signal_source.cc @@ -62,7 +62,12 @@ UhdSignalSource::UhdSignalSource(ConfigurationInterface* configuration, { dev_addr["addr"] = device_address_; } - + //filter the device by serial number if required (useful for USB devices) + std::string device_serial = configuration->property(role + ".device_serial", empty); + if (empty.compare(device_serial) != 0) // if not empty + { + dev_addr["serial"] = device_serial; + } subdevice_ = configuration->property(role + ".subdevice", empty); clock_source_ = configuration->property(role + ".clock_source", std::string("internal")); RF_channels_ = configuration->property(role + ".RF_channels", 1);