|
|
Line 18: |
Line 18: |
| | | |
| == Concepts == | | == Concepts == |
| + | |
| + | === Session === |
| + | |
| + | In Apogy, the ''Session'' is the entity that contains all the configuration and data that are required to make use of ''Systems''. The session is implemented as an Eclipse Project with an Apogy nature, and as such, is mapped to the host file system. Sessions can be exported/imported to and from archived files (''.zip''). |
| + | |
| + | The ''Session'' project includes a central resource (''session.sym'') that contains most of the configuration elements (Variable, Context, InitialCondition, etc) and also has referecens to other ressources contained in the project (scripts, data products, etc). In Apogy there is <u>at most one active Session at any given time</u>. |
| + | |
| + | The Session contains: |
| + | |
| + | # the ''Environment'' being used; |
| + | # the list of ''Programs'' that can be executed; |
| + | # the list of available ''InitialConditions''; |
| + | # the list of ''Tools'' that are available. |
| | | |
| === Systems === | | === Systems === |
Line 64: |
Line 77: |
| | A System connection points and relationship to the System's topology. connection points (yellow rectangles) and topology Nodes (blue rounded rectangles). | | | A System connection points and relationship to the System's topology. connection points (yellow rectangles) and topology Nodes (blue rounded rectangles). |
| |} | | |} |
− |
| |
| | | |
| They are named and refer to a Node defined in the System's topology. The ''root connection point'' is implicit and always refer to the System's root topology node. | | They are named and refer to a Node defined in the System's topology. The ''root connection point'' is implicit and always refer to the System's root topology node. |
Line 120: |
Line 132: |
| # A name (should be unique); | | # A name (should be unique); |
| # The DataSet where results will be stored. This allows result from different Context to be saved separately (this is often useful to keep data from a simulated run separate from data produced by actual, real System). | | # The DataSet where results will be stored. This allows result from different Context to be saved separately (this is often useful to keep data from a simulated run separate from data produced by actual, real System). |
| + | |
| + | === Environment === |
| + | |
| + | The Environment contains the following: |
| + | |
| + | # the ''Variables'' in use |
| + | # the list of available ''Contexts'' and the one currently active; |
| + | # the list of available ''Worksite'' and the one currently active; |
| + | # the list of available ''Time Source'' and the one currently active; |
| + | |
| + | Contains the definitions of worksite, time sources and Systems; |
| + | |
| + | Defines what the user has to work with in a specific mission such as the System instances. |
| + | |
| + | # Contains the definitions of the ''Worksite'', ''Time Sources'' and the registered ''Apogy Systems''; |
| + | # Defines what you have to work with in a specific deployment; |
| | | |
| === Time Source === | | === Time Source === |
Line 145: |
Line 173: |
| |} | | |} |
| | | |
− | === Environment === | + | ==== Worksites ==== |
| | | |
− | The Environment contains the following:
| |
| | | |
− | # the ''Variables'' in use
| |
− | # the list of available ''Contexts'' and the one currently active;
| |
− | # the list of available ''Worksite'' and the one currently active;
| |
− | # the list of available ''Time Source'' and the one currently active;
| |
− |
| |
− | Contains the definitions of worksite, time sources and Systems;
| |
− |
| |
− | Defines what the user has to work with in a specific mission such as the System instances.
| |
− |
| |
− | # Contains the definitions of the ''Worksite'', ''Time Sources'' and the registered ''Apogy Systems'';
| |
− | # Defines what you have to work with in a specific deployment;
| |
− |
| |
− | ==== Worksites ====
| |
| | | |
| # Defines the area that the System are operating in for the particular mission; | | # Defines the area that the System are operating in for the particular mission; |
Line 167: |
Line 181: |
| | | |
| Inherently generic concept that could be specialized as required (e.g. Earth surface); | | Inherently generic concept that could be specialized as required (e.g. Earth surface); |
− |
| |
− | === Session ===
| |
− |
| |
− | In Apogy, the ''Session'' is the entity that contains all the configuration and data that are required to make use of Systems. The session is implemented as an Eclipse Project with a Apogy nature, and as such, is mapped to the host file system. Sessions can be exported/imported to and from archived files (''.zip'').
| |
− |
| |
− | The ''Session'' project includes a central resource (''session.sym'') that contains most of the configuration elements (Variable, Context, InitialCondition, etc) and also has referecens to other ressources contained in the project (scripts, data products, etc). In Apogy there is <u>at most one active Session at any given time</u>.
| |
− |
| |
− | The Session contains:
| |
− |
| |
− | # the ''Environment'' being used;
| |
− | # the list of available ''InitialConditions'';
| |
− |
| |
− | ==== Surface <i>Worksites</i> ====
| |
− |
| |
− | * Defines a ''Worksite'' that resides on the surface of a Celestial body (e.g. Earth)
| |
− |
| |
− | ===== Reference Frame =====
| |
− |
| |
− | TODO!
| |
− |
| |
− | ===== <i>Maps</i> =====
| |
− |
| |
− | * A component of a ''Worksite'' that contains ''Map Layers'' sharing a common pose relative to the ''Worksite'' origin;
| |
− | * A '''''Map Layer''''' contains the actual data about the ''Worksite'' (e.g. DEM, Orbital Imagery, Slope, etc.);
| |
− |
| |
− | ====== <i>MapLayer</i> ======
| |
− |
| |
− | * Currently support ''MapLayers'':
| |
− | ** '''''Triangular Mesh Map Layer''''' (a meshed DEM);
| |
− | ** '''''Features Of Interest Map Layer''''' (specific locations in the ''Worksite'');
| |
− | ** '''''Image Map Layer''''' (Image and its physical size on the ''Worksite'');
| |
− |
| |
− | ===== <i>EarthSky</i> =====
| |
− |
| |
− | * Contains the Celestial bodies of interest (Sun, Moon, Stars);
| |
− | * Ephemerides updates based on time and the ''Worksite'' location;
| |
− | * Represented in the ''Topology''
| |
− |
| |
− | ==== Orbital Worksites ====
| |
− |
| |
− | === <i>Time Sources</i> ===
| |
− |
| |
− | * '''''Time Sources''''' are used to feed the time to the ''Session''.
| |
− | * This, in turn, updates the position of the sky elements (Sun, Moon, Stars);
| |
− | * The ''Time Sources'' element contains the available ''Time Sources'', only one of which is set as the ''Session Active Time Source'';
| |
− | * The ''Time Sources View'' can be used to access the various time source parameters.
| |
− |
| |
− | ==== Available <i>Time Sources</i> ====
| |
− |
| |
− | {| border="1" cellpadding="2"
| |
− | ! Name
| |
− | ! Description
| |
− | |-
| |
− | | '''''Fixed Time Source'''''
| |
− | | A ''Time Source'' representing a fixed date and time.
| |
− | |-
| |
− | | '''''Current Time Source'''''
| |
− | | A ''Time Source'' that represents the current time, updated at a regular interval.
| |
− | |-
| |
− | | '''''Selection-based Time Source'''''
| |
− | | A ''Time Source'' that updates its time upon the selection of any ''Timed'' element in the UI.
| |
− | |-
| |
− | | '''''Browseable Time Source'''''
| |
− | | A ''Time Source'' that can be browsed, reset, played forward or reset, and accelerated.
| |
− | |-
| |
− | | '''''Operation Calls Result List Time Source'''''
| |
− | | A specialized ''Browseable Time Source'' that allows browsing a list of ''Operation Calls''.
| |
− | |}
| |
− |
| |
− | === <i>Types</i>, <i>Variables</i> & <i>Contexts</i> ===
| |
− |
| |
− | ==== <i>Types</i> ====
| |
− |
| |
− | * A '''''Type''''' defines an entity that can execute commands and provides telemetry:
| |
− | ** Similar to an Interface Control Document (ICD);
| |
− | ** Used to specify what a ''Variable'' represents;
| |
− | * Type can include ''Type Members'' in their definitions;
| |
− | * Types include an ''API Adapter'' that acts as a bridge between Apogy and the ''Interface Class'';
| |
− |
| |
− | ===== <i>Interface Class</i> =====
| |
− |
| |
− | * An '''''Interface Class''''' is the specific (i.e. real-world) Java type of the Apogy ''Type''
| |
− |
| |
− | ==== Apogy <i>System</i> ====
| |
− |
| |
− | * Is the "LEGO block" of Apogy;
| |
− | * A '''''System''''' is a specialization of ''Type'';
| |
− | * Adds functions to assemble systems together through ''Connection Points'' and ''Assembly Links'';
| |
− | * Provide 3D representation of the ''System'';
| |
− |
| |
− | * A given ''System'' may have multiple implementations (e.g. Stub, Simulated, etc.);
| |
− | * Implementation specific details transparent to Apogy: what matters is the interface.
| |
− |
| |
− | ===== <i>Connection Points</i> & <i>Assembly Links</i> =====
| |
− |
| |
− | * A '''''Connection Point''''' represents a location in the ''System'' (as represented by a topology node) where another ''Type'' could connect to this System.
| |
− | * An '''''Assembly Link''''' actually provides the link between a ''Connection Point'' and another Type.
| |
− |
| |
− | * In the diagram below, one could say that the ''Connection Points'' act like hooks while the ''Assembly Links'' act like strings.
| |
− |
| |
− | ===== Simple <i>Systems</i> =====
| |
− |
| |
− | * It has no ''Type Member'' (i.e. it has no sub-systems);
| |
− | * It typically represents a "building block" (sub-system) that can be used in the assembly of more complex ''Systems'';
| |
− |
| |
− | ===== Complex <i>Types</i> =====
| |
− |
| |
− | * Has one or more ''Type Members'';
| |
− | * Represents an assembly of sub-systems into an integrated ''System'';
| |
− | * Complex Systems can also be nested;
| |
− |
| |
− | ==== <i>Variables</i> & <i>API Adapters</i> ====
| |
− |
| |
− | ===== <i>Variables</i> =====
| |
− |
| |
− | * A '''''Variable''''' is a reference to a ''Type (System)'' <u>instance</u>;
| |
− | * A ''Variable'' name should be unique;
| |
− | * Multiple ''Variables'' of the same ''Type'' can be defined;
| |
− |
| |
− | ===== <i>API Adapter</i> =====
| |
− |
| |
− | * An '''''API Adapter''''' is the object that acts as a bridge between the System (i.e. the ''Interface Class'') and Apogy;
| |
− | * Automatically managed by Apogy;
| |
− | * It provides:
| |
− | ** System to Apogy pose transformation and update functions;
| |
− | ** A ''Pose Corrector'';
| |
− | ** A reference to the ''Variable / Type Member'' instance;
| |
− | ** A reference to the ''Apogy Environment'';
| |
− |
| |
− | ==== <i>Pose Corrector</i> ====
| |
− |
| |
− | * A '''''Pose Corrector''''' is used by the ''API Adapter'' to modify the ''System''-derived pose before updating;
| |
− | * Can be used to keep a vehicle on the ground;
| |
− | * Can be enabled / disabled on the fly;
| |
− |
| |
− | ==== <i>Context</i> ====
| |
− |
| |
− | * A '''''Context''''' map ''Variables'' to an actual implementation through the ''Active Context'';
| |
− | * Used by Apogy to dispatch commands to System instances;
| |
− | * Includes:
| |
− | ** A name (which should be unique)
| |
− | ** Where the results from operation invocations will be stored (i.e. ''Data Product Set'');
| |
− | ** A hierarchy of ''Variable Implementation'';
| |
− |
| |
− | ===== <i>Variable Implementations</i> =====
| |
− |
| |
− | * A '''''Variable Implementation''''' is used to specify the particular implementation (i.e. an ''Interface Class'' subclass) that a ''Variable'' should be using.
| |
− | * Typically used in ''Contexts''
| |
− |
| |
− | === <i>Data Products</i> ===
| |
− |
| |
− | * A '''''Data Product''''' represents the result of an ''Operation Call'';
| |
− | * Time-stamped;
| |
− | * Geo-referenced;
| |
− | * Conserves the operational context in which ''Operation'' was called;
| |
− | * May have one or more 3D representations;
| |
− |
| |
− | ==== <i>Data Products Set</i> ====
| |
− |
| |
− | * A '''''Data Products Set''''' contains all of the ''Data Products'' created with one or more ''Contexts'':
| |
− | ** Allows data generated using different ''Contexts'' to be stored separately (for example, separating simulated and real data.)
| |
− | ** Each ''Context'' refers to a ''Data Products Set''
| |
− |
| |
− | === <i>Operation Calls</i> & <i>Programs</i> ===
| |
− |
| |
− | ==== <i>Programs</i> ====
| |
− |
| |
− | * A '''''Program''''' is an entity that invokes ''Operation Calls'' on ''Variables'';
| |
− | * A ''Program'' includes:
| |
− | ** A name;
| |
− | ** A description; and
| |
− | ** A list of ''Operation Calls''
| |
− |
| |
− | ==== <i>Operation Call</i> ====
| |
− |
| |
− | * An '''''Operation Call''''' is a specific invocation of an ''Operation'' on a ''Variable'' using a set of ''Parameters''
| |
− | * It contains:
| |
− | ** A reference to the ''Variable'';
| |
− | ** References to a ''Variable'' type member and/or feature onto which to call the ''Operation'' (if applicable);
| |
− | ** An ''Operation'' to be called;
| |
− | ** A List of ''Parameters'' to use when calling the ''Operation'';
| |
− |
| |
− | ==== Simple <i>Program</i> ====
| |
− |
| |
− | * A ''Program'' in the form of a flat list of ''Operation Calls'';
| |
− | * Does not include execution flow control;
| |
− | * Each ''Operation Call'' can be invoked individually, or
| |
− | * It can be executed as a whole;
| |
− |
| |
− | ==== JavaScript <i>Program</i> ====
| |
− |
| |
− | * A ''JavaScript Program'' is an entity that invokes ''Operation Calls'' on ''Variables'' through a JavaScript Program file;
| |
− | * A ''JavaScript Program'' includes:
| |
− | ** A name;
| |
− | ** A description; and
| |
− | ** A script path relative to the workspace.
| |
− | * It can be executed as a whole or
| |
− | * It can be executed in debug mode and benefits from all the features of the [https://eclipse.org/webtools/jsdt/ JSDT framework] (breakpoints, step by step...)
| |
− |
| |
− | === <i>Controller Bindings & Configurations</i> ===
| |
− |
| |
− | ==== <i>Controller Configuration</i> ====
| |
− |
| |
− | * A '''''Controller Configuration''''' is a set of ''Operation Call Controller Bindings'';
| |
− | * Used to map one or more joystick(s) / controller(s) to one or more ''Operation Calls'';
| |
− | * No more than '''ONE''' ''Controller Configuration'' is active at any given time in a given Apogy Session;
| |
− |
| |
− | ==== <i>Operation Call Controller Binding</i> ====
| |
− |
| |
− | * A '''''Operation Call Controller Binding''''' is a specialization of ''Operation Call'';
| |
− | * Allows the ''Operation Call's Parameter'' to be mapped to joystick inputs;
| |
− | * It includes:
| |
− | ** A name;
| |
− | ** A ''Trigger'' that defines when to call this ''Operation Call'':
| |
− | *** Can be time-based or joystick state-/event-based;
| |
− | ** An ''Input Value'' for each of the ''Parameters'' defined in this ''Operation Call''.
| |
− | ** A ''boolean'' indicating whether or not to create a ''Data Product' when the ''Operation'' is called (false by default.)
| |
− |
| |
− | ===== <i>Trigger Types</i> =====
| |
− |
| |
− | {| border="1" cellpadding="2"
| |
− | ! Name
| |
− | ! Icon
| |
− | ! Description
| |
− | |-
| |
− | | '''''Time Trigger'''''
| |
− | | style="text-align:center;" | [[File:../resources/user/trigger_time.gif]]
| |
− | | Triggers at a fixed time interval (or only once if time <= 0).
| |
− | |-
| |
− | | rowspan="3" | '''''Controller Edge Trigger'''''
| |
− | | style="text-align:center;" | [[File:../resources/user/trigger_controller_edge_rising.gif]]
| |
− | | Triggers when a rising edge is detected on the specified controller button state.
| |
− | |-
| |
− | | style="text-align:center;" | [[File:../resources/user/trigger_controller_edge_falling.gif]]
| |
− | | Triggers when a falling edge is detected on the specified controller button state.
| |
− | |-
| |
− | | style="text-align:center;" | [[File:../resources/user/trigger_controller_edge_both.gif]]
| |
− | | Triggers when either a rising or falling edge is detected on the specified button state.
| |
− | |-
| |
− | | '''''Controller State Trigger'''''
| |
− | | style="text-align:center;" | [[File:../resources/user/trigger_controller_state.gif]]
| |
− | | Triggers at a fixed time interval (or only once if time <= 0) if the specified controller button state (''boolean'') matches the target.
| |
− | |}
| |
− |
| |
− | ==== <i>Input Value</i> ====
| |
− |
| |
− | * An '''''Input Value''''' defines how to obtain the value of its associated ''Parameter'' in an ''Operation Call Controller Binding.''
| |
− |
| |
− | * Three types of ''Input Value'' are defined:
| |
− | *# '''''Fixed Value''''': A fixed value for the ''Parameter'';
| |
− | *# '''''Toggle Value''''': A ''boolean'' value that toggles each time the ''Operation'' is called;
| |
− | *# '''''Controller Value''''': A value coming from a joystick input.
| |
− |
| |
− | ==== <i>Controller Value</i> ====
| |
− |
| |
− | * A '''''Controller Value''''' includes:
| |
− | ** the joystick / controller;
| |
− | ** the specific input of the controller;
| |
− | ** an '''''Input Conditioning''''' used to transform the raw joystick value into a value suittable for the ''Parameter'' being mapped:
| |
− | *** This can include input scalling, input offsetting, saturation, dead-band,etc;
| |
− | *** Various specializations of ''Input Conditioning'' are available to accommodate these needs.
| |
− |
| |
− | ===== <i>Input Conditioning</i> Types =====
| |
− |
| |
− | {| border="1" cellpadding="2"
| |
− | ! Name
| |
− | ! Icon
| |
− | ! Description
| |
− | ! Scaling Supported
| |
− | ! Offset Supported
| |
− | ! Dead Band Supported
| |
− | |-
| |
− | | '''''Linear'''''
| |
− | | style="text-align:center;" | [[File:../resources/user/input_conditioning_linear.gif]]
| |
− | | Linear transfer function with end points specified.
| |
− | | style="text-align:center;" | Yes
| |
− | | style="text-align:center;" | Yes
| |
− | | style="text-align:center;" | No
| |
− | |-
| |
− | | '''''Centered Linear'''''
| |
− | | style="text-align:center;" | [[File:../resources/user/input_conditioning_centered_linear.gif]]
| |
− | | Linear transfer function with constraints that output is zero (0) for input falling within dead band.
| |
− | Output linearly falls to zero at dead band limits.
| |
− | | style="text-align:center;" | Yes
| |
− | | style="text-align:center;" | No
| |
− | | style="text-align:center;" | Yes
| |
− | |-
| |
− | | '''''Parabolic'''''
| |
− | | style="text-align:center;" | [[File:../resources/user/input_conditioning_parabolic.gif]]
| |
− | | Second-order transfer function with end points specified.
| |
− | | style="text-align:center;" | Yes
| |
− | | style="text-align:center;" | Yes
| |
− | | style="text-align:center;" | No
| |
− | |-
| |
− | | '''''Centered Parabolic'''''
| |
− | | style="text-align:center;" | [[File:../resources/user/input_conditioning_centered_parabolic.gif]]
| |
− | | Parabolic output with constraint that output is zero (0) for input falling within dead band.
| |
− | Slope is made continuous at dead band limits.
| |
− | | style="text-align:center;" | Yes
| |
− | | style="text-align:center;" | No
| |
− | | style="text-align:center;" | Yes
| |
− | |-
| |
− | | '''''User Defined'''''
| |
− | | style="text-align:center;" | [[File:../resources/user/input_conditioning_user_defined.gif]]
| |
− | | Piecewise linear interpolation based on user-provided list of points.
| |
− | | style="text-align:center;" | No
| |
− | | style="text-align:center;" | No
| |
− | | style="text-align:center;" | No
| |
− | |}
| |
− |
| |
− | === <i>Tools</i> ===
| |
− |
| |
− | * The '''''Tools''''' element of the ''Session'' contains the tools defined by the user;
| |
− | * Contains:
| |
− | ** ''Map View Configuration List''
| |
− | ** ''Camera View Configuration List''
| |
− | ** ''Recording Tools Container''
| |
− | ** ''Simple Tool List''
| |
− |
| |
− | ==== <i>Map View Configurations</i> ====
| |
− |
| |
− | * A '''''Map View Configuration List''''':
| |
− | ** contains ''Map View Configurations'';
| |
− |
| |
− | * A '''''Map View Configuration''''' object:
| |
− | ** defines what the ''Apogy Map View'' will display;
| |
− | ** defines the ''Map Layers'' to display;
| |
− | ** defines annotation to show vehicle position, FOV, etc.;
| |
− | ** defines map tools (e.g. ''Trajectory Picking Tool'');
| |
− |
| |
− | ==== <i>Camera View Configuration</i> ====
| |
− |
| |
− | * A '''''Camera View Configuration List''''':
| |
− | ** contains ''Camera View Configurations'';
| |
− |
| |
− | * A '''''Camera View Configuration''''' object:
| |
− | ** defines what the ''Apogy Camera View'' will display;
| |
− | ** defines the ''Overlays'' to display;
| |
− | ** specifies image processing steps;
| |
− | * defines image tools (e.g. ''Pointer Camera Tool'');
| |
− |
| |
− | ===== <i>Overlays</i> =====
| |
− |
| |
− | * An '''''Overlay''''' represents graphics overlaid on top of the camera image.
| |
− | * Apogy provides a list of basic, built-in ''Overlays'';
| |
− | * System-specific overlay can be contributed for a rover/instrument
| |
− |
| |
− | ====== Built-in <i>Overlays</i> ======
| |
− |
| |
− | {| border="1" cellpadding="2"
| |
− | ! Name
| |
− | ! Icon
| |
− | ! Description
| |
− | |-
| |
− | | '''''EMF Feature Overlay'''''
| |
− | | style="text-align:center;" | [[File:../resources/user/overlay_emf_feature.gif]]
| |
− | | Displays any numerical or string value of a selected ''Feature'' on screen. The display includes the name of the ''Feature'', its units, and the value.
| |
− | |-
| |
− | | '''''Camera Name Overlay'''''
| |
− | | style="text-align:center;" | [[File:../resources/user/overlay_camera_name.gif]]
| |
− | | Displays the name of the camera, if applicable.
| |
− | |-
| |
− | | '''''Apogy Logo Overlay'''''
| |
− | | style="text-align:center;" | [[File:../resources/user/overlay_apogy_logo.gif]]
| |
− | | Displays the Apogy Logo.
| |
− | |-
| |
− | | '''''FOV Overlay'''''
| |
− | | style="text-align:center;" | [[File:../resources/user/overlay_fov.gif]]
| |
− | | Displays a cross hair with marks indicating degrees along the vertical and horizontal axes, centered on the FOV origin. The values are binded to the current camera FOV.
| |
− | |-
| |
− | | '''''EMF Feature Azimuth Elevation Overlay'''''
| |
− | | style="text-align:center;" | [[File:../resources/user/overlay_emf_feature_azimuth_elevation.gif]]
| |
− | | Displays a cross hair with marks indicating degrees along the vertical and horizontal axes. The '''ABSOLUTE''' orientation is displayed. The values are bound to the current camera's Field of View (FOV) and the Azimuth and Elevation features selected.
| |
− | |}
| |
− |
| |
− | ===== Built-in <i>Image Filters</i> =====
| |
− |
| |
− | {| border="1" cellpadding="2"
| |
− | ! Name
| |
− | ! Icon
| |
− | ! Description
| |
− | |-
| |
− | | '''''Edge Filter'''''
| |
− | | style="text-align:center;" | [[File:../resources/user/filter_edge.gif]]
| |
− | | Detects edges by looking at the gradient of each channel ands replaces the channel by a value determined by the gradient.
| |
− | |-
| |
− | | '''''Gain Filter'''''
| |
− | | style="text-align:center;" | [[File:../resources/user/filter_gain.gif]]
| |
− | | Changes the contrast of the image by allowing the user to specify the gain and bias of the colors in the image.
| |
− | |-
| |
− | | '''''Gray Scale Filter'''''
| |
− | | style="text-align:center;" | [[File:../resources/user/filter_gray_scale.gif]]
| |
− | | Converts image to gray-scaled image. The formula used is:
| |
− | ''luma'' = 77 ''R'' + 151 ''G'' + 28 ''B''
| |
− | |-
| |
− | | '''''Invert Filter'''''
| |
− | | style="text-align:center;" | [[File:../resources/user/filter_invert.gif]]
| |
− | | Inverts all of the pixels in an image. This is done by subtracting each colour component from 255.
| |
− | |-
| |
− | | '''''Rescale Filter'''''
| |
− | | style="text-align:center;" | [[File:../resources/user/filter_rescale.gif]]
| |
− | | Multiplies the input image by a scale factor.
| |
− | |}
| |
− |
| |
− | ===== Built-in <i>Camera Tools</i> =====
| |
− |
| |
− | {| border="1" cellpadding="2"
| |
− | ! Name
| |
− | ! Icon
| |
− | ! Description
| |
− | |-
| |
− | | '''''Pointer Camera Tool'''''
| |
− | | style="text-align:center;" | [[File:../resources/user/camera_tool_pointer.gif]]
| |
− | | Allow the user to point in the camera image and then draws in the 3D environment, a ray showing where the selected position point projects into the 3D environment.
| |
− | |}
| |
− |
| |
− | ==== <i>Recording Tools</i> ====
| |
− |
| |
− | TODO!
| |
− |
| |
− | ==== <i>Simple Tools</i> ====
| |
− |
| |
− | * Apogy provides a few ''Simple Tools'' that are used with the ''Apogy 3D Viewer'' and other views;
| |
− | * These tools act as a ''Selection Listener'' to the above views.
| |
− | ** Tool responds only if active;
| |
− | ** More than one tool can be active at the same time!
| |
− |
| |
− | ===== Built-in <i>Simple Tools</i> =====
| |
− |
| |
− | {| border="1" cellpadding="2"
| |
− | ! Name
| |
− | ! Icon
| |
− | ! Description
| |
− | |-
| |
− | | '''''Ruler 3D Tool'''''
| |
− | | style="text-align:center;" | [[File:../resources/user/simple_tool_ruler_3d.gif]]
| |
− | | Shows a ruler between two points.
| |
− | |-
| |
− | | '''''Sun Vector 3D Tool'''''
| |
− | | style="text-align:center;" | [[File:../resources/user/simple_tool_sun_vector_3d.gif]]
| |
− | | Shows the vector connecting the selected point to the current position of the Sun.
| |
− | |-
| |
− | | '''''Feature Of Interest Picking Tool'''''
| |
− | | style="text-align:center;" | [[File:../resources/user/simple_tool_feature_of_interest_picking.gif]]
| |
− | | Allows the user to point and click to create a new ''Feature Of Interest''.
| |
− | Note that the ''Feature Of Interest List'', where the ''Feature Of Interests'' are created, must be set for this tool to work.
| |
− | |-
| |
− | | '''''Trajectory 3D Tool'''''
| |
− | |
| |
− | | TODO!
| |
− | |-
| |
− | | '''''Path Planner Tool'''''
| |
− | |
| |
− | | TODO!
| |
− | |-
| |
− | | '''''Vehicle Path Planner Tool'''''
| |
− | |
| |
− | | TODO!
| |
− | |-
| |
− | | '''''Telecom Status Monitor Tool'''''
| |
− | |
| |
− | | TODO!
| |
− | |}
| |
− |
| |
− | === Topology ===
| |
− |
| |
− | * The complete topology, including all that is present in the ''Apogy Environment'':
| |
− | ** ''Variable'' instances;
| |
− | ** ''Worksite'';
| |
− | ** ''Data Products''; and
| |
− | ** ''Tools''.
| |
− |
| |
− | == Apogy UI ==
| |
− |
| |
− | === Preferences ===
| |
− |
| |
− | ==== Range Preferences ====
| |
− |
| |
− | * <i>Types</i> support definition of ranges for attributes and ''Operation Call Parameters'';
| |
− | * Colour used to highlight value ranges.
| |
− | * '''Currently, Apogy does not provide colouring to the Properties Page cells''';
| |
− |
| |
− | ==== UI Preferences ====
| |
− |
| |
− | * <i>Types</i> supports definitions of units for attributes and ''Operation Call Parameters'';
| |
− | * Allows conversion between ''Native Units'' (units used by the ''System'') to ''Display Units'' (what you see);
| |
− | * Applies to:
| |
− | ** values displayed in the ''Properties View'';
| |
− | ** values entered in ''Operation Call Parameters'';
| |
− |
| |
− | === <i>Session Editor</i> ===
| |
− |
| |
− | * It is an ''Editor''
| |
− | * Is used to explore and edit Apogy elements;
| |
− | * Presents the ''Apogy Session'' as an hierarchical tree of containment;
| |
− | * Opens ''.sym'' files;
| |
− | * Supports Undo/Redo
| |
− | * Is a ''Selection Provider''
| |
− |
| |
− | === <i>Controllers View</i> ===
| |
− |
| |
− | * View is a singleton;
| |
− | * Used to monitor all Controllers (joysticks) connected to the host;
| |
− | * Shows all Controllers components including names, types and current values;
| |
− | * ''Controllers conntected after Apogy has started will not be recognized!''
| |
− |
| |
− | === <i>Nodes Distance View</i> ===
| |
− |
| |
− | * Selection based (topology ''Node'');
| |
− | * Allows the selection of any two (2) nodes;
| |
− | * Displays:
| |
− | ** Relative Euclidean distance;
| |
− | ** Relative geodesic distance;
| |
− | ** Relative position (x,y,z), given in metres;
| |
− | ** Relative orientation (rx, ry, rz), given in degrees;
| |
− | * Supports real-time update.
| |
− |
| |
− | === <i>3D Viewer</i> ===
| |
− |
| |
− | * Selection based (''Apogy Environment'');
| |
− |
| |
− | * Displays in 3D, the following elements:
| |
− | ** ''Variable'' instance
| |
− | ** ''Field Of Views''
| |
− | ** Reference frames;
| |
− | ** The ''Earth Sky'' (Sun, Moon, Stars, grid)
| |
− | ** ''Map Layers'' that can be rendered in 3D
| |
− | ** ''Data Product'' marker for all products;
| |
− | ** ''Data Product'' 3D representations (when applicable);
| |
− | ** ''Tools'' 3D representations (when applicable).
| |
− |
| |
− | * Displaying ''Data Products'':
| |
− | ** All ''Data Products'' (marker + 3D representation) are visible by default;
| |
− | ** Is ''Selection Listener'' for Data Products
| |
− |
| |
− | ==== <i>Node Presentation</i> ====
| |
− |
| |
− | * Configuring 3D representations of topology ''Nodes'':
| |
− | ** Each ''Node'' in the topology is assigned a '''''Presentation''''' that contains its 3D representation attributes.
| |
− | ** ''Presentation'' attributes are accessible using the ''Properties View'', under the ''Presentation'' tab.
| |
− | ** Node visibility can be toggled by right-clicking on the ''Node'' and selecting ''"Apogy > Toggle Node Visibility."''
| |
− | ** ''URL Nodes'' (''Nodes'' associated with a CAD model) have an additional '''''Presentation Mode''''' attribute, which can be one of three values:
| |
− | **# '''''SURFACE''''': The CAD will be rendered as a surface (if possible)
| |
− | **# '''''WIREFRAME''''': Only the wireframe outline of the CAD surface will be rendered (if possible)
| |
− | **# '''''POINTS''''': Only the point cloud specified in the CAD will be rendered (if possible)
| |
− | ** The visibility, ''Presentation Mode'' and colour can be set for all FOV of a given type through the Preferences;
| |
− | ** The visibility, and axis length can be set for all ''Node'' of a given basic type (''Position'', ''Rotation'', ''Transform'', ''URL'') through the Preferences;
| |
− |
| |
− | ==== Managing Performance ====
| |
− |
| |
− | * The maximum frame rate (in Hz) can be lowered (default is 15 Hz);
| |
− | * Under ''Field Of View'' and ''Image Snapshot'' preferences:
| |
− | ** Disabiling Show Project;
| |
− | * Under ''Earth Sky'' preferences:
| |
− | ** Disabling Sun And Moon Blooming;
| |
− | ** Disabling Shadows;
| |
− | ** Reducing the Shadow Map Size;
| |
− |
| |
− | ==== Moving Using The Mouse ====
| |
− |
| |
− | {| border="1" cellpadding="2" style="text-align:center;"
| |
− | ! Button
| |
− | ! Mouse Motion
| |
− | ! Movement
| |
− | |-
| |
− | | rowspan="2" | Center
| |
− | | Forward
| |
− | | Move forwards
| |
− | |-
| |
− | | Back
| |
− | | Move backwards
| |
− | |-
| |
− | | rowspan="4" | Left
| |
− | | Forward
| |
− | | Rotate downwards
| |
− | |-
| |
− | | Back
| |
− | | Rotate upwards
| |
− | |-
| |
− | | Left
| |
− | | Rotate to the left
| |
− | |-
| |
− | | Right
| |
− | | Rotate to the right
| |
− | |-
| |
− | | rowspan="4" | Right
| |
− | | Forward
| |
− | | Translate downwards
| |
− | |-
| |
− | | Back
| |
− | | Translate upwards
| |
− | |-
| |
− | | Left
| |
− | | Translate to the right
| |
− | |-
| |
− | | Right
| |
− | | Translate to the left
| |
− | |}
| |
− |
| |
− | ==== Keyboard Inputs ====
| |
− |
| |
− | {| border="1" cellpadding="2"
| |
− | ! Key
| |
− | ! Function
| |
− | |-
| |
− | | style="text-align:center;" | Q
| |
− | | '''Q'''uick: Accelerate translation
| |
− | |-
| |
− | | style="text-align:center;" | L
| |
− | | '''L'''evel: Set view point orientation so that the user line of sight is level (perpendicular to the Z axis.)
| |
− | |-
| |
− | | style="text-align:center;" | P
| |
− | | '''P'''icking: Enables the picking mode(used by some 3D tools.) '''Picking Enabled''' shows up on the left hand side of the viewer when activated.
| |
− | |}
| |
− |
| |
− | === <i>Camera View</i> ===
| |
− |
| |
− | * Selection-based (''Camera View Configuration'');
| |
− | * Display latest image return by specified ''Camera'';
| |
− | * Display the ''Overlays'';
| |
− | * Applies the ''Image Filters'' before displaying the image
| |
− | * Supports interaction with ''Camera Tools''
| |
− |
| |
− | ==== <i>Map View</i> ====
| |
− |
| |
− | * Selection-based (''Map View Configuration'');
| |
− | * Displays:
| |
− | ** Selected ''Image Map Layers'';
| |
− | ** Selected ''Feature Of Interest Map Layers'';
| |
− | ** Various map annotations such as:
| |
− | *** Vehicle position and orientation;
| |
− | *** Trajectories;
| |
− |
| |
− | ==== <i>Earth Sky View</i> ====
| |
− |
| |
− | * Selection-based (''Earth Sky'');
| |
− | * Displays:
| |
− | ** Sun and Moon ephemerides as well as Sun intensity;
| |
− | ** The time at the ''Worksite'':
| |
− | *** Local time;
| |
− | *** Julian day;
| |
− | *** Sideral time;
| |
− | ** The location of the ''Worksite'':
| |
− | *** Longitude;
| |
− | *** Latitude;
| |
− | *** Altitude;
| |
− |
| |
− | ==== <i>Time Source View</i> ====
| |
− | TODO!
| |
− |
| |
− | ==== <i>Virtual Reality Tools</i> ====
| |
− | TODO!
| |
− |
| |
− | ==== <i>Data Products View</i> ====
| |
− | TODO!
| |
Apogy was originally developed at the Canadian Space Agency to control space exploration rovers and their associated sensors. Integrating all these system developed by many different contractors and allowing them to be controlled as an integrated entity represented a challenge. In order works, a tool to plan, validate, execute and monitor integrated operations to support multiple missions was required. The technical team soon realized that a reusable framework could save a lot of work and allow for future growth. Apogy is the result of this thinking.
System can be compose at multiple levels (i.e. a System can have type members that are themselves composites Systems and so on.). The Integrated Rover is an example of such a System.
They are named and refer to a Node defined in the System's topology. The root connection point is implicit and always refer to the System's root topology node.
When developing complex operations sequence or testing scripts that command Systems to perform tasks, a user often needs to run such commands on some sort of simulated version of the Systems.
In other cases, during development, a specific sub-system of a larger assembly may not yet have an implementation that communicates with it's hardware (or the hardware may not yet be available). A way for the user to work on operational sequence or scripts should be made available.
Defines what the user has to work with in a specific mission such as the System instances.
Time Sources are used to feed the time to the Session. This in turns updates the position of the sky elements (Sun, Moon, Stars).
The Time Sources element contains the available Time Source, only one is set as the Session Active Time Source.
Inherently generic concept that could be specialized as required (e.g. Earth surface);