1 #ifndef ADVANCED_NAVIGATION_ANPP_DRIVER_HPP 2 #define ADVANCED_NAVIGATION_ANPP_DRIVER_HPP 4 #include <imu_advanced_navigation_anpp/DeviceInformation.hpp> 5 #include <imu_advanced_navigation_anpp/Status.hpp> 6 #include <imu_advanced_navigation_anpp/Configuration.hpp> 7 #include <imu_advanced_navigation_anpp/CurrentConfiguration.hpp> 8 #include <iodrivers_base/Driver.hpp> 9 #include <base/samples/RigidBodyState.hpp> 10 #include <base/samples/RigidBodyAcceleration.hpp> 11 #include <base/samples/IMUSensors.hpp> 12 #include <gps_base/BaseTypes.hpp> 13 #include <gps_base/UTMConverter.hpp> 49 class Driver :
public iodrivers_base::Driver
52 static constexpr
int PACKET_ID_COUNT = 256;
54 bool mUseDeviceTime =
false;
55 uint8_t mLastPacketID = 0;
56 base::Time mCurrentTimestamp;
57 Eigen::Quaterniond
const ned2nwu;
59 gps_base::UTMConverter mUTMConverter;
60 std::vector<uint32_t> mLastPackets;
61 std::vector<std::pair<uint32_t, uint8_t>> mPacketPeriods;
63 base::samples::RigidBodyState mWorld;
64 base::samples::RigidBodyState mBody;
65 base::samples::RigidBodyAcceleration mAcceleration;
66 base::samples::IMUSensors mIMUSensors;
67 gps_base::Solution mGeodeticPosition;
68 gps_base::Solution mGNSSSolution;
69 gps_base::SolutionQuality mGNSSSolutionQuality;
70 gps_base::SatelliteInfo mGNSSSatelliteInfo;
73 void updateWorldFromGeodetic();
75 int extractPacket(uint8_t
const* buffer,
size_t buffer_size)
const;
78 template<
typename Packet>
79 void dispatch(uint8_t
const* packet, uint8_t
const* packet_end);
96 void processDetailedSatellites(uint8_t
const* packet, uint8_t
const* packet_end);
101 void openURI(std::string
const& uri);
108 void setDeviceBaudrate(uint32_t rate);
118 bool getUseDeviceTime()
const;
128 void setUseDeviceTime(
bool enable);
131 void clearPeriodicPackets();
144 base::Time readTime();
156 Status getIMUStatus()
const;
160 base::samples::RigidBodyState getWorldRigidBodyState()
const;
166 base::samples::RigidBodyState getBodyRigidBodyState()
const;
169 base::samples::RigidBodyAcceleration getAcceleration()
const;
172 base::samples::IMUSensors getIMUSensors()
const;
175 gps_base::Solution getGNSSSolution()
const;
178 gps_base::SolutionQuality getGNSSSolutionQuality()
const;
181 gps_base::SatelliteInfo getGNSSSatelliteInfo()
const;
191 void setStatusPeriod(
int period);
196 void setUTM(
int zone,
bool north,
197 Eigen::Vector3d
const& local_origin = Eigen::Vector3d::Zero());
212 void setPositionPeriod(
int period,
bool with_errors =
true);
225 void setOrientationPeriod(
int period,
bool with_errors =
true);
237 void setNEDVelocityPeriod(
int period,
bool with_errors =
true);
250 void setAccelerationPeriod(
int period);
262 void setBodyVelocityPeriod(
int period);
274 void setAngularVelocityPeriod(
int period);
286 void setAngularAccelerationPeriod(
int period);
297 void setRawSensorsPeriod(
int period);
307 void setGNSSPeriod(
int period);
317 void setGNSSSatelliteSummaryPeriod(
int period);
327 void setGNSSSatelliteDetailsPeriod(
int period);
333 void setNorthSeekingInitializationStatusPeriod(
int period);
341 void setCurrentTimestamp(base::Time
const& time);
345 base::Time getCurrentTimestamp()
const;
374 void resetPollSynchronization();
Definition: Driver.hpp:19
Definition: Driver.hpp:21
Definition: Protocol.hpp:690
Definition: Driver.hpp:49
Definition: Protocol.hpp:584
Definition: Protocol.hpp:710
Definition: CurrentConfiguration.hpp:8
Definition: Protocol.hpp:522
Definition: Protocol.hpp:410
uint8_t packet_id
Definition: Protocol.hpp:121
Definition: Protocol.hpp:821
uint16_t period
Definition: Protocol.hpp:178
Definition: Protocol.hpp:841
Definition: Protocol.hpp:796
Definition: Protocol.hpp:771
RESET_MODE
Definition: Driver.hpp:17
Definition: Protocol.hpp:881
Definition: Driver.hpp:20
Definition: Protocol.hpp:429
Definition: Protocol.hpp:393
Definition: Protocol.hpp:449
uint8_t clear_existing
Definition: Protocol.hpp:180
Definition: Configuration.hpp:10
Definition: Protocol.hpp:489
Definition: Configuration.hpp:8
Definition: Protocol.hpp:730
Definition: Status.hpp:11
Definition: Protocol.hpp:469