31#ifndef DWFRAMEWORK_DWNODES_EGOMOTION_DWRELATIVEEGOMOTIONIMUNODE_IMPL_DWRELATIVEEGOMOTIONIMUNODEIMPL_HPP_
32#define DWFRAMEWORK_DWNODES_EGOMOTION_DWRELATIVEEGOMOTIONIMUNODE_IMPL_DWRELATIVEEGOMOTIONIMUNODEIMPL_HPP_
38#include <dw/sensors/imu/IMU.h>
39#include <dw/sensors/canbus/CAN.h>
40#include <dw/egomotion/EgomotionState.h>
41#include <dw/rig/Rig.hpp>
51 static constexpr char LOG_TAG[] =
"dwRelativeEgomotionIMUNode";
54 const dwContextHandle_t ctx);
97 void monitorSignals(dwTime_t
const currentHostTime, dwTime_t
const latestEgomotionTimestamp)
const;
106 const dwContextHandle_t
m_ctx = DW_NULL_HANDLE;
128 void monitorVIOTimeOffset(
const dwTime_t& currentHostTime)
const;
129 void monitorIMUTimeOffset(
const dwTime_t& currentHostTime)
const;
130 void monitorEgomotionTimeOffset(
const dwTime_t& currentHostTime,
const dwTime_t& latestEgomotionTimestamp)
const;
132 dwStatus processAddIMU();
133 dwStatus processAddVehicleState();
134 dwStatus processUpdateIMUExtrinsics();
135 dwStatus processUpdateWheelRadii();
136 dwStatus processSendState();
138 bool m_shutdown =
false;
static const uint64_t MINIMUM_INPUT_COUNT
dwRelativeEgomotionIMUNodeImpl(const dwContextHandle_t ctx)
dwEgomotionHandle_t & getEgomotionHandle()
static const dwTime_t INITIALIZATION_TIMEOUT
dwRelativeEgomotionIMUNodeImpl(const dwRelativeEgomotionIMUNodeInitParams ¶ms, const dwContextHandle_t ctx)
void sendRoadCast(ManagedPortOutput< dwEgomotionResultPayload > &resultPayloadPort, ManagedPortOutput< dwTransformation3fPayload > &transPayloadPort, ManagedPortOutput< dwEgomotionPosePayload > &posePayloadPort)
void monitorSignals(dwTime_t const currentHostTime, dwTime_t const latestEgomotionTimestamp) const
dwTime_t m_latestVioTimestamp
dwStatus reset() override
uint64_t m_vioInputCounter
dwStatus validate() override
dwStatus setupImpl() override
dwStatus sendState(ManagedPortOutput< dwEgomotionStateHandle_t > &egomotionStatePort, ManagedPortOutput< dwEgomotionResultPayload > &resultPayloadPort, ManagedPortOutput< dwTransformation3fPayload > &transPayloadPort, ManagedPortOutput< dwEgomotionPosePayload > &posePayloadPort)
const dwContextHandle_t m_ctx
dwStatus updateIMUExtrinsics(ManagedPortInput< dwSensorNodeProperties > &imuExtrinsicPort)
dwTime_t m_latestIMUTimestamp
dwStatus updateWheelRadii(ManagedPortInput< dwCalibratedWheelRadii > &wheelRadiiPort)
dwStatus addIMU(ManagedPortInput< dwIMUFrame > &imuFramePort)
~dwRelativeEgomotionIMUNodeImpl() override
void initializeParams(const dwRelativeEgomotionIMUNodeInitParams ¶ms)
static const dwTime_t MISSING_SIGNAL_TIMEOUT
dwStatus executeAsyncReset() override
dwStatus sendState(ManagedPortOutput< dwEgomotionStateHandle_t > &egomotionStatePort, ManagedPortOutput< dwEgomotionResultPayload > &resultPayloadPort, ManagedPortOutput< dwTransformation3fPayload > &transPayloadPort, ManagedPortOutput< dwEgomotionPosePayload > &posePayloadPort, ManagedPortOutput< dwCalibratedIMUIntrinsics > &IMUIntrinsicsPort)
static constexpr char LOG_TAG[]
dwStatus addVehicleState(ManagedPortInput< dwVehicleIOSafetyState > &vehicleSafetyStatePort, ManagedPortInput< dwVehicleIONonSafetyState > &vehicleNonSafetyStatePort, ManagedPortInput< dwVehicleIOActuationFeedback > &vehicleActuationFeedbackPort)
dwStatus setAsyncReset() override
dwEgomotionHandle_t m_egomotion
dwEgomotionParameters m_egomotionParams
dwStatus preShutdown() override
const dwEgomotionParameters & getEgomotionParameters()
uint64_t m_imuInputCounter
dwStatus sendGyroBias(ManagedPortOutput< dwCalibratedIMUIntrinsics > &IMUIntrinsicsPort)