public class PositionFromPairLinear2
extends java.lang.Object
Given two views of N objects and the known rotation, estimate the translation. A linear system is constructed from the equations below and solved for. A minimum of two point observations is required since rotation is already known. This high level characteristics of this algorithm was stated in [1], but the mathematics were not described or sketched.
Derivation:
λx = R*X + T 0 = hat(x)*R*X + hat(x)*T hat(x)*T = -hat(x)*R*Xwhere hat(x) is the cross product matrix of the homogeneous (x,y,1) vector, R is a rotation matrix, T is the known translation, and X is the known point in 3D.
[1] Tardif, J.-P., Pavlidis, Y., and Daniilidis, K. "Monocular visual odometry in urban environments using an omnidirectional camera," IROS 2008
| Constructor and Description |
|---|
PositionFromPairLinear2() |
| Modifier and Type | Method and Description |
|---|---|
georegression.struct.point.Vector3D_F64 |
getT() |
boolean |
process(org.ejml.data.DenseMatrix64F R,
java.util.List<georegression.struct.point.Point3D_F64> worldPts,
java.util.List<georegression.struct.point.Point2D_F64> observed)
Computes the translation given two or more feature observations and the known rotation
|
public boolean process(org.ejml.data.DenseMatrix64F R,
java.util.List<georegression.struct.point.Point3D_F64> worldPts,
java.util.List<georegression.struct.point.Point2D_F64> observed)
R - Rotation matrix. World to view.worldPts - Location of features in world coordinates.observed - Observations of point in current view. Normalized coordinates.public georegression.struct.point.Vector3D_F64 getT()