32 double initialRotation,
33 double translationSensorStdDev,
34 double rotationSensorStdDev,
35 double translationVelocitySensorStdDev,
36 double rotationVelocitySensorStdDev)
38 pose.head(2) = initialPosition;
39 pose(2) = initialRotation;
40 Eigen::Vector4d motionNoiseCov;
41 motionNoiseCov << translationVelocitySensorStdDev * translationVelocitySensorStdDev,
42 translationVelocitySensorStdDev * translationVelocitySensorStdDev,
43 rotationVelocitySensorStdDev * rotationVelocitySensorStdDev,
44 rotationVelocitySensorStdDev * rotationVelocitySensorStdDev;
49 Eigen::Vector4d measurementNoiseCov;
50 measurementNoiseCov << translationSensorStdDev * translationSensorStdDev,
51 translationSensorStdDev * translationSensorStdDev,
52 rotationSensorStdDev * rotationSensorStdDev,
53 rotationSensorStdDev * rotationSensorStdDev;
54 Gaussian measurementNoise(Eigen::Vector4d::Zero(), measurementNoiseCov.asDiagonal());
61 state.
setCovariance(Eigen::Vector4d(translationSensorStdDev * translationSensorStdDev * 10,
62 translationSensorStdDev * translationSensorStdDev * 10,
63 rotationSensorStdDev * rotationSensorStdDev * 10,
64 rotationSensorStdDev * rotationSensorStdDev * 10)
74 Eigen::Matrix2d rotation = Eigen::Rotation2Dd(
pose(2)).matrix();
75 Eigen::Vector2d globalV0 = rotation * Eigen::Vector2d(velX, velY);
76 Eigen::Vector4d currentVelocity;
77 currentVelocity << globalV0(0), globalV0(1), -velTheta * sin(
pose(2)),
78 velTheta * cos(
pose(2));
81 auto posDelta = currentVelocity * deltaT.toSecondsDouble();
84 Eigen::MatrixXd adjustedMotionNoiseCov =
91 Gaussian adjustedMotionNoise(Eigen::Vector4d::Zero(), adjustedMotionNoiseCov);
103 Eigen::Vector4d pose2d =
transformPose(Eigen::Vector3d(
x, y, alpha));
111 const Eigen::Vector3d&
120 return pose.head<2>();
132 Eigen::Matrix3d result;
153 Eigen::Vector4d pose2d;
167 ori = Eigen::AngleAxisd(
angle, Eigen::Vector3d::UnitZ());
168 Eigen::Vector3d result;