MB-System Unix Manual Page: mbnavadjust

### MB-System Unix Manual Page

#

##

##

##

##

##

##

##

###

###

###

###

##

##

###

###

###

###

###

##

###

###

###

##

##

##

##

    mbnavadjust
    Section:  MB-System 5.0  (1)
    Updated:  3 June 2013
    Index

    NAME

    mbnavadjust - Package that solves for optimal navigation by
    matching bathymetry of overlapping swaths.

    VERSION

    Version 5.0

    SYNOPSIS

    mbnavadjust [-V -H -D -R]

    DESCRIPTION

    MBnavadjust is an interactive graphical program used to
    adjust swath data navigation by matching bathymetric features
    in overlapping and crossing swaths. The primary purpose of
    mbnavadjust is to eliminate relative navigational errors in swath
    data obtained from poorly navigated sonars. Submerged platforms
    such as towed vehicles, remotely operated vehicles (ROVs) and
    autonomous underwater vehicles (AUVs) are frequently not navigated
    with accuracy equivalent to the lateral resolution of
    swath bathymetry obtained with high frequency sonars operated
    close to the seafloor. This is  particularly true for systems
    that depend on ultra-short baseline navigation (USBL) or on
    inertial navigation (as opposed to long baseline (LBL) navigation
    obtained using transponder networks). Many old, pre-GPS surveys with
    hull mounted sonars also suffer from poor navigation relative to the
    resolution of the swath bathymetry, and can thus be improved with
    application of this tool. MBnavadjust also works well to
    co-register surveys at different scales. For instance, our
    initial use of this tool involved co-registering a deep-towed Reson
    8101 multibeam survey of the Loihi Seamount summit (offshore Hawaii)
    with a hull mounted Simrad EM300 multibeam survey.

    When swath surveys are poorly navigated, features clearly imaged
    by the sonar may not match in overlapping and crossing swaths.
    However, by systematically determining the positional offsets between
    matching features throughout a survey, it is possible to solve,
    or invert, for a navigation model which is consistent with the
    original navigational constraints, satisfies the requirement
    of reasonableness, and also causes features in overlapping swaths
    to match within the sonar's resolution. The analysis and adjustment
    can be limited to lateral (x and y or longitude and latitude) offsets
    when all vertical offsets have been corrected prior to importation
    into MBnavadjust (e.g. tidal corrections have been made).
    Otherwise, the offset analysis and inversions are three dimensional.

    Previous attempts to address this problem (e.g. Nishimura et al. [1988])
    have focused on automating the identification of matching features
    and their navigational offsets. The automated approach is
    problematic because seafloor features are complex, and the
    cross correlation function of matching features often exhibits
    multiple local minima. Our approach is to automate the identification
    of matching features and the ultimate solution for an optimal
    indentification while depending on interactive determination of
    the navigational offsets. We have not found an automatic algorithm
    that can reliably replace the human eye and brain in correctly
    lining up real seafloor features.

    MBnavadjust operates within the context of the mbprocess
    parallel processing scheme, but it should used on data for which
    the initial navigation processing (e.g. mbnavedit is complete.
    When swath data files are imported into mbnavadjust, the data is
    taken from processed files generated by mbprocess whenever
    possible (when those files exist). If no processed file exists,
    the raw data is used. When the processing with mbnavadjust
    is completed and an optimal navigation solution is achieved, new
    navigation files are generated (".na#" files, see below for full
    description) which supercede the ".nve" files
    generated by mbnavedit. Rerunning mbprocess will merge
    the new navigation into a new set of processed files. Once
    a swath file is processed with mbnavadjust, any further attempts
    to process the navigation with mbnavedit will only produce
    navigation files that are ignored by mbprocess. This behavior
    can be reversed manually using mbset, but then the user will
    unnecessarily complicating his or her efforts.

    The inversion for an optimal navigation which fits the offsets identified
    at matching features must also be reasonable. This is achieved by
    minimizing perturbations to speed and acceleration in the inversion.
    This approach of penalizing first and second derivatives within
    a linear inverse problem is common within the geophysical
    inverse theory literature (e.g. Parker [1994]).

    Users are advised that mbnavadjust is complicated in both
    conception and implementation. We strongly recommend that users
    read all of the documentation provided below prior to attempting
    a first use of this software.
    The meaning and use of the individual widgets and windows employed in
    the graphical interface is provided in the INTERACTIVE CONTROLS
    section. The USING MBNAVADJUST section provides a more coherent
    discussion of how to use mbnavadjust, how this program interacts
    with the mbprocess parallel processing scheme, and the underlying
    concepts and algorithms.

    AUTHORSHIP

    David W. Caress (caress@mbari.org)

      Monterey Bay Aquarium Research Institute

    Dale N. Chayes (dale@ldeo.columbia.edu)

      Lamont-Doherty Earth Observatory

    OPTIONS

    -H

    This "help" flag cause the program to print out a description
    of its operation and then exit immediately.
    -D

    Normally, mbnavadjust uses a white background for the
    interactive plots. This option causes the program to use a
    black background for the plots.
    -R

    This option causes mbnavadjust to discard all navigation ties,
    set all crossings to "unanalyzed" status, and to save the project
    in this pristine state. Only use this option if you really, really
    want to start over.
    -V

    Normally, mbnavadjust outputs nothing to the stderr stream.
    If the -V flag is given, then mbnavadjust
    works in a "verbose" mode and
    outputs the program version being used, all error status messages,
    and a large amount of other information.

    INTERACTIVE CONTROLS

    MBnavadjust Window

    This is the primary window of mbnavadjust.

    File

    This button activates a pulldown menu with six items:
    New, Open, Close,
    Import Swath Data, and Quit.

    File->New

    This menu item brings up a popup window which allows the user to
    specify a new mbnavadjust project. As part of initializing
    a new project, mbnavadjust creates a file with a ".nvh"
    suffix and a directory with a ".dir" suffix.
    File->Open

    This menu item brings up a popup window which allows the user to
    open an existing mbnavadjust project.
    File->Close

    This menu item causes mbnavadjust to close the current project.
    File->Import Swath Data

    This menu item brings up a popup window which allows the user to
    specify a swath sonar data file or a list of
    swath files to be imported into the current
    mbnavadjust project.
    This program uses the MBIO library and
    will read any swath sonar
    formats supported by MBIO. A list of the swath sonar data
    formats currently supported by MBIO and their
    identifier values is given in the MBIO manual page.
    If the swath sonar data file is named using the MB-System
    suffix convention (format 11 files end with ".mb11", format
    41 files end with ".mb41", etc.), then the program will
    automatically use the appropriate format id; otherwise the
    format must be set by the user in the format text box.
    File->Quit

    This button causes mbnavadjust to quit. If a project has been
    created or opened, that project will be closed before the program
    quits.
    Option

    This button brings up a pulldown menu with one item: Controls.
    Option->Controls

    This menu item brings up a dialog window with several slider widgets
    that set parameters controlling how swath data are imported and displayed.
    These widgets are discussed in the Controls section below.

     .TP
    View

    This button brings up a pulldown menu with fifteen items in three
    groups. This menu controls the contents of the list widget in the lower
    right MBnavadjust Window. If an mbnavadjust project
    has been created or opened, the Data Table list
    widget will display a table of items controlled by these menu items,
    and the corresponding menu item will be disabled. Selection of another item
    items will change what is displayed in the Data Table list
    widget accordingly.

    The first group includes the Show Surveys,
    Show Data Files, Show Data File Sections, Show All Crossings,
    Show All Crossings, Show >25% Crossings, Show >50% Crossings,
    Show True Crossings, and Show Ties items.
    View->Show Surveys

    This menu item causes the Data Table list widget to display a list of the
    surveys in the current mbnavadjust project. Within MBnavadjust, a
    survey is a group of swath files that are contiguous in time.
    View->Show Data Files

    This menu item causes the Data Table list widget to display a list of the swath
    data files in the current mbnavadjust project.
    View->Show Data File Sections

    This menu item causes the Data Table list widget to display a list of the swath
    data sections in the current mbnavadjust project.
    View->Show All Crossings

    This menu item causes the Data Table list widget to display a list of all the swath
    crossings in the current mbnavadjust project.
    When this option is set, selecting a list item causes mbnavadjust to load and display the selected
    selected crossing in the "Nav Err" window.
    View->Show >25% Crossings

    This menu item causes the Data Table list widget to display a list of all the swath
    crossings in the current mbnavadjust project for which the two sections overlap by
    more than 25%.
    When this option is set, selecting a list item causes mbnavadjust to load and display the selected
    selected crossing in the "Nav Err" window.
    View->Show >50% Crossings

    This menu item causes the Data Table list widget to display a list of all the swath
    crossings in the current mbnavadjust project for which the two sections overlap by
    more than 50%..
    When this option is set, selecting a list item causes mbnavadjust to load and display the selected
    selected crossing in the "Nav Err" window.
    View->Show True Crossings

    This menu item causes the Data Table list widget to display a list of all the swath
    crossings  in the current mbnavadjust project for which the navigation tracks cross.
    When this option is set, selecting a list item causes mbnavadjust to load and display the selected
    selected crossing in the "Nav Err" window.
    View->Show Ties

    This menu item causes the Data Table list widget to display a list of the tie points
    in the current mbnavadjust project.

    The second group includes the
    Show All Surveys, Show Only Selected Survey, Show Only Selected File,
    and Show Only Selected Section items. One of these options is always active, and
    modifies what is displayed in the Data Table list.
    View->Show All Surveys

    This menu item allows all of the possible items (file, sections, crossings, ties)
    to be displayed in the Data Table list.
    View->Show Only Selected Surveys

    This menu item limits the items (file, sections, crossings, ties) displayed in
    the Data Table list to those associated with the most recently
    selected survey (e.g. a survey selected by clicking in the Data Table list
    while the <View->Show Surveys> option is active).
    View->Show Only Selected File

    This menu item limits the items (file, sections, crossings, ties) displayed in
    the Data Table list to those associated with the most recently
    selected file (e.g. a file selected by clicking in the Data Table list
    while the <View->Show Files> option is active).
    View->Show Only Selected Section

    This menu item limits the items (file, sections, crossings, ties) displayed in
    the Data Table list to those associated with the most recently
    selected section (e.g. a section selected by clicking in the Data Table list
    while the <View->Show Sections> option is active).

    The third group includes two options:
    View->Visualize Survey

    This option is not active, and is for future use.
    View->Show Modelplot

    This option causes an addition "Model Plot" window to be shown that displays
    the navigation adjustment model as three time series: longitude on top, latitude
    in the middle, and vertical on the bottom.
    Action

    This button brings up a pulldown menu with nine items:
    Set File Poor Navigation, Set File Good Navigation,
    Set File Fixed Navigation, Auto-Pick Offsets,
    Check for New Crossings, Analyze Crossings, Zero All Z Offsets,
    Invert Navigation, and Apply Adjusted Navigation.
    Action->Set File Poor Navigation

    This menu item causes mbnavadjust to treat the navigation of
    a selected swath data file as poor. This option is only activated
    when the Data Table list widget shows a list of the imported
    swath files and one file has been selected by clicking in that list.
    In the case where no files are fixed, the final adjusted navigation model
    is centered on the average navigation offsets required for good files.
    The offsets tieing to files with poor navigation are ignored in
    calculating the averages.
    Action->Set File Good Navigation

    This menu item causes mbnavadjust to treat the navigation of
    a selected swath data file as good, which is in fact the default state
    for swath files. This option is only activated
    when the Data Table list widget shows a list of the imported
    swath files and one file has been selected by clicking in that list.
    In the case where no files are fixed, the final adjusted navigation model
    is centered on the average navigation offsets required for good files.
    The offsets tieing to files with good navigation are used in
    calculating the averages.
    Action->Set File Fixed Navigation

    This menu item causes mbnavadjust to treat the navigation of
    a selected swath data file as fixed, which means that all navigation
    points for this file will have zero offsets in the final adjusted navigation.
    Effectively, all of the offsets between fixed and unfixed files are taken up in
    the adjustments of the unfixed files.
    This option is only activated
    when the Data Table list widget shows a list of the imported
    swath files and one file has been selected by clicking in that list.
    Action->Auto-Pick Offsets

    This menu item causes mbnavadjust to automatically pick offsets in
    all of the unset crossings currently displayed in the Data Table list.
    If <View->Show True Crossings> has been selected, then only true crossings are
    displayed and only the unset true crossings will be automatically picked.
    In general, unsupervised offset picks are frequently erroneous, and use
    of this experimental option is not encouraged.
    Action->Check For New Crossings

    This menu item causes mbnavadjust to search for new crossings using
    the adjusted navigation from the current inversion. Often, new places where
    swaths overlap and cross emerge as the navigation is adjusted. The percentage
    of overlap is also recalculated for all of the existing crossings. If new true
    crossings are found, the user will be unable to perform a new inversion until
    all of the true crossings have been analyzed.
    Action->Analyze Crossings

    This menu item causes mbnavadjust to load and display the first
    crossing in the "Nav Err" window.
    Action->Zero All Z Offsets

    This menu item causes mbnavadjust to load and display the first
    crossing in the "Nav Err" window.
    Action->Invert Navigation

    This menu item causes mbnavadjust to invert for an optimal
    navigation solution that fits the offsets defined at the navigation
    tie points while minimizing speed and acceleration. This option is
    only activated when all of the true crossings in the current
    mbnavadjust project have been analyzed interactively.
    Action->Apply Adjusted Navigation

    This menu item causes mbnavadjust to export the adjusted
    navigation model from the current inversion to the
    swath files in the project.This option is
    only activated when the inversion is current, meaning that no new
    data have been imported and no changes to offset picks have been
    made since the last inversion.
    About

    This button brings up a pulldown menu with one item: About.
    About->About

    This menu item brings up a popup window that displays the program's
    name, authors, and version. Clicking the Dismiss button will
    close the window.
    Data Table

    This list widget displays one of five tables of information regarding
    the current mbnavadjust project. These tables are a list of the
    imported swath surveys, the data files, the shorter data sections
    comprising each data file, a list of the identified crossing swaths, and
    a list of the navigation tie points defined interactively by the user.
    The View pulldown menu allows the user to set which table is displayed.

    The survey list will look something like:

            00 53 2009/08/03 08:18:49.484999 2009/08/03 22:52:59.375000

            01 51 2009/08/04 09:03:11.938999 2009/08/04 23:02:03.470999

            02 01 1998/05/13 01:33:36.791000 1998/05/13 02:42:11.703999

    Here the first column is the survey counter, the second is the number
    of swath files included in each survey, and the following information
    consists of the start and end times of the data in each survey
    shown in YYYY/MM/DD HH:MM:SS.SSSSSS format.

    The file list will look something like:

            0000:00 gd   11  0.0  0.0 ../../20090803/20090803_081706.mb88

            0001:00 gd   11  0.0  0.0 ../../20090803/20090803_083332.mb88

            0002:00 gd   11  0.0  0.0 ../../20090803/20090803_085004.mb88

            0003:00 gd   11  0.0  0.0 ../../20090803/20090803_090636.mb88

            0004:00 gd   10  0.0  0.0 ../../20090803/20090803_092307.mb88

                    ..........................................

            0053:01 gd   12  0.0  0.0 ../../20090804/20090804_090127.mb88

            0054:01 gd   10  0.0  0.0 ../../20090804/20090804_092036.mb88

            0055:01 gd   11  0.0  0.0 ../../20090804/20090804_093707.mb88

            0056:01 gd   10  0.0  0.0 ../../20090804/20090804_095339.mb88

            0057:01 gd   11  0.0  0.0 ../../20090804/20090804_101010.mb88

                    ..........................................

            0104:02 fx    8  0.0  0.0 ../../MBARI/1998em300/mbari_1998_630_msn.mb57

    Here the first column is the file counter and survey counter separated by a colon.
    The second column indicates the file navigations state; "gd" indicates good
    navigation, "pr" indicates poor navigation, and "fx" indicates fixed
    navigation. The third column shows the number of sections extracted from this file.
    The fourth and fifth columns show any heading
    or roll bias offsets in degrees applied to the swath data for that file.
    The sixth column gives the name of the swath data file imported into
    mbnavadjust. Note that the name shown here is that of the "raw"
    swath file. The data imported by mbnavadjust is,
    if possible, extracted from a "processed" swath file
    generated by mbprocess rather than the
    associated "raw" file.

    The file section list will look something like:

            00:0000:00 2009/08/03 08:17:07.546998 2009/08/03 08:18:49.484999

            00:0000:01 2009/08/03 08:18:49.984999 2009/08/03 08:20:26.952999

            00:0000:02 2009/08/03 08:20:27.452999 2009/08/03 08:22:05.890999

            00:0000:03 2009/08/03 08:22:06.390999 2009/08/03 08:23:43.344001

            00:0000:04 2009/08/03 08:23:43.844001 2009/08/03 08:25:19.796999

            00:0000:05 2009/08/03 08:25:20.296999 2009/08/03 08:26:57.265997

            00:0000:06 2009/08/03 08:26:57.765997 2009/08/03 08:28:35.219001

            00:0000:07 2009/08/03 08:28:35.719001 2009/08/03 08:30:16.155999

            00:0000:08 2009/08/03 08:30:16.655999 2009/08/03 08:31:57.594001

            00:0000:09 2009/08/03 08:31:58.094001 2009/08/03 08:33:36.546999

            00:0000:10 2009/08/03 08:33:37.046999 2009/08/03 08:33:37.546999

    Here the first column shows the section id with the survey counter, the file counter,
    and the section counter separated by colons. The following information
    consists of the start and end times of each section
    shown in YYYY/MM/DD HH:MM:SS.SSSSSS format.

    The crossing list will look something like:

            -X    0 000:009 001:000  21  0

            -     1 001:009 002:000  10  0

            -     2 002:009 003:000  10  0

            U     3 003:009 004:000   6  0

            -     4 005:009 006:000  13  0

            U     5 007:009 008:000   3  0

            U     6 009:008 009:010   2  0

            *     7 009:008 010:000  16  1

            *X    8 009:009 010:000  41  1

            -     9 009:008 010:001   1  0

    Here the first column indicates the processing status for the
    crossing. The first character is the status flag. If the status flag is "U",
    then no decision has been made about skipping or tieing this crossing.
    New crossings always show a "U" flag prior to being
    inspected by a user. If the first character is "-", then the crossing
    has been skipped, and if the first character is "*", then at least one
    tie point has been set. The second column is the crossing counter. The
    third and fourth columns identify the swath data sections that overlap
    in this crossing. Each are identified by their file id and section id
    separated by ":". The fifth column indicates the percentage of overlap
    of the two sections in this crossing. The larger the degree of overlap,
    the more likely that diagnostic matching topographic features exist that
    can be used to determine the navigation offsets required for this crossing.
    The sixth, and last column gives the number of tie
    points that have been defined for each crossing. New crossings always
    begin with 0 tie points prior to being inspected by a user.

    The tie point list will look something like:

               7 0 009:008:07 010:000:04 00:00  1.02 -2.87 0.00 |  9.61  8.49 1.40 | 0.041 0.107 0.027

               8 0 009:009:02 010:000:00 00:00  0.90 -4.47 0.00 |  7.37  6.30 2.29 | 0.040 0.184 0.033

              12 0 009:008:04 010:002:04 00:00  4.11 -8.24 0.00 |  9.28  5.99 1.80 | 0.037 0.021 0.025

              14 0 010:000:02 010:002:06 00:00  2.12 -4.38 0.00 |  7.50  6.70 1.10 | 0.007 0.065 0.005

              16 0 009:007:04 010:003:04 00:00  5.90 -5.90 0.00 |  8.66  6.84 1.70 | 0.019 0.085 0.027

              19 0 009:006:04 010:004:04 00:00  8.32 -6.83 0.00 |  8.78  8.55 6.65 | 0.026 0.066 0.024

              21 0 009:005:05 010:005:03 00:00  8.96 -8.75 0.00 | 12.38  8.74 5.16 | 0.008 0.045 0.008

              23 0 009:004:04 010:006:04 00:00 12.23 -5.98 0.00 |  7.03  4.49 1.40 | 0.019 0.034 0.010

              26 0 009:003:04 010:007:04 00:00 17.42 -4.36 0.00 | 13.92 10.11 1.80 | 0.025 0.037 0.028

    Here the first column indicates the crossing which contains the tie point,
    and the second column shows which tie point (of those defined for that
    crossing) is displayed in a particular line. The third and fourth columns
    identify the navigation control points of the tie point. The navigation
    control points are specified by file, section, and nav point numbers separated
    by ":". The fifth through seventh columns are the longitude, latitude and vertical
    offsets (in meters) set interactively by the user. These represent the distance the second
    navigation control point must be moved relative to the first in order to make
    the bathymetry in the two swaths match. The tenth through twelth columns show the
    magnitude of the three axes of the uncertainly ellipsoid associated with each tie.
    The uncertainly ellipsoid is estimated as a 3x3 tensor and used to weight the tie
    offsets in the navigation adjustment inversion. Here the major and second axes are
    always close to horizontal, and the minor is axis is always close to vertical.
    The last three columns are nonzero only
    after an inversion for an optimal navigation solution has been performed. These
    represent the residual, or difference, between the offset calculated for this tie
    point in the inversion and that set by the user
    (displayed in the fifth through seventh columns).

    If the file list is displayed and one file is selected by clicking in
    the list, then the user can fix or unfix the navigation of that file using
    the <Action->Fix File> or <Action->Unfix File> pulldown menu items.
    If either the crossing list or the tie point list are displayed, selecting
    one crossing or one tie point by clicking in the list widget will cause
    the specified crossing to be loaded and displayed in the Nav Err
    window.

    Controls Window

    This dialog window is brought up by clicking the Option->Controls
    menu item in the MBnavadjust Window. This window includes two slider
    widgets setting data importation parameters, four slider widgets setting
    data display parameters, a button to apply any changes, and a button to
    dismiss the window.

    Max Section Length (km)

    When mbnavadjust imports swath data, it breaks each data file
    up into a set of sections, or pieces. The geographical coverages of all sections
    are then compared to determine where swaths overlap or cross. This control
    sets the section track length. The ideal section length varies with the sonar
    altitude and ping rate. If the section length is too short, there will be too
    many small sections and an excessive number of crossings to analyze. If the
    section length is too large, individual sections will be slow to load and display.
    Max # Soundings in Section

    This slider widget sets an additional or alternative control on swath data section size: the
    maximum number of soundings (not pings) that may be included in a given section. For some
    datasets, it may be more convenient to use the number of soundings rather than the track
    length as the criterea for breaking files up into sections.
    Decimation

    When swath bathymetry sections are displayed in the Nav Err window,
    the primary display consists of bathymetric contours.
    The time required for calculating these
    contours is linear with the number of soundings. This slider allows users to
    decimate the pings used for the contour displays. If the decimation is set
    to 1, all soundings are used. If the decimation is set to 2, the soundings from
    every second ping are used for contouring.
    Contour Interval (m)

    This slider widget sets the depth interval in meters for the bathymetric contours.
    Color Interval (m)

    This slider widget sets the the depth interval in meters at which the
    color of the bathymetric contours changes. The contours are generated in four
    colors: black, red, green, and blue. The color interval should be a multiple
    of the contour interval.
    Tick Interval (m)

    This slider widget sets the depth interval in meters at which contours have
    downhill facing tickmarks. The tick interval should be a multiple of the contour
    interval.
    Inversion Smoothing

    This slider widget sets the importance of smoothing in the adjusted
    navigation model. Larger values yield a smoother model, smaller values a rougher model.
    The default is 4.00, and possible ranges are 0.10 to
    10.0, where the smoothing penalty weight applied to the first and
    second derivatives of the adjusted navigation perturbation is ten
    raised to this power.
    Apply

    This button applies any changed values in the slider widgets of the Controls Window.
    If the Controls Window is closed without the Apply button being clicked, all
    changes to the values controlled by the sliders are lost.
    Dismiss

    This button closes the Controls Window.

    Nav Err Window

    This window allows users to interactively inspect crossing swaths,
    define navigation tie points where bathymetric features can be matched,
    and set the navigation offsets at those tie points. This window can
    be brought up in a number of ways. If one pulls down the
    menu option <Action->Analyze Crossings>, then the "Nav Error" window
    will come up with the first crossing loaded. Alternatively, if the
    <View->Show All Crossings> menu item has been selected so that a table of
    crossings is displayed, clicking once on any of the crossing items in
    this tabel will bring up the  "Nav Error" window with that crossing loaded.
    Similarly, if tie points have been established and the tie point table
    displayed by selecting the <View->Show Ties> menu item, then clicking on
    any of the tie items this table will bring up the "Nav Error" window
    and load the crossing that includes the selected tie point. If the
    "Nav Error" window is already displayed, clicking on crossing or tie items
    in the display tables will load the selected crossing in place of whatever
    crossing was previously shown.

    The Nav Err window includes a number of button widgets and three display
    canvases. The larger display to the right shows bathymetric contour maps
    of the overlapping swaths overlain by navigation tracks and any tie points
    that have been defined for the current crossing. The smaller canvas on the
    middle left shows the RMS bathymetry misfit between the two swaths as a
    function of lateral (x and y) offset using the current vertical (z)offset. The
    smallest canvas on the lower left shows the RMS Bathymetry misfit between
    the two swaths as a function of vertical offset using the current
    lateral offset.

    Contour Display

    This canvas displays color bathymetric contours from both overlapping
    swaths in the current swath crossing. Initially, the display is scaled
    so that the entire area covered by the current crossing is visible. The
    bathymetric contours of the second swath can be moved relative to those
    of the first by dragging with the left mouse button in the canvas. The
    current navigational offset changes as the contours shift. The location
    of the current lateral offset also changes simultaneously on the misfit plot. The
    user can display a subregion of the current map by dragging a rectangle in the canvas
    with the middle mouse button. This zoom operation can be repeated as many times
    as desired. The right mouse button is used to set the location of the current
    navigational tie point. When the right mouse button is clicked on a point in
    the contour map, the closest navigation control points from each swath to
    that position are selected for the current tie point. In practice, the user
    should right-click on the bathymetric feature being matched to set the
    tie point correctly.
    Lateral Misfit Display

    This canvas shows a color two dimensional plot of the RMS bathymetric misfit
    between the two overlapping swaths. The misfit is shown as a function
    of relative lateral (x and y) offsets between the two  swaths using the
    current vertical (z) offset.  Put
    another  way,  the misfit plot shows how good, or bad, the
    misfit becomes as one moves one swath relative to another.
    The  lowest misfit values are shown in red; higher misfits
    are shown in blues to purples. The location of the minimum
    misfit  is  marked by a black "X", and the location of the
    current navigation offset is shown by a small  red  square
    with a black outline. If an inversion has been performed, a
    small black "+" will mark the location of the offset calculated
    by the inversion. If a user left-clicks in the Lateral Misfit Display, the
    location of the cursor is taken as the new navigation offset
    and the red square moves to that location. Simultaneously, the
    bathymetric contours in the Contour Display shift to reflect
    the new offset.
    Vertical Misfit Display

    This canvas shows a color profile plot of the RMS bathymetric misfit
    between the two overlapping swaths. The misfit is shown as a function
    of relative vertical (z) offset between the two  swaths using the
    current lateral (x andy) offsets.  Put
    another  way,  the misfit plot shows how good, or bad, the
    misfit becomes as one moves one swath vertically relative to another.
    The  lowest misfit values are shown in red and as high points
    in the profile; higher misfits
    are shown in blues to purples and as low points. The location of the minimum
    misfit  is  marked by a black "X", and the location of the
    current vertical offset is shown by a solid line. If an inversion has been performed, a
    small black "+" will mark the location of the offset calculated
    by the inversion. If a user left-clicks in the Vertical Misfit Display, the
    location of the cursor is taken as the new vertical offset
    and the solid line moves to that location. Simultaneously, the
    bathymetric contours in the Contour Display shift to reflect
    the new offset.
    Settings

    This button brings up a pulldown menu with two items: Biases and ContoursB
    Settings->Biases

    This menu item brings up a dialog window with several slider widgets
    that set roll and heading bias values.
    These widgets are discussed in the Biases section below.
    Settings->Contours

    This menu item brings up a dialog window with several slider widgets
    that set parameters controlling how swath data are imported and displayed.
    These widgets are discussed in the Controls section above.
    Previous

    Clicking this button causes the Nav Err window to load and display the previous crossing.
    Next

    Clicking this button causes the Nav Err window to load and display the next crossing.
    Next Unset

    Clicking this button causes the Nav Err window to load and display the next crossing which
    has no tie points set and has not been explicitly skipped.
    Skip Crossing

    This button indicates that no good tie points can be defined for the current crossing.
    The program mbnavadjust will not allow an inversion to be calculated until all true crossings
    either have tie points defined or have been explicitly skipped.
    Full Size

    Clicking this button causes the contour display to resize so that it shows the entire area
    covered by the swath sections in the current crossing.
    Unset Crossing

    This button returns the current crossing to the original unset state, deleting any ties that
    have been set.
    Reset Crossing

    This button is active only if a tie has been set for the current crossing. If a tie exists,
    and the user has changed the current offset from that of the current tie, then this button
    returns the working offset values to that of the existing tie.
    Set Offset

    This very important button causes the current navigational offset to be set for the
    current tie point and crossing. This button is the only way that the navigational offsets
    are actually applied to the mbnavadjust project. If the user closes the Nav Err window,
    changes the loaded crossing, or changes the active tie point without clicking <Set Offset>,
    whatever navigational offset was viewed will be lost. Tie points are displayed in yellow
    once they are set, and in red when either the navigational offset or the navigation
    points have been changed but not yet set.
    Zero Z Offset

    This button sets the current vertical offset to zero meters.
    Add Tie

    This button adds a new tie point for the current crossing and makes this new tie point
    active. The tie point initially adopts the current navigational offset.
    Zero Offset

    This button sets the current navigational offset to zero meters for longitude, latitude, and vertical.
    Select Tie

    If more than one navigation tie point has been defined for a crossing,
    then only one tie point can be active at any time. The navigation control points of the
    active tie points will be displayed as red boxes, and those of any inactive
    tie points will be shown as smaller red boxes. This button changes the active tie point.
    Repeatedly clicking this button will cycle through all of the tie points in the
    current crossing. Note that each tie point has its own offset defined, so in general
    the positions of the bathymetric contours will change as the active tie point changes.
    Delete Tie

    This button deletes the current active tie point.
    Dismiss

    This button closes the Nav Err window.
    Minimum Misfit

    This button shifts the current offset to the value identified as the minimum misfit in
    the current misfit display. The minimum misfit is shown as the large black X on the
    color lateral misfit plot and on the vertical misfit profile.
    Minimum XY Misfit

    This button shifts the current lateral offset to the values identified as the minimum lateral misfit in
    the current misfit display. The vertical offset is not changed. The minimum lateral
    misfit is shown as the small black X on the lateral misfit plot. This button is generally
    used when the data are already corrected for all vertical offsets (e.g. tides), and so
    all z offsets can be confined to zero values.
    Center on Zero Offset

    This button causes the misfit plot to be regenerated using a zero navigational offset as the plot origin.
    Center on Current Offset

    This button causes the misfit plot to be regenerated using the current navigational offset as the plot origin.

    Biases Window

    This dialog window is brought up by clicking the Settings->Biases
    menu item in the Nav Err Window. The controls allow users to set
    roll and heading bias (or offset) values to be a applied to some or all of
    the swath bathymetry in the mbnavadjust project. Under most circumstances,
    roll bias and pitch bias problems should be resolved before swath data are
    imported into mbnavadjust. However, these settings make it possible to
    deal with bias issues if they are discovered during the navigation adjustment
    process. This window includes two toggle
    buttons to set the bias mode, four slider widgets to set the bias parameters,
    a button to apply the bias settings to all swath files, a button to apply the bias
    settings to the current swath file, and a button to
    dismiss the window.

    Same Biases (km)

    This toggle button sets the bias mode so that the heading and roll bias is identical
    for both swath data sections in the current crossing. The <Different Biases> toggle
    is deselected when this toggle is selected.
    Different Biases (km)

    This toggle button sets the bias mode so that the heading and roll bias can be
    different between the two swath data sections in the current crossing.  The <Same Biases> toggle
    is deselected when this toggle is selected.
    Section 1 Biases (deg) -> Heading

    This slider widget sets the heading bias for swath section 1. The
    Section 1 Biases (deg) -> Roll

    This slider widget sets the roll bias for swath section 1.
    Section 2 Biases (deg) -> Heading

    This slider widget sets the heading bias for swath section 2.
    Section 2 Biases (deg) -> Roll

    This slider widget sets the roll bias for swath section 2.
    Apply to All Files

    This button sets the current heading and roll bias values as the
    bias values for all swath files in the mbnavadjust project.
    This button is only enabled when the <Same Biases> toggle is selected.
    Apply

    This button sets the current heading and roll bias values as the
    bias values for the swath sections in the current crossing. The bathymetry
    contours and misfit plot are recalculated and redisplayed using the
    new bias values.
    Dismiss

    This button closes the Controls Window.

    USING MBNAVADJUST 1: IMPORTING DATA

    Users begin using mbnavadjust by starting up the program
    on the command line:

            mbnavadjust

    In order to get started, one must either open an existing
    mbnavadjust project or initialize a new one. Both options
    are available under the <File> menu with the <File->New> and <File->Open>
    menu buttons. When one pulls down the <File->New> option, a dialog opens
    that allows navigation of the filesystem and specification of
    a project name. Whatever project location and name is chosen,
    a directory "{project_path}/{project_name}.dir" and a file
    "{project_path}/{project_name}.nvh" will be created. Once
    a project exists and has been opened, swath data can be imported and then
    analyzed. To open an existing mbnavadjust project, click
    the <File->Open> option and select the corresponding "*.nvh" file.

    The main mbnavadjust window displays basic information in a set of
    labels in the upper left, including the open project name, the number of
    files imported, the number of crossings found, the number of crossings
    analyzed, the number of navigation tie points set, and whether an
    up-to-date inversion for optimal navigation has been performed. A scrollable
    text window in the lower left displays messages regarding all actions
    performed by the program during the current session. Another scrollable
    window on the right displays one of three tables of information according
    a user selection under the <View> menu. The three choices are a table
    of the imported swath files, a table of the swath crossings, and a table
    of the interactively defined navigation tie points. If no swath data has
    yet been imported, then the all of the tables will be empty. Once some data
    files are imported, the swath file table will have entries and
    some number of crossings will be defined (assuming that
    swaths do overlap and cross), but no tie points will yet be defined.

    In order to import swath data into an mbnavadjust project,
    pull down the <File->Import Swath Data> menu item. A file selection
    dialog will appear. Swath data can be imported in single files or through
    datalists (see the MB-System manual page for a description
    of recursive datalists). As with other MB-System programs, the format
    id will be automatically determined if possible for each file selected.
    If a filename does not follow the the MB-System naming convention, the
    user may need to manually set the format id in the appropriately labeled
    dialog text widget.

    Each file that is imported is broken into
    a number of sections. The maximum size of the sections in line length or
    in number of soundings is set in a dialog opened by clicking on
    <Option->Controls>. Navigation control points are selected at regular
    intervals within each section. The control point distance interval is
    approximately  one tenth of the specified segment length, so there are
    up to 11 control points for each section. The data for each section is
    written as a format 71 bathymetry-only file in the "*.dir" directory.
    As the files are imported, the areal extent of each section is
    compared to the other sections. Any pair of sections that overlap
    is added to a list of crossings to be investigated graphically. This list
    can be displayed by pulling down the <View->Show Crossings> menu item.

    As the user later works through the crossings, he or she will will define
    tie points whenever the overlapping bathymetry allows the navigational offset
    to be determined reliably in three dimensions. Each tie point will reference
    two of the navigation control points, one from each swath in the crossing.
    Ultimately, some crossings will allow one, or in some case multiple tie
    points to be defined. Other crossings will still have no tie points, either
    because the swaths don't really overlap or because there aren't any
    distinctive features to match. When all of the crossings have been inspected,
    then the user can invoke inversion for an optimal navigation solution.
    In cases where the data are known to be already corrected for vertical offsets,
    such as tides, then the user can uniformly set the vertical (z) components of
    offsets to zero.

    USING MBNAVADJUST 2: INSPECTING CROSSINGS

    Bringing Up The Nav Error Window

    The heart of mbnavadjust is the interactive inspection of the
    swath crossings. One can bring up the crossing inspection window
    (entitled "Nav Error") in a number of ways. If one pulls down the
    menu option <Action->Analyze Crossings>, then the "Nav Error" window
    will come up with the first crossing loaded. Alternatively, if the
    <View->Show Crossings> menu item has been selected so that a table of
    crossings is displayed, clicking once on any of the crossing items in
    this tabel will bring up the  "Nav Error" window with that crossing loaded.
    Similarly, if tie points have been established and the tie point table
    displayed by selecting the <View->Show Ties> menu item, then clicking on
    any of the tie items this table will bring up the "Nav Error" window
    and load the crossing that includes the selected tie point. If the
    "Nav Error" window is already displayed, clicking on crossing or tie items
    in the display tables will load the selected crossing in place of whatever
    crossing was previously shown.

    Once the "Nav Err" window is displayed, the user can also move through
    the crossings by clicking on the <Previous>, <Next>, and <Next Unset>
    buttons. The <Previous> and <Next> buttons will load the previous or
    next, respectively, crossings in the crossing list. As discussed below,
    each crossing must ultimately be "resolved" by either having one or
    more navigation offsets set at particular "tie points", or by being
    "skipped" because no matchable seafloor features are found. The <Next Unset>
    button will load the next crossing that has not been resolved.
    To close the "Nav Err" window, click the <Dismiss> button.

    Interactively Matching Seafloor Features

    The "Nav Error" window is complicated in appearance, and
    regrettably complicated in function also.
    The purpose is to allow the user to determine if any seafloor features
    can be confidently matched in the overlapping swaths. If so, one or more
    tie points can be defined. In order to ease the identification of matching
    features, two simultaneous displays are provided.
    The larger plot on the right consists of overlain
    bathymetric contours derived from each of the two swaths. The smaller
    canvas on the left shows a color two dimensional plot
    of the RMS misfit between the two swaths. The misfit is shown
    as a function of relative lateral offsets between the two swaths. Put another
    way, the misfit plot shows how good, or bad, the misfit becomes as one moves
    one swath relative to another. The lowest misfit values are shown in red; higher
    misfits are shown in blues to purples. The location of the global (three dimensional)
    minimum misfit is marked by the large black "X", the location of the minimum misfit
    using the current vertical offset value is marked by a small black "x",
    and the location of the current navigation offset is
    shown by a small red square with a black outline.

    The interactive aspect of the "Nav Error" window works simultaneously
    in both displays. If the user holds down the left mouse button in the
    contour plot and moves the cursor, the bathymetry contours from one swath
    will move along with the cursor. In this way, the user can move one of the
    swaths around relative to the other until the contours line up and features
    match. As the contours move, the red square showing the current offset location
    also moves on the misfit plot. The user can thus visually relate the contour matching
    to the misfit function. The combination of these two displays greatly improves
    a user's ability to reliably determine navigational offsets (and to conclude
    where navigational offsets cannot be determined).

    The "Nav Err" window includes two buttons that are particularly useful during
    efforts to match seafloor features. The <Minimum Misfit>
    button below the misfit display will cause
    mbnavadjust to set the current navigational offset to that
    associated with the smallest misfit for the current misfit display. This button
    is often used first to get close to the right offsets.
    The <Zero Offset> button above the contour display will return both displays
    to a state of zero navigational offset.

    The relationship between the contoured bathymetry and the misfit plot
    is usually quite clear. If a strongly matching seafloor feature
    exists, then a distinct minimum will show up in the misfit plot. If the navigation
    is good and the feature already matches, then the misfit minimum will be located
    at the center of the plot, corresponding to an offset that is zero distance in
    both the east-west and north-south directions. If the navigation is bad, then
    the misfit minimum will be offset from the origin, and the offset vector
    will correspond to how far and what direction one must move one swath so that
    the features in both swaths match. In cases where there is no distinctive
    seafloor feature to match, the misfit plot will not display a strong
    minimum and it will be impossible to determine the relative navigational
    offset. Alternatively, the existence of multiple similar features can
    produce multiple local minima in the misfit map. In this case, the ambiguity
    between multiple possible solutions prevents the determination of the
    navigational offset. We have found that combining both contour
    and misfit displays allows interactive, visually based decision making that
    is more generally reliable than any automated scheme we can devise.

    Navigational offsets can only be used when they are associated with specific
    points on the overlapping swath navigation. These points are called "tie points".
    All crossings will begin with no tie points, and users can generate one or more
    tie points for any crossing as required.
    The creation and manipulation of tie points is discussed in detail in a later section.

    It is also important to understand that any apparent navigation offset observed
    in the contour and misfit plots is relative. It may turn
    out that both swaths are poorly navigated and have to be moved, or that all
    of the offset can be applied to one swath or the other. The set of decisions about
    how to distribute the relative navigation offsets among the affected swath files
    intrinsically involves speed and acceleration changes. Fortunately,
    we are able to formulate the automated inversion process discussed below to obtain an
    optimal navigation solution.

    Display Controls

    The user controls the appearance of the bathymetry contour plot.
    The contours are generated at regular intervals in depth, and also change
    color and are annotated with downhill facing tickmarks at regular intervals.
    A controls dialog brought up by clicking on the <Settings->Contours> button
    allows the user to set the contour, color change, and tickmark intervals. This
    same dialog also sets a decimation parameter that causes the contours to be
    calculated from fewer soundings (the data are decimated by ignoring pings). The application of
    decimation may speed up the crossing loadings, but is not generally recommended
    unless the bathymetry is strongly oversampled.

    Users may also use a "zoom" feature to focus on small areas in the contour plot.
    The center mouse button is used to drag a box over a region of interest in the
    contour plot. When the center button is released, both the contour and misfit plots
    are regenerated to show the smaller area.
    Users may zoom as many times in succession as
    desired. One cannot undo the individual zoom events, but clicking the <Full Size>
    button in the "Nav Err" window will cause the plots to show the original, full
    area covered by the two swaths in the current crossing.

    The misfit plot represents lateral offsets scaled according to the current
    contour plot display. Specifically, the width and height of the misfit plot
    correspond to one half the width and height of the bathymetry contour plot.
    When the bathymetry plot area changes due to a zoom event, the misfit is
    recalculated and redisplayed centered around the current offset. The color map
    used for the misfit display is automatically scaled according to the
    minimum and maximum misfit values.

    Setting Crossing Ties and Offsets

    In order to actually set the relative navigational offset between two particular
    points on overlapping or crossing swaths, the user must first create a tie point.
    This is accomplished by clicking on the <Add Tie> button in the "Nav Err" window.
    Once a tie point exists, it will be shown on the contour plot as two
    yellow or red-filled, black
    outlined squares connected by a thin black line. Each of the squares
    is located along one of the swath navigation tracks, and represents one of
    the navigation control points defined during data importation.
    There can be multiple tie points for each crossing, and
    each one is created by clicking on the <Add Tie> button.

    Only one tie point
    will be active at any time. The active tie point is displayed with larger boxes
    (the inactive tie points are only 1/4 the size. If only one tie point has been
    defined, it will always be active. If more than one tie point exists,
    clicking on the <Select Tie> button in the "Nav Err" window will change the
    active tie point to the next in the list for the displayed crossing
    (the tie points are selected in the order in which they were
    created). If the user wishes to delete a tie point, then click <Select Tie> until
    the undesirable tie point is active, and then click <Delete Tie>.
    The active tie point will be
    displayed in red fill if either the associated navigation
    control points or the navigational offset have been changed since it was
    created or last set. If the active tie point is up-to-date, then it will
    be displayed in yellow fill. Each new tie point is initially displayed
    in yellow. All inactive tie points will be shown in yellow fill.

    When viewing a crossing with one or more tie points, the offsets displayed are
    associated with the current tie point. As one moves the contours to match
    overlapping features, it is important to remember that the navigational
    offset will be applied to the navigation points indicated for the current
    tie. Thus, the feature being matched should derive from data (soundings)
    associated with those particular points on the shiptrack. This is
    accomplished by clicking on the bathymetric feature in the contour display
    with the right mouse button. The "right-click" causes mbnavadjust to
    find the soundings from each swath that are closest to the point clicked, and
    then to shift the current tie point to the navigation points on each swath
    that include these soundings (that is, the navigation points associated with
    the sonar pings that include the closest soundings).

    In order to set, and save, a navigational offset that causes a bathymetric
    feature to be matched in overlapping swaths, the user must click the
    <Set Offset> button above the contour display. If a user changes
    the active tie point or loads a different crossing
    without clicking <Set Tie>, then no offset information will be saved.
    Conversely, for any crossing with one or more tie points,
    the <Reset Offset> button will reset the navigational
    offset to the last value set for the current crossing and tie point.

    So, in practice, setting navigational offsets that will be used in obtaining
    an optimal navigation solution involves the following steps:

            1. Identify a bathymetric feature with

               overlapping data so that it can be

               matched.

            2. Create a tie point by clicking the

               <Add Tie> button.

            3. Set the tie point location by right

               -clicking on the feature.

            4. If necessary, zoom the display to

               focus on the bathymetric feature

               of interest by dragging a box

               with the middle mouse button.

            5. Adjust the offsets so that the

               feature is matched in both swaths

               (operating in the contour display,

               the misfit display, or both).

            6. Click the <Set Offset> button.

    These steps should be followed for every feature that can be matched
    in overlapping swaths.

    In some cases, the user will find it useful
    to create and set multiple tie points in a single crossing. Other crossings
    may not allow any features to be matched. Users should click the
    <Skip Crossing> button on crossings that do not allow one or more offsets
    to be determined. In fact, mbnavadjust will
    only allow the calculation of a navigation
    solution when all of the crossings have been acted on by either having tie
    points set or by having been explicitly skipped.

    Users should feel free to iterate any way they like during
    crossing inspection. Crossings may be displayed as many
    times as desired, and ties can be created, deleted, and
    changed without restriction. Users may also quit mbnavadjust
    and then later reopen the same project without losing any
    information.

    Setting Good, Poor and Fixed Navigation

    The adjusted navigation model produced by MBnavadjust should be
    accurate to the bathymetric resolution in a relative sense, but fitting
    a set of relative offset ties does not provide constraints on the global
    location of the survey data. MBnavadjust provides two means to
    control the global location of the adjusted navigation. First, the global
    location of the model is essentially an average of the overall offsets
    associated with good navigation. Users may use the <Action->Set File Poor Navigation>
    menu item to set selected surveys or files to be ignored in setting the
    global model. Second, if certain data files are thought to have correct
    navigation, they can be fixed (e.g. to have zero adjustment) using the
    <Action->Set File Fixed Navigation> menu item. In this case, all of the
    non-fixed files are adjusted relative to the fixed files.

    USING MBNAVADJUST 3: INVERTING FOR AN OPTIMAL NAVIGATION SOLUTION

    Performing the Inversion

    Once the user has interactively analyzed all of the crossings
    and closed the "Nav Err" window by clicking the <Dismiss> button,
    the <Action->Invert navigation> button becomes enabled. Clicking
    this button causes mbnavadjust to construct and solve
    an inversion for the optimal navigation.

    The inversion solves for navigation adjustments at each
    navigation control point which satisfy the offsets at the tie points while
    minimizing speed and acceleration. The speed and acceleration penalty is
    set using a penalty weight value that may be varied. If the penalty weight
    is large, the navigation adjustments may be smooth and small but not fit the
    tie point offsets well. An infinite penalty weight produces uniformly
    zero adjustments. In contrast, a small penalty weight allows the tie point offsets
    to be fit as well as possible even if large speed and acceleration spikes
    are a consequence. Hoever, even with a zero penalty weight the inversion may
    not be able to exactly satisfy all of the tie point offsets. If some of
    the tie point offsets are conflicting (e.g. one tie point requires a navigation
    control point to move to the west while another tie point requires a
    move to the east), then the offsets cannot all be simultaneously fit
    exactly.

    The inversion is actually performed many times with different penalty weights,
    and the "best" solution is selected and applied to the data. The details of
    how the "best" solution is identified are given in the section "Details
    of the Inversion" section below. A log of the inversion parameters, the results
    from each of the inversion iterations, and detailed results from the final
    inversion are output to the Message text window. The program then
    outputs an adjusted navigation file for each of the input swath files and
    updates (or creates) the parameter file for each swath file so that
    mbprocess will merge the adjusted navigation.

    The output adjusted navigation files are named by adding a ".na#" suffix
    to the original swath data filename. If a swath file imported into
    mbnavadjust for the first time is named:

            mbari_1998_55.mb57

    then the adjusted navigation resulting from that project will be named:

            mbari_1998_55.mb57.na0

    If this file is imported into a second mbnavadjust project, the
    result from inversion in that project will be:

            mbari_1998_55.mb57.na1

    In addition to generating the adjusted navigation, mbnavadjust also
    sets the NAVADJMODE and NAVADJFILE values in the mbprocess
    parameter file. In this case, the parameter file is named:

            mbari_1998_55.mb57.par

    and the processed swath file generated by running mbprocess is:

            mbari_1998_55p.mb57

    Refer to the mbprocess and mbset manual pages for details on
    the control and use of mbprocess.

    Note that the relevant parameter file settings will reflect the most recent
    inversion in mbnavadjust.
    Users do need to be aware that the order of navigation processing is important
    because, when possible, mbnavadjust imports existing processed data files.
    The data within the mbnavadjust projects are not, however, updated when the
    source data are updated. Consequently,
    standard navigation processing should be completed and applied with mbprocess
    before a swath file is imported into an mbnavadjust project. If a swath
    file is to be used in multiple mbnavadjust projects, the first project
    should be finalized and the results applied before data are imported into the
    second.

    Fine-Tuning the Inversion

    Once an inversion has been performed, the user should inspect the fit for each
    of the tie points before accepting and applying the adjusted navigation. The relationship
    between the interactively defined navigation offsets and the offsets associated with
    the inversion can be investigated numerically in the tie points table or
    visually in the "Nav Err" window.

    We suggest first examining the tie points table
    by pulling down the <View->Show Ties> menu item. This table shows, from left to
    right, the identity of each tie point, the longitude and latitude offsets defined
    by the user (in meters), and the longitude and latitude residuals, or
    differences between these offsets and those associated with the inversion (in meters).
    If any of these residuals are unexpectedly large, simply clicking on the table line
    showing the suspect navigation tie will bring up the "Nav Err" window and load the
    crossing including that navigation tie. Once an inversion is performed, the
    "Nav Err" crossing displays show the inverted offset as a small '+' symbol
    on the misfit plot. The user can then determine whether the
    previously set navigation offset is truly required by the data. On occasion, one
    discovers that the offset obtained in the inversion is as consistent with
    the bathymetry as the offset originally set by the user. Once the offset values
    have been adjusted as necessary, they can be reset by clicking on the
    <Set Offset> button (just as in the earlier interactive sessions).

    Once all of the suspect navigation ties have been inspected, and perhaps corrected,
    another inversion can be generated using the revised set of offsets. In this way,
    users can iterate over cycles of inversion and inspection until a satisfactory
    (self-consistemt) solution is obtained. When the final inversion has been
    performed, the user can then run mbprocess on all of the affected swath data
    files to produce a set of processed files incorporating the optimally adjusted
    navigation. Once again, we emphasize that users should always finalize an
    mbnavadjust project before importing affected swath data into another
    mbnavadjust project.

    Details of the Inversion

    The inversion is constructed as a sparse overdetermined least squares
    matrix problem. Suppose we have N navigation control points in all of the
    swath files and have defined M tie points. The form of the problem is:

            A X = D

    Here X is the vector of unknowns, which happen to be the changes in the longitude
    and latitude values of all of the navigation control points. So, there
    are 2N unknowns. Note that we
    do not solve directly for longitude and latitude, but rather for the change,
    or perturbation, to the longitude and latitude values.
    The matrix A contains 2N columns corresponding to
    the unknowns and a row for each of the constraints we can apply to
    the navigation adjustment problem. The number of elements in the "data"
    vector D also corresponds to the number of constraints.
    We apply four sets of constraints in this inverse problem:

            1) Fixed navigation points

            2) Penalize speed (first derivative)

            3) Penalize acceleration (second derivative)

            4) Fit navigation offsets at tie points

    The first kind of constraint is simply expressed as:

            XLONj = 0

           XLATj = 0

    where XLONj is the longitude change
    and XLATj is the latitude change for the "j"th navigation control point.

    The second contraint (speed) is also one of minimization:

            -XLONj + XLONj+1

            ----------------  = 0

                -Tj + Tj+1

            -XLATj + XLATj+1

            ----------------  = 0

                -Tj + Tj+1

    Here XLONj+1 and XLATj+1 are the longitude and latitude changes
    for the "j+1"th navigational control point and Tj and Tj+1 are the
    times of the "j"th and "j+1"th navigational control points. The
    denominator in these expressions is thus the time difference between
    the two navigation points. The speed constraint can only be applied
    to navigation control points that are sequential, and is not applied
    across breaks in the swath data. Note that multiple swath files
    may be sequential without breaks, while time gaps or breaks can occur
    within a single swath file. The existence of gaps or breaks in the
    swath data is determined solely on the basis of time gaps as the data
    are imported.

    The third contraint (acceleration) is also one of minimization:

            XLONj - 2 * XLONj+1 + XLONj+2

            -----------------------------     = 0

                -Tj + Tj+2

            XLATj -2 * XLATj+1 + XLATj+2

            -----------------------------     = 0

                -Tj + Tj+2

    The second derivative calculation requires three sequential
    navigation control points: j, j+1, and j+2.
    Here XLONj+2 and XLATj+2 are the longitude and latitude changes
    for the "j+2"th navigational control point and Tj and Tj+2 are the
    times of the "j"th and "j+2"th navigational control points. The
    denominator in these expressions is thus the time difference between
    the "j"th and "j+1"th navigation points.

    The final, and most important constraints
    are the relative navigation ofsets defined for each of the M tie points.
    Since each offset has a longitude and a latitude value, there are 2M
    rows in A and elements in D associated with the tie points.
    If the "i"th tie point specifies an offset DLONi and DLATi between the "j1"th and "j2"th
    navigation control points, then the constraint may be expressed as:

            -XLONj1 + XLONj2 = DLONi

            -XLATj1 + XLATj2 = DLATi

    The size of the matrix problem will vary with the number of navigation
    control points, tie points, fixed points, and time gaps. However, the addition
    of the speed and acceleration minimization constraints guarentees that the
    number of constraints will always be larger than the number of unknowns, and
    so we will always be solving an overdetermined least squares problem.
    Each of the above equations contribute one row to the matrix problem, and each
    of these rows has at most three nonzero elements in A. As a result,
    this matrix problem is also always extremely sparse. This condition allows
    us to use one of a class of approximate least squares solution algorithms that are
    efficient in solving sparse problems. The algorithm used for mbnavadjust
    inversions is that of Olsen [1987].

    The importance of the speed and acceleration minimization constraints is varied
    by multiplying the associated matrix row elements by a penalty weight value.
    In practice, the inversion is constructed and solved with many different
    penalty weights, and the "best" inversion is selected and applied. Generally
    speaking, we seek the smoothest inversion that satisfactorily fits the
    tie point offsets. We set smoothness using the penalty weight value so that larger
    penalty weights correspond to smoother solutions.
    We measure the fit to the tie point offsets using the usual least squares
    calculation:

               2      2                                    2

            Fit  = Chi  = SUM(  (DLONi - (XLONj2 - XLONj1))

                                                           2

                              + (DLATi - (XLATj2 - XLATj1))  )

    using the same notation as above. Note that the units of Chi are distance, and so
    are physically meaningful. A smaller Chi corresponds to a better fit to the
    tie point offsets. The Chi value will be smallest for a zero
    penalty weight, and increase as more smoothing is applied.

    The initial solution is generated using a very small penalty weight to
    insure that the smoothing is negligible and that the tie point offsets are fit
    to the maximum degree possible. This first inversion is used to set a "reference"
    value of Chi. In some cases, the tie points offsets do not substantially conflict
    and it is possible for the inversion to fit the offsets nearly exactly so that
    Chi is quite small. If the initial Chi is greater than the target precision for
    the inversion (set from the Controls panel), mbnavadjust sets the
    reference fit to this initial value. Otherwise, the reference fit is set to
    the target precision. The default value is 0.1 meters, which is appropriate for
    high resolution, low-altitude surveys. Larger values will be more appropriate
    for large altitude (e.g. deep water hull-mounted) surveys. The program then
    recalculates solutions with different penalty weights until the resulting Chi
    is between 1.05 and 1.1 times the reference fit. This last solution is chosen
    as the best solution, reported as the navigation adjustment inversion solution,
    and applied to that swath data navigation.  The justification for choosing the
    optimal solution in this fashion is that this approach insures that the smoothness
    constraint is sufficient large to be impacting the fit, but not so large that
    the fit has been substantially degraded.

    REFERENCES

    Nishimura, C. E., and D. W. Forsyth, Improvements in navigation
    using SeaBeam crossing errors, Mar. Geophys. Res., 9, 333-352, 1988.

    Olson, A. H., A Chebyshev condition for accelerating convergence of iterative tomographic
    methods - Solving large least squares problems,
    Phys. Earth Planet. Inter., 47, 333-345, 1987.

    Parker, R. L., Geophysical Inverse Theory, Princeton University Press, Princeton, NJ, 1994.

    SEE ALSO

    mbsystem(1), mbio(1), mbprocess(1),
    mbnavedit(1), mbset(1)

    BUGS

    It used to be too new to be bulletproof, now its too complicated to be bulletproof.
    Good luck.

     Index

    NAME
    VERSION
    SYNOPSIS
    DESCRIPTION
    AUTHORSHIP
    OPTIONS
    INTERACTIVE CONTROLS

    MBnavadjust Window
    Controls Window
    Nav Err Window
    Biases Window

    USING MBNAVADJUST 1: IMPORTING DATA
    USING MBNAVADJUST 2: INSPECTING CROSSINGS

    Bringing Up The Nav Error Window
    Interactively Matching Seafloor Features
    Display Controls
    Setting Crossing Ties and Offsets
    Setting Good, Poor and Fixed Navigation

    USING MBNAVADJUST 3: INVERTING FOR AN OPTIMAL NAVIGATION SOLUTION

    Performing the Inversion
    Fine-Tuning the Inversion
    Details of the Inversion

    REFERENCES
    SEE ALSO
    BUGS

Last Updated: 3 June 2013

Return to list of MB-System manual pages...

Back to MB-System Home Page...