Isis 3 Programmer Reference
Isis::BundleLidarRangeConstraint Class Reference

Implements range constraint between image position and lidar point acquired simultaneously with the image. More...

#include <BundleLidarRangeConstraint.h>

Collaboration diagram for Isis::BundleLidarRangeConstraint:
Collaboration graph

Public Member Functions

 BundleLidarRangeConstraint (LidarControlPointQsp lidarControlPoint, BundleMeasureQsp measure)
 constructor
 
 BundleLidarRangeConstraint (const BundleLidarRangeConstraint &src)
 Copy constructor.
 
 ~BundleLidarRangeConstraint ()
 Destructor.
 
BundleLidarRangeConstraintoperator= (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.
 

Detailed Description

Implements range constraint between image position and lidar point acquired simultaneously with the image.

Author
2018-04-13 Ken Edmundson
History

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.

Constructor & Destructor Documentation

◆ BundleLidarRangeConstraint() [1/2]

Isis::BundleLidarRangeConstraint::BundleLidarRangeConstraint ( LidarControlPointQsp lidarControlPoint,
BundleMeasureQsp measure )

constructor

Parameters
lidarControlPointinput lidar control point
measureassociated 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.

◆ BundleLidarRangeConstraint() [2/2]

Isis::BundleLidarRangeConstraint::BundleLidarRangeConstraint ( const BundleLidarRangeConstraint & src)

Copy constructor.

Constructs a BundleLidarRangeConstraint from another.

Parameters
srcSource 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.

◆ ~BundleLidarRangeConstraint()

Isis::BundleLidarRangeConstraint::~BundleLidarRangeConstraint ( )

Destructor.

Definition at line 70 of file BundleLidarRangeConstraint.cpp.

Member Function Documentation

◆ applyConstraint()

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.

Parameters
normalsMatrixBundle Adjustment normal equations matrix.
N22Normal equation matrix for the point.
N12Normal equations block between image and point.
n1Right hand side vector for the images and target body.
n2Right hand side vector for the point.
Returns
bool success.

< 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().

◆ computeRange()

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().

◆ errorPropagation()

void Isis::BundleLidarRangeConstraint::errorPropagation ( )

TODO: to be completed.

Error propagation for adjusted range sigma using distance equation.

Todo
need more documentation on technical aspects of approach.

Definition at line 405 of file BundleLidarRangeConstraint.cpp.

◆ formatBundleOutputString()

QString Isis::BundleLidarRangeConstraint::formatBundleOutputString ( bool errorProp = false)

Creates & returns formatted QString for lidar range constraint to output to bundleout_lidar.csv file.

Parameters
errorPropBool indicating if error propagation is ON in the bundle adjustment.
Returns
QString Formatted QString summarizing lidar range constraint to output to bundleout_lidar.csv.

Definition at line 419 of file BundleLidarRangeConstraint.cpp.

References m_adjustedSigma, m_lidarControlPoint, m_rangeComputed, m_rangeObserved, and m_rangeObservedSigma.

◆ operator=()

BundleLidarRangeConstraint & Isis::BundleLidarRangeConstraint::operator= ( const BundleLidarRangeConstraint & src)

Assignment operator.

Assigns state of this BundleLidarRangeConstraint from another.

Parameters
srcSource BundleLidarRangeConstraint to assign state from.
Returns
BundleLidarRangeConstraint& Returns reference to this BundleLidarRangeConstraint.

Definition at line 104 of file BundleLidarRangeConstraint.cpp.

References m_adjustedSigma, m_dX, m_rangeComputed, m_rangeObserved, m_rangeObservedSigma, m_rangeObservedWeightSqrt, and m_vtpv.

◆ rangeAdjustedSigma()

double Isis::BundleLidarRangeConstraint::rangeAdjustedSigma ( )

Return adjusted sigma of range observation.

Returns
double Adjusted sigma of range observation.

Definition at line 369 of file BundleLidarRangeConstraint.cpp.

References m_adjustedSigma.

◆ rangeComputed()

double Isis::BundleLidarRangeConstraint::rangeComputed ( )

Return computed lidar range.

Returns
double Computed lidar range.

Definition at line 347 of file BundleLidarRangeConstraint.cpp.

References m_rangeComputed.

◆ rangeObserved()

double Isis::BundleLidarRangeConstraint::rangeObserved ( )

Return observed lidar range.

Returns
double Observed lidar range.

Definition at line 336 of file BundleLidarRangeConstraint.cpp.

References m_rangeObserved.

◆ rangeObservedSigma()

double Isis::BundleLidarRangeConstraint::rangeObservedSigma ( )

Return sigma of range observation.

Returns
double Sigma of range observation.

Definition at line 358 of file BundleLidarRangeConstraint.cpp.

References m_rangeObservedSigma.

◆ vtpv()

double Isis::BundleLidarRangeConstraint::vtpv ( )

Return current value of weighted sum-of-squares of residual.

Returns
double 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.

Member Data Documentation

◆ m_adjustedSigma

double Isis::BundleLidarRangeConstraint::m_adjustedSigma
private

◆ m_bundleObservation

BundleObservationQsp Isis::BundleLidarRangeConstraint::m_bundleObservation
private

BundleObservation associated with measure.

Definition at line 73 of file BundleLidarRangeConstraint.h.

Referenced by applyConstraint(), and BundleLidarRangeConstraint().

◆ m_dX

double Isis::BundleLidarRangeConstraint::m_dX
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=().

◆ m_dY

double Isis::BundleLidarRangeConstraint::m_dY
private

Definition at line 87 of file BundleLidarRangeConstraint.h.

◆ m_dZ

double Isis::BundleLidarRangeConstraint::m_dZ
private

Definition at line 87 of file BundleLidarRangeConstraint.h.

◆ m_lidarControlPoint

LidarControlPointQsp Isis::BundleLidarRangeConstraint::m_lidarControlPoint
private

Parent lidar control point.

Definition at line 72 of file BundleLidarRangeConstraint.h.

Referenced by applyConstraint(), BundleLidarRangeConstraint(), computeRange(), and formatBundleOutputString().

◆ m_rangeComputed

double Isis::BundleLidarRangeConstraint::m_rangeComputed
private

Computed range from distance condition.

Definition at line 90 of file BundleLidarRangeConstraint.h.

Referenced by applyConstraint(), BundleLidarRangeConstraint(), computeRange(), formatBundleOutputString(), operator=(), rangeComputed(), and vtpv().

◆ m_rangeObserved

double Isis::BundleLidarRangeConstraint::m_rangeObserved
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().

◆ m_rangeObservedSigma

double Isis::BundleLidarRangeConstraint::m_rangeObservedSigma
private

◆ m_rangeObservedWeightSqrt

double Isis::BundleLidarRangeConstraint::m_rangeObservedWeightSqrt
private

Square-root of observed range weight.

Definition at line 92 of file BundleLidarRangeConstraint.h.

Referenced by applyConstraint(), BundleLidarRangeConstraint(), BundleLidarRangeConstraint(), operator=(), and vtpv().

◆ m_simultaneousMeasure

BundleMeasureQsp Isis::BundleLidarRangeConstraint::m_simultaneousMeasure
private

Definition at line 75 of file BundleLidarRangeConstraint.h.

◆ m_vtpv

double Isis::BundleLidarRangeConstraint::m_vtpv
private

Weighted sum-of-squares of residual.

Definition at line 94 of file BundleLidarRangeConstraint.h.

Referenced by BundleLidarRangeConstraint(), operator=(), and vtpv().


The documentation for this class was generated from the following files: