ISIS Application Documentation
Improves camera pointing and a whole lot more!
Description
The jigsaw application performs a bundle adjustment on a group of overlapping Isis,
level 1, cubes from framing and/or linescan cameras. The adjustment
simultaneously defines the selected image geometry information (camera pointing, spacecraft
position) and control point coordinates (x,y,z or lat,lon,radius) to reduce
boundary mismatches in mosaics of the images.
This functionality is demonstrated below in a zoomedin area of a mosaic of a
pair of overlapping Messenger images. In the before jigsaw mosaic on the left
(uncontrolled), the features on the edges of the images do not match. In the after
jigsaw mosaic on the right (controlled), the crater edges meet correctly and the
seam between the two images is no longer visible.
The jigsaw application assumes spiceinit has been run on the input cubes so that
SPICE is included in the Isis cube labels in the Kernels group. In order to
run the program, the user must provide a list of input cubes, an input control
net, the name of an output control net, and the adjustment parameters.
jigsaw outputs a new control net that includes the initial state of the
points in the network and their final state after the adjustment. The initial states of
the points are tagged as a priori in the control net, and their final
states are tagged as adjusted. The measured sample/line positions
associated with the control points in the net are not changed. SPICE
in the cube labels is updated at the end of the adjustment only
if the bundle converges and the UPDATE parameter is selected.
Optional output files can be selected to provide more information for analyzing the
results. BUNDLEOUT_TXT provides an overall summary of the bundle adjustment.
It lists the user input parameters selected and tables of statistics for both the
images and the points. The image statistics can also be written to a separate
CSV file and likewise for the point statistics with the OUTPUT_CSV
option selected. RESIDUALS_CSV provides a table of the measured image
coordinates and the final sample, line, and overall residuals
in both millimeters and pixels.
The functional model for the bundle adjustment is the collinearity
condition. It stipulates that the camera perspective center, a ground
point, and its associated image point measurement be collinear. The diagram
below demonstrates the collinear condition in a bundle adjustment.
The vectors formed by connecting each object space point (target surface x,y,z)
and its corresponding image space points (sample,line) form
a bundle of light rays.
Kraus, Karl., 1993. Photogrammetry Vol. I., Fundamentals and Standard
Processes, Der. Dümmler Verlag, Bonn, Germany, ISBN 3427786846, 397
pages.
Relevant Documentation
For information on what the original jigsaw code was based on checkout
Rand Notebook
Known Issues
Running jigsaw with a control net containing JigsawRejected
flags may result in bundle failure
When running jigsaw with Outlier Rejection turned on,
control points and/or control measures may be flagged as
JigsawRejected in the output control net file. If this output net
file is then used in a subsequent jigsaw run, these points and
measures will be erroneously ignored, potentially causing the bundle
adjustment to fail.
Workarounds
 Run jigsaw with Outlier Rejection off.
 Do not use the output control net file in subsequent jigsaw runs.
 Convert the output control net file from binary to PVL and back using
cnetbin2pvl and cnetpvl2bin. This will
clear the JigsawRejected flags.
Solving for the target body radii (triaxial or mean) is NOT possible and
likely increases error in the solve.
With the current jigsaw implementation, it is NOT possible to individually
solve for either the mean or triaxial radii as seperate calculations in
the bundle adjustment. More specifically, the target body radii has no
effect when solving for individual points and thus cannot be solved for in the bundle.
A local radii solve is already part of the sequence of equations that jigsaw
uses to compute various partial derivatives to populate the solve matrix.
A seperate mean or triaxial radii solve can be applied to the target body
and the partials from this separate application are added to the
solve matrix. This option adds additional computation time to jigsaw
and creates additional uncertainty/error in the bundle adjust. We advise
the mean and triaxial radii solve be avoided.
If you are trying to generate a spheroid from a control network there are
other programs that can do this for you. An easier but more naive method
is ingesting the OUTPUT_CSV from your network, gather local radii
information from those points, then generate a sphereiod from those local radii.
Categories
Applications
History
Jeff Anderson  20070427 
Original version

Steven Lambright  20070723 
Changed category to Control Networks and corrected XML bugs

Debbie A. Cook  20071005 
Revised iteration report to list the errors and sigmas from the same iteration. Previous
version reported errors from previous iteration and sigmas from current iteration.

Christopher Austin  20080703 
Cleaned the Bundle Adjust memory leak and fixed the app tests.

