gps_pvt 0.6.1 → 0.6.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/exe/to_ubx +214 -0
- data/ext/gps_pvt/GPS/GPS_wrap.cxx +219 -514
- data/ext/ninja-scan-light/tool/algorithm/interpolate.h +106 -0
- data/ext/ninja-scan-light/tool/navigation/GLONASS.h +37 -35
- data/ext/ninja-scan-light/tool/navigation/GLONASS_Solver.h +16 -13
- data/ext/ninja-scan-light/tool/navigation/GPS.h +29 -25
- data/ext/ninja-scan-light/tool/navigation/GPS_Solver.h +19 -12
- data/ext/ninja-scan-light/tool/navigation/GPS_Solver_Base.h +31 -11
- data/ext/ninja-scan-light/tool/navigation/SBAS.h +21 -13
- data/ext/ninja-scan-light/tool/navigation/SBAS_Solver.h +19 -16
- data/ext/ninja-scan-light/tool/navigation/SP3.h +28 -83
- data/ext/ninja-scan-light/tool/swig/GPS.i +33 -39
- data/gps_pvt.gemspec +3 -0
- data/lib/gps_pvt/receiver.rb +3 -3
- data/lib/gps_pvt/version.rb +5 -5
- metadata +6 -3
@@ -114,19 +114,17 @@ class SBAS_SinglePositioning : public SolverBaseT {
|
|
114
114
|
static inline const typename space_node_t::Satellite &sat(const void *ptr) {
|
115
115
|
return *reinterpret_cast<const typename space_node_t::Satellite *>(ptr);
|
116
116
|
}
|
117
|
-
static xyz_t position(const void *ptr, const gps_time_t &
|
118
|
-
return sat(ptr).ephemeris().constellation(
|
117
|
+
static xyz_t position(const void *ptr, const gps_time_t &t_tx, const float_t &dt_transit) {
|
118
|
+
return sat(ptr).ephemeris().constellation(t_tx, dt_transit, false).position;
|
119
119
|
}
|
120
|
-
static xyz_t velocity(const void *ptr, const gps_time_t &
|
121
|
-
return sat(ptr).ephemeris().constellation(
|
120
|
+
static xyz_t velocity(const void *ptr, const gps_time_t &t_tx, const float_t &dt_transit) {
|
121
|
+
return sat(ptr).ephemeris().constellation(t_tx, dt_transit, true).velocity;
|
122
122
|
}
|
123
|
-
static float_t clock_error(const void *ptr, const gps_time_t &
|
124
|
-
|
125
|
-
return 0;
|
123
|
+
static float_t clock_error(const void *ptr, const gps_time_t &t_tx) {
|
124
|
+
return sat(ptr).ephemeris().clock_error(t_tx);
|
126
125
|
}
|
127
|
-
static float_t clock_error_dot(const void *ptr, const gps_time_t &
|
128
|
-
|
129
|
-
return 0;
|
126
|
+
static float_t clock_error_dot(const void *ptr, const gps_time_t &t_tx) {
|
127
|
+
return sat(ptr).ephemeris().clock_error_dot(t_tx);
|
130
128
|
}
|
131
129
|
};
|
132
130
|
satellite_t res = {
|
@@ -257,20 +255,25 @@ class SBAS_SinglePositioning : public SolverBaseT {
|
|
257
255
|
|
258
256
|
range -= receiver_error;
|
259
257
|
|
258
|
+
static const float_t &c(GPS_SpaceNode<float_t>::light_speed);
|
259
|
+
|
260
260
|
// Clock error correction
|
261
261
|
range += ((range_error.unknown_flag & range_error_t::SATELLITE_CLOCK)
|
262
|
-
? (sat.clock_error(time_arrival
|
262
|
+
? (sat.clock_error(time_arrival - range / c) * c)
|
263
263
|
: range_error.value[range_error_t::SATELLITE_CLOCK]);
|
264
264
|
|
265
265
|
// TODO WAAS long term clock correction (2.1.1.4.11)
|
266
266
|
|
267
267
|
// Calculate satellite position
|
268
|
-
|
268
|
+
float_t dt_transit(range / c);
|
269
|
+
gps_time_t t_tx(time_arrival - dt_transit);
|
270
|
+
xyz_t sat_pos(sat.position(t_tx, dt_transit));
|
269
271
|
float_t geometric_range(usr_pos.xyz.dist(sat_pos));
|
270
272
|
|
271
|
-
// Calculate residual
|
273
|
+
// Calculate residual without Sagnac correction (A.4.4.11),
|
274
|
+
// because of the satellite position is calculated in the reception time ECEF.
|
272
275
|
res.range_residual = range
|
273
|
-
+ space_node_t::sagnac_correction(sat_pos, usr_pos.xyz)
|
276
|
+
// + space_node_t::sagnac_correction(sat_pos, usr_pos.xyz)
|
274
277
|
- geometric_range;
|
275
278
|
|
276
279
|
// Setup design matrix
|
@@ -312,12 +315,12 @@ class SBAS_SinglePositioning : public SolverBaseT {
|
|
312
315
|
|
313
316
|
res.range_corrected = range;
|
314
317
|
|
315
|
-
xyz_t rel_vel(sat.velocity(
|
318
|
+
xyz_t rel_vel(sat.velocity(t_tx, dt_transit) - usr_vel); // Calculate velocity
|
316
319
|
|
317
320
|
res.rate_relative_neg = res.los_neg[0] * rel_vel.x()
|
318
321
|
+ res.los_neg[1] * rel_vel.y()
|
319
322
|
+ res.los_neg[2] * rel_vel.z()
|
320
|
-
+ sat.clock_error_dot(
|
323
|
+
+ sat.clock_error_dot(t_tx) * c;
|
321
324
|
|
322
325
|
return res;
|
323
326
|
}
|
@@ -41,7 +41,6 @@
|
|
41
41
|
#include <cstring>
|
42
42
|
#include <map>
|
43
43
|
#include <set>
|
44
|
-
#include <algorithm>
|
45
44
|
#include <stdexcept>
|
46
45
|
|
47
46
|
#include "util/text_helper.h"
|
@@ -61,22 +60,15 @@ struct SP3_Product {
|
|
61
60
|
typedef std::map<GPS_Time<FloatT>, prop_t> history_t;
|
62
61
|
history_t pos_history;
|
63
62
|
history_t vel_history;
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
} interpolate_cnd_default;
|
63
|
+
|
64
|
+
typedef InterpolatableSet<GPS_Time<FloatT>, prop_t, FloatT> interpolator_t;
|
65
|
+
typedef typename interpolator_t::condition_t interpolate_cnd_t;
|
66
|
+
static const interpolate_cnd_t interpolate_cnd_default;
|
69
67
|
|
70
68
|
mutable struct {
|
71
|
-
struct target_t {
|
72
|
-
|
73
|
-
typedef typename std::vector<std::pair<GPS_Time<FloatT>, prop_t> > buf_t;
|
74
|
-
buf_t buf;
|
75
|
-
GPS_Time<FloatT> t0;
|
76
|
-
std::vector<FloatT> dt;
|
77
|
-
bool updated_full_cnd;
|
69
|
+
struct target_t : public interpolator_t {
|
78
70
|
|
79
|
-
target_t() :
|
71
|
+
target_t() : interpolator_t() {}
|
80
72
|
|
81
73
|
/**
|
82
74
|
* update interpolation source
|
@@ -88,58 +80,13 @@ struct SP3_Product {
|
|
88
80
|
const bool &force_update = false,
|
89
81
|
const interpolate_cnd_t &cnd = interpolate_cnd_default){
|
90
82
|
|
91
|
-
|
92
|
-
|
93
|
-
&& ((std::abs(t_diff) <= 10)
|
94
|
-
|| ((dt.size() >= 2)
|
95
|
-
&& (std::abs(t_diff + dt[0]) <= std::abs(t_diff + dt[1])))) ){
|
96
|
-
return *this;
|
97
|
-
}
|
98
|
-
|
99
|
-
// If the 1st and 2nd nearest epochs are changed, then recalculate interpolation targets.
|
100
|
-
struct {
|
101
|
-
const GPS_Time<FloatT> &t_base;
|
102
|
-
bool operator()(
|
103
|
-
const typename history_t::value_type &rhs,
|
104
|
-
const typename history_t::value_type &lhs) const {
|
105
|
-
return std::abs(rhs.first - t_base) < std::abs(lhs.first - t_base);
|
106
|
-
}
|
107
|
-
} cmp = {(t0 = t)};
|
108
|
-
|
109
|
-
buf.resize(cnd.max_epochs);
|
110
|
-
dt.clear();
|
111
|
-
// extract t where t0-dt <= t <= t0+dt, then sort by ascending order of |t-t0|
|
112
|
-
for(typename buf_t::const_iterator
|
113
|
-
it(buf.begin()),
|
114
|
-
it_end(std::partial_sort_copy(
|
115
|
-
history.lower_bound(t - cnd.max_delta_t),
|
116
|
-
history.upper_bound(t + cnd.max_delta_t),
|
117
|
-
buf.begin(), buf.end(), cmp));
|
118
|
-
it != it_end; ++it){
|
119
|
-
dt.push_back(it->first - t0);
|
120
|
-
}
|
121
|
-
updated_full_cnd = (dt.size() >= cnd.max_epochs);
|
122
|
-
|
83
|
+
if((!force_update) && (std::abs(t - interpolator_t::x0) <= 10)){return *this;}
|
84
|
+
interpolator_t::update(t, history, cnd, force_update);
|
123
85
|
return *this;
|
124
86
|
}
|
125
87
|
|
126
|
-
|
127
|
-
|
128
|
-
const GPS_Time<FloatT> &t, const Ty_Array &y,
|
129
|
-
Ty *derivative = NULL) const {
|
130
|
-
int order(dt.size() - 1);
|
131
|
-
do{
|
132
|
-
if(order > 0){break;}
|
133
|
-
if((order == 0) && (!derivative)){return y[0];}
|
134
|
-
throw std::range_error("Insufficient records for interpolation");
|
135
|
-
}while(false);
|
136
|
-
std::vector<Ty> y_buf(order), dy_buf(order);
|
137
|
-
interpolate_Neville(
|
138
|
-
dt, y, t - t0, y_buf, order,
|
139
|
-
&dy_buf, derivative ? 1 : 0);
|
140
|
-
if(derivative){*derivative = dy_buf[0];}
|
141
|
-
return y_buf[0];
|
142
|
-
}
|
88
|
+
typedef typename interpolator_t::buffer_t buf_t;
|
89
|
+
|
143
90
|
Vector3<FloatT> interpolate_xyz(
|
144
91
|
const GPS_Time<FloatT> &t,
|
145
92
|
Vector3<FloatT> *derivative = NULL) const {
|
@@ -149,8 +96,8 @@ struct SP3_Product {
|
|
149
96
|
const Vector3<FloatT> &operator[](const int &n) const {
|
150
97
|
return buf_t::const_iterator::operator[](n).second.xyz;
|
151
98
|
}
|
152
|
-
} xyz(buf.begin());
|
153
|
-
return
|
99
|
+
} xyz(interpolator_t::buf.begin());
|
100
|
+
return interpolator_t::interpolate2(t, xyz, derivative);
|
154
101
|
}
|
155
102
|
FloatT interpolate_clk(
|
156
103
|
const GPS_Time<FloatT> &t,
|
@@ -161,8 +108,8 @@ struct SP3_Product {
|
|
161
108
|
const FloatT &operator[](const int &n) const {
|
162
109
|
return buf_t::const_iterator::operator[](n).second.clk;
|
163
110
|
}
|
164
|
-
} clk(buf.begin());
|
165
|
-
return
|
111
|
+
} clk(interpolator_t::buf.begin());
|
112
|
+
return interpolator_t::interpolate2(t, clk, derivative);
|
166
113
|
}
|
167
114
|
} pos_clk, vel_rate;
|
168
115
|
} subset;
|
@@ -175,7 +122,7 @@ struct SP3_Product {
|
|
175
122
|
bool precheck(const GPS_Time<FloatT> &t) const {
|
176
123
|
// Only position/clock is checked, because velocity/rate can be calculated based on pos/clk.
|
177
124
|
subset.pos_clk.update(t, pos_history);
|
178
|
-
return subset.pos_clk.
|
125
|
+
return subset.pos_clk.ready;
|
179
126
|
}
|
180
127
|
|
181
128
|
typename GPS_SpaceNode<FloatT>::SatelliteProperties::constellation_t
|
@@ -224,22 +171,17 @@ struct SP3_Product {
|
|
224
171
|
static inline const per_satellite_t &sat(const void *ptr) {
|
225
172
|
return *reinterpret_cast<const per_satellite_t *>(ptr);
|
226
173
|
}
|
227
|
-
static
|
228
|
-
return
|
229
|
-
}
|
230
|
-
static xyz_t position(const void *ptr, const gt_t &t, const float_t &pr) {
|
231
|
-
float_t delta_t(pr2sec(pr));
|
232
|
-
return sat(ptr).position(t - delta_t).after(delta_t);
|
174
|
+
static xyz_t position(const void *ptr, const gt_t &t_tx, const float_t &dt_transit) {
|
175
|
+
return sat(ptr).position(t_tx).after(dt_transit);
|
233
176
|
}
|
234
|
-
static xyz_t velocity(const void *ptr, const gt_t &
|
235
|
-
|
236
|
-
return sat(ptr).velocity(t - delta_t).after(delta_t);
|
177
|
+
static xyz_t velocity(const void *ptr, const gt_t &t_tx, const float_t &dt_transit) {
|
178
|
+
return sat(ptr).velocity(t_tx).after(dt_transit);
|
237
179
|
}
|
238
|
-
static float_t clock_error(const void *ptr, const gt_t &
|
239
|
-
return sat(ptr).clock_error(
|
180
|
+
static float_t clock_error(const void *ptr, const gt_t &t_tx) {
|
181
|
+
return sat(ptr).clock_error(t_tx);
|
240
182
|
}
|
241
|
-
static float_t clock_error_dot(const void *ptr, const gt_t &
|
242
|
-
return sat(ptr).clock_error_dot(
|
183
|
+
static float_t clock_error_dot(const void *ptr, const gt_t &t_tx) {
|
184
|
+
return sat(ptr).clock_error_dot(t_tx);
|
243
185
|
}
|
244
186
|
};
|
245
187
|
typename GPS_Solver_Base<FloatT>::satellite_t res = {
|
@@ -386,8 +328,11 @@ static typename GPS_Solver_Base<FloatT>::satellite_t select_ ## sys( \
|
|
386
328
|
template <class FloatT>
|
387
329
|
const typename SP3_Product<FloatT>::per_satellite_t::interpolate_cnd_t
|
388
330
|
SP3_Product<FloatT>::per_satellite_t::interpolate_cnd_default = {
|
389
|
-
9, //
|
390
|
-
|
331
|
+
9, // maximum number of epochs used for interpolation
|
332
|
+
/* maximum acceptable absolute time difference between t and epoch,
|
333
|
+
* default is 2 hr = 15 min interval records; (2 hr * 2 / (9 - 1) = 15 min)
|
334
|
+
*/
|
335
|
+
60 * 60 * 2,
|
391
336
|
};
|
392
337
|
|
393
338
|
template <class FloatT>
|
@@ -302,6 +302,10 @@ struct GPS_Ephemeris : public GPS_SpaceNode<FloatT>::SatelliteProperties::Epheme
|
|
302
302
|
GPS_Ephemeris(const typename GPS_SpaceNode<FloatT>::SatelliteProperties::Ephemeris &eph)
|
303
303
|
: GPS_SpaceNode<FloatT>::SatelliteProperties::Ephemeris(eph),
|
304
304
|
iode_subframe3(eph.iode) {}
|
305
|
+
struct constellation_res_t {
|
306
|
+
System_XYZ<FloatT, WGS84> position, velocity;
|
307
|
+
FloatT clock_error, clock_error_dot;
|
308
|
+
};
|
305
309
|
};
|
306
310
|
%}
|
307
311
|
%extend GPS_Ephemeris {
|
@@ -389,20 +393,21 @@ struct GPS_Ephemeris : public GPS_SpaceNode<FloatT>::SatelliteProperties::Epheme
|
|
389
393
|
break;
|
390
394
|
}
|
391
395
|
}
|
392
|
-
%typemap(
|
393
|
-
$1
|
394
|
-
|
395
|
-
|
396
|
-
|
397
|
-
|
398
|
-
|
399
|
-
|
400
|
-
|
401
|
-
const
|
402
|
-
typename GPS_SpaceNode<FloatT>::SatelliteProperties::constellation_t
|
403
|
-
self->constellation(
|
404
|
-
|
405
|
-
|
396
|
+
%typemap(out) constellation_res_t {
|
397
|
+
%append_output(SWIG_NewPointerObj((new System_XYZ<FloatT, WGS84>($1.position)),
|
398
|
+
$descriptor(System_XYZ<FloatT, WGS84> *), SWIG_POINTER_OWN));
|
399
|
+
%append_output(SWIG_NewPointerObj((new System_XYZ<FloatT, WGS84>($1.velocity)),
|
400
|
+
$descriptor(System_XYZ<FloatT, WGS84> *), SWIG_POINTER_OWN));
|
401
|
+
%append_output(swig::from($1.clock_error));
|
402
|
+
%append_output(swig::from($1.clock_error_dot));
|
403
|
+
}
|
404
|
+
typename GPS_Ephemeris<FloatT>::constellation_res_t constellation(
|
405
|
+
const GPS_Time<FloatT> &t_tx, const FloatT &dt_transit = 0) const {
|
406
|
+
typename GPS_SpaceNode<FloatT>::SatelliteProperties::constellation_t pv(
|
407
|
+
self->constellation(t_tx, dt_transit, true));
|
408
|
+
typename GPS_Ephemeris<FloatT>::constellation_res_t res = {
|
409
|
+
pv.position, pv.velocity, self->clock_error(t_tx), self->clock_error_dot(t_tx)};
|
410
|
+
return res;
|
406
411
|
}
|
407
412
|
#if defined(SWIGRUBY)
|
408
413
|
%rename("consistent?") is_consistent;
|
@@ -461,15 +466,14 @@ struct SBAS_Ephemeris : public SBAS_SpaceNode<FloatT>::SatelliteProperties::Ephe
|
|
461
466
|
MAKE_ACCESSOR(ddx, FloatT); MAKE_ACCESSOR(ddy, FloatT); MAKE_ACCESSOR(ddz, FloatT);
|
462
467
|
MAKE_ACCESSOR(a_Gf0, FloatT);
|
463
468
|
MAKE_ACCESSOR(a_Gf1, FloatT);
|
464
|
-
|
465
|
-
|
466
|
-
System_XYZ<FloatT, WGS84> &position, System_XYZ<FloatT, WGS84> &velocity,
|
467
|
-
const GPS_Time<FloatT> &t, const FloatT &pseudo_range = 0,
|
469
|
+
typename GPS_Ephemeris<FloatT>::constellation_res_t constellation(
|
470
|
+
const GPS_Time<FloatT> &t_tx, const FloatT &dt_transit = 0,
|
468
471
|
const bool &with_velocity = true) const {
|
469
|
-
typename SBAS_SpaceNode<FloatT>::SatelliteProperties::constellation_t
|
470
|
-
self->constellation(
|
471
|
-
|
472
|
-
|
472
|
+
typename SBAS_SpaceNode<FloatT>::SatelliteProperties::constellation_t pv(
|
473
|
+
self->constellation(t_tx, dt_transit, with_velocity));
|
474
|
+
typename GPS_Ephemeris<FloatT>::constellation_res_t res = {
|
475
|
+
pv.position, pv.velocity, self->clock_error(t_tx), self->clock_error_dot(t_tx)};
|
476
|
+
return res;
|
473
477
|
}
|
474
478
|
}
|
475
479
|
|
@@ -612,23 +616,13 @@ struct GLONASS_Ephemeris
|
|
612
616
|
self->has_string = has_string;
|
613
617
|
return updated;
|
614
618
|
}
|
615
|
-
FloatT
|
616
|
-
const GPS_Time<FloatT> &
|
617
|
-
|
618
|
-
|
619
|
-
|
620
|
-
|
621
|
-
|
622
|
-
%typemap(argout) System_XYZ<FloatT, WGS84> & {
|
623
|
-
%append_output(SWIG_NewPointerObj((new $*1_ltype(*$1)), $1_descriptor, SWIG_POINTER_OWN));
|
624
|
-
}
|
625
|
-
void constellation(
|
626
|
-
System_XYZ<FloatT, WGS84> &position, System_XYZ<FloatT, WGS84> &velocity,
|
627
|
-
const GPS_Time<FloatT> &t, const FloatT &pseudo_range = 0) const {
|
628
|
-
typename GPS_SpaceNode<FloatT>::SatelliteProperties::constellation_t res(
|
629
|
-
self->constellation(t, pseudo_range));
|
630
|
-
position = res.position;
|
631
|
-
velocity = res.velocity;
|
619
|
+
typename GPS_Ephemeris<FloatT>::constellation_res_t constellation(
|
620
|
+
const GPS_Time<FloatT> &t_tx, const FloatT &dt_transit = 0) const {
|
621
|
+
typename GPS_SpaceNode<FloatT>::SatelliteProperties::constellation_t pv(
|
622
|
+
self->constellation(t_tx, dt_transit));
|
623
|
+
typename GPS_Ephemeris<FloatT>::constellation_res_t res = {
|
624
|
+
pv.position, pv.velocity, self->clock_error(t_tx), self->clock_error_dot()};
|
625
|
+
return res;
|
632
626
|
}
|
633
627
|
#if defined(SWIGRUBY)
|
634
628
|
%rename("consistent?") is_consistent;
|
data/gps_pvt.gemspec
CHANGED
@@ -53,6 +53,9 @@ Gem::Specification.new do |spec|
|
|
53
53
|
}.flatten
|
54
54
|
}.call
|
55
55
|
|
56
|
+
spec.rdoc_options << '--exclude=ext/ninja-scan-light'
|
57
|
+
spec.extra_rdoc_files = []
|
58
|
+
|
56
59
|
# Uncomment to register a new dependency of your gem
|
57
60
|
# spec.add_dependency "example-gem", "~> 1.0"
|
58
61
|
spec.add_development_dependency "rake"
|
data/lib/gps_pvt/receiver.rb
CHANGED
@@ -410,7 +410,7 @@ class Receiver
|
|
410
410
|
@solver.sbas_space_node.ionospheric_grid_points(prn)].each{|str|
|
411
411
|
$stderr.puts str
|
412
412
|
} if @debug[:SBAS_IGP]
|
413
|
-
end
|
413
|
+
end if t_meas
|
414
414
|
when :GLONASS
|
415
415
|
next unless eph = eph_glonass_list[prn]
|
416
416
|
leap_sec = @solver.gps_space_node.is_valid_utc ?
|
@@ -508,10 +508,10 @@ class Receiver
|
|
508
508
|
{
|
509
509
|
:L1_PSEUDORANGE => [16, 8, "E", proc{|v| (trk_stat & 0x1 == 0x1) ? v : nil}],
|
510
510
|
:L1_PSEUDORANGE_SIGMA => [43, 1, nil, proc{|v|
|
511
|
-
(trk_stat & 0x1 == 0x1) ? (1E-2 * (v[0] & 0xF)) : nil
|
511
|
+
(trk_stat & 0x1 == 0x1) ? (1E-2 * (1 << (v[0] & 0xF))) : nil
|
512
512
|
}],
|
513
513
|
:L1_DOPPLER => [32, 4, "e"],
|
514
|
-
:L1_DOPPLER_SIGMA => [45, 1, nil, proc{|v| 2E-3 * (v[0] & 0xF)}],
|
514
|
+
:L1_DOPPLER_SIGMA => [45, 1, nil, proc{|v| 2E-3 * (1 << (v[0] & 0xF))}],
|
515
515
|
:L1_CARRIER_PHASE => [24, 8, "E", proc{|v| (trk_stat & 0x2 == 0x2) ? v : nil}],
|
516
516
|
:L1_CARRIER_PHASE_SIGMA => [44, 1, nil, proc{|v|
|
517
517
|
(trk_stat & 0x2 == 0x2) ? (0.004 * (v[0] & 0xF)) : nil
|
data/lib/gps_pvt/version.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module GPS_PVT
|
4
|
-
VERSION = "0.6.
|
5
|
-
end
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module GPS_PVT
|
4
|
+
VERSION = "0.6.4"
|
5
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gps_pvt
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.6.
|
4
|
+
version: 0.6.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- fenrir(M.Naruoka)
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-
|
11
|
+
date: 2022-08-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|
@@ -44,6 +44,7 @@ email:
|
|
44
44
|
- fenrir.naru@gmail.com
|
45
45
|
executables:
|
46
46
|
- gps_pvt
|
47
|
+
- to_ubx
|
47
48
|
extensions:
|
48
49
|
- ext/gps_pvt/extconf.rb
|
49
50
|
extra_rdoc_files: []
|
@@ -57,6 +58,7 @@ files:
|
|
57
58
|
- bin/console
|
58
59
|
- bin/setup
|
59
60
|
- exe/gps_pvt
|
61
|
+
- exe/to_ubx
|
60
62
|
- ext/gps_pvt/Coordinate/Coordinate_wrap.cxx
|
61
63
|
- ext/gps_pvt/GPS/GPS_wrap.cxx
|
62
64
|
- ext/gps_pvt/SylphideMath/SylphideMath_wrap.cxx
|
@@ -109,7 +111,8 @@ metadata:
|
|
109
111
|
homepage_uri: https://github.com/fenrir-naru/gps_pvt
|
110
112
|
source_code_uri: https://github.com/fenrir-naru/gps_pvt
|
111
113
|
post_install_message:
|
112
|
-
rdoc_options:
|
114
|
+
rdoc_options:
|
115
|
+
- "--exclude=ext/ninja-scan-light"
|
113
116
|
require_paths:
|
114
117
|
- lib
|
115
118
|
required_ruby_version: !ruby/object:Gem::Requirement
|