Projects / AstroTouch
AstroTouch: astronomy you can feel
2025 – present · open-source Python · adapted from an article I wrote for MNASSA, the journal of the Astronomical Society of Southern Africa
Astronomy is an overwhelmingly visual science. We explain it with images, spectra and graphs, and in doing so we quietly assume everyone in the audience can see. That leaves blind and visually impaired people out of a science that belongs to everyone.
Tactile models are the obvious answer, but making them by hand is slow and tends to lose the science along the way. AstroTouch does it automatically: it takes a real astronomical image and turns it into a 3D-printable relief, mapping brightness to height so the structure in the data becomes something you can run your fingers over.
How it works
AstroTouch reads FITS files, the standard format astronomers use, and works out on its own which part of a multi-extension file holds the image. Pixel brightness then becomes height: bright regions, usually the denser or more energetic parts of an object, rise off the plate.
Raw data rarely makes a good tactile model, so the pipeline includes the adjustments that matter for touch rather than for looks:
- Scaling (linear, logarithmic or arcsinh) to bring out faint structure next to bright structure, which astronomical images are full of.
- Smoothing and clipping, so a single hot pixel doesn't become a sharp spike that is unpleasant, or painful, to touch.
- Inverting heights, for data where the interesting features are the dark ones.
- Braille labels in Unified English Braille, added on a flat strip at the base of the model, so a model says what it is.
The result is exported as an STL file that any consumer 3D printer can handle. There's a desktop app with a live 3D preview for adjusting the settings by feel, and a command line for batch work.
An example
The Jupiter model above started as a JWST MIRI image of the planet. On a 120 mm plate, logarithmic scaling keeps the faint aurorae without flattening the bright cloud bands, and a little smoothing turns the atmospheric structure into ridges that are distinct under a fingertip. A raised border protects the surface, and the Braille strip reads "Jupiter".
Why it matters here
Astronomical societies across South Africa run star parties and school visits constantly. With a printed model on the table, a blind visitor can explore the same object that sighted visitors are queueing to see through the eyepiece, at the same time, in the same conversation.
It also puts local science in people's hands. SAAO and SARAO produce world-class images from SALT and MeerKAT; AstroTouch is a way for any club with a 3D printer to turn those into something everyone can explore.
Get it
AstroTouch is free and open source, and contributions are welcome: code, printed test models, or feedback from people who actually read the models by touch.
- AstroTouch on GitHub: source, installation and example data.
- The web version, if you'd rather not install anything.
- Printable models I've already made.
AstroTouch is built on Astropy, NumPy, SciPy, PyVista and numpy-stl, with a PySide6 interface. Braille follows the Rules of Unified English Braille (ICEB, 2013).