Giter Site home page Giter Site logo

thkruz / keeptrack.space Goto Github PK

View Code? Open in Web Editor NEW
133.0 9.0 26.0 1.12 GB

๐ŸŒŽ๐Ÿ“ก TypeScript Astrodynamics Software for Non-Engineers. 3D Visualization of satellite data and the sensors that track them.

Home Page: http://keeptrack.space

License: GNU Affero General Public License v3.0

CSS 12.33% HTML 0.39% JavaScript 1.33% Handlebars 0.02% TypeScript 85.90% Batchfile 0.01% Shell 0.03%
space orbit radar satellite satellite-orbit satellite-tracking space-surveillance telescope visualization

keeptrack.space's Introduction

GitHub release (latest by date) Sonar Coverage GitHub commit activity language Languages GitHub issues code style: prettier License KeepTrack.Space

Table of Contents

Project Overview

Welcome to KeepTrack, an ambitious project aiming to make orbital analysis tools accessible to all. Keep Track is the only astrodynamics tool designed for non-engineers. It provides a simplified and streamlined experience for learning and interacting with satellites and space debris. Keep Track is built from the ground up with custom WebGL shaders and a high-performance render loop. It can simulate 2.5 million pieces of debris at 60fps. The core app is only 7 Mb and loads in 2 seconds. It's free, open source, and works on any modern browser.

Who is KeepTrack for?

Keep Track is used in operations centers, classrooms, and outreach programs. Here are some examples of how different groups use Keep Track:

Operations Centers

  • Get popup alerts when a satellite will pass through a sensor
  • Find when sensors can see a priority satellite in seconds
  • Easily simulate new launches for mission planning

Education

  • Learn through hands-on interaction, making learning engaging
  • Use Xbox controllers for classroom demonstrations
  • Experience AAA video game quality graphics

Outreach

  • Embed Keep Track on your website for free
  • Show your satellite design in orbit before launch
  • Explain space sustainability and the problem of debris

Features

The feature set rivals those of expensive toolkits, such as AGI's STK, and includes the ability to:

  • View comprehensive satellite data
  • Perform advanced field of view calculations
  • Create notional maneuvers
  • Model satellite breakups
  • Simulate new satellite launches
  • And much more

Screenshots

Installation

A github page is automatically deployed with the most-current version of the main branch to https://thkruz.github.io/keeptrack.space/. Periodically the most stable version will be pushed to https://keeptrack.space from the CI/CD pipeline.

Prerequisites

KeepTrack.Space is built using ES6+ modules and assembled with Webpack. If you would like to build it locally, you need to install git and npm.

Setting up a Local Copy

git clone https://github.com/thkruz/keeptrack.space       #Clone the github files.
cd ./keeptrack.space/                                     #Switch into the directory.
npm i                                                     #Install the dependencies.
npm run build                                             #Build the project.
npm start                                                 #Start the server.

Launching Offline Mode

KeepTrack was designed to run without the need for a server. On Windows, close all open copies of chrome and then launch the included KeepTrack.bat file. This will launch the index.html file inside of chrome with the "--allow-file-access-from-files" flag temporarily enabled. This is necessary to allow loading the catalog .json files from your computer.

NOTE: You MUST compile the code first. Opening the index.html file in the src folder will not work. If that feels overwhelming, take a look at https://github.com/thkruz/keeptrack.space/tree/gh-pages for a built version that can be downloaded and launched without the need to build it.

Usage

The main index.html page loads a canvas element set to the size of the window that displays the earth, satellites, and stars. The UI is loaded in DOM elements on top of the canvas element. Two webworkers are loaded (positionCruncher.ts and orbitCruncher.ts) to handle constant calculation of satellite locations and updating orbit lines when an object is highlighted.

The main draw loop (drawManager.ts) has been optimized to reduce memory leaks and to keep FPS high. This is commonly done by having functions modify global variables vs returning a variable and using long functions rather than splitting them into pieces - this is definitely intentional.

Any modifications to a satellite require that information to be passed to the positionCruncher webworker to ensure the UI calculations match the dot on the screen. Most calculations utilize a brute-force method of guess and check (lookangle times, missile trajectories, etc). Optimizing the loop for those calculations is critcal to keeping the project responsive. One trick to improve performance is that satSet creates a dictionary of index -> Norad ID number and index -> COSPAR number to allow rapid lookup of satellite data.

There are Typescript files for generating TLE.json that are not included, but http://keeptrack.space/tle/TLE2.json can be referenced for an up-to-date catalog.

Previous Versions

Contributors

License

Copyright (C) 2016-2024 Theodore Kruczek
Copyright (C) 2020-2024 Heather Kruczek

KeepTrack.Space is licensed under the GNU Affero General Public License. This means you can freely use, modify, and distribute it, provided you adhere to the terms of the license. For more details, see the Full License.

keeptrack.space's People

Contributors

