2022-05-20 22:54:55 -06:00
|
|
|
# Spacecruft Celestia GNSS
|
|
|
|
Celestia is a "real-time space simulation that lets you experience our
|
|
|
|
universe in three dimensions".
|
|
|
|
|
2022-05-21 12:39:21 -06:00
|
|
|
It contains many celestial objects, but few that are man made, such
|
2022-05-20 22:54:55 -06:00
|
|
|
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
|
|
|
|
|
2022-05-21 00:12:07 -06:00
|
|
|
## Spacecruft
|
2022-05-20 22:54:55 -06:00
|
|
|
Spacecruft:
|
|
|
|
|
|
|
|
* https://spacecruft.org/spacecruft/gnss-earth
|
|
|
|
|
|
|
|
* https://spacecruft.org/spacecruft/celestia
|
|
|
|
|
2022-05-21 00:12:07 -06:00
|
|
|
## Celestia
|
2022-05-20 22:54:55 -06:00
|
|
|
Upstream Celestia:
|
|
|
|
|
|
|
|
* https://celestia.space/
|
|
|
|
|
|
|
|
* https://github.com/CelestiaProject/Celestia
|
|
|
|
|
2022-05-21 00:26:23 -06:00
|
|
|
## TLE Conversion
|
2022-05-21 00:12:07 -06:00
|
|
|
|
2022-05-20 22:54:55 -06:00
|
|
|
TLE Conversion Spreadsheet:
|
|
|
|
|
|
|
|
* https://www.classe.cornell.edu/~seb/celestia/hutchison/spreadsheets.html
|
|
|
|
|
|
|
|
* https://www.classe.cornell.edu/~seb/celestia/hutchison/tle-xls.zip
|
|
|
|
|
2022-05-21 00:12:07 -06:00
|
|
|
## 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
|
|
|
|
|
|
|
|
|
2022-05-21 00:26:23 -06:00
|
|
|
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.
|
|
|
|
|
2022-05-21 14:30:57 -06:00
|
|
|
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 [ ]
|
|
|
|
}
|
|
|
|
```
|
|
|
|
|
2022-05-21 01:30:30 -06:00
|
|
|
## Galileo
|
|
|
|
Galileo 3D models are from the ESA:
|
|
|
|
|
|
|
|
* https://gssc.esa.int/education/galileo3d/
|
|
|
|
|
2022-05-21 00:26:23 -06:00
|
|
|
|
|
|
|
## 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
|
|
|
|
|
|
|
|
|
2022-05-21 00:12:07 -06:00
|
|
|
## 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/
|
|
|
|
|
2022-05-20 22:54:55 -06:00
|
|
|
|
2022-05-21 01:30:30 -06:00
|
|
|
# 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`.
|
2022-05-21 01:16:06 -06:00
|
|
|
|
2022-05-21 01:30:30 -06:00
|
|
|
## 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:
|
2022-05-21 01:16:06 -06:00
|
|
|
|
2022-05-21 01:30:30 -06:00
|
|
|
* 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.
|
2022-05-21 12:39:21 -06:00
|
|
|
|
2022-05-21 01:30:30 -06:00
|
|
|
Go to `File --> Import --> Wavefront (.obj)`.
|
2022-05-21 12:39:21 -06:00
|
|
|
|
2022-05-21 01:30:30 -06:00
|
|
|
Import the file, such as `galileo.obj`.
|
2022-05-21 12:39:21 -06:00
|
|
|
|
2022-05-21 01:30:30 -06:00
|
|
|
Go to `File --> Export --> 3D Studio (.3ds)`.
|
2022-05-21 12:39:21 -06:00
|
|
|
|
2022-05-21 01:30:30 -06:00
|
|
|
Save the file, such as `galileo-gnss.3ds`.
|
2022-05-21 01:16:06 -06:00
|
|
|
|
2022-05-21 12:39:21 -06:00
|
|
|
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
|
2022-05-21 13:51:34 -06:00
|
|
|
# Make sure your path includes `~/.local/bin`, if not, add it.
|
|
|
|
which pip
|
|
|
|
# Should be ~/.local/bin/pip
|
2022-05-21 12:39:21 -06:00
|
|
|
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/
|
|
|
|
```
|
|
|
|
|
2022-05-21 14:30:57 -06:00
|
|
|
|
2022-05-21 13:51:34 -06:00
|
|
|
# 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.
|
|
|
|
```
|
2022-05-21 01:16:06 -06:00
|
|
|
|
2022-05-20 22:54:55 -06:00
|
|
|
# License / Copyright
|
2022-05-21 01:16:06 -06:00
|
|
|
Upstream sources under their respective copyrights.
|
|
|
|
|
2022-05-20 22:54:55 -06:00
|
|
|
Copyright (C) 2022 Jeff Moe.
|
|
|
|
|
|
|
|
License: GPLv2 or any later version.
|
2022-05-21 01:16:06 -06:00
|
|
|
|