The final stages f the Cassini mission. Image courtesy of NASA/JPL-Caltech.

On Friday September 15th 2017, the NASA’s Cassini mission wil end in a rather final way: The Cassini orbiter will embark on a planned orbital descent and will be destroyed by Saturn’s atmosphere in the process. This step became necessary as the fuel supply on the orbiter are dwindling, the mission objectives were fulfilled and NASA did not want to accidental contaminate one of Saturn’s moons. In this final phase Cassini performed a number of passes through the gaps between Saturn and its rings. Cassini will try to send data for as long as possible, and will send all data taken on September 14th, 2:45 p.m. PDT and configure for real time transmission by September 15th, 1:37 a.m. PDT. Contact loss is expected at 4:45 a.m PDT.

CBC radio 1 aired a great interview with Dr. Carolyn Proco, the head of the Cassini imaging team. For additional information, pleas also visit NASA’s website as well as WIKIPEDIA. A beautifully animated time-line of the mission can be found here.

In this post, I will go briefly go over the mission objectives and instrumentation of Cassini and then focus on the data sources available to the general public. Perhaps I will add some Python based post-processing.

Some background information

Planning and early life

The development of Cassini, or more accurately Cassini-Huygens, began in the 1980s and was intended to be the fourth probe to be sent to Saturn and the first one to enter its orbit. The mission was planned, built and managed in a collaboration between NASA, ESA (the European Space agency) and the Italian space agency (ASI). More specifically:

  • Cassini, the Saturn orbiter, was built by the Jet Propulsion Lab (JPL) and operated by NASA, and
  • Huygens, the Titan lander, was built by Alcatel Alenia Space and operated by ESA/ASI.

Some milestones in Cassini’s early life:

  1. Launch: October 15, 1997
  2. Long interplanetary voyage including flyby and gravity assist manoeuvres around Earth, Venus and Jupiter.
  3. Insertion into Saturn orbit on October 15, 1997.
  4. Separation of Huygens on December 25, 2004 with a successful landing on Titan January 14, 2005.

Mission objectives

Mission summary of the Cassini orbiter. Image courtesy of NASA/JPL.

A detailed mission objective can of course be found on ESA’s website, but the broad stroke mission statement was

Cassini-Huygens is a NASA/ESA/ASI mission designed to explore the Saturn system, including its rings and moons, with a special focus on Titan. After its launch on 15 October 1997, the nominal mission at Saturn began on 1 July 2004. By the time the nominal mission was completed in July 2008, Cassini had completed 75 orbits around Saturn and 44 Titan flybys.

Source: http://sci.esa.int/cassini-huygens/2085-objectives/

One of the critical milestones in the primary mission was of course to land Huygens on Titan and to serve as a relay station for data broadcast from the surface. Two mission extensions, Equinox (2008-2010) and Solstice (2010-2017), were granted and the probe will be destroyed at the end of the Solstice mission.

Instrumentation

A detailed list of the instrumentation on board of Cassini and Huygens is available through NASA and Wikipedia. Three major instrumentation classes are on board:

  1. Optical remote sensing,
  2. Fields, Particles and Wave, and
  3. Microwave Remote Sensing.

I will not delve in the detail of all of the instruments, but focus on the instruments which will play a role later on in the post.

Optical Remote Sensing

These instruments are mounted on the remote sensing pellet. It contains the Imaging Science Subsystem and several visible light, infra-red and ultraviolet spectrometers. The data of these instrument is most commonly stored as a single image or a sequence or stack of images containing the spectral data. In addition to the pure image data, meta-information (date, instrument details, positioning details) are stored either as part of the image file or as a separate meta-data file.

ISS

The Imaging Science Subsystem (ISS) contains two CCD (charge-coupled device) sensors: a wide-angle camera (to provide context) and a narrow angle camera (higher resolution images of specific targets). Both cameras have about 1 Mega-Pixel resolution (well, it was the 90s), but are very sensitive to wavelengths of light between the near-ultraviolet and the near-infrared. Several wheel mounted filters are available to both cameras to select specific wavelengths.