Tracie Sucharski  20090408 
Added date to the Jigged comment in the spice tables.

Tracie Sucharski  20090422 
If updating pointing, delete the CameraStatistics table from labels.

Mackenzie Boyd  20090723 
Modified program to write history to input cubes.

Debbie A. Cook  20100812 
Commented out Heldlist until mechanism in place to enter individual
image parameter constraints.

Debbie A. Cook  20100812 
Merged Ken Edmundson version with system and binary control net.

Debbie A. Cook  20110614 
Modified code to prevent updates to cube files in held list.

Debbie A. Cook  20110928 
Removed SC_SIGMAS from user parameter list because it is not
fully implemented; changed method name SPARSE to OLDSPARSE
and CHOLMOD to SPARSE; and improved the documentation for
the Isis3.3.0 release.

Debbie A. Cook, Ken Edmundson, and Orrin Thomas  20111003 
Added images showing before and after to demonstrate the
program. Added Krause's collinearity diagram and
a brief explanation on the output options. Also added
a lien for example(s) to be added later.

Debbie A. Cook  20111006 
Corrected previous history entry and added references to glossary. Also
changed application names to bold type.

Debbie A. Cook and Ken Edmundson  20111007 
Removed glossary references from briefs. Also changed the definition
of angles to state right ascension and declination to be consistent
with the output.

Ken Edmundson  20111014 
Added internal default and minimum inclusive tags to global apriori
uncertainties.

Ken Edmundson  20111018 
Added Known Issues section and JigsawRejected flag issue.

Debbie A. Cook  20111104 
Added minimums to parameters, corrected SOLVEDEGREE description, and
added to the camsolve option descriptions in response to Mantis
issue #514.

Ken Edmundson  20111220 
Added REJECTION_MULTIPLIER to interface, part of Mantis issue #637.

Ken Edmundson  20120119 
Added SPKDEGREE and SPKSOLVEDEGREE; changed name of SOLVEDEGREE to
CKSOLVEDEGREE.

Ken Edmundson  20140213 
Added separate group for Error Propagation with option to write inverse matrix to binary
file. For extremely large networks where memory/time for error propagation is limited.

Ken Edmundson  20140709 
Added USEPVL and SC_PARAMETERS parameters.

Jeannie Backer  20140714 
Modified appTests to use SPARSE method only. Commented out bundleout_images.csv references.
Created observationSolveSettings() method to create an observation settings object from the user
entered values.

Ken Edmundson  20150905 
Added preliminary target body functionality. Added SOLVETARGETBODY and TB_PARAMETERS.

Jesse Mapel  20160816 
Added a connection to allow jigsaw to surface exceptions from BundleAdjust. Fixes #2302

Jeannie Backer  20160818 
Removed the user parameter called METHOD (i.e. the method used for solving the bundle matrix).
This solve method is no longer userselected. The program will now use what was called the SPARSE option
for the METHOD parameter (i.e. solve with CholMod sparse decomposition). This method should give
the same results as the other options and should run faster. So the other options were no longer needed.
References #4162.

Ian Humphrey  20160822 
Reviewed documentation and updated small spelling and grammar errors. References #4226.

Adam Paquette  20160831 
Updated how jigsaw handles its prefix parameter along with a small documentation change. Fixes #4309.

Jesse Mapel  20160902 
Updated how input parameters are output when using multiple sensor solve settings.
Fixes #4316.

Ian Humphrey  20160922 
Output from jigsaw will again provide "Validating network" and "Validation complete" messages
to inform user that their control network has been validated. Fixes #4313.

Ian Humphrey  20161005 
When running jigsaw with error propagation turned on, the correlation matrix file,
inverseMatrix.dat, is no longer generated. Fixes #4315.

Tyler Wilson  20161006 
Added the IMAGES_CSV parameter to the "Output Options" group
so that the user can now request the bundleout_images.csv file
in addition to the other output files such as bundleout.txt. Fixes #4314.

Ian Humphrey  20161013 
Implemented HELDLIST functionality for nonoverlapping held images. Any control points that
intersect the held images are fixed, and a priori surface points for these control points are
set to the held images' measures' surface points. Disabled USEPVL/SC_PARAMETERS. Fixes #4293.

Ian Humphrey  20161025 
Added the "Generating report files" and Rejected_Measures keyword back to jigsaw's standard
output. Fixes #4461. Fixed spacing in standard output. Fixes #4462, #4463."

