The ideas come from:
(a) Simulators for various kinds of physical systems.
(b) The RAPT spatial relation system.
(c) Pose Determination for Vision.
(d) Various kinds of "visual programming" systems.
(a) and (b) are characterised by having a graph or web in which various physical entities are represented by nodes and their relationships are represented by arcs. It is characteristic of simulators that activity representing the behaviour of the system is propagated through the web, passing into a node via its inputs and transmitted to successive nodes via its outputs.
The pose-determination problem is not often viewed in terms of a graph, but in fact there is a 2-node graph implicit in any formulation, e.g. Kumar's: the world is one node and the viewed body is another. Arcs in this case represent the body-feature to image-feature correspondence.
This unification is to be accomplished by supporting two capabilities over the web which it is useful to distinguish:
(1) Behaviour: Each node is contains code for a function and data. When a node is activated, the function is applied to the data treated as arguments. I use "function" in the C sense here, as a piece of code that may, and normally will, cause changes in its arguments. A node is said to be migratory if its behaviour can be made independent of the host environment for the web, that is the X-Window System and Poplog.
(2) Analysis: A node may contain information which supports analysis of portions of the web. An analysis procedure will examine a part of the web. As a result it may modify the web, or produce some structure which characterises an aspect of the web.
(3) Simplification: Some portion of the web may be replaced by a simpler, equivalent sub-web. For example multiple spatial relationships between two bodies in an assembly may be replaced by a single equivalent spatial relationship.
(4) Migration: The initial behaviour of a web will be rather like that of a novice piano-player. The necessary movements will be made, but not within the correct real-time schedule. However critical portions of the web can migrate to lower level controllers. An analysis procedure will be used to generate the programs that run in these controllers.
(5) Uncertainty Analysis: In creating the web, a primary guide will be the nominal behaviour of each node. However this is inadequate for predicting the correctness of a given configuration.
(6) Code Derivation: The code of many nodes depends functionally on certain mathematical (e.g. kinematic) properties. Thus it should be possible to derive the code (Yin did this for RAPT in the early 80's)
The mouse and keyboard handlers of all graphics widgets used by the web are set up to allow the user to annotate the presentation. The annotations, which are made in the style of the graphics program idraw are administered graphically in the same way as the web nodes (which are indeed a sub-class in the O-O hierarchy of entities which appear in a widget).
Thus the web itself is composed within the same set of conventions. One selects the kind of device one wants from a device menu. The left mouse button will then place an instance of the device on the screen, located to the grid if desired. Certain graphical objects (currently only straight lines) can be used to form connections between nodes. They are drawn in the usual way and then a connect button is activated on the main -Device menu. This will build a connection between an output of one device and inputs of another. The connection is made to a terminal which is within range of the ends of the connecting-graphical-object. This is then incorporated into the device whose output it is attached. Repositioning of devices to which connection is made will result in modification of the connection (...currently only on redraw).
The state of a web can be saved to a disc file and restored from it. (Note this has only been tested for purely graphical objects devices will present some problems, since there are some entities (external code and anonymous procedures) which cannot be saved by the generic structure-saver.
It is intended to provide a capability to dump a widget in PostScript.
Where the information that is normally presented to the user by a node is too extensive to be conveniently presented on the main "drawing-board", it is possible to encapsulate in a separate widget, leaving just a small "stub" in the board. Digitised images, for example, can be treated thus, although they can also appear on the main board. This latter is suitable only for small images.
In most cases it will be convenient to use a new widget for an inspection, so a special button is provided for this purpose.
Any selected group of graphic objects can be moved to a widget. Currently there is no logical way of doing this with devices.
A sub-web can be migrated. To do this, a mapping is constructed which takes each web-node to the processor to which it is to be migrated. For each such processor, we determine the object file for the function of each node which migrates to that processor. The migration-supervisor then builds a C-program for that processor. In this program, the arguments to which each node-function is applied are determined by inspecting the web. Code is generated to construct these arguments, with an equivalent structure-sharing to that found in the web. Data which is only accessed by nodes which are migrating to the same processor will reside in that processor's local memory. That which is accessed by nodes in the same cage will reside in the cage-local memory. That which is accessed by nodes not in the same cage will reside in the scram-net memory. Once the structure-building code has been generated, activation code is then generated. For this purpose the migrating sub-graph must be acyclic, with a single least "clock" node. Connection back to a cyclic structure characteristic of closed-loop behaviour is effected through the physical actuator-sensor link implicit in the real world, and/or through a relaxation step. The partial ordering inherent in this acyclic graph must be reflected in the calling-order for the code of the nodes. For a single processor there is an order-homomorphism from the portion of the acyclic graph mapped to that processor and the totally ordered call-sequence.
The models produced by ACIS can be read into the system. An instance of such a model can then become a web-node. The input-terminal of a model-node is its pose (or location). Each feature is an output-terminal. The function of the node relocates the features from body-centered axes to axes determined by the input (normally world axes). All bodies have their location stored internally. Most physical objects are kinds of model-nodes.
input - the digitisation rectangle
output - the (signed)image.
output - the unsigned image