Wide angle image of Saturn and a little part of the ring system. It dominantly features the hexagonal jet stream. The image is taken with a near-infrared filter around 728 nm.
Image courtesy of NASA/JPL-Caltech/Space Science Institute.

VIMS

The Visible and Infrared Mapping Spectrometer (VIMS) can detect 352 separate wavelengths in the visible and infra-red range. The corresponding dataset is stack of images (I really do not like the word, but I have not found a wide spread alternative), where each image in the stack corresponds to a specific wavelength. This information can be used to deduce the content and temperatures of atmospheres, rings and surfaces in the Saturn system.

Image courtesy of NASA/JPL/ASI/University of Arizona/University of Leicester. For more information the image links to the original source.

Microwave Remote Sensing

These instruments use radio waves to investigate atmospheres, determine the mass of objects, or map the surface of moons and planets. To my intense surprise, both sensors on Cassini can be used to generate image data.

RSS

The Radio Science Subsystem (RSS), is one part of an remote sensing instrument with one part on Cassini, and the other using radio antennas on earth. A known signal is sent from the orbiter to earth and the change in the signal is analysed on earth.

Image courtesy of NASA/JPL. Original available at https://photojournal.jpl.nasa.gov/catalog/PIA10233 .

Radar

Cassini’s RADAR (RAdio Detection And Ranging or RAdio Direction And Ranging) system is located in the very prominent parabolic dish of the orbiter. It uses radio waves to penetrate the thick atmosphere of Titan and Saturn and obtain topographic data of the surface.

Cassini’s radar provided much of the earliest and most definitive evidence that Titan has standing liquid on its surface in the first couple years of the spacecraft’s presence at Saturn. Scientists are now convinced that Titan’s clouds drop methane and ethane rain which flows into streams and rivers and collects in lakes that have been measured at hundreds of miles (kilometers) wide and hundreds of feet (meters) deep. Radar signals have even penetrated the lakes’ surfaces. “We can see all the way down to the bottom,” Wall said, “which means the stuff that’s in it is amazingly pure, amazingly clear.”

Source: https://saturn.jpl.nasa.gov/the-journey/the-spacecraft/

Cassini’s radar system can work in three modes:

  1. Classical radio: Wave package is sent – bounces of hard surface – received by the radar dish – distance measurement based on signal running time. Further analysis can yield surface roughness. This mode was used to create the topographical maps of Titan (image below).
  2. Radiometry: A passive mode of the instrument, which can determine the temperature of the surface.
  3. Scatterometry: This mode can detect roughness at a molecular scale. Hence while VIMS and other methods can decipher the chemical composition, e.g. Carbon, RADAR can differentiate between a graphitic or diamond phase of Carbon.

Combined RADAR and VIMS image of the Sotra Facula region on Titan. The blue shade in the image suggests the presence of ice based on the spectrum recorded by VIMS.
Image courtesy of NASA/JPL-Caltech/ASI/USGS/University of Arizona.

Fields, Particles and Wave

Instruments to study dust, plasma and magnetic fields around Saturn. In contrast to most other instruemnets, the visualization method of choice is typically not an image, making it less visually stunning, but at least as scientifically interesting, if not more so …

Data and Information Sources Available to the Public

General Information

Imaging Data

I found several data sources for the Cassini mission. Some contain raw data, some processed data, some a mixture of both:

Source Instruments Description
Cartography and Imaging Sciences Discipline Node ISS, VIMS, RADAR, The Planetary Data System (PDS) contains image and raw data from several NASA missions and spacecraft (more info here). The full data package can be accessed through the link in the instrument column. The PDS provides the PDS Imaging Atlas, which allows convenient access to the data. I suspect this data to be calibrated and validated, but this needs to be confirmed.
NASA/JPL Photojournal Several, including ISS, VIMS, Radar, … Heavily post processed image data frequently with an explanatory article. The datasets are identified by a numerical system: PIAxxxxx. As the data is post-processed, the original data source is not always clear.
The Cassini Raw Image Archive ISS Raw image data of the wide and narrow angle CCD cameras. The storage scheme is Wxxxxxxxx.jpg or Nxxxxxxxx.jpg. As far as I can tell, no meta information is stored on the image, limited meta information is available in this short image description.

Image and Data Postprocessing Software

