![]()  | 
  
    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().