Ian Humphrey  20161026 
The bundleout.txt output file will record default values for unsolved parameters. The default
position will be the instrument position's center coordinate, and the default pointing will
be the pointing's (rotation's) center angles. The bundleout_images.csv file will also have
these defaults provided. Fixes #4464.

Makayla Shepherd  20161026 
Removed the underscores from the new parameters IMAGESCSV and TBPARAMETERS.

Ian Humphrey  20161116 
Exceptions that occur during the solving of the bundle adjustment will now pop up as
message boxes when running jigsaw in GUI mode. Fixes #4483.

Ken Edmundson  20161117 
Output control net will be now be written regardless of whether bundle converges. Fixes #4533.

Ken Edmundson  20170117 
Updated description and brief for SOLVETARGETBODY and TBPARAMETERS.

Summer Stapleton  20170809 
Fixed bug where an invalid control net was not throwing exception. Fixes #5068.

Ken Edmundson  20180523 
Modifed call to bundleAdjustment>solveCholeskyBR() to return a raw pointer to a
BundleSolutionInfo object. Am also deleting this pointer because jigsaw.cpp takes
ownership from BundleAdjust.

Debbie A. Cook  20180604 
(BundleXYZ modified on 20170911) Added options for outputting
and/or solving for bodyfixed x/y/z instead of lat/lon/radius.
References #501.

Debbie A. Cook  20180604 
(BundleXYZ modified on 20170917) Fixed a problem in the
xml that was causing the input parameters to be omitted from
the history. References #501.

Debbie A. Cook  20180604 
(BundleXYZ modified on 20180318) Fixed a problem in the xml
that excluded entry of values for latitudinal point sigmas when the
coordinate type for reports was set to Rectangular and vice versa.
References #501.

Tyler Wilson  20190517 
Cleaned up the bundleout.txt file and added new information in the header.
Fixes #3267.

Aaron Giroux  20191219 
Added SCCONFIG parameter which allows users to pass in a pvl file with different
settings for different instrumentIDs. Added logic into the observationSolveSettings
function to construct BundleObservationSolveSettings objects based off of the settings
in the pvl file.

Adam Paquette  20201223 
Added a warning when solving for target body radii/radius that is output to
the application log. Updated the documentation to include the original
rand notebook that jigsaw was based on. Also added a section in the documentation
describing the target body radii solve issue.


Parameter Groups
Files
Name

Description

FROMLIST 
List of cubes in the input control network

HELDLIST 
List of (nonoverlapping) cubes to hold in the adjustment

CNET 
Input control network

ONET 
Output control network

SCCONFIG 
File containing Camera/Spacecraft parameters

Solve Options
Maximum Likelihood Estimation
Name

Description

MODEL1  A maximum likelihood estimation model selection 
MAX_MODEL1_C_QUANTILE  Quantile of the residual distribution used to set the tweaking constant of the maximum likelihood estimation model 
MODEL2  A maximum likelihood estimation model selection 
MAX_MODEL2_C_QUANTILE  Quantile of the residual distribution used to set the tweaking constant of the maximum likelihood estimation model 
MODEL3  A maximum likelihood estimation model selection 
MAX_MODEL3_C_QUANTILE  Quantile of the residual distribution used to set the tweaking constant of the maximum likelihood estimation model 
Convergence Criteria
Name

Description

SIGMA0  Standard deviation of unit weight

MAXITS  Maximum number of iterations

Camera Pointing Options
Name

Description

CKDEGREE 
Degree of polynomial fit to original camera angles

CKSOLVEDEGREE 
The degree of the polynomial being fit to in the bundle adjustment

CAMSOLVE  Camera pointing parameters to include in the bundle adjustment 
TWIST  Solve for twist 
OVEREXISTING  Fit polynomial over the existing pointing 
Spacecraft Options
Name

Description

SPKDEGREE 
Degree of polynomial fit to original camera position

SPKSOLVEDEGREE 
The degree of the camera position polynomial being fit to in the bundle
adjustment.

SPSOLVE  Spacecraft position parameters to include in the adjustment 
OVERHERMITE  Fit polynomial over the existing Hermite spline 
Community Sensor Model Options
Name

Description

CSMSOLVESET  Specify a set of a CSM parameters to solve for. 
CSMSOLVETYPE  Specify a type of a CSM parameters to solve for. 
CSMSOLVELIST  Specify an explicit list of CSM parameters to solve for. 
Target Body
Name

Description