NASA and JPL have published an overview on their software packages:

  • https://pds-imaging.jpl.nasa.gov/software/

I have selected a few packages for a little closer inspection:

Software Language Platform Tested Description
ISIS – Integrated Software for Imagers and Spectrometers Java All Not yet NASA/JPL image processing package with a focus on placing the image data into the correct geographic context. Hence it allows data from many image sources to be combined on the idendentical spacial location. For this purpose it uses a Digital Terrain Model (DTM) and the Spacecraft Pointing and Position (SPICE) data to create the proper projection of the image data. Online tutorial.
planetaryimage Python All Not yet Python post processor for PDS data and ISIS Cube files. It male all of pythons rather extensive image processing library accessible to the user.

Caution: Alpha stage
Distribution: PyPi (Python Package Index)
Type: Open Source project

pvl Python All All PVL is a markup language, similar to xml, commonly employed for entries in the Planetary Database System used by NASA to store mission data, among other uses. This package supports both encoding a decoding a superset of PVL, including the USGS Isis Cube Label and NASA PDS 3 Label dialects.

Caution: Alpha stage
Distribution: PyPi + Anaconda (conda forge channel)
Type: Open Source project

Mission planning and Analysis Software

I have selected a few packages for a little closer inspection:

Software Language Platform Tested Description
MONTE Java All Not yet

Monte is a state-of-the-art astrodynamic Python library. With over a decade of operational use on NASA’s most demanding deep space robotic missions, Monte is JPL’s prime system for delivering spacecraft anywhere in the solar system.

Monte provides a platform on which users can build their own custom aerospace tools. It supplies the basic astrodynamic infrastructure — trajectory models, coordinate frames, high precision time, astrodynamic event searches, sensitivity analysis, numerical integrators, optimization, etc — allowing you to focus on the problem at hand. All this capability comes with extensive hyperlinked documentation, from introductory tutorials to low level mathematical details.

Source: MONTE Homepage
Licensed by JPL, Caltech

GMAT – General Mission Analysis Tool ??? All Not yet GMAT models, optimizes and estimates spacecraft trajectories in flight. It might be the predecessor of MONTE. Binary download available through the website.

Licensed under the Apache License, v2.

Celestia ??? All All The free space simulation that lets you explore our universe in three dimensions. Celestia runs on Windows, Linux, and Mac OS X.

I found this package, searching for a program which could analyze the Cassini flight data. This website shows Cassini flight data add-ons for Celestia.

First steps in data analysis with Python and other tools

The Warm-up – ISS image data

We will start with the data collected through the CCD cameras of the ISS module. This data is standard imaging data, similar to our experience with any other camera type.

Some background on the camera:

  • the camera records one channel, so the default visualization would be monochrome.
  • Wide Angle Camera [WAC](20 cm f/3.5 refractor; 380-1100 nm; 18 filters; 3.5ox3.5o)
  • Narrow Angle Camera [NAC](2 m f/10.5 reflector; 200-1100 nm; 24 filters; 0.35ox0.35o)

Where do we get the images from ?

Following Emily Lakdawalla’s blog post on the PDS Imaging Atlas, I will start there as well for the following reasons:

  • The PDS Imaging Atlas provides a nice enough web search engine.
  • The PDS Imaging Atlas provides meta data
  • The PDS Imaging Atlas provides provides a naming scheme, which should be traceable to the raw data.

Things I am missing:

  • No API access: This makes it difficult to search within your programming environment of choice. I would have liked to download the data through a Jupyter Notebook, but it seems that I have to go through the website point and click interface. Thremendously annoying and error prone. In addition, I now have to add the data to my repository, instead of having it dynamically created.
  • Database access, with a common query language (SQL, MongoDB, …)
  • Easy traceability of the data source.

NASA’s image processing pipeline

After receiving the raw data from Cassini, the NASA image processing team team stores the data in the PDS Imaging and Cartography Data Vault. The image is the calibrated w.r.t. to the calibration datasets and validated. The calibrated and validated images are availble through the PDS Imaging Atlas.

My own feable attempts at data processing

