99 static int lidarOdometryCallbackCounter__ = -1;
100 static Eigen::Isometry3d lio_T_M_LKm1__;
101 static double lidarOdometryTimeKm1__ = 0;
104 ++lidarOdometryCallbackCounter__;
106 Eigen::Isometry3d lio_T_M_Lk;
110 double lidarOdometryTimeK = odomLidarPtr->header.stamp.toSec();
115 const std::string& fixedFrameName = odomLidarPtr->header.frame_id;
122 if (lidarOdometryCallbackCounter__ <= 2) {
132 lio_T_M_LKm1__ = lio_T_M_Lk;
133 lidarOdometryTimeKm1__ = lidarOdometryTimeK;
145 const sensor_msgs::NavSatFix::ConstPtr& rightGnssMsgPtr) {
147 static Eigen::Vector3d accumulatedLeftCoordinates__(0.0, 0.0, 0.0);
148 static Eigen::Vector3d accumulatedRightCoordinates__(0.0, 0.0, 0.0);
150 static int gnssCallbackCounter__ = 0;
153 ++gnssCallbackCounter__;
154 Eigen::Vector3d leftGnssCoord = Eigen::Vector3d(leftGnssMsgPtr->latitude, leftGnssMsgPtr->longitude, leftGnssMsgPtr->altitude);
155 Eigen::Vector3d rightGnssCoord = Eigen::Vector3d(rightGnssMsgPtr->latitude, rightGnssMsgPtr->longitude, rightGnssMsgPtr->altitude);
156 Eigen::Vector3d leftGnssCovarianceXYZ(leftGnssMsgPtr->position_covariance[0], leftGnssMsgPtr->position_covariance[4],
157 leftGnssMsgPtr->position_covariance[8]);
158 Eigen::Vector3d rightGnssCovarianceXYZ(rightGnssMsgPtr->position_covariance[0], rightGnssMsgPtr->position_covariance[4],
159 rightGnssMsgPtr->position_covariance[8]);
164 accumulatedLeftCoordinates__ += leftGnssCoord;
165 accumulatedRightCoordinates__ += rightGnssCoord;
166 if (!(gnssCallbackCounter__ % 10)) {
167 REGULAR_COUT <<
" NOT ENOUGH Gnss MESSAGES ARRIVED!" << std::endl;
170 }
else if (gnssCallbackCounter__ ==
174 gnssHandlerPtr_->initHandler(meanLeftCoordinates, meanRightCoordinates);
178 Eigen::Vector3d W_t_W_GnssL, W_t_W_GnssR;
179 gnssHandlerPtr_->convertNavSatToPositions(leftGnssCoord, rightGnssCoord, W_t_W_GnssL, W_t_W_GnssR);
180 double yaw_W_C =
gnssHandlerPtr_->computeYaw(W_t_W_GnssL, W_t_W_GnssR);
189 REGULAR_COUT <<
" Set yaw and position successfully." << std::endl;
197 Eigen::Matrix<double, 1, 1> gnssHeadingUnaryNoise(std::max(5.0 * leftGnssCovarianceXYZ.maxCoeff(),
gnssHeadingUnaryNoise_));
200 leftGnssMsgPtr->header.stamp.toSec(), 1.0, yaw_W_C, gnssHeadingUnaryNoise, fixedFrameName,
staticTransformsPtr_->getWorldFrame());
213 leftGnssMsgPtr->header.stamp.toSec(), 1.0, W_t_W_GnssL, leftGnssCovarianceXYZ, fixedFrameName,
227 rightGnssMsgPtr->header.stamp.toSec(), 1.0, W_t_W_GnssR, rightGnssCovarianceXYZ, fixedFrameName,