0.3.0
Loading...
Searching...
No Matches
VectorNavSensor.hpp
Go to the documentation of this file.
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
13
14#pragma once
15
16// VectorNav library includes <winsock2.h>, but <boost/asio.hpp> needs to be included before (even though not used in this file)
17// https://stackoverflow.com/questions/9750344/boostasio-winsock-and-winsock-2-compatibility-issue
18#ifdef _WIN32
19 // Set the proper SDK version before including boost/Asio
20 #include <SDKDDKVer.h>
21 // Note boost/ASIO includes Windows.h.
22 #include <boost/asio.hpp>
23#endif //_WIN32
24
27#include "vn/sensors.h"
28
30
33
34#include <vector>
35#include <array>
36#include <cstdint>
37
38namespace NAV
39{
40class VectorNavFile;
41
43class VectorNavSensor : public Imu, public UartSensor
44{
45 public:
47 struct TimeSync
48 {
50 uint32_t syncOutCnt{};
51 };
52
56 ~VectorNavSensor() override;
65
67 [[nodiscard]] static std::string typeStatic();
68
70 [[nodiscard]] std::string type() const override;
71
73 [[nodiscard]] static std::string category();
74
77 void guiConfig() override;
78
80 [[nodiscard]] json save() const override;
81
84 void restore(const json& j) override;
85
87 bool resetNode() override;
88
89 private:
90 constexpr static size_t OUTPUT_PORT_INDEX_ASCII_OUTPUT = 0;
91
93 bool initialize() override;
94
96 void deinitialize() override;
97
101 static void mergeVectorNavBinaryObservations(const std::shared_ptr<VectorNavBinaryOutput>& target, const std::shared_ptr<VectorNavBinaryOutput>& source);
102
107 static void asciiOrBinaryAsyncMessageReceived(void* userData, vn::protocol::uart::Packet& p, size_t index);
108
110 enum class VectorNavModel : uint8_t
111 {
116 VN310,
117 };
118
121
123 vn::sensors::VnSensor _vs;
124
127
129 static constexpr double IMU_DEFAULT_FREQUENCY = 800;
130
132 std::pair<std::vector<uint16_t>, std::vector<std::string>> _dividerFrequency;
133
135 std::array<InsTime, 3> _lastMessageTime{};
136
138 std::array<uint64_t, 3> _lastMessageTimeSinceStartup{};
139
141 struct
142 {
144 uint64_t timeSinceStartup{};
146
147 // ###########################################################################################################
148 // SYSTEM MODULE
149 // ###########################################################################################################
150
153 vn::protocol::uart::AsciiAsync _asyncDataOutputType = vn::protocol::uart::AsciiAsync::VNOFF;
154
157 static constexpr std::array _possibleAsyncDataOutputFrequency = { 1, 2, 4, 5, 10, 20, 25, 40, 50, 100, 200 };
158
164
167
170
175 vn::sensors::SynchronizationControlRegister _synchronizationControlRegister{
176 vn::protocol::uart::SyncInMode::SYNCINMODE_COUNT, // SyncInMode
177 vn::protocol::uart::SyncInEdge::SYNCINEDGE_RISING, // SyncInEdge
178 0, // SyncInSkipFactor
179 vn::protocol::uart::SyncOutMode::SYNCOUTMODE_NONE, // SyncOutMode
180 vn::protocol::uart::SyncOutPolarity::SYNCOUTPOLARITY_POSITIVE, // SyncOutPolarity
181 0, // SyncOutSkipFactor
182 100000000 // SyncOutPulseWidth
183 };
184
187
189 bool _syncInPin = false;
190
193
198 static void coupleImuFilterRates(NAV::VectorNavSensor* sensor, vn::sensors::BinaryOutputRegister& bor, uint32_t& binaryField);
199
204 vn::sensors::CommunicationProtocolControlRegister _communicationProtocolControlRegister{
205 vn::protocol::uart::CountMode::COUNTMODE_NONE, // SerialCount
206 vn::protocol::uart::StatusMode::STATUSMODE_OFF, // SerialStatus
207 vn::protocol::uart::CountMode::COUNTMODE_NONE, // SPICount
208 vn::protocol::uart::StatusMode::STATUSMODE_OFF, // SPIStatus
209 vn::protocol::uart::ChecksumMode::CHECKSUMMODE_CHECKSUM, // SerialChecksum
210 vn::protocol::uart::ChecksumMode::CHECKSUMMODE_OFF, // SPIChecksum
211 vn::protocol::uart::ErrorMode::ERRORMODE_SEND // ErrorMode
212 };
213
215 enum class BinaryRegisterMerge : uint8_t
216 {
217 None,
221 };
222
225
227 std::shared_ptr<VectorNavBinaryOutput> _binaryOutputRegisterMergeObservation = nullptr;
230
236 std::array<vn::sensors::BinaryOutputRegister, 3> _binaryOutputRegister = { vn::sensors::BinaryOutputRegister{
237 vn::protocol::uart::AsyncMode::ASYNCMODE_PORT1, // AsyncMode
238 800, // RateDivisor
239 vn::protocol::uart::CommonGroup::COMMONGROUP_NONE, // CommonGroup
240 vn::protocol::uart::TimeGroup::TIMEGROUP_NONE, // TimeGroup
241 vn::protocol::uart::ImuGroup::IMUGROUP_NONE, // IMUGroup
242 vn::protocol::uart::GpsGroup::GPSGROUP_NONE, // GNSS1Group
243 vn::protocol::uart::AttitudeGroup::ATTITUDEGROUP_NONE, // AttitudeGroup
244 vn::protocol::uart::InsGroup::INSGROUP_NONE, // INSGroup
245 vn::protocol::uart::GpsGroup::GPSGROUP_NONE // GNSS2Group
246 },
247 vn::sensors::BinaryOutputRegister{
248 vn::protocol::uart::AsyncMode::ASYNCMODE_NONE, // AsyncMode
249 800, // RateDivisor
250 vn::protocol::uart::CommonGroup::COMMONGROUP_NONE, // CommonGroup
251 vn::protocol::uart::TimeGroup::TIMEGROUP_NONE, // TimeGroup
252 vn::protocol::uart::ImuGroup::IMUGROUP_NONE, // IMUGroup
253 vn::protocol::uart::GpsGroup::GPSGROUP_NONE, // GNSS1Group
254 vn::protocol::uart::AttitudeGroup::ATTITUDEGROUP_NONE, // AttitudeGroup
255 vn::protocol::uart::InsGroup::INSGROUP_NONE, // INSGroup
256 vn::protocol::uart::GpsGroup::GPSGROUP_NONE // GNSS2Group
257 },
258 vn::sensors::BinaryOutputRegister{
259 vn::protocol::uart::AsyncMode::ASYNCMODE_NONE, // AsyncMode
260 800, // RateDivisor
261 vn::protocol::uart::CommonGroup::COMMONGROUP_NONE, // CommonGroup
262 vn::protocol::uart::TimeGroup::TIMEGROUP_NONE, // TimeGroup
263 vn::protocol::uart::ImuGroup::IMUGROUP_NONE, // IMUGroup
264 vn::protocol::uart::GpsGroup::GPSGROUP_NONE, // GNSS1Group
265 vn::protocol::uart::AttitudeGroup::ATTITUDEGROUP_NONE, // AttitudeGroup
266 vn::protocol::uart::InsGroup::INSGROUP_NONE, // INSGroup
267 vn::protocol::uart::GpsGroup::GPSGROUP_NONE // GNSS2Group
268 } };
270 std::array<size_t, 3> _binaryOutputSelectedFrequency{};
271
272 // ###########################################################################################################
273 // IMU SUBSYSTEM
274 // ###########################################################################################################
275
280 vn::math::mat3f _referenceFrameRotationMatrix{ { 1, 0, 0 },
281 { 0, 1, 0 },
282 { 0, 0, 1 } };
283
288 vn::sensors::ImuFilteringConfigurationRegister _imuFilteringConfigurationRegister{
289 4, // MagWindowSize
290 4, // AccelWindowSize
291 4, // GyroWindowSize
292 4, // TempWindowSize
293 4, // PresWindowSize
294 vn::protocol::uart::FilterMode::FILTERMODE_NOFILTERING, // MagFilterMode
295 vn::protocol::uart::FilterMode::FILTERMODE_BOTH, // AccelFilterMode
296 vn::protocol::uart::FilterMode::FILTERMODE_BOTH, // GyroFilterMode
297 vn::protocol::uart::FilterMode::FILTERMODE_BOTH, // TempFilterMode
298 vn::protocol::uart::FilterMode::FILTERMODE_NOFILTERING // PresFilterMode
299 };
300
305 vn::sensors::DeltaThetaAndDeltaVelocityConfigurationRegister _deltaThetaAndDeltaVelocityConfigurationRegister{
306 vn::protocol::uart::IntegrationFrame::INTEGRATIONFRAME_BODY, // IntegrationFrame
307 vn::protocol::uart::CompensationMode::COMPENSATIONMODE_NONE, // GyroCompensation
308 vn::protocol::uart::AccCompensationMode::ACCCOMPENSATIONMODE_NONE, // AccelCompensation
309 vn::protocol::uart::EarthRateCorrection::EARTHRATECORR_NONE // EarthRateCorrection
310 };
311
312 // ###########################################################################################################
313 // GNSS SUBSYSTEM
314 // ###########################################################################################################
315
318 vn::sensors::GpsConfigurationRegister _gpsConfigurationRegister{
319 vn::protocol::uart::GpsMode::GPSMODE_ONBOARDGPS, // Mode
320 vn::protocol::uart::PpsSource::PPSSOURCE_GPSPPSRISING, // PpsSource
321 vn::protocol::uart::GpsRate::GPSRATE_5HZ, // Rate
322 vn::protocol::uart::AntPower::ANTPOWER_INTERNAL // AntPower
323 };
324
329 vn::math::vec3f _gpsAntennaOffset{
330 0, 0, 0 // [m]
331 };
332
338 vn::sensors::GpsCompassBaselineRegister _gpsCompassBaselineRegister{
339 vn::math::vec3f{ 1.0F, 0.0F, 0.0F }, // Position [m]
340 vn::math::vec3f{ 0.254F, 0.254F, 0.254F } // Uncertainty [m]
341 };
342
343 // ###########################################################################################################
344 // ATTITUDE SUBSYSTEM
345 // ###########################################################################################################
346
351 vn::sensors::VpeBasicControlRegister _vpeBasicControlRegister{
352 vn::protocol::uart::VpeEnable::VPEENABLE_ENABLE, // Enable
353 vn::protocol::uart::HeadingMode::HEADINGMODE_RELATIVE, // HeadingMode
354 vn::protocol::uart::VpeMode::VPEMODE_MODE1, // FilteringMode
355 vn::protocol::uart::VpeMode::VPEMODE_MODE1 // TuningMode
356 };
357
362 vn::sensors::VpeMagnetometerBasicTuningRegister _vpeMagnetometerBasicTuningRegister{
363 vn::math::vec3f{ 4.0F, 4.0F, 4.0F }, // BaseTuning [0 - 10]
364 vn::math::vec3f{ 5.0F, 5.0F, 5.0F }, // AdaptiveTuning [0 - 10]
365 vn::math::vec3f{ 5.5F, 5.5F, 5.5F } // AdaptiveFiltering [0 - 10]
366 };
367
372 vn::sensors::VpeAccelerometerBasicTuningRegister _vpeAccelerometerBasicTuningRegister{
373 vn::math::vec3f{ 6.0F, 6.0F, 6.0F }, // BaseTuning [0 - 10]
374 vn::math::vec3f{ 3.0F, 3.0F, 3.0F }, // AdaptiveTuning [0 - 10]
375 vn::math::vec3f{ 5.0F, 5.0F, 5.0F } // AdaptiveFiltering [0 - 10]
376 };
377
382 vn::sensors::VpeGyroBasicTuningRegister _vpeGyroBasicTuningRegister{
383 vn::math::vec3f{ 8.0F, 8.0F, 8.0F }, // VarianceAngularWalk [0 - 10]
384 vn::math::vec3f{ 4.0F, 4.0F, 4.0F }, // BaseTuning [0 - 10]
385 vn::math::vec3f{ 0.0F, 0.0F, 0.0F } // AdaptiveTuning [0 - 10]
386 };
387
392 vn::math::vec3f _filterStartupGyroBias{
393 0, 0, 0 // [rad/s]
394 };
395
396 // ###########################################################################################################
397 // INS SUBSYSTEM
398 // ###########################################################################################################
399
402 vn::sensors::InsBasicConfigurationRegisterVn300 _insBasicConfigurationRegisterVn300{
403 vn::protocol::uart::Scenario::SCENARIO_GPSMOVINGBASELINEDYNAMIC, // Scenario
404 true, // AhrsAiding
405 true // EstBaseline
406 };
407
412 vn::sensors::StartupFilterBiasEstimateRegister _startupFilterBiasEstimateRegister{
413 vn::math::vec3f{ 0, 0, 0 }, // GyroBias [rad/s]
414 vn::math::vec3f{ 0, 0, 0 }, // AccelBias [m/s^2]
415 0.0F // PressureBiasIn [m]
416 };
417
418 // ###########################################################################################################
419 // HARD/SOFT IRON ESTIMATOR SUBSYSTEM
420 // ###########################################################################################################
421
426 vn::sensors::MagnetometerCalibrationControlRegister _magnetometerCalibrationControlRegister{
427 vn::protocol::uart::HsiMode::HSIMODE_RUN, // HSIMode
428 vn::protocol::uart::HsiOutput::HSIOUTPUT_USEONBOARD, // HSIOutput
429 5 // ConvergeRate
430 };
431
432 // ###########################################################################################################
433 // WORLD MAGNETIC & GRAVITY MODULE
434 // ###########################################################################################################
435
440 vn::sensors::MagneticAndGravityReferenceVectorsRegister _magneticAndGravityReferenceVectorsRegister{
441 vn::math::vec3f{ 1.0F, 0.0F, 1.8F }, // MagRef [Gauss]
442 vn::math::vec3f{ 0.0F, 0.0F, -9.793746F } // AccRef [m/s^2]
443 };
444
449 vn::sensors::ReferenceVectorConfigurationRegister _referenceVectorConfigurationRegister{
450 true, // UseMagModel
451 true, // UseGravityModel
452 1000, // RecalcThreshold [m]
453 0.0F, // Year [years]
454 vn::math::vec3d{ 0, 0, 0 } // Position (Lat Lon Alt [deg deg m])
455 };
456
457 // ###########################################################################################################
458 // VELOCITY AIDING
459 // ###########################################################################################################
460
465 vn::sensors::VelocityCompensationControlRegister _velocityCompensationControlRegister{
466 vn::protocol::uart::VelocityCompensationMode::VELOCITYCOMPENSATIONMODE_BODYMEASUREMENT, // Mode
467 0.1F, // VelocityTuning
468 0.01F // RateTuning
469 };
470
471 // ###########################################################################################################
472 // Binary Group GUI Definitions
473 // ###########################################################################################################
474
477 {
479 const char* name = nullptr;
481 int flagsValue = 0;
483 void (*tooltip)() = nullptr;
485 bool (*isEnabled)(VectorNavModel sensorModel, const vn::sensors::BinaryOutputRegister& bor, uint32_t binaryField) =
486 [](VectorNavModel /* sensorModel */, const vn::sensors::BinaryOutputRegister& /* bor */, uint32_t /* binaryField */) { return true; };
488 void (*toggleFields)(VectorNavSensor* sensor, vn::sensors::BinaryOutputRegister& bor, uint32_t& /* binaryField */) = nullptr;
489 };
490
499 // static const std::array<BinaryGroupData, 15> _binaryGroupCommon;
500
505 static const std::array<BinaryGroupData, 10> _binaryGroupTime;
506
509 static const std::array<BinaryGroupData, 11> _binaryGroupIMU;
510
519 static const std::array<BinaryGroupData, 16> _binaryGroupGNSS;
520
525 static const std::array<BinaryGroupData, 9> _binaryGroupAttitude;
526
530 static const std::array<BinaryGroupData, 11> _binaryGroupINS;
531
532 friend class NAV::VectorNavFile;
533};
534
535} // namespace NAV
nlohmann::json json
json namespace
Definition FlowManager.hpp:21
Abstract IMU Class.
The class is responsible for all time-related tasks.
A buffer which is overwriting itself from the start when full.
Abstract Uart Sensor Class.
Binary Outputs from VectorNav Sensors.
Abstract IMU Class.
Definition Imu.hpp:24
The class is responsible for all time-related tasks.
Definition InsTime.hpp:668
A buffer which is overwriting itself from the start when full.
Definition ScrollingBuffer.hpp:29
Abstract Uart Sensor Class.
Definition UartSensor.hpp:26
File Reader for Vector Nav log files.
Definition VectorNavFile.hpp:34
Vector Nav Sensor Class.
Definition VectorNavSensor.hpp:44
static constexpr size_t OUTPUT_PORT_INDEX_ASCII_OUTPUT
Flow (StringObs)
Definition VectorNavSensor.hpp:90
struct NAV::VectorNavSensor::@4 _gnssTimeCounter
Last received GNSS time.
std::array< vn::sensors::BinaryOutputRegister, 3 > _binaryOutputRegister
Binary Output Register 1 - 3.
Definition VectorNavSensor.hpp:236
vn::sensors::MagnetometerCalibrationControlRegister _magnetometerCalibrationControlRegister
Magnetometer Calibration Control.
Definition VectorNavSensor.hpp:426
VectorNavSensor(VectorNavSensor &&)=delete
Move constructor.
std::array< uint64_t, 3 > _lastMessageTimeSinceStartup
Stores the time of the last received message.
Definition VectorNavSensor.hpp:138
vn::sensors::VpeAccelerometerBasicTuningRegister _vpeAccelerometerBasicTuningRegister
VPE Accelerometer Basic Tuning.
Definition VectorNavSensor.hpp:372
json save() const override
Saves the node into a json object.
vn::sensors::MagneticAndGravityReferenceVectorsRegister _magneticAndGravityReferenceVectorsRegister
Magnetic and Gravity Reference Vectors.
Definition VectorNavSensor.hpp:440
static constexpr std::array _possibleAsyncDataOutputFrequency
Possible values for the Async Data Output Frequency Register.
Definition VectorNavSensor.hpp:157
int _asyncDataOutputFrequencySelected
Selected Frequency of the Async Ascii Output in the GUI.
Definition VectorNavSensor.hpp:163
std::array< InsTime, 3 > _lastMessageTime
Stores the time of the last received message.
Definition VectorNavSensor.hpp:135
static const std::array< BinaryGroupData, 10 > _binaryGroupTime
Binary group 1 contains a wide assortment of commonly used data required for most applications.
Definition VectorNavSensor.hpp:505
vn::math::vec3f _filterStartupGyroBias
Filter Startup Gyro Bias.
Definition VectorNavSensor.hpp:392
std::string type() const override
String representation of the Class Type.
VectorNavSensor & operator=(VectorNavSensor &&)=delete
Move assignment operator.
VectorNavModel _sensorModel
The sensor model which is selected in the GUI.
Definition VectorNavSensor.hpp:120
bool _coupleImuRateOutput
Couple the ImuFilter's rate (window size of moving-average filter) to the output rate (rateDivisor)
Definition VectorNavSensor.hpp:192
static void mergeVectorNavBinaryObservations(const std::shared_ptr< VectorNavBinaryOutput > &target, const std::shared_ptr< VectorNavBinaryOutput > &source)
Merges the content of the two observations into one.
static std::string typeStatic()
String representation of the Class Type.
BinaryRegisterMerge
Possible Merge combinations between the binary output registers.
Definition VectorNavSensor.hpp:216
static const std::array< BinaryGroupData, 11 > _binaryGroupIMU
Binary group 3 provides all outputs which are dependent upon the measurements collected from the onbo...
Definition VectorNavSensor.hpp:509
vn::sensors::DeltaThetaAndDeltaVelocityConfigurationRegister _deltaThetaAndDeltaVelocityConfigurationRegister
Delta Theta and Delta Velocity Configuration.
Definition VectorNavSensor.hpp:305
std::shared_ptr< VectorNavBinaryOutput > _binaryOutputRegisterMergeObservation
First observation received, which should be merged together.
Definition VectorNavSensor.hpp:227
void guiConfig() override
ImGui config window which is shown on double click.
vn::sensors::VnSensor _vs
VnSensor Object.
Definition VectorNavSensor.hpp:123
std::string _connectedSensorPort
Connected sensor port.
Definition VectorNavSensor.hpp:126
~VectorNavSensor() override
Destructor.
ScrollingBuffer< std::string > _asciiOutputBuffer
Buffer to store Ascii Output Messages.
Definition VectorNavSensor.hpp:169
static void asciiOrBinaryAsyncMessageReceived(void *userData, vn::protocol::uart::Packet &p, size_t index)
Callback handler for notifications of new asynchronous data packets received.
vn::sensors::VpeGyroBasicTuningRegister _vpeGyroBasicTuningRegister
VPE Gyro Basic Tuning.
Definition VectorNavSensor.hpp:382
std::array< size_t, 3 > _binaryOutputSelectedFrequency
Selected Frequency of the Binary Outputs in the GUI.
Definition VectorNavSensor.hpp:270
static const std::array< BinaryGroupData, 9 > _binaryGroupAttitude
Binary group 5 provides all estimated outputs which are dependent upon the estimated attitude solutio...
Definition VectorNavSensor.hpp:525
vn::math::mat3f _referenceFrameRotationMatrix
Reference Frame Rotation.
Definition VectorNavSensor.hpp:280
vn::protocol::uart::AsciiAsync _asyncDataOutputType
Async Data Output Type Register.
Definition VectorNavSensor.hpp:153
vn::sensors::ImuFilteringConfigurationRegister _imuFilteringConfigurationRegister
IMU Filtering Configuration.
Definition VectorNavSensor.hpp:288
vn::sensors::GpsCompassBaselineRegister _gpsCompassBaselineRegister
GNSS Compass Baseline.
Definition VectorNavSensor.hpp:338
vn::sensors::StartupFilterBiasEstimateRegister _startupFilterBiasEstimateRegister
Startup Filter Bias Estimate.
Definition VectorNavSensor.hpp:412
uint64_t timeSinceStartup
Time since startup when the GNSS time was received.
Definition VectorNavSensor.hpp:144
vn::sensors::GpsConfigurationRegister _gpsConfigurationRegister
GNSS Configuration.
Definition VectorNavSensor.hpp:318
VectorNavSensor()
Default constructor.
void restore(const json &j) override
Restores the node from a json object.
size_t _binaryOutputRegisterMergeIndex
Index of the binary output for the merge observation stored.
Definition VectorNavSensor.hpp:229
static void coupleImuFilterRates(NAV::VectorNavSensor *sensor, vn::sensors::BinaryOutputRegister &bor, uint32_t &binaryField)
Updates the ImuFilter's rate when pressing the checkbox button.
VectorNavModel
VectorNav Model enumeration.
Definition VectorNavSensor.hpp:111
@ VN310
VN-310/E (Tactical-Grade GNSS/INS with Integrated GNSS-Compass)
InsTime lastGnssTime
Last GNSS time received.
Definition VectorNavSensor.hpp:143
vn::sensors::VpeMagnetometerBasicTuningRegister _vpeMagnetometerBasicTuningRegister
VPE Magnetometer Basic Tuning.
Definition VectorNavSensor.hpp:362
bool initialize() override
Initialize the node.
int _asciiOutputBufferSize
Max size of the Ascii Output.
Definition VectorNavSensor.hpp:166
VectorNavSensor(const VectorNavSensor &)=delete
Copy constructor.
vn::math::vec3f _gpsAntennaOffset
GNSS Antenna A Offset.
Definition VectorNavSensor.hpp:329
static constexpr double IMU_DEFAULT_FREQUENCY
Internal Frequency of the Sensor.
Definition VectorNavSensor.hpp:129
static std::string category()
String representation of the Class Category.
vn::sensors::SynchronizationControlRegister _synchronizationControlRegister
Synchronization Control.
Definition VectorNavSensor.hpp:175
vn::sensors::VpeBasicControlRegister _vpeBasicControlRegister
VPE Basic Control.
Definition VectorNavSensor.hpp:351
void deinitialize() override
Deinitialize the node.
vn::sensors::CommunicationProtocolControlRegister _communicationProtocolControlRegister
Communication Protocol Control.
Definition VectorNavSensor.hpp:204
TimeSync _timeSyncOut
Time synchronization for master sensors.
Definition VectorNavSensor.hpp:186
uint32_t _asyncDataOutputFrequency
Async Data Output Frequency Register.
Definition VectorNavSensor.hpp:161
BinaryRegisterMerge _binaryOutputRegisterMerge
Merge binary output registers together. This has to be done because VectorNav sensors have a buffer o...
Definition VectorNavSensor.hpp:224
VectorNavSensor & operator=(const VectorNavSensor &)=delete
Copy assignment operator.
vn::sensors::ReferenceVectorConfigurationRegister _referenceVectorConfigurationRegister
Reference Vector Configuration.
Definition VectorNavSensor.hpp:449
bool _syncInPin
Show the SyncIn Pin.
Definition VectorNavSensor.hpp:189
static const std::array< BinaryGroupData, 11 > _binaryGroupINS
Binary group 6 provides all estimated outputs which are dependent upon the onboard INS state solution...
Definition VectorNavSensor.hpp:530
vn::sensors::InsBasicConfigurationRegisterVn300 _insBasicConfigurationRegisterVn300
INS Basic Configuration.
Definition VectorNavSensor.hpp:402
std::pair< std::vector< uint16_t >, std::vector< std::string > > _dividerFrequency
First: List of RateDividers, Second: List of Matching Frequencies.
Definition VectorNavSensor.hpp:132
bool resetNode() override
Resets the node. It is guaranteed that the node is initialized when this is called.
vn::sensors::VelocityCompensationControlRegister _velocityCompensationControlRegister
Velocity Compensation Control.
Definition VectorNavSensor.hpp:465
static const std::array< BinaryGroupData, 16 > _binaryGroupGNSS
Binary group 4 provides all outputs which are dependent upon the measurements collected from the prim...
Definition VectorNavSensor.hpp:519
Needed data to display a binary group in the GUI.
Definition VectorNavSensor.hpp:477
void(* toggleFields)(VectorNavSensor *sensor, vn::sensors::BinaryOutputRegister &bor, uint32_t &)
Function to toggle other bits depending on the status.
Definition VectorNavSensor.hpp:488
int flagsValue
Enum value of the output.
Definition VectorNavSensor.hpp:481
void(* tooltip)()
Function providing a tooltip.
Definition VectorNavSensor.hpp:483
const char * name
Name of the output.
Definition VectorNavSensor.hpp:479
bool(* isEnabled)(VectorNavModel sensorModel, const vn::sensors::BinaryOutputRegister &bor, uint32_t binaryField)
Function which checks if the ouput is enabled (e.g. for a sensorModel)
Definition VectorNavSensor.hpp:485
Information needed to sync Master/Slave sensors.
Definition VectorNavSensor.hpp:48
InsTime ppsTime
Time of the last message with GNSS Time available (or empty otherwise)
Definition VectorNavSensor.hpp:49
uint32_t syncOutCnt
The number of SyncOut trigger events that have occurred.
Definition VectorNavSensor.hpp:50