Isis 3 Programmer Reference
|
Implements range constraint between image position and lidar point acquired simultaneously with the image. More...
#include <BundleLidarRangeConstraint.h>
Public Member Functions | |
BundleLidarRangeConstraint (LidarControlPointQsp lidarControlPoint, BundleMeasureQsp measure) | |
constructor | |
BundleLidarRangeConstraint (const BundleLidarRangeConstraint &src) | |
Copy constructor. | |
~BundleLidarRangeConstraint () | |
Destructor. | |
BundleLidarRangeConstraint & | operator= (const BundleLidarRangeConstraint &src) |
Assignment operator. | |
bool | applyConstraint (SparseBlockMatrix &normalsMatrix, LinearAlgebra::MatrixUpperTriangular &N22, SparseBlockColumnMatrix &N12, LinearAlgebra::VectorCompressed &n1, LinearAlgebra::Vector &n2) |
Computes partial derivatives of range condition equation and adds contribution into the bundle adjustment normal equation matrices. | |
double | vtpv () |
Return current value of weighted sum-of-squares of residual. | |
void | errorPropagation () |
TODO: to be completed. | |
void | computeRange () |
Compute range between spacecraft & lidar point on surface given the current values of the spacecraft position & lidar point coordinates in the bundle adjustment. | |
double | rangeObserved () |
Return observed lidar range. | |
double | rangeComputed () |
Return computed lidar range. | |
double | rangeObservedSigma () |
Return sigma of range observation. | |
double | rangeAdjustedSigma () |
Return adjusted sigma of range observation. | |
QString | formatBundleOutputString (bool errorProp=false) |
Creates & returns formatted QString for lidar range constraint to output to bundleout_lidar.csv file. | |
Private Attributes | |
LidarControlPointQsp | m_lidarControlPoint |
Parent lidar control point. | |
BundleObservationQsp | m_bundleObservation |
BundleObservation associated with measure. | |
BundleMeasureQsp | m_simultaneousMeasure |
double | m_dX |
! 2D image point corresponding to 3D lidar point on surface. | |
double | m_dY |
double | m_dZ |
double | m_rangeObserved |
! deltas between spacecraft & lidar point in body-fixed coordinates | |
double | m_rangeComputed |
Computed range from distance condition. | |
double | m_rangeObservedSigma |
Uncertainty of observed range. | |
double | m_rangeObservedWeightSqrt |
Square-root of observed range weight. | |
double | m_adjustedSigma |
Adjusted uncertainty of range. | |
double | m_vtpv |
Weighted sum-of-squares of residual. | |
Implements range constraint between image position and lidar point acquired simultaneously with the image.
2018-04-13 Ken Edmundson - Original version.
2018-06-27 Ken Edmundson - Code clean up.
2018-06-28 Ken Edmundson - Removed partial derivative matrices as member variables and now declare them as static in the applyConstraint method. Now coeff_range_image matrix is resized if number of image parameters changes. This is consistent with BundleAdjust::computePartials. Added IExceptions to verify m_rangeObserved and m_rangeComputed are positive.
2021-12-20 Jesse Mapel - Removed parent BundleConstraint class.
Definition at line 40 of file BundleLidarRangeConstraint.h.
Isis::BundleLidarRangeConstraint::BundleLidarRangeConstraint | ( | LidarControlPointQsp | lidarControlPoint, |
BundleMeasureQsp | measure ) |
constructor
lidarControlPoint | input lidar control point |
measure | associated BundleMeasureQsp. |
Definition at line 26 of file BundleLidarRangeConstraint.cpp.
References computeRange(), Isis::Camera::Csm, m_adjustedSigma, m_bundleObservation, m_dX, m_lidarControlPoint, m_rangeObserved, m_rangeObservedSigma, m_rangeObservedWeightSqrt, and Isis::IException::Programmer.
Isis::BundleLidarRangeConstraint::BundleLidarRangeConstraint | ( | const BundleLidarRangeConstraint & | src | ) |
Copy constructor.
Constructs a BundleLidarRangeConstraint from another.
src | Source BundleLidarRangeConstraint to copy. |
Definition at line 81 of file BundleLidarRangeConstraint.cpp.
References m_adjustedSigma, m_dX, m_rangeComputed, m_rangeObserved, m_rangeObservedSigma, m_rangeObservedWeightSqrt, and m_vtpv.
Isis::BundleLidarRangeConstraint::~BundleLidarRangeConstraint | ( | ) |
Destructor.
Definition at line 70 of file BundleLidarRangeConstraint.cpp.
bool Isis::BundleLidarRangeConstraint::applyConstraint | ( | SparseBlockMatrix & | normalsMatrix, |
LinearAlgebra::MatrixUpperTriangular & | N22, | ||
SparseBlockColumnMatrix & | N12, | ||
LinearAlgebra::VectorCompressed & | n1, | ||
LinearAlgebra::Vector & | n2 ) |
Computes partial derivatives of range condition equation and adds contribution into the bundle adjustment normal equation matrices.
normalsMatrix | Bundle Adjustment normal equations matrix. |
N22 | Normal equation matrix for the point. |
N12 | Normal equations block between image and point. |
n1 | Right hand side vector for the images and target body. |
n2 | Right hand side vector for the point. |
< Partials w/r to image position
< Partials w/r to lidar point
< Right hand side of normals
Definition at line 181 of file BundleLidarRangeConstraint.cpp.
References Isis::SurfacePoint::GetLatitude(), Isis::SurfacePoint::GetLocalRadius(), Isis::SurfacePoint::GetLongitude(), Isis::Distance::kilometers(), m_bundleObservation, m_dX, m_lidarControlPoint, m_rangeComputed, m_rangeObserved, m_rangeObservedWeightSqrt, Isis::IException::Programmer, and Isis::Angle::radians().
void Isis::BundleLidarRangeConstraint::computeRange | ( | ) |
Compute range between spacecraft & lidar point on surface given the current values of the spacecraft position & lidar point coordinates in the bundle adjustment.
Steps are as follows...
1) set image to establish camera model for simultaneous measure 2) get spacecraft & lidar point coordinates in body-fixed reference system 3) compute & save dX, dY, dZ between spacecraft & lidar point 4) compute range with dX, dY, dZ
Definition at line 134 of file BundleLidarRangeConstraint.cpp.
References Isis::Displacement::kilometers(), m_dX, m_lidarControlPoint, m_rangeComputed, and Isis::IException::Programmer.
Referenced by BundleLidarRangeConstraint(), and vtpv().
void Isis::BundleLidarRangeConstraint::errorPropagation | ( | ) |
TODO: to be completed.
Error propagation for adjusted range sigma using distance equation.
Definition at line 405 of file BundleLidarRangeConstraint.cpp.
QString Isis::BundleLidarRangeConstraint::formatBundleOutputString | ( | bool | errorProp = false | ) |
Creates & returns formatted QString for lidar range constraint to output to bundleout_lidar.csv file.
errorProp | Bool indicating if error propagation is ON in the bundle adjustment. |
Definition at line 419 of file BundleLidarRangeConstraint.cpp.
References m_adjustedSigma, m_lidarControlPoint, m_rangeComputed, m_rangeObserved, and m_rangeObservedSigma.
BundleLidarRangeConstraint & Isis::BundleLidarRangeConstraint::operator= | ( | const BundleLidarRangeConstraint & | src | ) |
Assignment operator.
Assigns state of this BundleLidarRangeConstraint from another.
src | Source BundleLidarRangeConstraint to assign state from. |
Definition at line 104 of file BundleLidarRangeConstraint.cpp.
References m_adjustedSigma, m_dX, m_rangeComputed, m_rangeObserved, m_rangeObservedSigma, m_rangeObservedWeightSqrt, and m_vtpv.
double Isis::BundleLidarRangeConstraint::rangeAdjustedSigma | ( | ) |
Return adjusted sigma of range observation.
Definition at line 369 of file BundleLidarRangeConstraint.cpp.
References m_adjustedSigma.
double Isis::BundleLidarRangeConstraint::rangeComputed | ( | ) |
Return computed lidar range.
Definition at line 347 of file BundleLidarRangeConstraint.cpp.
References m_rangeComputed.
double Isis::BundleLidarRangeConstraint::rangeObserved | ( | ) |
Return observed lidar range.
Definition at line 336 of file BundleLidarRangeConstraint.cpp.
References m_rangeObserved.
double Isis::BundleLidarRangeConstraint::rangeObservedSigma | ( | ) |
Return sigma of range observation.
Definition at line 358 of file BundleLidarRangeConstraint.cpp.
References m_rangeObservedSigma.
double Isis::BundleLidarRangeConstraint::vtpv | ( | ) |
Return current value of weighted sum-of-squares of residual.
Definition at line 380 of file BundleLidarRangeConstraint.cpp.
References computeRange(), m_rangeComputed, m_rangeObserved, m_rangeObservedWeightSqrt, and m_vtpv.
|
private |
Adjusted uncertainty of range.
Definition at line 93 of file BundleLidarRangeConstraint.h.
Referenced by BundleLidarRangeConstraint(), BundleLidarRangeConstraint(), formatBundleOutputString(), operator=(), and rangeAdjustedSigma().
|
private |
BundleObservation associated with measure.
Definition at line 73 of file BundleLidarRangeConstraint.h.
Referenced by applyConstraint(), and BundleLidarRangeConstraint().
|
private |
! 2D image point corresponding to 3D lidar point on surface.
The image has been acquired simultaneously with the lidar observation. NOTE this point is a fictitious "measurement". A priori coordinates are obtained by back projection of the lidar point into the image using the current exterior orientation (EO-SPICE). This "measure" is corrected in each iteration of the bundle adjustment by it's residuals.
Definition at line 87 of file BundleLidarRangeConstraint.h.
Referenced by applyConstraint(), BundleLidarRangeConstraint(), BundleLidarRangeConstraint(), computeRange(), and operator=().
|
private |
Definition at line 87 of file BundleLidarRangeConstraint.h.
|
private |
Definition at line 87 of file BundleLidarRangeConstraint.h.
|
private |
Parent lidar control point.
Definition at line 72 of file BundleLidarRangeConstraint.h.
Referenced by applyConstraint(), BundleLidarRangeConstraint(), computeRange(), and formatBundleOutputString().
|
private |
Computed range from distance condition.
Definition at line 90 of file BundleLidarRangeConstraint.h.
Referenced by applyConstraint(), BundleLidarRangeConstraint(), computeRange(), formatBundleOutputString(), operator=(), rangeComputed(), and vtpv().
|
private |
! deltas between spacecraft & lidar point in body-fixed coordinates
Observed range from lidar input data
Definition at line 89 of file BundleLidarRangeConstraint.h.
Referenced by applyConstraint(), BundleLidarRangeConstraint(), BundleLidarRangeConstraint(), formatBundleOutputString(), operator=(), rangeObserved(), and vtpv().
|
private |
Uncertainty of observed range.
Definition at line 91 of file BundleLidarRangeConstraint.h.
Referenced by BundleLidarRangeConstraint(), BundleLidarRangeConstraint(), formatBundleOutputString(), operator=(), and rangeObservedSigma().
|
private |
Square-root of observed range weight.
Definition at line 92 of file BundleLidarRangeConstraint.h.
Referenced by applyConstraint(), BundleLidarRangeConstraint(), BundleLidarRangeConstraint(), operator=(), and vtpv().
|
private |
Definition at line 75 of file BundleLidarRangeConstraint.h.
|
private |
Weighted sum-of-squares of residual.
Definition at line 94 of file BundleLidarRangeConstraint.h.
Referenced by BundleLidarRangeConstraint(), operator=(), and vtpv().