2022-08-26 22:30:31 -06:00
|
|
|
%
|
2022-08-29 18:42:05 -06:00
|
|
|
% Software.tex
|
2022-08-26 22:30:31 -06:00
|
|
|
%
|
|
|
|
% SatNOGS Optical Unofficial Guide
|
|
|
|
%
|
|
|
|
% Copyright (C) 2022, Jeff Moe
|
|
|
|
%
|
|
|
|
% This document is licensed under the Creative Commons Attribution 4.0
|
|
|
|
% International Public License (CC BY-SA 4.0) by Jeff Moe.
|
|
|
|
%
|
|
|
|
|
2022-08-29 20:33:32 -06:00
|
|
|
\section{Software Overview}
|
2022-08-31 18:08:48 -06:00
|
|
|
\label{sec:software-overview}
|
|
|
|
\index{software}
|
|
|
|
|
2022-08-30 00:50:14 -06:00
|
|
|
See \ref{fig:operation}, page \pageref{fig:operation}
|
|
|
|
for a diagram with an overview of the software process.
|
2022-08-29 20:33:32 -06:00
|
|
|
|
|
|
|
\begin{center}
|
|
|
|
\begin{figure}[h!]
|
2022-08-31 12:44:17 -06:00
|
|
|
% XXX diagram is too large for frame
|
|
|
|
% \begin{framed}
|
2022-08-29 20:33:32 -06:00
|
|
|
\smartdiagramset{border color=none,
|
|
|
|
uniform color list=jebba-light-blue!60 for 4 items,
|
|
|
|
module x sep=3.75,
|
|
|
|
back arrow distance=0.75,
|
|
|
|
}
|
|
|
|
\smartdiagram[flow diagram:horizontal]{Acquire, Process, Analyze, Upload}
|
2022-08-30 19:56:19 -06:00
|
|
|
\caption{SatNOGS Optical Operation Pipeline}
|
2022-08-29 20:33:32 -06:00
|
|
|
\label{fig:operation}
|
|
|
|
\index{operation}
|
2022-08-31 12:44:17 -06:00
|
|
|
% \end{framed}
|
2022-08-29 20:33:32 -06:00
|
|
|
\end{figure}
|
|
|
|
\end{center}
|
|
|
|
|
2022-08-26 22:30:31 -06:00
|
|
|
\section{Setup Optical Ground Station Software}
|
2022-08-29 20:33:32 -06:00
|
|
|
\label{sec:software-setup}
|
2022-08-27 17:01:04 -06:00
|
|
|
\index{software}
|
2022-08-27 23:44:59 -06:00
|
|
|
HOWTO set up and configure a \gls{SatNOGS-Optical} \gls{ground-station}.
|
2022-08-26 22:30:31 -06:00
|
|
|
|
2022-08-27 23:44:59 -06:00
|
|
|
Setup an embedded computer, such as an Odroid N2, with \gls{Debian} stable
|
2022-08-26 22:30:31 -06:00
|
|
|
(11/Bullseye) or testing (Bookworm).
|
2022-08-31 18:08:48 -06:00
|
|
|
\index{embedded computer}\index{Odroid}\index{Debian}
|
2022-08-26 22:30:31 -06:00
|
|
|
|
|
|
|
See each repository for latest documentation.
|
|
|
|
|
2022-08-27 23:44:59 -06:00
|
|
|
Install dependencies from \gls{Debian} repository:
|
2022-08-26 22:30:31 -06:00
|
|
|
|
|
|
|
\begin{minted}{sh}
|
|
|
|
sudo apt update
|
|
|
|
sudo apt install python3-virtualenv python3-pip python3-dev \
|
|
|
|
source-extractor astrometry.net \
|
|
|
|
libeigen3-dev giza-dev libx11-dev \
|
|
|
|
astrometry-data-tycho2 astrometry-data-tycho2-07 \
|
|
|
|
astrometry-data-tycho2-08 astrometry-data-tycho2-09 \
|
|
|
|
astrometry-data-tycho2-10-19
|
|
|
|
\end{minted}
|
|
|
|
|
2022-08-27 23:44:59 -06:00
|
|
|
Next, install the \texttt{\gls{hough3d-code}} dependency.
|
2022-08-31 18:08:48 -06:00
|
|
|
\index{hough3d-code}
|
2022-08-26 22:30:31 -06:00
|
|
|
|
|
|
|
\begin{minted}{sh}
|
|
|
|
git clone https://gitlab.com/pierros/hough3d-code
|
|
|
|
cd hough3d-code
|
|
|
|
make all
|
|
|
|
sudo cp -p hough3dlines /usr/local/bin/hough3dlines
|
|
|
|
\end{minted}
|
|
|
|
|
2022-08-27 23:44:59 -06:00
|
|
|
Install \texttt{\gls{satpredict}} from using either the cbassa or spacecruft repo.
|
2022-08-27 17:01:04 -06:00
|
|
|
\index{satpredict}
|
2022-08-26 22:30:31 -06:00
|
|
|
|
|
|
|
\begin{minted}{sh}
|
|
|
|
cd ../
|
|
|
|
git clone https://spacecruft.org/spacecruft/satpredict
|
|
|
|
# Or
|
|
|
|
#git clone https://github.com/cbassa/satpredict
|
|
|
|
cd satpredict/
|
|
|
|
make
|
|
|
|
sudo make install
|
|
|
|
\end{minted}
|
|
|
|
|
|
|
|
Now install \texttt{stvid}, the main acquisition and processing
|
2022-08-30 14:59:32 -06:00
|
|
|
application. It is written in \gls{Python}. Either use the spacecruft
|
2022-08-26 22:30:31 -06:00
|
|
|
\texttt{git} repository or the cbassa one.
|
2022-08-31 18:08:48 -06:00
|
|
|
\index{stvid}\index{Python}
|
2022-08-26 22:30:31 -06:00
|
|
|
|
|
|
|
\begin{minted}{sh}
|
|
|
|
cd ../
|
|
|
|
git clone https://spacecruft.org/spacecruft/stvid
|
|
|
|
# Or use upstream:
|
|
|
|
#git clone https://github.com/cbassa/stvid
|
|
|
|
\end{minted}
|
|
|
|
|
2022-08-30 14:59:32 -06:00
|
|
|
Optionally, set up a \gls{Python} virtual environment:
|
2022-08-31 18:08:48 -06:00
|
|
|
\index{Python}\index{virtualenv}
|
2022-08-26 22:30:31 -06:00
|
|
|
|
|
|
|
\begin{minted}{sh}
|
|
|
|
cd stvid
|
|
|
|
virtualenv -p python3 env
|
|
|
|
source env/bin/activate
|
|
|
|
pip install --upgrade pip
|
|
|
|
\end{minted}
|
|
|
|
|
|
|
|
Install dependencies. Numpy needs to be installed first, or the
|
|
|
|
install fails.
|
|
|
|
|
|
|
|
\begin{minted}{sh}
|
|
|
|
pip install --upgrade numpy
|
|
|
|
pip install --upgrade -r requirements.txt
|
|
|
|
\end{minted}
|
2022-08-27 17:01:04 -06:00
|
|
|
\index{numpy}
|
2022-08-26 22:30:31 -06:00
|
|
|
|
|
|
|
If the system \texttt{python3-numpy} conflicts, you could try installing
|
|
|
|
numpy in the virtualenv thusly:
|
|
|
|
|
|
|
|
\begin{minted}{sh}
|
|
|
|
pip install --upgrade --ignore-installed numpy
|
|
|
|
\end{minted}
|
|
|
|
|
2022-08-27 23:44:59 -06:00
|
|
|
\gls{Debian} in bug \texttt{\#941466} changed the name of the
|
2022-08-26 22:30:31 -06:00
|
|
|
\texttt{sextractor} dependency to \texttt{source-extractor},
|
|
|
|
so a symlink is needed for now:
|
2022-08-31 18:08:48 -06:00
|
|
|
\index{Debian}\index{Source Extractor}
|
2022-08-26 22:30:31 -06:00
|
|
|
|
|
|
|
\begin{minted}{sh}
|
|
|
|
sudo ln -s /usr/bin/source-extractor /usr/local/bin/sextractor
|
|
|
|
\end{minted}
|
|
|
|
|
2022-08-31 18:08:48 -06:00
|
|
|
\section{Configure Software}
|
|
|
|
\label{sec:software-configure}
|
2022-08-26 22:30:31 -06:00
|
|
|
Configure the embedded computer.
|
|
|
|
|
|
|
|
\begin{minted}{sh}
|
|
|
|
cd stvid/
|
|
|
|
cp -p configuration.ini-dist configuration.ini
|
|
|
|
# Edit
|
|
|
|
# Note for fields st-username and st-password, *don't* use quotes.
|
|
|
|
# Set:
|
|
|
|
vi configuration.ini
|
|
|
|
\end{minted}
|
2022-08-27 17:01:04 -06:00
|
|
|
\index{stvid}\index{configuration.ini}
|
2022-08-26 22:30:31 -06:00
|
|
|
|
|
|
|
Edit various \texttt{configuration.ini} fields:
|
|
|
|
\begin{minted}{sh}
|
|
|
|
# For example:
|
|
|
|
observer_cospar = 9999 # COSPAR number of observer's site
|
|
|
|
observer_name = Jeff Moe # Name of observer
|
|
|
|
observer_lat = 40.568912 # Latitude of location in decimal degrees
|
|
|
|
observer_lon = -105.225852 # Longitude of location in decimal degrees
|
|
|
|
observer_height = 1860 # Elevation of location in meters
|
|
|
|
|
|
|
|
observations_path = ./data/obs # Path for raw acquisitions
|
|
|
|
tle_path = ./data/tle # Path where TLEs are stored (and updated)
|
|
|
|
results_path = ./data/results # Path for results of processed obs
|
|
|
|
|
|
|
|
st-username = foo
|
|
|
|
st-password = bar
|
|
|
|
|
|
|
|
# Path to source-extractor
|
|
|
|
sex_config = /usr/share/source-extractor/default.sex
|
|
|
|
\end{minted}
|
|
|
|
|
|
|
|
Store downloads here:
|
|
|
|
|
|
|
|
\begin{minted}{sh}
|
|
|
|
mkdir -p ./data/obs ./data/tle ./data/results
|
|
|
|
\end{minted}
|
|
|
|
|
|
|
|
The \texttt{ST\_DATADIR} variable is still used, from \texttt{sattools}.
|
2022-08-26 23:36:00 -06:00
|
|
|
Maybe set all these in \texttt{\~/.bashrc} (suit to fit directory setup):
|
2022-08-31 18:08:48 -06:00
|
|
|
\index{bashrc}
|
2022-08-26 22:30:31 -06:00
|
|
|
|
|
|
|
\begin{minted}{sh}
|
|
|
|
export ST_DATADIR=$HOME/sattools
|
|
|
|
export ST_TLEDIR=$HOME/TLE
|
|
|
|
export ST_OBSDIR=$HOME/satobs
|
|
|
|
export ST_LOGIN="identity=foo@no:pass"
|
|
|
|
\end{minted}
|
2022-08-31 18:08:48 -06:00
|
|
|
\index{sattools}\index{TLE}
|
2022-08-26 22:30:31 -06:00
|
|
|
|
|
|
|
Set \texttt{astrometry.net} to run in parallel, assuming you have enough RAM:
|
|
|
|
(This doesn't appear to work? Breaks?).
|
2022-08-31 18:08:48 -06:00
|
|
|
\index{astrometry.net}
|
2022-08-26 22:30:31 -06:00
|
|
|
|
|
|
|
\begin{minted}{sh}
|
|
|
|
sudo vim /etc/astrometry.cfg
|
|
|
|
# Uncomment:
|
|
|
|
inparallel
|
|
|
|
\end{minted}
|
|
|
|
|
2022-08-30 16:27:30 -06:00
|
|
|
|
|
|
|
\section{skymap}
|
2022-08-31 18:08:48 -06:00
|
|
|
\label{sec:skymap}
|
|
|
|
\index{skymap}\index{orbit}\index{sattools}
|
|
|
|
|
2022-08-30 17:11:24 -06:00
|
|
|
Use \gls{skymap} for viewing \gls{satellite} \glspl{orbit} tracks
|
|
|
|
projected on a map of of the sky. Skymap is part of \gls{sattools}.
|
2022-08-30 17:48:27 -06:00
|
|
|
\Gls{skymap} isn't a required part of the toolchain, but it is useful
|
|
|
|
to see what \glspl{satellite} are visibile at a particular time and
|
|
|
|
location.
|
2022-08-30 16:27:30 -06:00
|
|
|
|
2022-08-30 17:11:24 -06:00
|
|
|
Source:
|
|
|
|
|
|
|
|
* \url{https://github.com/cbassa/sattools}
|
|
|
|
|
|
|
|
My fork:
|
|
|
|
|
|
|
|
* \url{https://spacecruft.org/spacecruft/sattools}
|
|
|
|
|
2022-08-31 13:07:18 -06:00
|
|
|
\begin{sidewaysfigure}[p!]
|
2022-08-30 17:11:24 -06:00
|
|
|
\begin{center}
|
2022-08-31 13:07:18 -06:00
|
|
|
\includegraphics[keepaspectratio=true,height=1.00\textheight,width=1.00\textwidth,angle=0]{skymap-giza-21.png}
|
2022-08-30 17:11:24 -06:00
|
|
|
\caption{\texttt{skymap} example screenshot.}
|
|
|
|
\index{skymap}\index{sattools}
|
|
|
|
\label{fig:skymap-giza-21}
|
|
|
|
\end{center}
|
2022-08-31 13:07:18 -06:00
|
|
|
\end{sidewaysfigure}
|
2022-08-30 17:11:24 -06:00
|
|
|
|
|
|
|
\fbox{
|
|
|
|
\parbox{\linewidth}{
|
|
|
|
\textcolor{red}{NOTICE:} \\
|
2022-08-31 16:26:34 -06:00
|
|
|
The main upstream sattools package requires non-\gls{libre} \texttt{pgplot} on host computer which is not \gls{DFSG} compatible.
|
2022-08-31 18:08:48 -06:00
|
|
|
\index{proprietary}\index{DFSG}\index{pgplot}
|
2022-08-30 17:11:24 -06:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2022-08-31 12:44:17 -06:00
|
|
|
|
2022-08-30 17:11:24 -06:00
|
|
|
Described below is how to build and install my fork of \gls{sattools} to use
|
|
|
|
\gls{skymap} instead of upstream. Upstream requires non-libre software which
|
2022-08-31 16:26:34 -06:00
|
|
|
also happens to be very difficult for most users to compile. My fork uses the
|
|
|
|
Giza library which replaces pgplot. It is much easier to build.
|
2022-08-31 18:08:48 -06:00
|
|
|
\index{fork}\index{sattools}\index{skymap}\index{Giza}
|
2022-08-30 17:11:24 -06:00
|
|
|
|
|
|
|
\begin{minted}{sh}
|
2022-08-31 16:26:34 -06:00
|
|
|
# Install dependencies
|
2022-08-30 17:11:24 -06:00
|
|
|
sudo apt install giza-dev git make dos2unix source-extractor wcslib-dev \
|
|
|
|
libgsl-dev gfortran libpng-dev libx11-dev libjpeg-dev libexif-dev
|
|
|
|
|
2022-08-31 16:26:34 -06:00
|
|
|
# Clone repo
|
2022-08-30 17:11:24 -06:00
|
|
|
git clone https://spacecruft.org/spacecruft/sattools
|
2022-08-31 16:26:34 -06:00
|
|
|
# Or use upstream (needs more steps)
|
|
|
|
git clone https://gitub.com/cbassa/sattools
|
2022-08-30 17:11:24 -06:00
|
|
|
|
|
|
|
cd sattools/
|
2022-08-31 16:26:34 -06:00
|
|
|
# Build
|
2022-08-30 17:11:24 -06:00
|
|
|
make
|
|
|
|
|
2022-08-31 16:26:34 -06:00
|
|
|
# Install
|
2022-08-30 17:11:24 -06:00
|
|
|
sudo make install
|
|
|
|
|
2022-08-31 16:26:34 -06:00
|
|
|
# Clean
|
2022-08-30 17:11:24 -06:00
|
|
|
make clean
|
|
|
|
|
|
|
|
# To rebuild
|
|
|
|
make clean
|
|
|
|
make
|
|
|
|
|
|
|
|
# To uninstall
|
|
|
|
sudo make uninstall
|
|
|
|
\end{minted}
|
|
|
|
|
2022-08-31 16:26:34 -06:00
|
|
|
See below for \gls{skymap} (fork) usage:
|
2022-08-31 18:08:48 -06:00
|
|
|
\index{TLE}
|
2022-08-30 17:11:24 -06:00
|
|
|
|
|
|
|
\begin{minted}{sh}
|
2022-08-31 16:26:34 -06:00
|
|
|
tleupdate
|
2022-08-30 17:11:24 -06:00
|
|
|
|
|
|
|
# set config in ~/.bashrc XXX
|
|
|
|
|
2022-08-31 16:26:34 -06:00
|
|
|
skymap --help
|
2022-08-30 17:11:24 -06:00
|
|
|
Usage: skymap [OPTION]
|
|
|
|
Visualize satellites on a map of the sky.
|
|
|
|
|
|
|
|
-t, --time Date/time (yyyy-mm-ddThh:mm:ss.sss) [default: now]
|
|
|
|
-c, --catalog TLE catalog file [default: satnogs.tle]
|
|
|
|
-i, --id Satellite ID (NORAD) [default: all]
|
|
|
|
-R, --ra R.A. [hh:mm:ss.sss]
|
|
|
|
-D, --decl Decl. [+dd:mm:ss.ss]
|
|
|
|
-A, --azimuth Azimuth (deg)
|
|
|
|
-E, --elevation Elevation (deg)
|
|
|
|
-w, --width Screen width (default: 1024). Set height too.
|
|
|
|
-g, --height Screen height (default: 768). Set width too.
|
|
|
|
-n, --nmax nmax line resolution/speed (default 128)
|
|
|
|
-S, --all-night All night
|
|
|
|
-Q, --no-stars No stars
|
|
|
|
-a, --all-objects Show all objects from catalog (default: LEO)
|
|
|
|
-h, --help This help
|
|
|
|
-s, --site Site (COSPAR)
|
|
|
|
-d, --iod IOD observations
|
|
|
|
-l, --length Trail length [default: 60s]
|
|
|
|
-P, --planar-id planar search satellite ID
|
|
|
|
-r, --planar-alt planar search altitude
|
|
|
|
-V, --visibility-alt altitude for visibility contours
|
|
|
|
-p, --positions-file File with xyz positions
|
|
|
|
-L, --longitude manual site longitude (deg)
|
|
|
|
-B, --latitude manual site latitude (deg)
|
|
|
|
-H, --elevation manual site elevation (m)
|
|
|
|
\end{minted}
|