Giter Site home page Giter Site logo

koansys / isat Goto Github PK

View Code? Open in Web Editor NEW
94.0 94.0 38.0 32.38 MB

Satellite Orbit Tracker: implement most-current SGP models and algorithms in JavaScript, then use to visualize hundreds of satellites with any browser

License: BSD 3-Clause "New" or "Revised" License

C++ 0.67% C 0.04% Fortran 1.35% Java 0.89% MATLAB 6.73% M 38.40% JavaScript 51.59% CSS 0.20% Python 0.13% Shell 0.02%

isat's People

Contributors

reedobrien 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

Watchers

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

isat's Issues

Satellite picker fails for sats within globe when using 2nd BillboardCollection for Geo

If I add a second BilboardCollection to contain the Geo location marker, the satellite picker can't pick any of the satellites that lie within the disk of the Earth globe. It can pick satelites outside the disk, in the atmosphere. This behaves the same if you zoom or rotate: inside disk fails, outside succeeds.

If we comment out the call which creates the Geo marker billboard collection, we can pick inside and outside the Earth's disk.

Perhaps this is something fixed in a new version of Cesium? There's a discussion about multiple BillboardCollections and picking

Link to satellite details

science.nasa.gov/missions/? or NSSDC or both

Would be cool to pull it in but maybe we don't want i-frames? do we want to proxy it?

Add asserts for all required globals in JS

See dpper.js for example:

    if (typeof(opsmode) === 'undefined') {
        throw new Error("Global opsmode is undefined, must be 'a' or 'i'");
    }
    if ((opsmode !== 'a') && (opsmode !== 'i')) {
        throw new Error("Global must be 'a' or 'i' but opsmode=" + opsmode);
    }

Check HTML5 Canvas X,Y coordinate directions

Is X along "bottom" with Y increasing as you go "up" like textbook coordinates?
Or is X along top with Y increadsing as you go down the page, like some screen coordinate systems?

Get JS to read TLE from file browser widget

This worked, but complicated testing so I'm just reading the TLE data from the <textarea>

Restore the functionality of the file browser so it will work like the MATLAB version.

twoline2rv.js:131 chr is undefined

Don't know what this came from; perhaps will go away if we use char-array per other ticket?

Uncaught TypeError: Cannot read property 'length' of undefined twoline2rv.js:131
setCharAt twoline2rv.js:131
twoline2rv twoline2rv.js:158
testmat testmat.js:199
(anonymous function) testmat_test.js:

sgp4.js hard-codes call to getgravc(72)

72 comes from whichconst, should this be passed as global? Or should we get the set of vars returned by getgravc() as globals from caller and test invocation?

Regardless how we un-hard-wire this, we should have tests to ensure we're getting real values for those.

Some MATLAB functions modify their inputs, careful with testing

Some functions like dpper(...) modify their input variables. This means we can't make assertions that output these values. We have to save the original values when the function's invoked, then emit them in our assert() generation.

This is easy to miss

NB: dpper take 39 input parameters, all floats except one string. Strings and arrays are treated as scalar numerics with silent failures on conversion.

verification can't parse AIAA tmatver.out -- too many values

The output from the AIAA testmat.m is different from that in Miura's distribution. Miura has 7 values:

t, x, y, v, vx, vy, vz

The AIAA code has much more.

Looks like the Miura code added extra \n to the output and that explains the "extra" lines.

If I comment that out in the AIAA, the results are identical to the Miura results.

SO: restore output of the mysterious extra values in the Miura code.

Test elliptic orbits with simple HTML5 canvas rendering

Even though the SGP4 results are in ECI coords, they should still describe an ellipse in their own XYZ coord system.

Run a satellite or two's TLEs with (ideally current) date and time, calculate XYZ and velocity. Then plot just the XY on a flat HTML5 2d Canvas.

UI/UX help to reduce clutter, make interaction more intuitive

With 35 Science satellites, the position data is a bit overwhelming. Perhaps simply reducing decimals is enough.

How about putting up a selector after the basic set (e.g., SMD) is chosen which allows selecting an individual satellite to focus upon? Maybe highlight it? Show details (e.g., from science.nasa.gov)? show orbit track? Change icon to shiny? Show only position data for selected satellites? highlight position data of selected satellites?

SGP4 to useful coordinate systems

From: Matney, Mark (JSC-KX111) at nasa.gov

The SGP software only gives information in Earth Centered Inertial (ECI) coordinates, so you will need to solve for the Earth orientation with time as well.

See:

http://en.wikipedia.org/wiki/Earth-centered_inertial
http://celestrak.com/columns/v02n01/
http://www.mathworks.com/help/toolbox/aeroblks/f3-22568.html
Hard math: http://onlinelibrary.wiley.com/doi/10.1002/0471200719.app0c/pdf

Check the Miura code stack and see if there are PREDICT integrations.

Check various 'predict' implementations and see if they use SGP4.

twoline2rv.js sets GLOBALS xke, j2 for initl(), but initl() called by sgp4initl()

Probably should move the globals from twoline2rv to sgp4init, closer to initl().

I presume the MATLAB code at one point called getgravc() and set all the returns as globals so it's only called once. But it's not an expensive call.

But initl() doesn't have 'whichconst' so it can't call getgravc() itself.

This is horrid structure and the reliance on globals makes debugging very difficult.

Highlight satellite selected from pick-list

billboards.get(sat_idx).setScale(2). Or set the color.

But how/when do we do that? How do we get the billboards? Or do we have to do it in the loop after looking at some setting set by a picker menu change event?

When selecting satellite from picklist, fly to its location and position "above" it

We change color and double size, but if the satellite's on the other side of the globe, we won't notice.

Fly to its position and zoom out enough we can see it.

We only want to do this once, when the satellite is first picked, so we can watch it travel across the globe. That is, we don't want to do this in the position loop and constantly update our position to be above the satellite so it appears motionless (with the earth spinning below it).

rv2coe some tests are failing, despite big tolerances

As of fcfdd7f Tests eighteen and twenty-five are not passing for some params despite huge tolerances.

This suggests a bug in the implementation of the rv2coe code, or perhaps something in the functions it invokes (which may not be tested rigorously enough): mag, cross, angl, newtonnu.

It's not going to be easy to test this.

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.