8#ifndef EXCAVATOR_ESTIMATOR_H
9#define EXCAVATOR_ESTIMATOR_H
15#include <message_filters/subscriber.h>
16#include <message_filters/sync_policies/exact_time.h>
17#include <message_filters/synchronizer.h>
18#include <nav_msgs/Odometry.h>
19#include <nav_msgs/Path.h>
20#include <sensor_msgs/Imu.h>
21#include <sensor_msgs/NavSatFix.h>
22#include <tf/transform_listener.h>
31#define NUM_GNSS_CALLBACKS_UNTIL_START 20
32#define GNSS_POSITION_COVARIANCE_VIOLATION_THRESHOLD 0.2
33#define GNSS_HEADING_COVARIANCE_VIOLATION_THRESHOLD 1.0
57 const std::shared_ptr<holistic_fusion::SafeIntegratedNavState>& preIntegratedNavStatePtr,
58 const std::shared_ptr<holistic_fusion::SafeNavStateWithCovarianceAndBias>& optimizedStateWithCovarianceAndBiasPtr)
override;
63 void gnssCallback_(
const sensor_msgs::NavSatFix::ConstPtr& leftGnssPtr,
const sensor_msgs::NavSatFix::ConstPtr& rightGnssPtr);
86 typedef message_filters::sync_policies::ExactTime<sensor_msgs::NavSatFix, sensor_msgs::NavSatFix>
GnssExactSyncPolicy;
90 std::chrono::time_point<std::chrono::high_resolution_clock>
startTime_;
91 std::chrono::time_point<std::chrono::high_resolution_clock>
currentTime_;
void readParams(const ros::NodeHandle &privateNode) override
message_filters::Subscriber< sensor_msgs::NavSatFix > subGnssLeft_
ros::Publisher pubMeasWorldGnssLPath_
Eigen::Matrix< double, 6, 1 > lioSe3AlignmentRandomWalk_
ros::Publisher pubMeasWorldGnssRPath_
std::chrono::time_point< std::chrono::high_resolution_clock > currentTime_
double gnssPositionUnaryNoise_
double gnssHeadingUnaryNoise_
Eigen::Matrix< double, 6, 1 > lioPoseUnaryNoise_
message_filters::sync_policies::ExactTime< sensor_msgs::NavSatFix, sensor_msgs::NavSatFix > GnssExactSyncPolicy
nav_msgs::PathPtr measLio_mapImuPathPtr_
void initializeSubscribers(ros::NodeHandle &privateNode) override
virtual void publishState(const std::shared_ptr< holistic_fusion::SafeIntegratedNavState > &preIntegratedNavStatePtr, const std::shared_ptr< holistic_fusion::SafeNavStateWithCovarianceAndBias > &optimizedStateWithCovarianceAndBiasPtr) override
std::chrono::time_point< std::chrono::high_resolution_clock > startTime_
nav_msgs::PathPtr measGnss_worldGnssRPathPtr_
message_filters::Subscriber< sensor_msgs::NavSatFix > subGnssRight_
void gnssCallback_(const sensor_msgs::NavSatFix::ConstPtr &leftGnssPtr, const sensor_msgs::NavSatFix::ConstPtr &rightGnssPtr)
nav_msgs::PathPtr measGnss_worldGnssLPathPtr_
void initializePublishers(ros::NodeHandle &privateNode) override
~ExcavatorEstimator()=default
Eigen::Matrix< double, 6, 1 > initialSe3AlignmentStdDev_
ExcavatorEstimator(std::shared_ptr< ros::NodeHandle > privateNodePtr)
ros::Subscriber subLidarOdometry_
bool useLioOdometryFlag_
Flags.
void lidarOdometryCallback_(const nav_msgs::Odometry::ConstPtr &lidar_odom_ptr)
tf::TransformListener tfListener_
boost::shared_ptr< message_filters::Synchronizer< GnssExactSyncPolicy > > gnssExactSyncPtr_
ros::Publisher pubMeasMapLioPath_
void initializeMessages(ros::NodeHandle &privateNode) override
std::shared_ptr< holistic_fusion::GnssHandler > gnssHandlerPtr_
ros::NodeHandle privateNode