Line | Branch | Exec | Source |
---|---|---|---|
1 | // This file is part of INSTINCT, the INS Toolkit for Integrated | ||
2 | // Navigation Concepts and Training by the Institute of Navigation of | ||
3 | // the University of Stuttgart, Germany. | ||
4 | // | ||
5 | // This Source Code Form is subject to the terms of the Mozilla Public | ||
6 | // License, v. 2.0. If a copy of the MPL was not distributed with this | ||
7 | // file, You can obtain one at https://mozilla.org/MPL/2.0/. | ||
8 | |||
9 | #include "RtklibPosFile.hpp" | ||
10 | |||
11 | #include "util/Logger.hpp" | ||
12 | #include "Navigation/Transformations/CoordinateFrames.hpp" | ||
13 | #include "Navigation/Transformations/Units.hpp" | ||
14 | #include "util/Time/TimeBase.hpp" | ||
15 | #include "util/StringUtil.hpp" | ||
16 | |||
17 | #include "internal/NodeManager.hpp" | ||
18 | namespace nm = NAV::NodeManager; | ||
19 | #include "internal/FlowManager.hpp" | ||
20 | |||
21 | #include "NodeData/GNSS/RtklibPosObs.hpp" | ||
22 | |||
23 | 126 | NAV::RtklibPosFile::RtklibPosFile() | |
24 |
3/6✓ Branch 1 taken 126 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 126 times.
✗ Branch 5 not taken.
✓ Branch 8 taken 126 times.
✗ Branch 9 not taken.
|
126 | : Node(typeStatic()) |
25 | { | ||
26 | LOG_TRACE("{}: called", name); | ||
27 | |||
28 | 126 | _hasConfig = true; | |
29 | 126 | _guiConfigDefaultWindowSize = { 380, 290 }; | |
30 | |||
31 |
4/8✓ Branch 1 taken 126 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 126 times.
✗ Branch 6 not taken.
✓ Branch 8 taken 126 times.
✓ Branch 9 taken 126 times.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
|
378 | nm::CreateOutputPin(this, "RtklibPosObs", Pin::Type::Flow, { NAV::RtklibPosObs::type() }, &RtklibPosFile::pollData); |
32 | 252 | } | |
33 | |||
34 | 276 | NAV::RtklibPosFile::~RtklibPosFile() | |
35 | { | ||
36 | LOG_TRACE("{}: called", nameId()); | ||
37 | 276 | } | |
38 | |||
39 | 238 | std::string NAV::RtklibPosFile::typeStatic() | |
40 | { | ||
41 |
1/2✓ Branch 1 taken 238 times.
✗ Branch 2 not taken.
|
476 | return "RtklibPosFile"; |
42 | } | ||
43 | |||
44 | ✗ | std::string NAV::RtklibPosFile::type() const | |
45 | { | ||
46 | ✗ | return typeStatic(); | |
47 | } | ||
48 | |||
49 | 112 | std::string NAV::RtklibPosFile::category() | |
50 | { | ||
51 |
1/2✓ Branch 1 taken 112 times.
✗ Branch 2 not taken.
|
224 | return "Data Provider"; |
52 | } | ||
53 | |||
54 | ✗ | void NAV::RtklibPosFile::guiConfig() | |
55 | { | ||
56 | ✗ | if (auto res = FileReader::guiConfig(".pos,.*", { ".pos" }, size_t(id), nameId())) | |
57 | { | ||
58 | ✗ | LOG_DEBUG("{}: Path changed to {}", nameId(), _path); | |
59 | ✗ | flow::ApplyChanges(); | |
60 | ✗ | if (res == FileReader::PATH_CHANGED) | |
61 | { | ||
62 | ✗ | doReinitialize(); | |
63 | } | ||
64 | else | ||
65 | { | ||
66 | ✗ | doDeinitialize(); | |
67 | } | ||
68 | } | ||
69 | |||
70 | /// Header info | ||
71 | ✗ | if (ImGui::BeginTable(fmt::format("##RtklibPos ({})", id.AsPointer()).c_str(), 4, | |
72 | ImGuiTableFlags_Borders | ImGuiTableFlags_RowBg | ImGuiTableFlags_NoHostExtendX)) | ||
73 | { | ||
74 | ✗ | ImGui::TableSetupColumn("Basic", ImGuiTableColumnFlags_WidthFixed); | |
75 | ✗ | ImGui::TableSetupColumn("LLA", ImGuiTableColumnFlags_WidthFixed); | |
76 | ✗ | ImGui::TableSetupColumn("XYZ", ImGuiTableColumnFlags_WidthFixed); | |
77 | ✗ | ImGui::TableSetupColumn("Velocity", ImGuiTableColumnFlags_WidthFixed); | |
78 | ✗ | ImGui::TableHeadersRow(); | |
79 | |||
80 | ✗ | auto TextColoredIfExists = [this](int index, const char* displayText, const char* searchText, bool alwaysNormal = false) { | |
81 | ✗ | ImGui::TableSetColumnIndex(index); | |
82 | ✗ | if (alwaysNormal || std::ranges::find_if(_headerColumns, [&searchText](const std::string& header) { return header.starts_with(searchText); }) != _headerColumns.end()) | |
83 | { | ||
84 | ✗ | ImGui::TextUnformatted(displayText); | |
85 | } | ||
86 | else | ||
87 | { | ||
88 | ✗ | ImGui::TextDisabled("%s", displayText); | |
89 | } | ||
90 | ✗ | }; | |
91 | |||
92 | ✗ | ImGui::TableNextRow(); | |
93 | ✗ | TextColoredIfExists(0, "Date", "Date"); | |
94 | ✗ | TextColoredIfExists(1, "latitude(deg)", "latitude(deg)"); | |
95 | ✗ | TextColoredIfExists(2, "x-ecef(m)", "x-ecef(m)"); | |
96 | ✗ | TextColoredIfExists(3, "vn(m/s)", "vn(m/s)"); | |
97 | ✗ | ImGui::TableNextRow(); | |
98 | ✗ | TextColoredIfExists(0, "Time", "Time"); | |
99 | ✗ | TextColoredIfExists(1, "longitude(deg)", "longitude(deg)"); | |
100 | ✗ | TextColoredIfExists(2, "y-ecef(m)", "y-ecef(m)"); | |
101 | ✗ | TextColoredIfExists(3, "ve(m/s)", "ve(m/s)"); | |
102 | ✗ | ImGui::TableNextRow(); | |
103 | ✗ | TextColoredIfExists(0, "age(s)", "age(s)"); | |
104 | ✗ | TextColoredIfExists(1, "height(m)", "height(m)"); | |
105 | ✗ | TextColoredIfExists(2, "z-ecef(m)", "z-ecef(m)"); | |
106 | ✗ | TextColoredIfExists(3, "vu(m/s)", "vu(m/s)"); | |
107 | ✗ | ImGui::TableNextRow(); | |
108 | ✗ | TextColoredIfExists(0, "ratio", "ratio"); | |
109 | ✗ | TextColoredIfExists(1, "sdn(m)", "sdn(m)"); | |
110 | ✗ | TextColoredIfExists(2, "sdx(m)", "sdx(m)"); | |
111 | ✗ | TextColoredIfExists(3, "sdvn", "sdvn"); | |
112 | ✗ | ImGui::TableNextRow(); | |
113 | ✗ | TextColoredIfExists(0, "Q", "Q"); | |
114 | ✗ | TextColoredIfExists(1, "sde(m)", "sde(m)"); | |
115 | ✗ | TextColoredIfExists(2, "sdy(m)", "sdy(m)"); | |
116 | ✗ | TextColoredIfExists(3, "sdve", "sdve"); | |
117 | ✗ | ImGui::TableNextRow(); | |
118 | ✗ | TextColoredIfExists(0, "ns", "ns"); | |
119 | ✗ | TextColoredIfExists(1, "sdu(m)", "sdu(m)"); | |
120 | ✗ | TextColoredIfExists(2, "sdz(m)", "sdz(m)"); | |
121 | ✗ | TextColoredIfExists(3, "sdvu", "sdvu"); | |
122 | ✗ | ImGui::TableNextRow(); | |
123 | ✗ | TextColoredIfExists(1, "sdne(m)", "sdne(m)"); | |
124 | ✗ | TextColoredIfExists(2, "sdxy(m)", "sdxy(m)"); | |
125 | ✗ | TextColoredIfExists(3, "sdvne", "sdvne"); | |
126 | ✗ | ImGui::TableNextRow(); | |
127 | ✗ | TextColoredIfExists(1, "sdeu(m)", "sdeu(m)"); | |
128 | ✗ | TextColoredIfExists(2, "sdyz(m)", "sdyz(m)"); | |
129 | ✗ | TextColoredIfExists(3, "sdveu", "sdveu"); | |
130 | ✗ | ImGui::TableNextRow(); | |
131 | ✗ | TextColoredIfExists(1, "sdun(m)", "sdun(m)"); | |
132 | ✗ | TextColoredIfExists(2, "sdzx(m)", "sdzx(m)"); | |
133 | ✗ | TextColoredIfExists(3, "sdvun", "sdvun"); | |
134 | |||
135 | ✗ | ImGui::EndTable(); | |
136 | } | ||
137 | ✗ | } | |
138 | |||
139 | ✗ | [[nodiscard]] json NAV::RtklibPosFile::save() const | |
140 | { | ||
141 | LOG_TRACE("{}: called", nameId()); | ||
142 | |||
143 | ✗ | json j; | |
144 | |||
145 | ✗ | j["FileReader"] = FileReader::save(); | |
146 | |||
147 | ✗ | return j; | |
148 | ✗ | } | |
149 | |||
150 | 14 | void NAV::RtklibPosFile::restore(json const& j) | |
151 | { | ||
152 | LOG_TRACE("{}: called", nameId()); | ||
153 | |||
154 |
1/2✓ Branch 1 taken 14 times.
✗ Branch 2 not taken.
|
14 | if (j.contains("FileReader")) |
155 | { | ||
156 | 14 | FileReader::restore(j.at("FileReader")); | |
157 | } | ||
158 | 14 | } | |
159 | |||
160 | 14 | bool NAV::RtklibPosFile::initialize() | |
161 | { | ||
162 | LOG_TRACE("{}: called", nameId()); | ||
163 | |||
164 | 14 | return FileReader::initialize(); | |
165 | } | ||
166 | |||
167 | 13 | void NAV::RtklibPosFile::deinitialize() | |
168 | { | ||
169 | LOG_TRACE("{}: called", nameId()); | ||
170 | |||
171 | 13 | FileReader::deinitialize(); | |
172 | 13 | } | |
173 | |||
174 | 26 | bool NAV::RtklibPosFile::resetNode() | |
175 | { | ||
176 | 26 | FileReader::resetReader(); | |
177 | |||
178 | 26 | return true; | |
179 | } | ||
180 | |||
181 | 367 | std::shared_ptr<const NAV::NodeData> NAV::RtklibPosFile::pollData() | |
182 | { | ||
183 |
1/2✓ Branch 1 taken 360 times.
✗ Branch 2 not taken.
|
367 | auto obs = std::make_shared<RtklibPosObs>(); |
184 | |||
185 | // Read line | ||
186 | 360 | std::string line; | |
187 |
1/2✓ Branch 1 taken 358 times.
✗ Branch 2 not taken.
|
361 | getline(line); |
188 | // Remove any starting non text characters | ||
189 |
2/4✓ Branch 1 taken 360 times.
✗ Branch 2 not taken.
✓ Branch 7 taken 360 times.
✗ Branch 8 not taken.
|
710 | line.erase(line.begin(), std::ranges::find_if(line, [](int ch) { return std::isgraph(ch); })); |
190 | |||
191 |
2/2✓ Branch 1 taken 12 times.
✓ Branch 2 taken 347 times.
|
360 | if (line.empty()) |
192 | { | ||
193 | 12 | return nullptr; | |
194 | } | ||
195 | |||
196 |
1/2✓ Branch 1 taken 350 times.
✗ Branch 2 not taken.
|
347 | std::istringstream lineStream(line); |
197 | 350 | std::string cell; | |
198 | |||
199 | 351 | TimeSystem timeSystem = GPST; | |
200 | 351 | std::optional<uint16_t> year; | |
201 | 351 | std::optional<uint16_t> month; | |
202 | 351 | std::optional<uint16_t> day; | |
203 | 351 | std::optional<int32_t> hour; | |
204 | 351 | std::optional<uint16_t> minute; | |
205 | 351 | std::optional<long double> second = 0L; | |
206 | 351 | std::optional<uint16_t> gpsWeek; | |
207 | 351 | std::optional<long double> gpsToW; | |
208 |
1/2✓ Branch 1 taken 354 times.
✗ Branch 2 not taken.
|
351 | Eigen::Vector3d lla_position{ std::nan(""), std::nan(""), std::nan("") }; |
209 |
1/2✓ Branch 1 taken 352 times.
✗ Branch 2 not taken.
|
354 | Eigen::Vector3d e_position{ std::nan(""), std::nan(""), std::nan("") }; |
210 |
1/2✓ Branch 1 taken 351 times.
✗ Branch 2 not taken.
|
352 | Eigen::Vector3d n_velocity{ std::nan(""), std::nan(""), std::nan("") }; |
211 |
1/2✓ Branch 1 taken 353 times.
✗ Branch 2 not taken.
|
351 | Eigen::Vector3d e_velocity{ std::nan(""), std::nan(""), std::nan("") }; |
212 | |||
213 |
3/6✓ Branch 1 taken 347 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 349 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 352 times.
✗ Branch 8 not taken.
|
353 | Eigen::Matrix3d e_posVar = Eigen::Matrix3d::Zero() * std::nan(""); |
214 |
3/6✓ Branch 1 taken 341 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 347 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 354 times.
✗ Branch 8 not taken.
|
352 | Eigen::Matrix3d e_velVar = Eigen::Matrix3d::Zero() * std::nan(""); |
215 |
3/6✓ Branch 1 taken 352 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 353 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 352 times.
✗ Branch 8 not taken.
|
354 | Eigen::Matrix3d n_posVar = Eigen::Matrix3d::Zero() * std::nan(""); |
216 |
3/6✓ Branch 1 taken 353 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 352 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 352 times.
✗ Branch 8 not taken.
|
352 | Eigen::Matrix3d n_velVar = Eigen::Matrix3d::Zero() * std::nan(""); |
217 | |||
218 | try | ||
219 | { | ||
220 |
2/2✓ Branch 5 taken 8276 times.
✓ Branch 6 taken 344 times.
|
8643 | for (const auto& column : _headerColumns) |
221 | { | ||
222 |
3/6✓ Branch 1 taken 8269 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 8286 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 8289 times.
✗ Branch 7 not taken.
|
8243 | if (lineStream >> cell) |
223 | { | ||
224 | // Remove any trailing non text characters | ||
225 |
2/4✓ Branch 3 taken 8344 times.
✗ Branch 4 not taken.
✓ Branch 7 taken 8287 times.
✗ Branch 8 not taken.
|
64529 | cell.erase(std::ranges::find_if(cell, [](int ch) { return std::iscntrl(ch); }), cell.end()); |
226 |
1/2✗ Branch 1 not taken.
✓ Branch 2 taken 8290 times.
|
8287 | if (cell.empty()) |
227 | { | ||
228 | ✗ | continue; | |
229 | } | ||
230 | |||
231 | // % GPST latitude(deg) longitude(deg) ... | ||
232 | // 2120 216180.000 XX.XXXXXXXXX ... | ||
233 |
3/4✓ Branch 1 taken 8271 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 2 times.
✓ Branch 4 taken 8269 times.
|
8290 | if (column == "GpsWeek") |
234 | { | ||
235 |
1/2✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
|
2 | gpsWeek = static_cast<uint16_t>(std::stoul(cell)); |
236 | } | ||
237 |
3/4✓ Branch 1 taken 8302 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 2 times.
✓ Branch 4 taken 8300 times.
|
8269 | else if (column == "GpsToW") |
238 | { | ||
239 |
1/2✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
|
2 | gpsToW = std::stold(cell); |
240 | } | ||
241 | // % GPST latitude(deg) longitude(deg) ... | ||
242 | // 2020/08/25 12:03:00.000 XX.XXXXXXXXX ... | ||
243 | // % UTC latitude(deg) longitude(deg) ... | ||
244 | // 2020/08/25 12:02:42.000 XX.XXXXXXXXX ... | ||
245 |
2/2✓ Branch 1 taken 345 times.
✓ Branch 2 taken 7874 times.
|
8300 | else if (column.starts_with("Date")) |
246 | { | ||
247 |
2/2✓ Branch 1 taken 333 times.
✓ Branch 2 taken 5 times.
|
345 | timeSystem = column.ends_with("-GPST") ? GPST : UTC; |
248 | |||
249 |
2/4✓ Branch 1 taken 342 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 348 times.
✗ Branch 5 not taken.
|
337 | auto ymd = str::split(cell, "/"); |
250 |
1/2✓ Branch 1 taken 344 times.
✗ Branch 2 not taken.
|
346 | if (ymd.size() == 3) |
251 | { | ||
252 |
2/4✓ Branch 1 taken 337 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 341 times.
✗ Branch 5 not taken.
|
344 | year = static_cast<uint16_t>(std::stoi(ymd.at(0))); |
253 |
2/4✓ Branch 1 taken 341 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 339 times.
✗ Branch 5 not taken.
|
340 | month = static_cast<uint16_t>(std::stoi(ymd.at(1))); |
254 |
2/4✓ Branch 1 taken 348 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 349 times.
✗ Branch 5 not taken.
|
346 | day = static_cast<uint16_t>(std::stoi(ymd.at(2))); |
255 | } | ||
256 | 347 | } | |
257 |
2/2✓ Branch 1 taken 345 times.
✓ Branch 2 taken 7590 times.
|
7874 | else if (column.starts_with("Time")) |
258 | { | ||
259 |
2/4✓ Branch 1 taken 344 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 351 times.
✗ Branch 5 not taken.
|
345 | auto hms = str::split(cell, ":"); |
260 |
1/2✓ Branch 1 taken 350 times.
✗ Branch 2 not taken.
|
350 | if (hms.size() == 3) |
261 | { | ||
262 |
2/4✓ Branch 1 taken 350 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 350 times.
✗ Branch 5 not taken.
|
350 | hour = static_cast<uint16_t>(std::stoi(hms.at(0))); |
263 |
2/2✓ Branch 1 taken 2 times.
✓ Branch 2 taken 343 times.
|
341 | if (column.ends_with("-JST")) { *hour -= 9; } |
264 |
2/4✓ Branch 1 taken 347 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 347 times.
✗ Branch 5 not taken.
|
345 | minute = static_cast<uint16_t>(std::stoi(hms.at(1))); |
265 |
2/4✓ Branch 1 taken 342 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 348 times.
✗ Branch 5 not taken.
|
343 | second = std::stold(hms.at(2)); |
266 | } | ||
267 | 334 | } | |
268 |
6/10✓ Branch 1 taken 7571 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 7574 times.
✗ Branch 4 not taken.
✓ Branch 6 taken 7594 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 7600 times.
✓ Branch 10 taken 2 times.
✓ Branch 11 taken 7589 times.
|
7590 | else if (column == "x-ecef(m)" || column == "x-ecef") |
269 | { | ||
270 |
2/4✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
|
2 | e_position.x() = std::stod(cell); |
271 | } | ||
272 |
6/10✓ Branch 1 taken 7581 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 7584 times.
✗ Branch 4 not taken.
✓ Branch 6 taken 7604 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 7619 times.
✓ Branch 10 taken 2 times.
✓ Branch 11 taken 7599 times.
|
7589 | else if (column == "y-ecef(m)" || column == "y-ecef") |
273 | { | ||
274 |
2/4✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
|
2 | e_position.y() = std::stod(cell); |
275 | } | ||
276 |
6/10✓ Branch 1 taken 7586 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 7590 times.
✗ Branch 4 not taken.
✓ Branch 6 taken 7606 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 7609 times.
✓ Branch 10 taken 2 times.
✓ Branch 11 taken 7600 times.
|
7599 | else if (column == "z-ecef(m)" || column == "z-ecef") |
277 | { | ||
278 |
2/4✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
|
2 | e_position.z() = std::stod(cell); |
279 | } | ||
280 |
7/10✓ Branch 1 taken 7614 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 7287 times.
✓ Branch 4 taken 327 times.
✓ Branch 6 taken 7272 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 7279 times.
✓ Branch 10 taken 343 times.
✓ Branch 11 taken 7256 times.
|
7600 | else if (column == "latitude(deg)" || column == "latitude") |
281 | { | ||
282 |
3/4✓ Branch 1 taken 340 times.
✓ Branch 2 taken 1 times.
✓ Branch 5 taken 328 times.
✗ Branch 6 not taken.
|
343 | lla_position(0) = deg2rad(std::stod(cell)); |
283 | } | ||
284 |
7/10✓ Branch 1 taken 7265 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 6939 times.
✓ Branch 4 taken 326 times.
✓ Branch 6 taken 6944 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 6947 times.
✓ Branch 10 taken 344 times.
✓ Branch 11 taken 6926 times.
|
7256 | else if (column == "longitude(deg)" || column == "longitude") |
285 | { | ||
286 |
2/4✓ Branch 1 taken 342 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 339 times.
✗ Branch 6 not taken.
|
344 | lla_position(1) = deg2rad(std::stod(cell)); |
287 | } | ||
288 |
7/10✓ Branch 1 taken 6935 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 6594 times.
✓ Branch 4 taken 341 times.
✓ Branch 6 taken 6604 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 6604 times.
✓ Branch 10 taken 347 times.
✓ Branch 11 taken 6598 times.
|
6926 | else if (column == "height(m)" || column == "height") |
289 | { | ||
290 |
2/4✓ Branch 1 taken 339 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 344 times.
✗ Branch 5 not taken.
|
347 | lla_position(2) = std::stod(cell); |
291 | } | ||
292 |
3/4✓ Branch 1 taken 6602 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 351 times.
✓ Branch 4 taken 6251 times.
|
6598 | else if (column == "Q") |
293 | { | ||
294 |
1/2✓ Branch 1 taken 345 times.
✗ Branch 2 not taken.
|
351 | obs->Q = static_cast<uint8_t>(std::stoul(cell)); |
295 | } | ||
296 |
3/4✓ Branch 1 taken 6254 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 351 times.
✓ Branch 4 taken 5903 times.
|
6251 | else if (column == "ns") |
297 | { | ||
298 |
1/2✓ Branch 1 taken 351 times.
✗ Branch 2 not taken.
|
351 | obs->ns = static_cast<uint8_t>(std::stoul(cell)); |
299 | } | ||
300 |
6/10✓ Branch 1 taken 5913 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 5914 times.
✗ Branch 4 not taken.
✓ Branch 6 taken 5924 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 5927 times.
✓ Branch 10 taken 2 times.
✓ Branch 11 taken 5921 times.
|
5903 | else if (column == "sdx(m)" || column == "sdx") |
301 | { | ||
302 |
2/4✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
|
2 | e_posVar(0, 0) = std::pow(std::stod(cell), 2); |
303 | } | ||
304 |
7/10✓ Branch 1 taken 5906 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 5905 times.
✓ Branch 4 taken 1 times.
✓ Branch 6 taken 5905 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 5907 times.
✓ Branch 10 taken 2 times.
✓ Branch 11 taken 5904 times.
|
5921 | else if (column == "sdy(m)" || column == "sdy") |
305 | { | ||
306 |
2/4✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
|
2 | e_posVar(1, 1) = std::pow(std::stod(cell), 2); |
307 | } | ||
308 |
6/10✓ Branch 1 taken 5922 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 5923 times.
✗ Branch 4 not taken.
✓ Branch 6 taken 5923 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 5924 times.
✓ Branch 10 taken 2 times.
✓ Branch 11 taken 5920 times.
|
5904 | else if (column == "sdz(m)" || column == "sdz") |
309 | { | ||
310 |
2/4✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
|
2 | e_posVar(2, 2) = std::pow(std::stod(cell), 2); |
311 | } | ||
312 |
7/10✓ Branch 1 taken 5929 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 5583 times.
✓ Branch 4 taken 346 times.
✓ Branch 6 taken 5573 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 5576 times.
✓ Branch 10 taken 348 times.
✓ Branch 11 taken 5571 times.
|
5920 | else if (column == "sdn(m)" || column == "sdn") |
313 | { | ||
314 |
2/4✓ Branch 1 taken 344 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 333 times.
✗ Branch 6 not taken.
|
348 | n_posVar(0, 0) = std::pow(std::stod(cell), 2); |
315 | } | ||
316 |
7/10✓ Branch 1 taken 5571 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 5227 times.
✓ Branch 4 taken 344 times.
✓ Branch 6 taken 5225 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 5226 times.
✓ Branch 10 taken 351 times.
✓ Branch 11 taken 5218 times.
|
5571 | else if (column == "sde(m)" || column == "sde") |
317 | { | ||
318 |
2/4✓ Branch 1 taken 345 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 340 times.
✗ Branch 6 not taken.
|
351 | n_posVar(1, 1) = std::pow(std::stod(cell), 2); |
319 | } | ||
320 |
7/10✓ Branch 1 taken 5216 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 4866 times.
✓ Branch 4 taken 350 times.
✓ Branch 6 taken 4870 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 4872 times.
✓ Branch 10 taken 349 times.
✓ Branch 11 taken 4871 times.
|
5218 | else if (column == "sdu(m)" || column == "sdu") |
321 | { | ||
322 |
2/4✓ Branch 1 taken 346 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 346 times.
✗ Branch 6 not taken.
|
349 | n_posVar(2, 2) = std::pow(std::stod(cell), 2); |
323 | } | ||
324 |
7/10✓ Branch 1 taken 4891 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 4889 times.
✓ Branch 4 taken 2 times.
✓ Branch 6 taken 4883 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 4886 times.
✓ Branch 10 taken 2 times.
✓ Branch 11 taken 4883 times.
|
4871 | else if (column == "sdxy(m)" || column == "sdxy") |
325 | { | ||
326 |
2/4✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
|
2 | e_posVar(0, 1) = std::stod(cell); |
327 |
3/6✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
✓ Branch 9 taken 2 times.
✗ Branch 10 not taken.
|
2 | e_posVar(0, 1) = gcem::sgn(e_posVar(0, 1)) * std::pow(e_posVar(0, 1), 2); |
328 |
2/4✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
|
2 | e_posVar(1, 0) = -e_posVar(0, 1); |
329 | } | ||
330 |
6/10✓ Branch 1 taken 4883 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 4883 times.
✗ Branch 4 not taken.
✓ Branch 6 taken 4879 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 4882 times.
✓ Branch 10 taken 2 times.
✓ Branch 11 taken 4877 times.
|
4883 | else if (column == "sdyz(m)" || column == "sdyz") |
331 | { | ||
332 |
2/4✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
|
2 | e_posVar(1, 2) = std::stod(cell); |
333 |
3/6✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
✓ Branch 9 taken 2 times.
✗ Branch 10 not taken.
|
2 | e_posVar(1, 2) = gcem::sgn(e_posVar(1, 2)) * std::pow(e_posVar(1, 2), 2); |
334 |
2/4✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
|
2 | e_posVar(2, 1) = -e_posVar(1, 2); |
335 | } | ||
336 |
8/10✓ Branch 1 taken 4867 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 4865 times.
✓ Branch 4 taken 2 times.
✓ Branch 6 taken 4870 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 1 times.
✓ Branch 9 taken 4869 times.
✓ Branch 10 taken 2 times.
✓ Branch 11 taken 4870 times.
|
4877 | else if (column == "sdzx(m)" || column == "sdzx") |
337 | { | ||
338 |
2/4✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
|
2 | e_posVar(2, 0) = std::stod(cell); |
339 |
3/6✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
✓ Branch 9 taken 2 times.
✗ Branch 10 not taken.
|
2 | e_posVar(2, 0) = gcem::sgn(e_posVar(2, 0)) * std::pow(e_posVar(2, 0), 2); |
340 |
2/4✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
|
2 | e_posVar(0, 2) = -e_posVar(2, 0); |
341 | } | ||
342 |
7/10✓ Branch 1 taken 4869 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 4528 times.
✓ Branch 4 taken 341 times.
✓ Branch 6 taken 4518 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 4518 times.
✓ Branch 10 taken 345 times.
✓ Branch 11 taken 4514 times.
|
4870 | else if (column == "sdne(m)" || column == "sdne") |
343 | { | ||
344 |
2/4✓ Branch 1 taken 350 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 347 times.
✗ Branch 5 not taken.
|
345 | n_posVar(0, 1) = std::stod(cell); |
345 |
3/6✓ Branch 1 taken 351 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 342 times.
✗ Branch 6 not taken.
✓ Branch 9 taken 350 times.
✗ Branch 10 not taken.
|
347 | n_posVar(0, 1) = gcem::sgn(n_posVar(0, 1)) * std::pow(n_posVar(0, 1), 2); |
346 |
2/4✓ Branch 1 taken 345 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 347 times.
✗ Branch 5 not taken.
|
350 | n_posVar(1, 0) = -n_posVar(0, 1); |
347 | } | ||
348 |
7/10✓ Branch 1 taken 4527 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 4181 times.
✓ Branch 4 taken 346 times.
✓ Branch 6 taken 4185 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 4187 times.
✓ Branch 10 taken 350 times.
✓ Branch 11 taken 4181 times.
|
4514 | else if (column == "sdeu(m)" || column == "sdeu") |
349 | { | ||
350 |
2/4✓ Branch 1 taken 348 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 344 times.
✗ Branch 5 not taken.
|
350 | n_posVar(1, 2) = std::stod(cell); |
351 |
3/6✓ Branch 1 taken 344 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 348 times.
✗ Branch 6 not taken.
✓ Branch 9 taken 351 times.
✗ Branch 10 not taken.
|
344 | n_posVar(1, 2) = gcem::sgn(n_posVar(1, 2)) * std::pow(n_posVar(1, 2), 2); |
352 |
2/4✓ Branch 1 taken 349 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 350 times.
✗ Branch 5 not taken.
|
351 | n_posVar(2, 1) = -n_posVar(1, 2); |
353 | } | ||
354 |
7/10✓ Branch 1 taken 4186 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 3838 times.
✓ Branch 4 taken 348 times.
✓ Branch 6 taken 3834 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 3836 times.
✓ Branch 10 taken 350 times.
✓ Branch 11 taken 3832 times.
|
4181 | else if (column == "sdun(m)" || column == "sdun") |
355 | { | ||
356 |
2/4✓ Branch 1 taken 350 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 344 times.
✗ Branch 5 not taken.
|
350 | n_posVar(2, 0) = std::stod(cell); |
357 |
3/6✓ Branch 1 taken 347 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 351 times.
✗ Branch 6 not taken.
✓ Branch 9 taken 350 times.
✗ Branch 10 not taken.
|
344 | n_posVar(2, 0) = gcem::sgn(n_posVar(2, 0)) * std::pow(n_posVar(2, 0), 2); |
358 |
2/4✓ Branch 1 taken 352 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 351 times.
✗ Branch 5 not taken.
|
350 | n_posVar(0, 2) = -n_posVar(2, 0); |
359 | } | ||
360 |
7/10✓ Branch 1 taken 3843 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 3491 times.
✓ Branch 4 taken 352 times.
✓ Branch 6 taken 3492 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 3494 times.
✓ Branch 10 taken 352 times.
✓ Branch 11 taken 3492 times.
|
3832 | else if (column == "age(s)" || column == "age") |
361 | { | ||
362 |
1/2✓ Branch 1 taken 348 times.
✗ Branch 2 not taken.
|
352 | obs->age = std::stod(cell); |
363 | } | ||
364 |
3/4✓ Branch 1 taken 3491 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 351 times.
✓ Branch 4 taken 3140 times.
|
3492 | else if (column == "ratio") |
365 | { | ||
366 |
1/2✓ Branch 1 taken 347 times.
✗ Branch 2 not taken.
|
351 | obs->ratio = std::stod(cell); |
367 | } | ||
368 |
7/10✓ Branch 1 taken 3146 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 2800 times.
✓ Branch 4 taken 346 times.
✓ Branch 6 taken 2797 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 2798 times.
✓ Branch 10 taken 347 times.
✓ Branch 11 taken 2796 times.
|
3140 | else if (column == "vn(m/s)" || column == "vn") |
369 | { | ||
370 |
2/4✓ Branch 1 taken 341 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 340 times.
✗ Branch 5 not taken.
|
347 | n_velocity(0) = std::stod(cell); |
371 | } | ||
372 |
7/10✓ Branch 1 taken 2791 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 2450 times.
✓ Branch 4 taken 341 times.
✓ Branch 6 taken 2451 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 2452 times.
✓ Branch 10 taken 347 times.
✓ Branch 11 taken 2445 times.
|
2796 | else if (column == "ve(m/s)" || column == "ve") |
373 | { | ||
374 |
2/4✓ Branch 1 taken 345 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 344 times.
✗ Branch 5 not taken.
|
347 | n_velocity(1) = std::stod(cell); |
375 | } | ||
376 |
7/10✓ Branch 1 taken 2449 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 2099 times.
✓ Branch 4 taken 350 times.
✓ Branch 6 taken 2100 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 2101 times.
✓ Branch 10 taken 349 times.
✓ Branch 11 taken 2101 times.
|
2445 | else if (column == "vu(m/s)" || column == "vu") |
377 | { | ||
378 |
2/4✓ Branch 1 taken 349 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 347 times.
✗ Branch 5 not taken.
|
349 | n_velocity(2) = -std::stod(cell); |
379 | } | ||
380 |
7/10✓ Branch 1 taken 2101 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 2099 times.
✓ Branch 4 taken 2 times.
✓ Branch 6 taken 2094 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 2094 times.
✓ Branch 10 taken 2 times.
✓ Branch 11 taken 2094 times.
|
2101 | else if (column == "vx(m/s)" || column == "vx") |
381 | { | ||
382 |
2/4✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
|
2 | e_velocity(0) = std::stod(cell); |
383 | } | ||
384 |
6/10✓ Branch 1 taken 2095 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 2095 times.
✗ Branch 4 not taken.
✓ Branch 6 taken 2088 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 2089 times.
✓ Branch 10 taken 2 times.
✓ Branch 11 taken 2086 times.
|
2094 | else if (column == "vy(m/s)" || column == "vy") |
385 | { | ||
386 |
2/4✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
|
2 | e_velocity(1) = std::stod(cell); |
387 | } | ||
388 |
8/10✓ Branch 1 taken 2091 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 2089 times.
✓ Branch 4 taken 2 times.
✓ Branch 6 taken 2093 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✓ Branch 9 taken 2091 times.
✓ Branch 10 taken 2 times.
✓ Branch 11 taken 2093 times.
|
2086 | else if (column == "vz(m/s)" || column == "vz") |
389 | { | ||
390 |
2/4✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
|
2 | e_velocity(2) = std::stod(cell); |
391 | } | ||
392 |
7/10✓ Branch 1 taken 2091 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 2092 times.
✗ Branch 4 not taken.
✓ Branch 6 taken 2091 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 345 times.
✓ Branch 9 taken 1746 times.
✓ Branch 10 taken 348 times.
✓ Branch 11 taken 1742 times.
|
2093 | else if (column == "sdvn(m/s)" || column == "sdvn") |
393 | { | ||
394 |
2/4✓ Branch 1 taken 349 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 346 times.
✗ Branch 6 not taken.
|
348 | n_velVar(0, 0) = std::pow(std::stod(cell), 2); |
395 | } | ||
396 |
7/10✓ Branch 1 taken 1745 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 1745 times.
✗ Branch 4 not taken.
✓ Branch 6 taken 1750 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 348 times.
✓ Branch 9 taken 1402 times.
✓ Branch 10 taken 350 times.
✓ Branch 11 taken 1400 times.
|
1742 | else if (column == "sdve(m/s)" || column == "sdve") |
397 | { | ||
398 |
2/4✓ Branch 1 taken 346 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 342 times.
✗ Branch 6 not taken.
|
350 | n_velVar(1, 1) = std::pow(std::stod(cell), 2); |
399 | } | ||
400 |
7/10✓ Branch 1 taken 1406 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 1406 times.
✗ Branch 4 not taken.
✓ Branch 6 taken 1401 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 348 times.
✓ Branch 9 taken 1053 times.
✓ Branch 10 taken 349 times.
✓ Branch 11 taken 1052 times.
|
1400 | else if (column == "sdvu(m/s)" || column == "sdvu") |
401 | { | ||
402 |
2/4✓ Branch 1 taken 349 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 346 times.
✗ Branch 6 not taken.
|
349 | n_velVar(2, 2) = std::pow(std::stod(cell), 2); |
403 | } | ||
404 |
7/10✓ Branch 1 taken 1053 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 1054 times.
✗ Branch 4 not taken.
✓ Branch 6 taken 1057 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 348 times.
✓ Branch 9 taken 709 times.
✓ Branch 10 taken 349 times.
✓ Branch 11 taken 707 times.
|
1052 | else if (column == "sdvne(m/s)" || column == "sdvne") |
405 | { | ||
406 |
2/4✓ Branch 1 taken 348 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 346 times.
✗ Branch 5 not taken.
|
349 | n_velVar(0, 1) = std::stod(cell); |
407 |
3/6✓ Branch 1 taken 347 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 347 times.
✗ Branch 6 not taken.
✓ Branch 9 taken 347 times.
✗ Branch 10 not taken.
|
346 | n_velVar(0, 1) = gcem::sgn(n_velVar(0, 1)) * std::pow(n_velVar(0, 1), 2); |
408 |
2/4✓ Branch 1 taken 348 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 349 times.
✗ Branch 5 not taken.
|
347 | n_velVar(1, 0) = -n_velVar(0, 1); |
409 | } | ||
410 |
7/10✓ Branch 1 taken 705 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 705 times.
✗ Branch 4 not taken.
✓ Branch 6 taken 708 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 347 times.
✓ Branch 9 taken 361 times.
✓ Branch 10 taken 348 times.
✓ Branch 11 taken 360 times.
|
707 | else if (column == "sdveu(m/s)" || column == "sdveu") |
411 | { | ||
412 |
2/4✓ Branch 1 taken 348 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 348 times.
✗ Branch 5 not taken.
|
348 | n_velVar(1, 2) = std::stod(cell); |
413 |
3/6✓ Branch 1 taken 345 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 346 times.
✗ Branch 6 not taken.
✓ Branch 9 taken 347 times.
✗ Branch 10 not taken.
|
348 | n_velVar(1, 2) = gcem::sgn(n_velVar(1, 2)) * std::pow(n_velVar(1, 2), 2); |
414 |
2/4✓ Branch 1 taken 350 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 348 times.
✗ Branch 5 not taken.
|
347 | n_velVar(2, 1) = -n_velVar(1, 2); |
415 | } | ||
416 |
7/10✓ Branch 1 taken 360 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 360 times.
✗ Branch 4 not taken.
✓ Branch 6 taken 361 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 349 times.
✓ Branch 9 taken 12 times.
✓ Branch 10 taken 349 times.
✓ Branch 11 taken 12 times.
|
360 | else if (column == "sdvun(m/s)" || column == "sdvun") |
417 | { | ||
418 |
2/4✓ Branch 1 taken 347 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 345 times.
✗ Branch 5 not taken.
|
349 | n_velVar(2, 0) = std::stod(cell); |
419 |
3/6✓ Branch 1 taken 347 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 345 times.
✗ Branch 6 not taken.
✓ Branch 9 taken 345 times.
✗ Branch 10 not taken.
|
345 | n_velVar(2, 0) = gcem::sgn(n_velVar(2, 0)) * std::pow(n_velVar(2, 0), 2); |
420 |
2/4✓ Branch 1 taken 348 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 349 times.
✗ Branch 5 not taken.
|
345 | n_velVar(0, 2) = -n_velVar(2, 0); |
421 | } | ||
422 |
7/10✓ Branch 1 taken 12 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 12 times.
✗ Branch 4 not taken.
✓ Branch 6 taken 12 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✓ Branch 9 taken 10 times.
✓ Branch 10 taken 2 times.
✓ Branch 11 taken 10 times.
|
12 | else if (column == "sdvx(m/s)" || column == "sdvx") |
423 | { | ||
424 |
2/4✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
|
2 | e_velVar(0, 0) = std::pow(std::stod(cell), 2); |
425 | } | ||
426 |
7/10✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 10 times.
✗ Branch 4 not taken.
✓ Branch 6 taken 10 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✓ Branch 9 taken 8 times.
✓ Branch 10 taken 2 times.
✓ Branch 11 taken 8 times.
|
10 | else if (column == "sdvy(m/s)" || column == "sdvy") |
427 | { | ||
428 |
2/4✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
|
2 | e_velVar(1, 1) = std::pow(std::stod(cell), 2); |
429 | } | ||
430 |
7/10✓ Branch 1 taken 8 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 8 times.
✗ Branch 4 not taken.
✓ Branch 6 taken 8 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✓ Branch 9 taken 6 times.
✓ Branch 10 taken 2 times.
✓ Branch 11 taken 6 times.
|
8 | else if (column == "sdvz(m/s)" || column == "sdvz") |
431 | { | ||
432 |
2/4✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
|
2 | e_velVar(2, 2) = std::pow(std::stod(cell), 2); |
433 | } | ||
434 |
7/10✓ Branch 1 taken 6 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 6 times.
✗ Branch 4 not taken.
✓ Branch 6 taken 6 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✓ Branch 9 taken 4 times.
✓ Branch 10 taken 2 times.
✓ Branch 11 taken 4 times.
|
6 | else if (column == "sdvxy(m/s)" || column == "sdvxy") |
435 | { | ||
436 |
2/4✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
|
2 | e_velVar(0, 1) = std::stod(cell); |
437 |
3/6✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
✓ Branch 9 taken 2 times.
✗ Branch 10 not taken.
|
2 | e_velVar(0, 1) = gcem::sgn(e_velVar(0, 1)) * std::pow(e_velVar(0, 1), 2); |
438 |
2/4✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
|
2 | e_velVar(1, 0) = -e_velVar(0, 1); |
439 | } | ||
440 |
7/10✓ Branch 1 taken 4 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 4 times.
✗ Branch 4 not taken.
✓ Branch 6 taken 4 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✓ Branch 9 taken 2 times.
✓ Branch 10 taken 2 times.
✓ Branch 11 taken 2 times.
|
4 | else if (column == "sdvyz(m/s)" || column == "sdvyz") |
441 | { | ||
442 |
2/4✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
|
2 | e_velVar(1, 2) = std::stod(cell); |
443 |
3/6✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
✓ Branch 9 taken 2 times.
✗ Branch 10 not taken.
|
2 | e_velVar(1, 2) = gcem::sgn(e_velVar(1, 2)) * std::pow(e_velVar(1, 2), 2); |
444 |
2/4✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
|
2 | e_velVar(2, 1) = -e_velVar(1, 2); |
445 | } | ||
446 |
5/10✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 2 times.
✗ Branch 4 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✓ Branch 10 taken 2 times.
✗ Branch 11 not taken.
|
2 | else if (column == "sdvzx(m/s)" || column == "sdvzx") |
447 | { | ||
448 |
2/4✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
|
2 | e_velVar(2, 0) = std::stod(cell); |
449 |
3/6✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
✓ Branch 9 taken 2 times.
✗ Branch 10 not taken.
|
2 | e_velVar(2, 0) = gcem::sgn(e_velVar(2, 0)) * std::pow(e_velVar(2, 0), 2); |
450 |
2/4✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
|
2 | e_velVar(0, 2) = -e_velVar(2, 0); |
451 | } | ||
452 | } | ||
453 | } | ||
454 | } | ||
455 | 1 | catch (...) | |
456 | { | ||
457 | 1 | return nullptr; | |
458 | 1 | } | |
459 | |||
460 |
5/6✓ Branch 1 taken 3 times.
✓ Branch 2 taken 348 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✓ Branch 7 taken 348 times.
|
344 | if (gpsWeek.has_value() && gpsToW.has_value()) |
461 | { | ||
462 |
3/6✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
|
2 | obs->insTime = InsTime(0, gpsWeek.value(), gpsToW.value()); |
463 | } | ||
464 |
2/4✓ Branch 2 taken 346 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 347 times.
✗ Branch 6 not taken.
|
695 | else if (year.has_value() && month.has_value() && day.has_value() |
465 |
6/10✓ Branch 0 taken 347 times.
✗ Branch 1 not taken.
✓ Branch 3 taken 345 times.
✗ Branch 4 not taken.
✓ Branch 6 taken 347 times.
✗ Branch 7 not taken.
✓ Branch 9 taken 342 times.
✓ Branch 10 taken 3 times.
✓ Branch 11 taken 342 times.
✗ Branch 12 not taken.
|
693 | && hour.has_value() && minute.has_value() && second.has_value()) |
466 | { | ||
467 |
3/6✓ Branch 1 taken 343 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 345 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 349 times.
✗ Branch 8 not taken.
|
341 | obs->insTime = InsTime(year.value(), month.value(), day.value(), |
468 |
4/8✓ Branch 1 taken 344 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 343 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 339 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 341 times.
✗ Branch 11 not taken.
|
342 | hour.value(), minute.value(), second.value(), |
469 | timeSystem); | ||
470 | } | ||
471 | |||
472 |
4/6✓ Branch 1 taken 349 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 2 times.
✓ Branch 4 taken 347 times.
✓ Branch 7 taken 2 times.
✗ Branch 8 not taken.
|
345 | if (!e_position.hasNaN()) { obs->setPosition_e(e_position); } |
473 |
3/6✓ Branch 1 taken 345 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 345 times.
✗ Branch 4 not taken.
✓ Branch 7 taken 348 times.
✗ Branch 8 not taken.
|
347 | else if (!lla_position.hasNaN()) { obs->setPosition_lla(lla_position); } |
474 | |||
475 |
4/6✓ Branch 1 taken 347 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 2 times.
✓ Branch 4 taken 345 times.
✓ Branch 7 taken 2 times.
✗ Branch 8 not taken.
|
350 | if (!e_velocity.hasNaN()) { obs->setVelocity_e(e_velocity); } |
476 |
4/6✓ Branch 1 taken 351 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 349 times.
✓ Branch 4 taken 2 times.
✓ Branch 7 taken 348 times.
✗ Branch 8 not taken.
|
345 | else if (!n_velocity.hasNaN()) { obs->setVelocity_n(n_velocity); } |
477 | |||
478 |
7/10✓ Branch 1 taken 340 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 2 times.
✓ Branch 4 taken 338 times.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✓ Branch 10 taken 2 times.
✓ Branch 11 taken 338 times.
|
352 | if (!e_velVar.hasNaN() && !e_posVar.hasNaN()) |
479 | { | ||
480 |
2/4✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
|
2 | Eigen::Matrix6d cov = Eigen::Matrix6d::Zero(6, 6); |
481 |
2/4✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
|
2 | cov.block<3, 3>(0, 0) = e_posVar; |
482 |
2/4✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
|
2 | cov.block<3, 3>(3, 3) = e_velVar; |
483 |
1/2✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
|
2 | obs->setPosVelCovarianceMatrix_e(cov); |
484 | } | ||
485 |
7/10✓ Branch 1 taken 342 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 340 times.
✓ Branch 4 taken 2 times.
✓ Branch 6 taken 343 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 343 times.
✗ Branch 9 not taken.
✓ Branch 10 taken 343 times.
✓ Branch 11 taken 2 times.
|
338 | else if (!n_velVar.hasNaN() && !n_posVar.hasNaN()) |
486 | { | ||
487 |
2/4✓ Branch 1 taken 321 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 329 times.
✗ Branch 5 not taken.
|
343 | Eigen::Matrix6d cov = Eigen::Matrix6d::Zero(6, 6); |
488 |
2/4✓ Branch 1 taken 331 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 335 times.
✗ Branch 5 not taken.
|
329 | cov.block<3, 3>(0, 0) = n_posVar; |
489 |
2/4✓ Branch 1 taken 333 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 341 times.
✗ Branch 5 not taken.
|
335 | cov.block<3, 3>(3, 3) = n_velVar; |
490 |
1/2✓ Branch 2 taken 350 times.
✗ Branch 3 not taken.
|
341 | obs->setPosVelCovarianceMatrix_n(cov); |
491 | } | ||
492 |
2/4✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 2 times.
|
2 | else if (!e_posVar.hasNaN()) |
493 | { | ||
494 | ✗ | obs->setPosCovarianceMatrix_e(e_posVar); | |
495 | } | ||
496 |
2/4✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 2 times.
✗ Branch 4 not taken.
|
2 | else if (!n_posVar.hasNaN()) |
497 | { | ||
498 |
1/2✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
|
2 | obs->setPosCovarianceMatrix_n(n_posVar); |
499 | } | ||
500 | |||
501 |
1/2✓ Branch 2 taken 354 times.
✗ Branch 3 not taken.
|
354 | invokeCallbacks(OUTPUT_PORT_INDEX_RTKLIB_POS_OBS, obs); |
502 | 354 | return obs; | |
503 | 362 | } | |
504 | |||
505 | 14 | NAV::FileReader::FileType NAV::RtklibPosFile::determineFileType() | |
506 | { | ||
507 |
1/2✓ Branch 1 taken 14 times.
✗ Branch 2 not taken.
|
14 | std::filesystem::path filepath = getFilepath(); |
508 | |||
509 |
1/2✓ Branch 1 taken 14 times.
✗ Branch 2 not taken.
|
14 | auto filestreamHeader = std::ifstream(filepath); |
510 |
1/2✗ Branch 1 not taken.
✓ Branch 2 taken 14 times.
|
14 | if (!filestreamHeader.good()) |
511 | { | ||
512 | ✗ | return FileReader::FileType::NONE; | |
513 | } | ||
514 | |||
515 | 14 | std::string line; | |
516 | do | ||
517 | { | ||
518 |
2/2✓ Branch 1 taken 1 times.
✓ Branch 2 taken 183 times.
|
184 | if (filestreamHeader.eof()) |
519 | { | ||
520 | 1 | return FileReader::FileType::NONE; | |
521 | } | ||
522 | |||
523 |
1/2✓ Branch 1 taken 183 times.
✗ Branch 2 not taken.
|
183 | std::getline(filestreamHeader, line); |
524 | // Remove any starting non text characters | ||
525 |
2/4✓ Branch 1 taken 181 times.
✗ Branch 2 not taken.
✓ Branch 7 taken 179 times.
✗ Branch 8 not taken.
|
364 | line.erase(line.begin(), std::ranges::find_if(line, [](int ch) { return std::isgraph(ch); })); |
526 |
5/6✓ Branch 1 taken 180 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 170 times.
✓ Branch 5 taken 12 times.
✓ Branch 6 taken 170 times.
✓ Branch 7 taken 12 times.
|
179 | } while (!line.empty() && line.find("% ") == std::string::npos); |
527 | |||
528 | 12 | return FileReader::FileType::ASCII; | |
529 | 13 | } | |
530 | |||
531 | 13 | void NAV::RtklibPosFile::readHeader() | |
532 | { | ||
533 | // Read header line | ||
534 | 13 | std::string line; | |
535 | do | ||
536 | { | ||
537 |
1/2✓ Branch 1 taken 183 times.
✗ Branch 2 not taken.
|
181 | getline(line); |
538 | // Remove any starting non text characters | ||
539 |
2/4✓ Branch 1 taken 182 times.
✗ Branch 2 not taken.
✓ Branch 7 taken 182 times.
✗ Branch 8 not taken.
|
364 | line.erase(line.begin(), std::ranges::find_if(line, [](int ch) { return std::isgraph(ch); })); |
540 |
5/6✓ Branch 1 taken 183 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 169 times.
✓ Branch 5 taken 13 times.
✓ Branch 6 taken 169 times.
✓ Branch 7 taken 13 times.
|
182 | } while (!line.empty() && line.find("% ") == std::string::npos); |
541 | |||
542 | // Convert line into stream | ||
543 |
1/2✓ Branch 1 taken 13 times.
✗ Branch 2 not taken.
|
13 | std::istringstream lineStream(line); |
544 | |||
545 |
4/6✓ Branch 2 taken 311 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 313 times.
✗ Branch 6 not taken.
✓ Branch 7 taken 300 times.
✓ Branch 8 taken 13 times.
|
328 | for (std::string cell; lineStream >> cell;) // split at 'space' |
546 | { | ||
547 |
3/4✓ Branch 1 taken 298 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 13 times.
✓ Branch 4 taken 285 times.
|
300 | if (cell != "%") |
548 | { | ||
549 |
3/4✓ Branch 1 taken 283 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 10 times.
✓ Branch 4 taken 273 times.
|
285 | if (cell == "GPST") // When RTKLIB selected 'ww ssss GPST' or 'hh:mm:ss GPST' |
550 | { | ||
551 |
1/2✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
|
10 | auto pos = tellg(); |
552 |
1/2✓ Branch 1 taken 9 times.
✗ Branch 2 not taken.
|
10 | getline(line); |
553 |
1/2✓ Branch 2 taken 10 times.
✗ Branch 3 not taken.
|
9 | seekg(pos, std::ios::beg); |
554 | |||
555 |
3/4✓ Branch 1 taken 9 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✓ Branch 6 taken 8 times.
|
10 | if (line.substr(0, 7).find('/') == std::string::npos) |
556 | { | ||
557 | // % GPST latitude(deg) longitude(deg) ... | ||
558 | // 2120 216180.000 XX.XXXXXXXXX ... | ||
559 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | _headerColumns.emplace_back("GpsWeek"); |
560 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | _headerColumns.emplace_back("GpsToW"); |
561 | } | ||
562 | else | ||
563 | { | ||
564 | // % GPST latitude(deg) longitude(deg) ... | ||
565 | // 2020/08/25 12:03:00.000 XX.XXXXXXXXX ... | ||
566 |
1/2✓ Branch 1 taken 8 times.
✗ Branch 2 not taken.
|
8 | _headerColumns.emplace_back("Date-GPST"); |
567 |
1/2✓ Branch 1 taken 8 times.
✗ Branch 2 not taken.
|
8 | _headerColumns.emplace_back("Time-GPST"); |
568 | } | ||
569 | } | ||
570 |
3/4✓ Branch 1 taken 274 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 2 times.
✓ Branch 4 taken 272 times.
|
273 | else if (cell == "UTC") // When RTKLIB selected 'hh:mm:ss UTC' |
571 | { | ||
572 | // % UTC latitude(deg) longitude(deg) ... | ||
573 | // 2020/08/25 12:02:42.000 XX.XXXXXXXXX ... | ||
574 |
1/2✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
|
2 | _headerColumns.emplace_back("Date-UTC"); |
575 |
1/2✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
|
2 | _headerColumns.emplace_back("Time-UTC"); |
576 | } | ||
577 |
3/4✓ Branch 1 taken 272 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
✓ Branch 4 taken 271 times.
|
272 | else if (cell == "JST") // When RTKLIB selected 'hh:mm:ss JST' |
578 | { | ||
579 | // % JST latitude(deg) longitude(deg) ... | ||
580 | // 2020/08/25 21:02:42.000 XX.XXXXXXXXX ... | ||
581 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | _headerColumns.emplace_back("Date-JST"); |
582 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | _headerColumns.emplace_back("Time-JST"); |
583 | } | ||
584 | else | ||
585 | { | ||
586 |
1/2✓ Branch 1 taken 277 times.
✗ Branch 2 not taken.
|
271 | _headerColumns.push_back(cell); |
587 | } | ||
588 | } | ||
589 | 13 | } | |
590 | 13 | } | |
591 |