77 ARMARX_DEBUG_S <<
"MotionModelStaticObject::getUncertaintyInternal()";
79 if (uncertaintyAtLastLocalization)
82 Eigen::Matrix4f oldRobotPose, newRobotPose;
84 const float positionDistance =
85 (oldRobotPose.block<3, 1>(0, 3) - newRobotPose.block<3, 1>(0, 3)).
norm();
86 const float positionChangeUncertaintyFactor = 0.1 * positionDistance;
87 float additionalUncertaintyFactor = positionChangeUncertaintyFactor;
89 << positionChangeUncertaintyFactor;
92 IceUtil::Time timeAtLastLocalization =
93 armarx::TimestampVariantPtr::dynamicCast(timeOfLastSuccessfulLocalization)
95 IceUtil::Time timeSinceLastLocalization = IceUtil::Time::now() - timeAtLastLocalization;
96 const float timeUncertaintyFactor =
97 0.0005 * abs(timeSinceLastLocalization.toMilliSeconds());
98 additionalUncertaintyFactor += timeUncertaintyFactor;
99 ARMARX_DEBUG_S <<
"timeUncertaintyFactor: " << timeUncertaintyFactor;
101 Eigen::Matrix3f additionalUncertainty = additionalUncertaintyFactor *
102 additionalUncertaintyFactor *
103 Eigen::Matrix3f::Identity();
104 Eigen::Matrix3f oldUncertainty =
105 MultivariateNormalDistributionPtr::dynamicCast(uncertaintyAtLastLocalization)
106 ->toEigenCovariance();
107 Eigen::Matrix3f newUncertainty = oldUncertainty + additionalUncertainty;
110 ARMARX_DEBUG_S <<
"additionalUncertainty: " << additionalUncertainty;
114 armarx::Vector3Ptr::dynamicCast(poseAtLastLocalization->position)->toEigen(),
123 Eigen::Matrix4f& newRobotPose)
125 oldRobotPose = Eigen::Matrix4f::Identity();
126 newRobotPose = Eigen::Matrix4f::Identity();
128 if (globalRobotPoseAtLastLocalization)
131 armarx::PosePtr::dynamicCast(globalRobotPoseAtLastLocalization)->toEigen();
132 newRobotPose = armarx::PosePtr::dynamicCast(
133 robotStateProxy->getSynchronizedRobot()->getGlobalPose())