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;
47 Eigen::Matrix4d::Identity(), Eigen::Matrix4d::Identity(),
motionNoise);
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());
55 filter.setMeasurementModel(Eigen::Matrix4d::Identity(), measurementNoise);
60 state.setMean(pose2d);
61 state.setCovariance(Eigen::Vector4d(translationSensorStdDev * translationSensorStdDev * 10,
62 translationSensorStdDev * translationSensorStdDev * 10,
63 rotationSensorStdDev * rotationSensorStdDev * 10,
64 rotationSensorStdDev * rotationSensorStdDev * 10)
72 const IceUtil::Time& deltaT)
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 =
85 motionNoise.getCovariance() * Eigen::Vector4d(std::abs(currentVelocity(0)),
86 std::abs(currentVelocity(1)),
91 Gaussian adjustedMotionNoise(Eigen::Vector4d::Zero(), adjustedMotionNoiseCov);
93 Eigen::Matrix4d::Identity(), Eigen::Matrix4d::Identity(), adjustedMotionNoise);