SOLVETARGETBODY 
Solve for target body parameters. The parameters, their a priori values, and uncertainties are input
using a PVL file specified by TBPARAMETERS below. 
TBPARAMETERS 
File containing target body parameters to solve for, their a priori values and uncertainties.

Control Point Parameters
Parameter Uncertainties
Output Options
Name

Description

FILE_PREFIX  Output file prefix 
BUNDLEOUT_TXT  Standard bundle output file  bundleout.txt

IMAGESCSV  Outputs image data (bodyfixed) to csv file  bundleout_images.csv

OUTPUT_CSV  Outputs point and image data (bodyfixed) to csv file  bundleout_points.csv

RESIDUALS_CSV  Outputs image coordinate residuals to csv file  residuals.csv 

Files:
FROMLIST
Description
This file contains a list of all cubes in the control network
Type
 filename 
File Mode
 input 
Filter

*.txt *.lis

Files:
HELDLIST
Description
This file contains a list of all cubes whose orientation and position
will be held in the adjustment. These images will still be included
in the solution, but their camera orientation and spacecraft position
will be constrained to keep the values from changing. This is an
optional parameter and the default is to not hold any of the images.
Note that held images must not overlap each other to work properly.
Type
 filename 
File Mode
 input 
Internal Default
 none 
Filter

*.txt *.lis

Files:
CNET
Description
This file is a control network generated from programs such as
autoseed or qnet. It contains the control points
and associated measures.
Type
 filename 
File Mode
 input 
Filter

*.net

Files:
ONET
Description
This output file contains the updated control network with
the final coordinates of the control points and residuals for each
measurement.
Type
 filename 
File Mode
 output 
Filter

*.net

Files:
SCCONFIG
Description
This file contains the Camera/Spacecraft parameters to use when processing
images from different sensors. This file should be in PVL format. It should
contain an object called SensorParameters with one group per spacecraft/instrument
combination. The SpacecraftName and InstrumentId keywords in the Instrument group
of an image file are used to create the name of each group in the PVL file. The
group pertaining to each spacecraft/instrument should contain the keyword/value
pairs needed to process images taken with that sensor: CKDEGREE, CKSOLVEDEGREE,
CAMSOLVE, TWIST, OVEREXISTING, SPKDEGREE, SPKSOLVEDEGREE, SPSOLVE, OVERHERMITE,
SPACECRAFT_POSITION_SIGMA, SPACECRAFT_VELOCITY_SIGMA, SPACECRAFT_ACCELERATION_SIGMA,
CAMERA_ANGLES_SIGMA, CAMERA_ANGULAR_VELOCITY_SIGMA, CAMERA_ANGULAR_ACCELERATION_SIGMA.
If any of these keywords are missing, then their defaults will be used. There is
an example template at $ISISROOT/appdata/templates/jigsaw/SensorParameters.pvl that can be
used as a guide.
Type
 filename 
File Mode
 input 
Exclusions

 CKDEGREE
 CKSOLVEDEGREE
 CAMSOLVE
 OVEREXISTING
 SPKDEGREE
 SPKSOLVEDEGREE
 SPSOLVE
 OVERHERMITE
 CAMERA_ANGLES_SIGMA
 CAMERA_ANGULAR_VELOCITY_SIGMA
 CAMERA_ANGULAR_ACCELERATION_SIGMA
 SPACECRAFT_POSITION_SIGMA
 SPACECRAFT_VELOCITY_SIGMA
 SPACECRAFT_ACCELERATION_SIGMA

Filter

*.pvl

Solve Options:
OBSERVATIONS
Description
This option will solve for SPICE on all cubes with a matching
observation number as though they were a single observation. For
most missions, the default observation number is equivalent to the
serial number of the cube, and a single cube
is an observation. However, for the Lunar Orbiter mission, an image has a defined
observation number that is a substring of its serial number. This
feature allows the three subframes of a Lunar Orbiter High
Resolution frame to be treated as a single observation when this
option is used; otherwise, each subframe is adjusted independently.
Solve Options:
RADIUS
Description
Select this option to solve for the local radius of each control
point. If this button is not turned on, the radii of the points
will not change from the cube's shape model.
Type
 boolean 
Default

No

Inclusions