I finally settled for the following dataset: W1837766238_1, because

 

 

  • it looked interesting: shows some of the Saturn rings as well as the hexagonal pattern at the pole.
  • I should be able to find the raw image in the ISS raw image database.
  • I should be able to find the raw image in the PDS Imaging Node.

Image of Saturn, taken by the ISS wide angle CCD camera.
Image courtesy of NASA/JPL

I donwloaded the tiff file, the .img file and the meta information .LBL label file.

PDS_VERSION_ID = PDS3

 

/* FILE CHARACTERISTICS */

RECORD_TYPE = FIXED_LENGTH
RECORD_BYTES = 536
FILE_RECORDS = 519

/* POINTERS TO DATA OBJECTS */

^IMAGE_HEADER = (“W1837766238_1.IMG”,1)
^TELEMETRY_TABLE = (“W1837766238_1.IMG”,7)
^LINE_PREFIX_TABLE = (“W1837766238_1.IMG”,8)
^IMAGE = (“W1837766238_1.IMG”,8)

/* IDENTIFICATION DATA ELEMENTS */

ANTIBLOOMING_STATE_FLAG = “OFF”
BIAS_STRIP_MEAN = 34.270588
CALIBRATION_LAMP_STATE_FLAG = “OFF”
COMMAND_FILE_NAME = “trigger_33547_1.ioi”
COMMAND_SEQUENCE_NUMBER = 33547
DARK_STRIP_MEAN = 34.232841
DATA_CONVERSION_TYPE = “TABLE”
DATA_SET_ID = “CO-S-ISSNA/ISSWA-2-EDR-V1.0”
DELAYED_READOUT_FLAG = “NO”
DESCRIPTION = “N/A”
DETECTOR_TEMPERATURE = -87.970093 <DEGC>
EARTH_RECEIVED_START_TIME = 2016-088T16:15:07.966
EARTH_RECEIVED_STOP_TIME = 2016-088T16:16:22.035
ELECTRONICS_BIAS = 112
EXPECTED_MAXIMUM = (12.697200,55.995300)
EXPECTED_PACKETS = 82
EXPOSURE_DURATION = 680.000000
FILTER_NAME = (“MT2″,”IRP0”)
FILTER_TEMPERATURE = 1.764572
FLIGHT_SOFTWARE_VERSION_ID = “1.4”
GAIN_MODE_ID = “29 ELECTRONS PER DN”
IMAGE_MID_TIME = 2016-087T09:32:28.189
IMAGE_NUMBER = “1837766238”
IMAGE_OBSERVATION_TYPE = {“SCIENCE”}
IMAGE_TIME = 2016-087T09:32:28.529
INSTRUMENT_DATA_RATE = 182.783997
INSTRUMENT_HOST_NAME = “CASSINI ORBITER”
INSTRUMENT_ID = “ISSWA”
INSTRUMENT_MODE_ID = “SUM2”
INSTRUMENT_NAME = “IMAGING SCIENCE SUBSYSTEM – WIDE ANGLE”
INST_CMPRS_PARAM = (“N/A”,”N/A”,”N/A”,”N/A”)
INST_CMPRS_RATE = (2.210710,2.611450)
INST_CMPRS_RATIO = 3.063432
INST_CMPRS_TYPE = “LOSSLESS”
LIGHT_FLOOD_STATE_FLAG = “ON”
METHOD_DESC = “ISSPT2.8;Saturn;ISS_221SA_WINDS001_PRIME_2”
MISSING_LINES = 0
MISSING_PACKET_FLAG = “NO”
MISSION_NAME = “CASSINI-HUYGENS”
MISSION_PHASE_NAME = “EXTENDED-EXTENDED MISSION”
OBSERVATION_ID = “ISS_234SA_WIND5HR004_PRIME”
OPTICS_TEMPERATURE = (5.232042,-999.000000)
ORDER_NUMBER = 7
PARALLEL_CLOCK_VOLTAGE_INDEX = 9
PREPARE_CYCLE_INDEX = 0
PRODUCT_CREATION_TIME = 2016-088T14:15:27.000
PRODUCT_ID = “1_W1837766238.127”
PRODUCT_VERSION_TYPE = “FINAL”
READOUT_CYCLE_INDEX = 11
RECEIVED_PACKETS = 97
SENSOR_HEAD_ELEC_TEMPERATURE = 1.551943
SEQUENCE_ID = “S93”
SEQUENCE_NUMBER = 7
SEQUENCE_TITLE = “5-6-5 wind”
SHUTTER_MODE_ID = “WACONLY”
SHUTTER_STATE_ID = “ENABLED”
SOFTWARE_VERSION_ID = “ISS 11.00 05-24-2006”
SPACECRAFT_CLOCK_CNT_PARTITION = 1
SPACECRAFT_CLOCK_START_COUNT = “1837766237.207”
SPACECRAFT_CLOCK_STOP_COUNT = “1837766238.127”
START_TIME = 2016-087T09:32:27.849
STOP_TIME = 2016-087T09:32:28.529
TARGET_DESC = “Saturn”
TARGET_LIST = “N/A”
TARGET_NAME = “SATURN”
TELEMETRY_FORMAT_ID = “S&ER3”
VALID_MAXIMUM = (16380,4095)
OBJECT = IMAGE_HEADER
INTERCHANGE_FORMAT = ASCII
HEADER_TYPE = VICAR2
BYTES = 3216
RECORDS = 1
^DESCRIPTION = “../../label/vicar2.txt”
END_OBJECT = IMAGE_HEADER
OBJECT = TELEMETRY_TABLE
INTERCHANGE_FORMAT = BINARY
ROWS = 1
COLUMNS = 2
ROW_BYTES = 536
^STRUCTURE = “../../label/tlmtab.fmt”
OBJECT = COLUMN
NAME = NULL_PADDING
DATA_TYPE = MSB_UNSIGNED_INTEGER
START_BYTE = 61
BYTES = 475
END_OBJECT = COLUMN
END_OBJECT = TELEMETRY_TABLE
OBJECT = LINE_PREFIX_TABLE
INTERCHANGE_FORMAT = BINARY
ROWS = 512
COLUMNS = 10
ROW_BYTES = 24
ROW_SUFFIX_BYTES = 512
^LINE_PREFIX_STRUCTURE = “../../label/prefix3.fmt”
END_OBJECT = LINE_PREFIX_TABLE
OBJECT = IMAGE
LINES = 512
LINE_SAMPLES = 512
SAMPLE_BITS = 8
SAMPLE_TYPE = SUN_INTEGER
LINE_PREFIX_BYTES = 24
END_OBJECT = IMAGE
END

