Instrument Neutral Distributed Interface
Encyclopedia
INDI is a Distributed Control System
protocol to enable control, data acquisition and exchange among hardware devices and software front ends, with particular focus on astronomical instrumentation.
poses all command and status functions in terms of setting and getting Properties. Each Property is a vector of one or more named members. Each Property has a current value vector; a target value vector; provides information about how it should be sequenced with respect to other Properties to accomplish one coordinated unit of observation; and provides hints as to how it might be displayed for interactive manipulation in a GUI. Clients learn the Properties of a particular Device at runtime using introspection.
This decouples Client and Device implementation histories. Devices have complete authority over whether to accept commands from Clients. INDI accommodates intermediate servers, broadcasting, and connection topologies ranging from one-to-one on a single system to many-to-many between systems of different genre. The INDI protocol can be nested within other XML elements such as RTML
to add constraints for automatic scheduling and execution.
to describe a generic hierarchy that can represent both canonical and non-canonical devices. In INDI, all devices may contain one or more properties. Any property may contain one or more elements. A property in the INDI paradigm describes a specific function of the device. There are five types of INDI properties:
INDI provides powerful scripting facilities that enables complete device automation.
Distributed control system
A distributed control system refers to a control system usually of a manufacturing system, process or any kind of dynamic system, in which the controller elements are not central in location but are distributed throughout the system with each component sub-system controlled by one or more...
protocol to enable control, data acquisition and exchange among hardware devices and software front ends, with particular focus on astronomical instrumentation.
Introduction
Elwood Downey started the INDI Protocol initiative in 2003 to develop a platform and client independent control protocol. INDI is a simple XML-like protocol described for interactive and automated remote control of diverse instrumentation. It is small, easy to parse and stateless. In the INDI paradigm each Deviceposes all command and status functions in terms of setting and getting Properties. Each Property is a vector of one or more named members. Each Property has a current value vector; a target value vector; provides information about how it should be sequenced with respect to other Properties to accomplish one coordinated unit of observation; and provides hints as to how it might be displayed for interactive manipulation in a GUI. Clients learn the Properties of a particular Device at runtime using introspection.
This decouples Client and Device implementation histories. Devices have complete authority over whether to accept commands from Clients. INDI accommodates intermediate servers, broadcasting, and connection topologies ranging from one-to-one on a single system to many-to-many between systems of different genre. The INDI protocol can be nested within other XML elements such as RTML
RTML
RTML is a proprietary programming language used exclusively by Yahoo!'s Yahoo! Store and Yahoo! Site web hosting services.-History:...
to add constraints for automatic scheduling and execution.
Architecture
The main key concept in INDI is that devices have the ability to describe themselves. This is accomplished by using XMLXML
Extensible Markup Language is a set of rules for encoding documents in machine-readable form. It is defined in the XML 1.0 Specification produced by the W3C, and several other related specifications, all gratis open standards....
to describe a generic hierarchy that can represent both canonical and non-canonical devices. In INDI, all devices may contain one or more properties. Any property may contain one or more elements. A property in the INDI paradigm describes a specific function of the device. There are five types of INDI properties:
- Text property.
- Number property.
- Switch property (Represented in GUI by buttons or check boxes).
- Light property (Represented in GUI by colored LEDs).
- Blob property (Binary data).
INDI provides powerful scripting facilities that enables complete device automation.
INDI Library
INDI Library is an implementation of the INDI wire protocol for Unix-like systems. It supports a wide variety of astronomical instruments including telescopes, CCDs, focusers, filters, and video capture devices. The INDI Library is licensed under the LGPL.INDI Driver
INDI driver is the program that communicates directly to the device. It is responsible for controlling the device parameters and for defining them to clients. Drivers send a list of supported device properties to clients where they are parsed and presented to the end users.INDI Clients
Clients are the software frontends that communicate with the hardware drivers. They usually communicate with INDI hardware drivers via INDI server, though they can communicate with the drivers directly. There are many types of clients, most notably:- Generic GUI clients like KStarsKStarsKStars is a planetarium program using the KDE Platform for Unix-like computer operating systems. It provides an accurate graphical representation of the night sky, from any location on Earth, at any date and time...
or XephemXEphemXEphem is a Motif based ephemeris and planetarium program for Unix-like operating systems developed by Elwood C. Downey.XEphem uses* The VSOP87D planetary theory for Solar System ephemeris,...
. Such clients generate a dynamic GUI to offer users a control panel to control the device. - Logger clients to record messages, alarms, and data exchanged between devices and clients.
- Watch dog clients to insure safe and proper operation of devices.
- Automated scripts to carry on complex and coordinates operations on devices.