Solve Options:
UPDATE
Description
When this option is selected, the application will update the labels
of the individual cubes in the FROMLIST with the final values
from the solution if the adjustment converges. The results are written
to the SPICE blobs attached to the cube, overwriting the previous
values. If this option is not selected, the cube files are not
changed. All other output files are still created.
Solve Options:
OUTLIER_REJECTION
Description
Select this option to perform automatic outlier detection and rejection.
Type
 boolean 
Default

No

Exclusions

 MODEL1
 MODEL2
 MODEL3
 MAX_MODEL1_C_QUANTILE
 MAX_MODEL2_C_QUANTILE
 MAX_MODEL3_C_QUANTILE

Inclusions


Solve Options:
REJECTION_MULTIPLIER
Description
Rejection multiplier
Type
 double 
Default

3.0

Inclusions


Solve Options:
ERRORPROPAGATION
Description
Select this option to compute the variancecovariance matrix of the
parameters. The parameter uncertainties can be computed from this
matrix.
Maximum Likelihood Estimation:
MODEL1
Description
A maximum likelihood estimation model selection.
Type
 string 
Default
 NONE 
Option List:

Option 
Brief 
Description 
NONE  None: no tier one maximum likelihood estimation 
None: no tier one maximum likelihood estimation
Exclusions
 MODEL2
 MODEL3
 MAX_MODEL1_C_QUANTILE
 MAX_MODEL2_C_QUANTILE
 MAX_MODEL3_C_QUANTILE

HUBER  Huber: approximates the L2 norm near 0, and the L1 norm thereafter. Has one continuous derivative. 
A highly recommended model that works well in many situations.
Exclusions
 REJECTION_MULTIPLIER
 OUTLIER_REJECTION
 ERRORPROPAGATION

HUBER_MODIFIED  Huber Modified: approximates the L2 norm near 0 and the L1 norm thereafter. Has two continuous derivatives. 
An adaptation of the highly recommended Huber model that has two continuous derivatives.
Exclusions
 REJECTION_MULTIPLIER
 OUTLIER_REJECTION
 ERRORPROPAGATION


Maximum Likelihood Estimation:
MAX_MODEL1_C_QUANTILE
Description
The tweaking constant has different meanings depending on the model being used:
Huber models: The point at which the transformation motion from L2 to L1 norms takes place. Recommended quantile: 0.5
Welsch model: Residuals whose absolute value is twice the tweaking constant are approaching negligible significance. Recommended quantile: 0.7
Chen model: Residuals whose absolute value is greater than the tweaking constant are totally ignored. Recommended quantile: > 0.9
Type
 double 
Default

0.5

Minimum
 0
(exclusive)

Maximum
 1
(exclusive)

Maximum Likelihood Estimation:
MODEL2
Description
A maximum likelihood estimation model selection.
Type
 string 
Default
 NONE 
Option List:

Option 
Brief 
Description 
NONE  None: no tier two maximum likelihood estimation 
None: no tier two maximum likelihood estimation
Exclusions
 MODEL3
 MAX_MODEL2_C_QUANTILE
 MAX_MODEL3_C_QUANTILE

HUBER  Huber: approximates the L2 norm near 0, and the L1 norm thereafter. Has one continuous derivative. 
A highly recommended model that works well in many situations.

HUBER_MODIFIED  Huber Modified: approximates the L2 norm near 0 and the L1 norm thereafter. Has two continuous derivatives. 
An adaptation of the highly recommended Huber model that has two continuous derivatives.

WELSCH  Welsch: approximates the L2 norm near 0, but then decays exponentially to zero. 
This model reduces the significance of large residuals more aggressively than Huber. Large residuals will have less influence than small residuals,
and they approach negligibility as they approach infinity. Measures can be effectively 'removed' by this method, which may cause singularities and/or islands.

CHEN  Chen: a highly aggressive method that intentionally removes the largest few percent of residuals. 
This method dramatically increases the influence of smaller residuals (beyond the L2 norm) while simultaneously totally ignoring the largest few
percent of the residuals.


Maximum Likelihood Estimation:
MAX_MODEL2_C_QUANTILE
Description
The tweaking constant has different meanings depending on the model being used:
Huber models: The point at which the transformation motion from L2 to L1 norms takes place. Recommended quantile: 0.5
Welsch model: Residuals whose absolute value is twice the tweaking constant are approaching negligible significance. Recommended quantile: 0.7
Chen model: Residuals whose absolute value is greater than the tweaking constant are totally ignored. Recommended quantile: > 0.9
Type
 double 
Default

0.5

Minimum
 0
(exclusive)

Maximum
 1
(exclusive)