cwang-pivotal avatar deepsource-autofix[bot] avatar dependabot[bot] avatar hkruczek avatar le-roi777 avatar thkruz avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

keeptrack.space's Issues

Replacing TLE.json with a Real Database

The current .json database works but is 9MB and is slow to load. It is known to become corrupted on occasion (work-around in place) and is problematic during updates. Would like to convert to a mysql database or something similar.

Launch Calendar

Launch calendar still relies on a manual update method from October 2016. This needs to be replaced with similar code from the SOCRATES cron job so that it can be updated automatically every 12 hours. Unclear how to handle a smooth transition into 2017, but maybe that part is just manual.

TLE.json Updates

There are a series of admin files that are currently not public. These include a few cron jobs that run every two hours to update TLEs. Until they are uploaded the TLE.json file only be updated when a new commit is added.

Calculate Distance Between Objects

I want to add a feature that allows you to type two object numbers in a menu and then calculate the distance between them at the current time. Should be as simple as determining the scale of the x, y, z coordinate system and then doing some subtraction.

Reduce TLE.json Size

Replace most strings in the arrays with numerical values that can be decoded in main.js to drastically reduce database size.

Hard part is making a php script to convert the current database quickly.

NORAD Number in Search

Would be nice to replace international designators in the search bar with NORAD numbers. Maybe another setting that toggles between the two?

Nominal Creation

Using a for loop a TLE with inclination and epoch day set to current day may have its R value and true anomaly adjusted until the current Lat Long matches a picked launch site.

TLE Change Detection

It would be useful if the script that updates the TLEs compared the new TLE to the old TLE and flagged large changes in inclination or period.

Sat Info Box Tooltips

Replace default windows tooltips on the Sat Info Box with the same popups that are displayed when highlighting an object.

Analyst Mode

Long term it would be extremely useful to have a mode/page that runs the satcruncher without utilizing opengl or the satellite-orbit-worker. This would be a lot of menus with forms to do things like lookangles, elset comparisons, and collision calculations without taxing a slower computer with opengl.

index.htm Organization

Currently the divs in index.htm are all over the place. They need to be sorted/organized.

Display Static Dots for Launch Sites

It would be nice to be able to display dots (similar to the satellites) in a static position on the earth to visually represent the launch sites. Added bonus if they are selectable to display information about the launch complexes.

Music and/or Sound Effects

Long term this might be something worth exploring. Music could be pulled from the open source project to do dynamic symphony music based on satellites in FOV.

Next Pass on Highlight

When highlighting an object after selecting a sensor, the popup should display the next pass time or if the object is currently in FOV.

Add Satellites

Add a case to sat-cruncher.js may allow main.js to send a new TLE to be added to satcache.

Imagery from On-Orbit Satellites

I would like to be able to see the most current imagery from any satellite that publishes images. This might be best in a menu that lists all the satellites that publish images and then a box that pops up when you select those satellites.

Social Media Integration

As we get closer to version 1.0 it would be smart to add social media integration so that you can share/tweet details that you are looking at and get more visitors.

Duplicate menu-radar ids

Four menus are all named menu-radar. They need to have different names and any code referencing them should probably be referencing the class instead.

Replace Observer Latitude Check with an Actual Variable

Currently there are checks to see if an observer's latitude is set to determine whether a sensor is selected or not. This should be replaced with a check to see if an actual variable is flagged. Will reduce potential bugs later.

Launch Nominals Going the Wrong Direction

The current algorith does not account for moving in a north or south direction. Conditional needed that factors in current latitude with last latitude to determine current heading.

Developer Mode

There should eventually be a mode that can be accessed by passing a flag with the GET method when accessing index.htm. In this mode there would be many things that are tripped by a global DEVELOPER_MODE such as console log statements and raw data values.

Rotate Around Object Instead of Earth

Modifying the free camera view to lock the x, y, z coordinates but allow the view to be rotated should accomplish this. This view will be useful for explaining how optical satellites can view other satellites.

Full SSN/Foreign View

Option to view what the whole SSN or all Russian/PRC tracking stations can view. This could be then leveraged to see what objects are out of view ("Dark Space") and for how long. Modifying satcruncher to do a full network check similar to how the SSN lookangles function works would enable this. It would require passing a binary variable to the web worker when the settings menu is modified.

Error Checking for Nominal Creator

Some objects end up inside the earth using the nominal creator. Should save the original TLEs and do a perigee check at the end of the nominal creation to decide whether or not to commit the new TLE.

Tooltips Margin Not Uniform

Margins on some of the bottom design elements are not transferred to the tooltips leaving an non-uniform look. Minor issue.

Use Custom Sensor

There is currently code to type in a custom sensor in the url, but it should be moved to a menu that appears when you select "Custom" from the drop downs at the top. This will set the ground for telescope users to calculate lookangles for backyard astronomy.

SOCRATES Camera Changes

Socrates method in main.js currently calls three other methods that all have camera changes. This causes the camera to bounce around unnecessarily.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.