Given the image number, we can figure out which tar.gz package of raw data to download: in our case we need Volume 103.

 

The binary format of the NASA data is giving me some trouble (see attached Jupyter Notebook). This is still work in progress.

Conclusions and additional material

Conclusions

A quick rundown on Cassini and the publicly available data-sources. Processing the raw data with Open Source tools is still a little elusive. I hope that I can fill in the blanks on this topic soon …

Additional material

Bitbucket repository

The Bitbucket repository for this worksheet can be found here.

It can be viewed below or in a full screen Jupyter-Notebook window.

Jupyter Notebook

Changelog

Action Date Description
Create 2017.09.06 Draft
Publication 2017.09.07  Initial posting and forward to social networks
Status Work in progress

Disclaimer

I am doing this as a hobby, so take all of this with care … or better try it for yourself.

License to graphs and photos

Unless otherwise stated all figures are published under the most non restrictive Creative Commons License:
CC0
To the extent possible under law, Andreas Putz has waived all copyright and related or neighbouring rights to graphs and images in this article.

Music Playlist

Title Composer, Group Notes
Saturn, the Bringer of Old Age Gustav Holst Part of The Planets, Op. 32
Honeycomb Mattwill75 Hurdy Gurdy and piano. Strange but I like it.
An der schönen blauen Donau  Johann Strauss II Because of two scenes:

  • 2001: A Space Odyssey: Space ship approaching the station.
  • The C64 Elite computer game: docking soundtrack.

(Post title image courtesy of NASA/JPL-Caltech.)

(Post title image courtesy of NASA/JPL-Caltech.)

(Courtesy NASA/JPL-Caltech.)

%d bloggers like this:
Title
Caption
File name
Size
Alignment
Link to
  Open new windows
  Rel nofollow