Maximum Likelihood Estimation:
MODEL3
Description
A maximum likelihood estimation model selection.
Type
 string 
Default
 NONE 
Option List:

Option 
Brief 
Description 
NONE  None: no tier three maximum likelihood estimation 
None: no tier three maximum likelihood estimation
Exclusions

HUBER  Huber: approximates the L2 norm near 0, and the L1 norm thereafter. Has one continuous derivative. 
A highly recommended model that works well in many situations.

HUBER_MODIFIED  Huber Modified: approximates the L2 norm near 0 and the L1 norm thereafter. Has two continuous derivatives. 
An adaptation of the highly recommended Huber model that has two continuous derivatives.

WELSCH  Welsch: approximates the L2 norm near 0, but then decays exponentially to zero. 
This model reduces the significance of large residuals more aggressively than Huber. Large residuals will have less influence than small residuals,
and they approach negligibility as they approach infinity. Measures can be effectively 'removed' by this method, which may cause singularities and/or islands.

CHEN  Chen: a highly aggressive method that intentionally removes the largest few percent of residuals. 
This method dramatically increases the influence of smaller residuals (beyond the L2 norm) while simultaneously totally ignoring the largest residuals.


Maximum Likelihood Estimation:
MAX_MODEL3_C_QUANTILE
Description
The tweaking constant has different meanings depending on the model being used:
Huber models: The point at which the transformation motion from L2 to L1 norms takes place. Recommended quantile: 0.5
Welsch model: Residuals whose absolute value is twice the tweaking constant are approaching negligible significance. Recommended quantile: 0.7
Chen model: Residuals whose absolute value is greater than the tweaking constant are totally ignored. Recommended quantile: > 0.9
Type
 double 
Default

0.5

Minimum
 0
(exclusive)

Maximum
 1
(exclusive)

Convergence Criteria:
SIGMA0
Description
Converges on stabilization of Sigma0. Convergence occurs when the change
in sigma0 between iterations is less than or equal to Sigma0.
Type
 double 
Default

1.0e10

Minimum
 0
(exclusive)

Convergence Criteria:
MAXITS
Description
Maximum number of times to iterate. The application stops iterating at
MAXIT, or when convergence is reached.
Type
 integer 
Default

50

Minimum
 1
(inclusive)

Camera Pointing Options:
CKDEGREE
Description
The degree of the polynomial fit to the original camera angles
and used to generate a priori camera angles for the first
iteration.
Type
 integer 
Default

2

Minimum
 0
(inclusive)

Camera Pointing Options:
CKSOLVEDEGREE
Description
The degree of the polynomial being fit to in the bundle adjust
solution. This polynomial can be different from the one used to
generate the a priori camera angles used in the first
iteration. In the case of an instrument with a jitter problem, a
higher degree polynomial fit to each of the camera angles might
provide a better solution (smaller errors). For framing cameras,
the application automatically sets degree to 0.
Type
 integer 
Default

2

Minimum
 0
(inclusive)

Camera Pointing Options:
CAMSOLVE
Description
This parameter is used to specify which, if any, camera
pointing parameters to include in the adjustment.
Type
 string 
Default

ANGLES

Option List:

Option 
Brief 
Description 
NONE  Don't solve for any camera pointing factors 
If this option is selected, no camera pointing parameters
will be adjusted.
Exclusions
 CKDEGREE
 CKSOLVEDEGREE
 TWIST
 OVEREXISTING

ANGLES 
Solve for camera angles: right ascension, declination and optionally twist

Camera angles in each cube will be adjusted in the solution,
but not angular velocities or accelerations. Solving for the first two
camera angles translates images in sample and line. Adding the third
angle to the solution (TWIST option) allows for rotation corrections.
Adjustments are not applied unless the solution converges and UPDATE is
selected. Solving for angles only is equivalent to using CKSOLVEDEGREE=0.
Exclusions

VELOCITIES  Solve for camera angles AND their angular velocities 
Camera angles and their angular velocities will be adjusted in the
solution. Solving for angles and velocities is equivalent to using
CKSOLVEDEGREE=1.
Exclusions

ACCELERATIONS  Solve for camera angles, their angular velocities and accelerations 
Camera angles, their angular velocities, and accelerations will be
adjusted in the solution. Solving for angles, angular velocities, and
accelerations is equivalent to using CKSOLVEDEGREE=2.
Exclusions

