-
Notifications
You must be signed in to change notification settings - Fork 168
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
Labels
enhancement
New feature or request
Comments
This was referenced Apr 20, 2021
Merged
This was referenced Apr 28, 2021
This was referenced May 4, 2021
Merged
13 tasks
This was referenced May 14, 2021
13 tasks
13 tasks
13 tasks
This was referenced Jun 15, 2021
13 tasks
This was referenced Jun 17, 2021
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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:
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.
The contents of phobos_solve_params.pvl are
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
The text was updated successfully, but these errors were encountered: