Design of Gboccia

Programming Languages

Libraries

Additional Programs

Data Acquisition

We are using the Cypress FX2 Chip, see homepage of Jens Dopke

Design of the Software at the Telescope:

There are three packages installed the telescope the HOLICS mount control and pointing program. The  FRAD filter and mirror control program and the Gboccia program, which controls the CCD camera directly and provides the services of the HOLICS and FRAD programs to the user. FRAD as well as HOLICS are currently closed source.

Design of Gboccia:

Gboccia started as a GTK based project, written in plain C. Now the GTK user interface has been rewritten in Python. The communication between these two processes is achieved using the INDI protocol over TCP/IP, which permits remote operation. The
C side is linked to the INDI API as an "indi driver", this communicates with the INDI server using pipes which in turn communicates with the INDI Client using  TCP/IP.  The generic Python Client DCD including a documented API was developed and the specific client was written in based thereon.
The user interface was designed using Glade which allowed to reuse the user interface originally designed for C in Python. The Python code turned out to very easily portable to other operating systems.

Current Status:

Currently Gboccia is used to control the telescope locally. A permanent Internet connection has been established.  First tests have shown that remote operation is possible within the 16KByte/s bandwidth of our provider.

Future developments:

We are currently rewriting FRAD in Python in order to link it to Gboccia directly as well as a security solution for remote observing.

Similar Projects:

The control software of the 1.5m hexapot telescope at the university of Bochum is written in C++ using the ALMA Common Software  framework, and QT.

Related Documents:

Further documentation regarding Gboccia can be found on the homepage of the current main developer: Dirk Hünniger. Most relevant are the Slides of our presentation as well as the Users Manual.

Conclusion:

We have learned that Python is a great programming language that allows for imperative, ,object oriented as well as functional programming. Furthermore  its typing scheme makes  structural changes of the design very easy and also allows unexperienced programmers to take part in useful projects. Memory allocation and garbage collection is automatically handled by reference counting. Python is fully introspective and gives very detailed and useful error messages. Its only disadvantage is speed, although this is easily overcome by calling C libraries from Python. C is the one of the fasted if not the fasted high level language, it provides absolute control of detail and is great for numerical  calculations, which need a lot of computing, it even outreachs C++ in this point. C modules can be linked to Python rather easily. Python Code is very portable. Even included C modules and use of commonly available libraries like  GTK  do not cause any problems. We were able to port from Linux to an other commonly used operating system within a day. We do recommend to use Python for most of the code and C only for small tasks, that need a lot of computing, since C code usually takes more time to write and to debug.

Developers:

Dirk Hünniger  (Gboccia camera control, current main developer)
Klaus Reif
(Manager)
Manuel Metz (HOLICS mount control, current main developer)
Pascal Hirsch (HOLICS mount control, initial version)
Oliver Mark Cordes (Gboccia camera control, initial version)
Henning Poschmann (Hardware development)

This project is hosted by sourceforge:

SourceForge.net Logo