ALL  Solve for all coefficients in the polynomials fit to the camera angles. 
If this option is selected, all coefficients of the solve
equation will be adjusted in the solution (CKSOLVEDEGREE+1
coefficients)


Camera Pointing Options:
TWIST
Description
If this option is selected, the twist angle will be adjusted in the
bundle adjustment solution.
Camera Pointing Options:
OVEREXISTING
Description
This option will fit a polynomial over the existing pointing data.
This data is held constant in the adjustment, and the
initial value for the each of the coefficients in the polynomials
is 0.
When this option is used, the current pointing is used as a priori
in the adjustment.
Spacecraft Options:
SPKDEGREE
Description
The degree of the polynomial fit to the original camera position
and used to generate a priori camera positions for the
first iteration.
Type
 integer 
Default

2

Minimum
 0
(inclusive)

Spacecraft Options:
SPKSOLVEDEGREE
Description
The degree of the polynomial being fit to in the bundle adjust
solution. This polynomial can be different from the one used to
generate the a priori camera positions used in the first
iteration. In the case of an instrument with a jitter problem, a
higher degree polynomial fit for the camera position might provide
a better solution (smaller errors). For framing cameras, the
application automatically sets degree to 0.
Type
 integer 
Default

2

Minimum
 0
(inclusive)

Spacecraft Options:
SPSOLVE
Description
This parameter is used to specify which, if any, spacecraft
position parameters to include in the adjustment.
Type
 string 
Default

NONE

Option List:

Option 
Brief 
Description 
NONE  Don't solve for any spacecraft position parameters 
No spacecraft position parameters will be adjusted.
Exclusions
 SPKDEGREE
 SPKSOLVEDEGREE
 OVERHERMITE

POSITIONS  Solve for the spacecraft positions 
Spacecraft positions will be adjusted in the solution, but
not the velocity or the acceleration.
Exclusions

VELOCITIES  Solve for the spacecraft positions and velocities 
Spacecraft positions will be adjusted in the solution, as
well as the velocities of the spacecraft at each instance.
Exclusions

ACCELERATIONS  Solve for the spacecraft positions, velocities, and accelerations 
Spacecraft positions will be adjusted in the solution, as well
as the velocities and accelerations of the spacecraft at each
instance.
Exclusions

ALL  Solve for all coefficients in the polynomials fit to the camera position. 
If this option is selected, all coefficients of the solve
equation will be adjusted in the solution (SPKSOLVEDEGREE+1
coefficients)


Spacecraft Options:
OVERHERMITE
Description
This option will fit a polynomial over the existing Hermite cubic
spline used to interpolate the coordinates of the spacecraft
position. The spline is held constant in the adjustment, and the
initial value for the each of the coefficients in the polynomials
is 0.
When this option is used, the current positions are used as a priori
in the adjustment.
Target Body:
SOLVETARGETBODY
Description
Solve for target body parameters. The parameters, their a priori values, and uncertainties are input
using a PVL file specified by TBPARAMETERS below. An example template PVL file is located at
$ISISROOT/appdata/templates/jigsaw/TargetBodyParameters.pvl.
Type
 boolean 
Default
 false 
Inclusions


Target Body:
TBPARAMETERS
Description
This file contains target body parameters to solve for in the bundle adjustment, their
a priori values, and uncertainties. The file must be in PVL format. An example template
PVL file is located at $ISISROOT/appdata/templates/jigsaw/TargetBodyParameters.pvl. Instructions for the PVL
structure are given in the template.
Type
 filename 
File Mode
 input 
Filter

*.pvl

Control Point Parameters:
CONTROL_POINT_COORDINATE_TYPE_BUNDLE
Description
This parameter indicates which coordinate type will be used to present
the control points in the bundle adjustment and bundle output.
Type
 string 
Default

LATITUDINAL

Option List:

Option 
Brief 
Description 
LATITUDINAL  Coordinates will be planetocentric latitudinal 
If this option is selected all control points will be adjusted, corrected,
and reported in planetocentric latitudinal coordinates (latitude,
longitude, and radius).
Exclusions
 POINT_X_SIGMA
 POINT_Y_SIGMA
 POINT_Z_SIGMA

RECTANGULAR  Coordinates will be bodyfixed rectangular 
If this option is selected all control points will be adjusted, corrected,
and reported in bodyfixed rectangular coordinates (X, Y, and Z).
Exclusions
 POINT_LATITUDE_SIGMA
 POINT_LONGITUDE_SIGMA
 POINT_RADIUS_SIGMA


