Help for PHXREACH

PURPOSE:

PHXREACH computes the "reachability" for the Phoenix RA (Robotic Arm)
at each pixel.  The result is a map show which pixels can be reached by
each instrument in each of its various configuration modes.

*** THIS IS A PHOENIX-SPECIFIC PROGRAM ***

The inputs for PHXREACH are the XYZ image (created by MARSXYZ).  Unlike
its close cousin marsreach (for MER), the surface normal (UVW) is NOT
required.

The output is a single 12-band file in byte format.  The bands are described
by the INSTRUMENT_BAND_ID and CONFIGURATION_BAND_ID, but use the following
layout:

Band  Instrument  Configuration
----  ----------  -------------
  1   SCOOP       ELBOW_UP
  2   SCOOP       ELBOW_DOWN
  3   SCOOP_BTM   ELBOW_UP
  4   SCOOP_BTM   ELBOW_DOWN
  5   BLADE       ELBOW_UP
  6   BLADE       ELBOW_DOWN
  7   ISAD1       ELBOW_UP
  8   ISAD1       ELBOW_DOWN
  9   ISAD2       ELBOW_UP
  10  ISAD2       ELBOW_DOWN
  11  TECP        ELBOW_UP
  12  TECP        ELBOW_DOWN

For all instruments, the value is either 0 (not reachable) or 255 (reachable).

The geometry of the image matches that of the input XYZ file.

A mask file may optionally be provided; the XYZ's are masked off using this
file if present (0 means to let the pixel through; 255 means to remove it).
This historically removes the lander from consideration for the arm collision
detection algorithm (TERRAIN in marsreach); however, terrains and collision
detection are not implemented for PHXREACH.  See marsfilter for more on masking.

EXECUTION:

phxreach inp=data.xyz out=data.reach
where:
data.xyz is an input 3-band image of type REAL with the X, Y and Z values
at that pixel in meters (the unit is actually irrelevant).
data.reach is an output 12-band image of type BYTE

METHOD:

Algorithm description TBD.  Kinematic models of the arm are used.

Collision detection of the arm with the terrain is not implemented in this
version.  The MASK parameter is retained however; it can specify a file to
use as a mask to remove pixels from consideration.

The actual algorithm and core code was developed by Bob Bonitz and
Matthew Robinson of Section 348.


HISTORY:
  2003-06-20 B. Deen - Initial marsreach based on code from Bob Bonitz (348).
  2007-03-17 B. Deen - Initial phxreach based on marsreach and PHX reachability
                       code from Bob Bonitz and Matthew Robinson.
  2019-12-24 W. Bunch - IDS-7926 - Initialized a variable; cleaned up -Wall warnings except:
                          ra_command.c:972:59: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
                          wdStart(act_timer, loop_time, ra_act_timer_cback, (int)act_sem); /* should this be int64? */
                        Added unit test.
  2019-02-06 W. Bunch - IDS-7928 - Switched to constant format string in one, but not all cases.

COGNIZANT PROGRAMMER: B. Deen


PARAMETERS:


INP

Input images. Must be 1 3-band file or (x,y,z) triplet.

OUT

Output file.

MASK

Input mask image (optional). Used to filter out the XYZs'.

NAVTABLE

Corrected navigation filename.

CONFIG_PATH

Path used to find configuration/calibration files.

POINT_METHOD

Specifies a mission- specific pointing method to use

NOSITE

Disables coordinate system sites.

DATA_SET_NAME

Specifies the full name given to a data set or a data product.

DATA_SET_ID

Specifies a unique alphanumeric identifier for a data set or data product.

RELEASE_ID

Specifies the unique identifier associated with the release to the public of all or part of a data set. The release number is associated with the data set, not the mission.

PRODUCT_ID

Specifies a permanent, unique identifier assigned to a data product by its producer.

PRODUCER_ID

Specifies the unique identifier of an entity associated with the production a data set.

PRODUCER_INST

Specifies the full name of the identity of an entity associated with the production of a data set.

TARGET_NAME

Specifies a target.

TARGET_TYPE

Specifies the type of a named target.

RSF

Rover State File(s) to use.

DEBUG_RSF

Turns on debugging of RSF parameter.

COORD

Coordinate system to use.

COORD_INDEX

Coordinate system index for some COORD/mission combos.

FIXED_SITE

Which site is FIXED for rover missions.

SOLUTION_ID

Solution ID to use for COORD_INDEX

See Examples:


Cognizant Programmer: