A work in progress by Kristina of an updated training course
Training directory in SPC04 "limb.150c"
Goals
Bring the students to the "SPC Training Level 2" TrainingLevels
- Provide enough SPC hand-on skills that basic shape models can be built
- Provides enough background so that additional practice and instruction can occur
- It will be insufficient to fully train new personal to a level in which they could run an entire mission without support
- Specific things to learn
- Be able to create landmarks and add images
- Basic trouble shooting and fixing mis-registration
- Perform tiling (both globally and BIGMAP)
- Do iterations
- Run residuals, geometry
- Register images to shape model or maps
- Autoregister
- Practice. A key component of this training is to practice. The practice allows for key concepts to become understood at a sufficient level to allow for more advanced concepts to make sense.
Student Prep
Because class time is limited, it is important to get the software and data installed before you show up to the conference. I will be available during the conference to help troubleshoot problems and help get your system functional before the class starts Wednesday morning. Once the class starts, I won't be able to ignore everyone else in the class to fix an install.
To maximize your learning in the class, I provide some information that will be beneficial to review.
- Stuff to read (links below)
- Gaskell's 2008
- Palmer's 2016, sections 2.4 and 5
Required Tasks To Complete Before Class Starts
- Sign the Licensing Agreement. This must be on file before the software can be distributed. //Complete//
- Download SPC software -- encrypted link will be sent only to class attendees
Compile and install SPC. https://oort.psi.edu/public/1a09b8/dl/spc_v3.1B2.zip (password will be sent via a separate email)
- Download sample data. The data volume is large, so it is important to do it ahead of time. Some of the files need to be expanded and moved.
Starting directory & SPICE (600MB)
- You can put this directory anywhere (called topSPC). It is the base directory for the SPC work.
- You can go into the topSPC/ORex/DATA directory and uncompress the files using "gunzip *.gz"
- Images:
I've broken them up into two parts to make them easier to download and compressed them. These <filename>.DAT files need to be moved into the topSPC/IMAGEFILES directory.
Approach (300MB): https://oort.psi.edu/public/1b733b
Preliminary Survey (1GB): https://oort.psi.edu/public/d0e1ec
- You can uncompress the files using "uncompress *.Z"
- Support Tools:
- Over time, I have found that there are many nice helpers for SPC that do well if organized into its own area. They include scripts, programs and image lists. I've included some here. I suggest putting these two directories in /opt/local/spc/
Extra software that is useful
- Software - Please load the following
gnuplot - Installing using MacPorts, "sudo port install gnuplot"
imagemagick Installing using MacPorts, "sudo port install ImageMagick"
GraphicConverter -- http://www.lemkesoft.de/en/products/graphicconverter/
- SPC tools - This is a suite of tools that make measuring pixel/line locations and offsets easier. This is not required and class time won't be used for installing this. Install instructions are coming soon
- apache -- The is installed as default for most UNIX (and Mac) systems.
- spc_tool javascript libraries
- updateDisplay.sh - script to convert SPC output to a web-accessible format
How to install and run - SPC-GUI-tools
Day 1
- Introductions
- Discussion of the Wiki/User’s manual
Unix file layout and paths -- File System Setup
- executables
- source code
- helpers
- scripts
- support
- SPC files
- working
- mapfile/landmark files
- kernels
- images
Show Theory of SPC -- https://sbib.psi.edu/spc_wiki/Training_JAXA_Aug2016?action=AttachFile&do=view&target=Lesson_1.pdf
Day 1 Practical - It's all about LITHOS
- Topics
- display landmark
- landmark management
- create
- delete
- rename
- images
- add images
- remove images - auto and manual
- select useable, correlation and manual
- adjust image position, auto, manual
- global shift
- build template
- find height
- options
The core of SPC is lithos. That tool lets you create landmarks, associate images, align images, determine the 3D position of the landmark and create topography.
Fixing landmarks, using Input landmark
- CM0001 - nominal
CI0001 - simple autoalign Align landmarks
DC0002 - align with an images Align landmarks
FK0002 - manually align a single image Align landmarks
Building a landmark Create new landmark and How To Build A Landmark
- Name: DD0002
- Lat/Lon: 20.072 / 290.164
- Res: 0.0012
- Q-size: 49
Template
START6 - using correlation and template Find template
Topography
Once all the images are aligned (the center pixel of every image is at the exact same feature of the surface), then you can build topography using photoclinometry with some conditions. Find heights
State
A key diagnostic tool for SPC is understanding the state of the system. By state, I mean what are the conditions (the health or quality) of the landmark. There is no one parameter that tells you all of this, but it is looking at a wide set of details that tells you if there are problems.
See Notes from day 1
Tile 120
Tiling is the process of batch creating landmarks in a systamatic order around the surface. Unlike "features", which I use to describe regions of the surface that is selected because of its topographic characteristics, landmarks cover the surface at a set interval to create an overlapping grid over the surface.
scripts/XXX120.seed -- make_scriptT.seed
sh run_script.b
Day 2
New files for today
- Raw FITS Images
- Copy these to topSPC/ORex/NEW_IMAGES/
- Updates to support files
- Copy these to /opt/local/spc/rpi/support
First - let's clean some of the landmarks from lastnight
- FP0001
- GL0001
- GL0002
- ER0001
- EQ0001
- FQ0002
- EO0001
- FB0001
- EA0001
Blocks
We have provided some procedural blocks for different tasks. They include some additional log and configuration that will be different from you, but the main SPC steps are the same. Additionally, Bob has some "PROCEDURES" directory with his source code. There are instructions there and copy/paste commands.
Let's talk about images
- Converting images into SPC format
- Converting geometric information into body-fixed frame
Register
- Each images should be aligned with the shape model at a course level.
Practice - P596677257F2
- Batch
Clear out old TESTFILES and TESTFILES1
- rm TESTFILES*/*
- This must be created from the new list of images
- Make a file of new image names and write them into make_script.in (with a proceeding space and the last line "END")
- ln -s scripts/make_scriptR_01.seed make_scriptR.seed
- sh run_script.b
- find_nofit
Support Files
While batch register is running, we will discuss some support files
- Review metadata and data files
- format -- 8bit, 16bit, 32bit
Autoregister
- Batch associate existing landmarks to new images
When you bring in new images, they have no landmarks. While you can add them into landmarks using lithos, that is not very productive. Thus, we use a program autoregister that loads all of the landmarks into the image you are working with.
Practice - P596677257F2
- Batch
make_script.in -- This must be created from the new list of images
- ln -s scripts/make_scriptA.seed make_scriptA.seed
- sh run_script.b
Iterate
Now that we've pulled in extra information, we need to iterate to get the information propagated to all the files
- Iteration
- Setup
INIT_LITHOS.TXT - Update Max processors
- cp LMRKLIST.TXT LIST.TXT
ln -s <whatever> make_scriptP.seed
make_scriptP > run.sh
- Running
- sh run.sh
- find_nofitP
- Setup
Build a shape model
Create a higher resolution
- Tile 75
- Setup
- ln -s script/make_scriptT_75.in make_scriptT.in
- Running
- sh run_script.b
- Setup
Day 3
- Clean up from 75cm tiling
- SPC Technical Info - Gaskell
- Discussion of SPC Design
- Technical details
- Issues and complexities
Tiling by BIGMAP
Making a bigmap
- Criteria for size, scale
- Lat: -10
- Lon: 350
- Q size: 500
- GSD: 25
Create support/RPI001.in
Note - we use XXXXXX.MAP to allow for scripting. I use symbolic links to aid in keeping track of progress. By running showmap after building and linking the bigmap, you can prove that you have the correct map.
- Criteria for size, scale
bigmap < support/RPI001.in cd MAPFILES ln -s RPI001.MAP XXXXXX.MAP cd .. echo XXXXXX | SHOWMAP convert XXXXXX.pgm lowMap.jpg
Checking for existing maplets
map_coverage XXXXXX 0 .0005 convert coverage_m.pgm preCoverage.jpg
Building the make_scriptT.in file
Build the make_scriptT.in file
This includes some shell commands to make something you can copy/paste. Or you can use a text editor to build the make_scriptT.in, just make sure it follows the correct format for map-based referencing.
echo N | make_tilefile > tmp echo XXXXXX > support/bigmap_tile.in echo scripts/XXX035.seed >> support/bigmap_tile.in sed 1d tmp >> support/bigmap_tile.in ln -s support/bigmap_tile.in make_scriptT.in
Run Tiling
- Run the tiling script. Once you make the INN files, you can track the progress *.OOT files.
make_scriptT sh run_script.b find_nofitT
Evaluation of the bigmap
Now that it is done, you can rebuild the bigmap and see the difference
bigmap < support/RPI001.in echo RPI001 | SHOWMAP convert RPI001.pgm highMap.jpg map_coverage RPI001 0 .0005 convert coverage_m.pgm postCoverage.jpg
System Evaluation
Iterate over region
This uses the fact that you recently made a bigmap as inputs for running a region-specific iteration. Remember, duplicates takes whatever list of landmarks in LIST.TXT, sorts them, removes duplicates and replaced make_script.in. USED_MAPS is created by bigmap, along with USED_PICTS. This contains all of the mapfiles that were used in building the bigmap.
make_lmrklistX rm TESTFILES*/* cp USED_MAPS.TXT LIST.TXT duplicates make_scriptP > run.sh sh run.sh find_nofitP
Questions
- How are shape models used in navigation?
See