Control Point Parameters:
CONTROL_POINT_COORDINATE_TYPE_REPORTS
Description
This parameter indicates which coordinate type will be used to present
the control points in the bundle adjustment and bundle output.
Type
 string 
Default

LATITUDINAL

Option List:

Option 
Brief 
Description 
LATITUDINAL  Coordinates will be planetocentric latitudinal 
If this option is selected all control points will be adjusted, corrected,
and reported in planetocentric latitudinal coordinates (latitude,
longitude, and radius).

RECTANGULAR  Coordinates will be bodyfixed rectangular 
If this option is selected all control points will be adjusted, corrected,
and reported in bodyfixed rectangular coordinates (X, Y, and Z).


Parameter Uncertainties:
POINT_LATITUDE_SIGMA
Description
This optional value will be used as the global latitude
uncertainty for all points. Units are meters.
Type
 double 
Internal Default
 none 
Minimum
 0
(inclusive)

Parameter Uncertainties:
POINT_LONGITUDE_SIGMA
Description
This optional value will be used as the global longitude
uncertainty for all points. Units are meters.
Type
 double 
Internal Default
 none 
Minimum
 0
(inclusive)

Parameter Uncertainties:
POINT_RADIUS_SIGMA
Description
This value will be used as the global radius uncertainty for
all points. Units are meters.
Type
 double 
Internal Default
 none 
Minimum
 0
(inclusive)

Inclusions


Parameter Uncertainties:
POINT_X_SIGMA
Description
This optional value will be used as the global
uncertainty for all points. Units are meters.
Type
 double 
Internal Default
 none 
Minimum
 0
(inclusive)

Parameter Uncertainties:
POINT_Y_SIGMA
Description
This optional value will be used as the global
uncertainty for all points. Units are meters.
Type
 double 
Internal Default
 none 
Minimum
 0
(inclusive)

Parameter Uncertainties:
POINT_Z_SIGMA
Description
This optional value will be used as the global
uncertainty for all points. Units are meters.
Type
 double 
Internal Default
 none 
Minimum
 0
(inclusive)

Parameter Uncertainties:
SPACECRAFT_POSITION_SIGMA
Description
This value will be used as the global uncertainty for spacecraft
coordinates. Units are meters.
Type
 double 
Internal Default
 none 
Minimum
 0
(inclusive)

Parameter Uncertainties:
SPACECRAFT_VELOCITY_SIGMA
Description
This value will be used as the global uncertainty for spacecraft
velocity. Units are meters/second.
Type
 double 
Internal Default
 none 
Minimum
 0
(inclusive)

Parameter Uncertainties:
SPACECRAFT_ACCELERATION_SIGMA
Description
This value will be used as the global uncertainty for
spacecraft acceleration. Units are meters/second/second.
Type
 double 
Internal Default
 none 
Minimum
 0
(inclusive)

Parameter Uncertainties:
CAMERA_ANGLES_SIGMA
Description
This value will be used as the global uncertainty for camera
angles. Units are decimal degrees.
Type
 double 
Internal Default
 none 
Minimum
 0
(inclusive)

Parameter Uncertainties:
CAMERA_ANGULAR_VELOCITY_SIGMA
Description
This value will be used as the global uncertainty for camera
angular velocity. Units are decimal degrees/second.
Type
 double 
Internal Default
 none 
Minimum
 0
(inclusive)

Parameter Uncertainties:
CAMERA_ANGULAR_ACCELERATION_SIGMA
Description
This value will be used as the global uncertainty for camera
angular acceleration. Units are decimal degrees/second/second.
Type
 double 
Internal Default
 none 
Minimum
 0
(inclusive)

Output Options:
FILE_PREFIX
Description
File prefix to prepend for the generated output files. Any prefix that is not a
file path will have an underscore placed between the prefix and file name.
Type
 string 
Internal Default
 none 
Output Options:
BUNDLEOUT_TXT
Description
Selection of this parameter flags generation of the standard
bundle output file
Output Options:
IMAGESCSV
Description
Selection of this parameter flags output of image data
(in bodyfixed coordinates) to a csv file.
Output Options:
OUTPUT_CSV
Description
Selection of this parameter flags output of point and image data
(in bodyfixed coordinates) to csv file.
Output Options:
RESIDUALS_CSV
Description
Selection of this parameter flags output of image coordinate
residuals to a csv file