Page 1 of 1

Driving Celestia from an external propagator

Posted: 19.07.2007, 02:30
by steven hughes
I'm new to the Celestia forum, and I am trying to find out if anyone has ever used an external orbit propagator to generate spacecraft orbit ephemeris for Celestia to display. I'm interested in using Celestia as a display option for a software system I've been working on for about five years now. Some background, I am an aerospace engineer at NASA's Goddard Space Flight Center and work on trajectory design software (we'll be releasing the system under the NASA Open Source Agreement soon). I'm not a developer, I write mathematical specifications and algorithms, design user interfaces, and use the software to solve problems, among other things...

The software we are developing is called GMAT (General Mission Analysis System). One of the capabilities of GMAT is to propagate spacecraft orbits, and dynamically update 2-D and OpenGL plots dynamically as the orbits are numerically integrated. Not knowing Celestia's architecture, I was wondering if the design supports this or could support this with a reasonable amount of work.

Thanks for the help. When we release GMAT I'll be sure to post a message here.

Steve

Posted: 19.07.2007, 10:07
by selden
Steve,

Celestia v1.4 does not directly support realtime updates to orbits or object positions, if that's what you're asking.

It is able to display objects using xyz trajectories which are loaded at startup. You can use any propagator to create those static trajectory files.

A variant of a previous version of Celestia was developed which could accept realtime inputs from another program. See http://www.celestiaproject.net/forum/viewtopic.php?t=9065

The most recent prerelease of Celestia v1.5 (and Celestia as built from the SourceForge CVS archive) supports the use of Lua functions (ScriptedOrbit and ScriptedRotation) to provide object positions and orientations. Lua functions can do I/O. Therefore Celestia v1.5 can make use of external realtime propagators, although you (or your co-workers) have to write the appropriate Lua ScriptedOrbit functions.

A limitation is that Celestia's code currently assumes that the positions of objects will always be the same for the same simulated epoch.

I think that the major operational problem that this causes is that Celestia doesn't recalculate what are called orbital paths. They're calculated once when Celestia starts. When you update an object's position, the set of 3D coordinates used to generate the line that Celestia is drawing to show the object's path won't change, and there currently is no function available to tell Celestia to recalculate those coordinates. The displayed position of the object itself does change, though.

Does this help?

Posted: 19.07.2007, 10:46
by mjoubert
Hello Steve,

I confirm that you can use Celestia v1.5 and feed it with real-time data. I am working for CNES, the french space agency. We use Celestia to display satellites as they are located and oriented in simulators.

The amount of work was of about 5 monthes, including :
- learning how Celestia works
- building prototype which proves this connection is possible (and efficient)
- defining a protocol between simulators and celestia
- coding LUA script (see Selden's post), with interpolations for both position and attitude
- coding simulator data sender (the main part), able to connect with Celestia
- writing a GUI that helps user to configure this system
- importing or creating satellites 3D models
- test and release

There are no major difficulty. Now, you know that it is possible.

I don't know if I can publish my work now for few reasons. First, it is NOT a part of Celestia development. As Selden said, it is a Celestia capability. We just submited few issues we had in core code. Everything else is just a use of Celestia, and can be considered as a private property. Secondo, it is not totally finished and I don't want to publish an unstable version.

Anyway, I'd like to publish this work in the future. I'll ask for it when it will be finished. I always prefer the "open source" way of working.

Mathieu (spacebel)