The INDI system for Robotic Imaging
The INDI system allows a 'Client' computer - PC, laptop, tablet, smart-phone etc. (running GUI 'planetarium' software) to remotely control a Telescope 'Server' computer (running Telescope 'control' software) across any IP network (i.e. across the Internet or your local LAN Ethernet/WiFi).
The 'client/server' concept is based on the idea of a (single) 'remote' Telescope (the 'server') being 'controlled' from one of many 'clients' Whilst you would expect one 'client' to be 'in control' at any one time, it is possible to divide the functions = so one client (with a Planetarium GUI) might control the selection of the telescope 'target' position, another imaging, and yet another 'tracking'
It's quite possible to control the Telescope locally 'at the same time' by running another Client directly on (or 'next to') the local Telescope computer (see here, for an example of an INDI Server (on one Pi) being directly controlled by an INDI Client running on a directly connected second Pi
NB. The Windows PC 'equivalent' to an INDI Telescope Server would be an ASCOM Server
The client/server nature of INDI means you have an almost infinite choice of which package to run where.
For example, when using INDI Client on a Windows PC, Cartes du Ciel is typically used as the 'planetarium' GUI for 'goto' control and 'CCD-Ciel' for camera control. These can then link to any INDI Server equipped remote telescope (including one running on *nix / Raspberry Pi) Stellarium can be used on both Windows and *nix systems, however it's not a good choice for the Raspberry Pi (even on a Pi B3 with OpenGL GPU drivers Stellarium runs rather slowly) The *nix 'planetarium' GUI of choice is usually KStars (plus KStars 'EKOS' plug-in for auto guiding - and EKOS in turn comes with an 'Align' module that assists polar alignment using the drift method) The INDI Server at the telescope might use EQMod (for NEQ6 'goto') + GPhoto (for a Canon 450D imaging camera) and V4L2 (to drive the auto-guider camera).
When using EKOS, an on-line connection to astronomy.net is used for 'plate solving', however this CAN be done on your own local Client hardware (by downloading the catalogues). Further, whilst LinGuider is built in for EKOS use, you use PHD2 for actual guiding instead.
Bandwidth issues
Since the Client has 'full control', the INDI system quickly runs into bandwidth limits when high resolution image data has to be transferred from the Telescope Server to the Client eg. for focus control and autoguiding.
Using EKOS at the Client as the auto-guider means the Server autoguider camera has to transmit images 'in real time' (so EKOS can discover any tracking errors and then make decisions on what control values to send back to the 'scope). Needless to say, the overhead and delays involved in all this data transmission kills the response speed (and thus, no doubt, the tracking accuracy). One way to improve the speed is to run EKOS on the Telescope computer and display it's GUI on the Client computer by using VNC 'remote desktop'. The EKOS developers have recognised this as an issue for the 'remote observatory' and have implemented a feature called "Rapid Guide". Here EKOS (and it's GUI for guide star selection, exposure, etc.) remains on the Client computer but the guide camera images are processed by the INDI Server 'CCD driver' (at the Telescope) which then just reports the star position back to EKOS (EKOS then sends back the required adjustment values)
The 'problem' with INDI is this 'insistence on complete control' approach = what you REALLY want is a Telescope that can be 'told' to 'stick to (that) star' = i.e. a system in which the telescope can make it's own auto-guiding decisions within milliseconds, rather than one that has to keep sending streams of data back and forth for 'directions'
All this insistence on control harks back to the 'old days' when computing chips were exceedingly slow (and exceedingly expensive) necessitating 'manual' control over 'everything'. These days even a £4 Pi Zero has a 1GHz CPU which is quite capable of performing the entire auto-guiding 'control' function - i.e. performing auto-focus and auto-exposure, selecting an appropriate 'guide' star, analysing drift to sub-pixel accuracy and issuing the required adjustment 'pulse' values to the Telescope (with PHD it doesn't need to know anything about 'camera orientation', 'pixel sizes', 'gear ratios' or 'pulse lengths' = it just auto-detects what effect it's instructions are having and adjust as needed). A modern autoguiding system 'GUI' need only consist of 2 elements = an 'on/off' button and a bi-colour LED (red=not guiding, green=guiding OK) :-) For sure no modern system should need to ask the user to perform time-wasting 'guide star selection' or need to send 'star position' data to some remote system (when it can make local guide decisions 100x faster)
However INDI has one advantage = it's actually being compiled for the Pi !
STOP PRESS. As of Oct 2016, KStars Lite (for Android) became available. This is likely to work rather better on the 'low end' Raspberry Pi than KStars 'full' (which requires a Pi B3 with a KDE desktop with the full OpenGL GPU drivers, although Ubuntu Mate+KStars Bleeding may work even better (on the B3)).
KStars planetarium / control software
KStars is part of the KDEdu initiative, i.e. uses the KDE desktop. It is reported to be 'rather slow' when run on the Pi (but somewhat faster than Stellarium). The KStars planetarium component is known as 'SkyMap' and the auto-guiding suite as 'Ikos'
The availability of a full GPU coded OpenGL driver for the B3 (rather that just the cut-down OpenGL -ES driver) should make a huge difference - both KDE (and thus KStars) and Stellarium using GPU OpenGL should work 'just fine' (Stellarium is reported to reach 10fps, so KStars should be even better)
You can, in fact, just use KStars as planetarium software
However KStars includes 'indi_' drivers for most Telescope GOTO handsets. These can link directly to your Telescope handset (via USB/serial port) on the same computer, or operate as Indi 'Clients' (i.e. they can remote drive your Telescope over the IP network to a Pi running the INDI Server, but see later re: KStars-Ikos auto-guide issues
If you want to run KStars on your Raspberry Pi B3, the first step is to enable the OpenGL GPU driver :-
The GL driver won't work on Jessie 4.4.y kernel, you need the most 'bleeding edge' update lists and then upgrade the s/w :- sudo BRANCH=next rpi-update sudo apt-get upgrade Reboot Get the graphics libs sudo apt-get install mesa-utils Reboot Edit the Config.txt file to activate the OpenGL driver by adding :- dtoverlay=vc4-kms-v3d Note you need to assign at least 128Mb to the GPU (default is 64Mb) and your desktop will be 1150 x 866 (4 x 3 ratio) Reboot Note that, as of Oct 2016, the GL driver ignores overscan/under-scan settings - so if the desktop overlaps the edge of your display too bad, the only solution is to use a different monitor (actually, only 'TV displays' seem to over-scan)
Next install KStars 2.7.2 (released Nov. 24th, 2016 = KStars 2.7.0 (October, 2016) is reported to perform twice as fast on the Pi as the previous versions, so 2.7.2 should be even better !
To install KStars :- sudo apt-get install kstars
KStars is launched from the KDE desktop. If you find the GUI is too slow, an alternative to KStars on the Pi is Xephem (which also supports INDI)
Installing the INDI Server on Pi Jessie
You only need the INDI Server on the Pi if you need to link to a remote INDI Client 'control' application (i.e. KStars) across your network. If you are running KStars ON THE SAME Pi, you can drive your Telescope from that Pi 'directly'.
See the Indi Library 1.3.1+including 3rd party drivers for Raspbian Jessie.
First install the pre-requisites :- sudo apt-get install cdbs libcfitsio3-dev libnova-dev libusb-1.0-0-dev libjpeg-dev libusb-dev libtiff5-dev libftdi-dev fxload libkrb5-dev libcurl4-gnutls-dev libraw-dev libgphoto2-dev libgsl0-dev dkms libboost-regex-dev libgps-dev libdc1394-22-dev After the dependencies are installed, unpack the 'libindi_1.3.1_rpi.tar.gz' package, cd to the folder and install the INDI library package (with the 3rd party drivers): $ tar -xzf libindi_1.3.1_rpi.tar.gz $ cd libindi_1.3.1_rpi $ sudo dpkg -i *.deb