Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Bundle Adjusting CSM images #4410

Closed
jessemapel opened this issue Apr 19, 2021 · 0 comments · Fixed by #4537
Closed

Bundle Adjusting CSM images #4410

jessemapel opened this issue Apr 19, 2021 · 0 comments · Fixed by #4537
Labels
enhancement New feature or request

Comments

@jessemapel
Copy link
Contributor

Description

With #4291 we now have CSM camera models working in ISIS. The next step is to add the ability to bundle adjust CSM camera models with jigsaw. We've done some planning and have a good idea of how to handle the differences between CSM and ISIS sensors, but there are a few places we would like more input from users.

Background

First of all, a brief overview of bundle adjustment in CSM vs ISIS. ISIS bundle adjustments works by adjusting constant offsets or polynomial offsets to the position and pointing where as CSM bundle adjustment just adjusts generic parameters. The way that CSM handles bundle adjustment is just a more general way than the way that ISIS does. So, we're planning to leverage this in the actual implementation.

When you adjust a CSM sensor model, you specify a set of parameters that you want to adjust. The parameters available are specific to that model and are completely opaque to the user outside of a name and a type. For example with our USGSCSM line scan model the options are:

  • IT Pos. Bias
  • CT Pos. Bias
  • Rad Pos. Bias
  • IT Vel. Bias
  • CT Vel. Bias
  • Rad Vel. Bias
  • Omega Bias
  • Phi Bias
  • Kappa Bias
  • Omega Rate
  • Phi Rate
  • Kappa Rate
  • Omega Accl
  • Phi Accl
  • Kappa Accl
  • Focal Bias

Each parameter can be turned on or off independently and the sensor model will handle the a priori values and covariances between them. You can also specify a set of parameters you want to work with. There are also more complex options such as parameter sharing that we will likely not get to.

The key difference between ISIS and CSM parameters is that with ISIS we have full knowledge of each parameter and how it translates to the orientation of the model, but with CSM we only know a small amount. For this reason, setting parameters for CSM sensor models is going to require users to be knowledgeable about the parameters the model they are using provides.

Changes to arguments

This feature should be purely additive and not interfere with how jigsaw currently works. For this reason we will begin by adding a new parameter that specifies a type or set of CSM parameters to adjust. All parameters of the specified type or set will be enabled for all CSM images when used.

For more detailed use cases, we want to extend the current scconfig parameter that allows setting solve parameters on a per sensor basis. We hope to add the ability to specify an exact list of parameter names that you want enabled for a given sensor. For example, if you are a using USGSCSM to adjust Phobos images captured by Viking NAC and HRSC you would have 1 section for the framing sensor and 1 section for the line scan sensor. The frame section would be you solve setting for Viking and the line scan section would be your solve setting for HRSC.

Changes to output files

With the greater variability in the parameters, we have to have much greater flexibility in the output files. The bundleout.txt file will be a simple modifications where each image will only lists the parameters it has enabled. For the images CSV, though, we will need to make significant changes.

First, we plan to output multiple images CSVs when multiple solve settings are used. Each different solve setting will have its own CSV file. In our previous Phobos examples we would output two CSVs, one for viking images and one for HRSC images. This will allow them to retain their flat file format but allow us to properly handle the differences when adjusting images from multiple sensors.

We also plan to add a separate CSV output for the target body parameters. This CSV will only be a single entry, but it will make it dramatically easier to programmatically read in the target body parameters (currently they have to parsed from the bundleout.txt file).

Conflicts

The largest conflict is with the target body solution options. Because the CSM API does not surface the rotation from J2000 to the target, we are unable to compute the target rotation. Similarly, we cannot compute the partial derivatives with respect to the target ellipsoid. This means that we will be unable to solve for target body parameters when using ANY CSM sensor models. It is possible to implement this in a specific implementation of the CSM API and we hope to add this to USGSCSM, but we cannot handle this issue on the ISIS side of the API.

IPCE is also a sticking point. We do not have the resources to expand the IPCE interface to allow for CSM adjustments. So, we will maintain the current functionality that allows for adjustments of ISIS sensor models in IPCE, but it will error if you attempt to use a CSM sensor model.

Example

In this example we will be adjusting images of Phobos. We will have some number of HRSC, SRC, CTX, and Viking NAC images. The CTX images and Viking NAC images will use USGSCSM provided CSM sensor models and the HRSC and SRC images will use ISIS sensor models.

jigsaw fromlist=phobos_cubes.lis cnet=phobos_combined_net.lis scconfig=phobos_solve_params.pvl file_prefix= phobos_combined_solve 

The contents of phobos_solve_params.pvl are

Object = SensorParameters
# ISIS sensor model parameters
  Group = SRC/MEX_HRSC_SRC
    CamSolve=Angles
    Twist=yes
    Camera_Angles_Sigma=2.0
  EndGroup
  Group = HRSC/MEX_HRSC_S1
    CamSolve=Accelerations
    Twist = Yes
    OverExisting = Yes
    SPSolve = Accelerations
    OverHermite = Yes
    Spacecraft_position_sigma=100.0
    Spacecraft_velocity_sigma=1.0
    Spacecraft_acceleration_sigma=0.1
    Camera_Angles_Sigma=2.0
    Camera_AngularVelocity_Sigma=0.1
    Camera_AngularAcceleration_Sigma=0.01
  EndGroup

# CSM sensor model parameters
  Group = USGS_ASTRO_FRAME_SENSOR_MODEL
    w
    v1
    v2
    v3
  EndGroup
  Group = USGS_ASTRO_LINE_SCANNER_SENSOR_MODEL
    "IT Pos. Bias"
    "CT Pos. Bias"
    "Rad Pos. Bias"
    "Omega Bias"
    "Phi Bias"
    "Kappa Bias"
    "Omega Rate"
    "Phi Rate"
    "Kappa Rate"
  EndGroup
EndObject
End

This will solve for just angles on the SRC images, positional acceleration + angular acceleration on HRSC, just angles on Viking, and positions + angular velocity on CTX. This will produce 4 images CSVs: one for SRC, one for HRSC, one for USGS_ASTRO_FRAME_SENSOR_MODEL and one for USGS_ASTRO_LINE_SCANNER_SENSOR_MODEL

@jessemapel jessemapel added the enhancement New feature or request label Apr 19, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

Successfully merging a pull request may close this issue.

1 participant