# Spacecruft Celestia GNSS Celestia is a "real-time space simulation that lets you experience our universe in three dimensions". It contains many celestial objects, but few that are man made, such as Hubble. It has a TLE for the ISS, but it doesn't update it. There is a spreadsheet that you can enter a TLE into it and it generates an `.ssc` file that Celestia can read. Using a spreadsheet is a bit awkward, and hard to automate. It would be real swell to be able to add TLEs to Celestia more easily. Then all the GNSS satellites could be added. Or SatNOGS... It will take the data that generates this: ![spacecruft-galileo](pics/galileo.png) And render it in this application: ![celestia-screenshot](pics/celestia-screenshot.png) # See Also ## Spacecruft Spacecruft: * https://spacecruft.org/spacecruft/gnss-earth * https://spacecruft.org/spacecruft/celestia ## Celestia Upstream Celestia: * https://celestia.space/ * https://github.com/CelestiaProject/Celestia ## TLE Conversion TLE Conversion Spreadsheet: * https://www.classe.cornell.edu/~seb/celestia/hutchison/spreadsheets.html * https://www.classe.cornell.edu/~seb/celestia/hutchison/tle-xls.zip ## Solar System Catalog *"Solar System Catalog" files are primarily used to define the objects which can be found in a stellar system, such as planets, moons, asteroids, comets, and spacecraft. They also have four other uses: they can define alternative surface textures, locations on or near an object, and orbital reference points. An SSC file can also edit objects which have been defined in other SSC catalog files.* Info on `.ssc` files: * https://www.classe.cornell.edu/~seb/celestia/creating-ssc-files.html * https://en.wikibooks.org/wiki/Celestia/SSC_File In Celestia name "Galileo" is used for the *other* spacecraft, not for the EU GNSS. So the name used in development here adds `-gnss`, ala, `galileo-gnss.ssc`, whereas the other GNSS don't. Example `.ssc` file contents: ``` "1997-035A" "Sol/Earth" { Class "spacecraft" # Mesh Radius 0.005 EllipticalOrbit { Epoch 2459718.94467728 Period 0.49859567 SemiMajorAxis 26560.345 Eccentricity 0.0057297 Inclination 55.5062 AscendingNode 156.8049 ArgOfPericenter 51.2220 MeanAnomaly 309.3262 } Obliquity 55.5062 EquatorAscendingNode 156.8049 RotationOffset 80.2289 # Orientation [ ] } ``` ## Galileo Galileo 3D models are from the ESA: * https://gssc.esa.int/education/galileo3d/ ## TLE Sources Beidou (China) * https://celestrak.com/NORAD/elements/beidou.txt Galileo (Europe) * https://celestrak.com/NORAD/elements/galileo.txt Glonass (Russia) * https://celestrak.com/NORAD/elements/glo-ops.txt GNSS (All) * https://celestrak.com/NORAD/elements/gnss.txt GPS (USA) * https://celestrak.com/NORAD/elements/gps-ops.txt ## Spice Spice TLE: "Evaluate NORAD two-line element data for earth orbiting spacecraft." * https://naif.jpl.nasa.gov/pub/naif/toolkit_docs/FORTRAN/spicelib/evsgp4.html ## pyorbital Orbital and astronomy computations in python. * https://github.com/pytroll/pyorbital/ * https://pyorbital.readthedocs.io/ # 3D Models Celestia uses an old 3D proprietary format from an old 3D application in `.3ds` format. It also has it's own format `.cmod`. ## 3D Model Conversion Recent versions of Blender don't export `.3ds` format. But old versions of Blender, such as 2.79b do work. Get an old version here: * https://download.blender.org/release/Blender2.79/ Launch `blender`, import, export. ``` # Go to https://gssc.esa.int/education/galileo3d/ # and download the Galileo_3D.zip file. # It generates a unique URL, afaict. unzip Galileo_3D.zip # Get old Blender wget https://download.blender.org/release/Blender2.79/blender-2.79b-linux-glibc219-x86_64.tar.bz2 tar xf blender-2.79b-linux-glibc219-x86_64.tar.bz2 cd blender-2.79b-linux-glibc219-x86_64 ./blender ``` Blender creates a new file on launch. Go to `File --> Import --> Wavefront (.obj)`. Import the file, such as `galileo.obj`. Go to `File --> Export --> 3D Studio (.3ds)`. Save the file, such as `galileo-gnss.3ds`. The `galileo-gnss.3ds` file created this way didn't render in Celestia. `:(` # Install celestia-gnss Install thusly. ``` git clone https://spacecruft.org/spacecruft/celestia-gnss cd celestia-gnss sudo apt update sudo apt install python3-pip # Many ways to do python setup, here is one: pip3 install --upgrade --user pip # Make sure your path includes `~/.local/bin`, if not, add it. which pip # Should be ~/.local/bin/pip pip install --user -r requirements.txt ``` # Run celestia-gnss Run thusly. Convert a TLE, example: ``` ./tle2ssc extras/galileo-gnss/galileo.txt ``` # Use in Celestia Then copy the satellites you want into your Celestia extras dir. Crufty bad way to do it, example: ``` sudo cp -a extras/galileo-gnss/ /usr/share/celestia/extras-standard/ ``` # Issues `pyorbital` doesn't support geostationary orbits. It gives the error: `Deep space calculations not supported` I thought that was what `pyorbital` was for. It is mentioned in a bug report, but not in the docs. Hmm. See issue: * https://github.com/pytroll/pyorbital/issues/71 ``` I think the Deep space error comes when trying to use TLEs for computing geostationary or deep space orbits, with pyorbital doesn't support yet. ``` # License / Copyright Upstream sources under their respective copyrights. Copyright (C) 2022 Jeff Moe. License: GPLv2 or any later version.