Orientation of spacecrafts [feature request]

The place to discuss creating, porting and modifying Celestia's source code.
Avatar
Topic author
Cham M
Posts: 4324
Joined: 14.01.2004
Age: 60
With us: 20 years 9 months
Location: Montreal

Orientation of spacecrafts [feature request]

Post #1by Cham » 22.08.2006, 06:02

There's an important option missing in Celestia, about models orientation.

Suppose you set a probe on a simple or complex path (elliptical orbit, custom path, etc...). It could be very usefull to set the probe's orientation always fixed relative to another object, defined in the SSC file. For example, Voyager2 probe with its dish antenna always oriented in the direction of the Earth, whatever the probe position and velocity. Or another probe with its solar panels always oriented towards the Sun.

We could implement this with a special command added to the probe's SSC file, something like this :

OrientationRef "Earth"

It could be interesting to use that command with another moving spacecraft as reference.

Any opinion about this idea ?
"Well! I've often seen a cat without a grin", thought Alice; "but a grin without a cat! It's the most curious thing I ever saw in all my life!"

ElChristou
Developer
Posts: 3776
Joined: 04.02.2005
With us: 19 years 9 months

Post #2by ElChristou » 22.08.2006, 11:46

Yep, agree, I was thinking in this during the Voyager and Pioneer modeling...
It could be a nice feature...
Image

rthorvald
Posts: 1223
Joined: 20.10.2003
With us: 21 years
Location: Norway

Re: Orientation of spacecrafts [feature request]

Post #3by rthorvald » 22.08.2006, 15:24

Cham wrote:There's an important option missing in Celestia, about models orientation [...]. For example, Voyager2 probe with its dish antenna always oriented in the direction of the Earth

Any opinion about this idea ?


I think it would be very useful. But if it is too complex to design in, or falls outside of what the devs are interested in, one can achieve just about the same thing if it was possible to specify variation in the rotational speed of an object.
Of course, the calculations for the SSC files could then quickly become nightmarish...

- rthorvald
Image

chris
Site Admin
Posts: 4211
Joined: 28.01.2002
With us: 22 years 9 months
Location: Seattle, Washington, USA

Re: Orientation of spacecrafts [feature request]

Post #4by chris » 22.08.2006, 17:09

rthorvald wrote:
Cham wrote:There's an important option missing in Celestia, about models orientation [...]. For example, Voyager2 probe with its dish antenna always oriented in the direction of the Earth

Any opinion about this idea ?

I think it would be very useful. But if it is too complex to design in, or falls outside of what the devs are interested in, one can achieve just about the same thing if it was possible to specify variation in the rotational speed of an object.
Of course, the calculations for the SSC files could then quickly become nightmarish...


What I'd like to do is implement something akin to SampledOrbits for orientation. RocketMan@JSC has implemented rvq files that contain a sequence of orientations in addition to as positions. What may be more useful is to store the axes of rotation at different point in time instead of actual orientations . . . The right approach is probably whatever NASA's SPICE toolkit is doing.

--Chris

Avatar
t00fri
Developer
Posts: 8772
Joined: 29.03.2002
Age: 22
With us: 22 years 7 months
Location: Hamburg, Germany

Re: Orientation of spacecrafts [feature request]

Post #5by t00fri » 22.08.2006, 18:14

chris wrote: The right approach is probably whatever NASA's SPICE toolkit is doing.

--Chris


Absolutely!

Bye Fridger
Image

hank
Developer
Posts: 645
Joined: 03.02.2002
With us: 22 years 9 months
Location: Seattle, WA USA

Re: Orientation of spacecrafts [feature request]

Post #6by hank » 22.08.2006, 18:35

chris wrote:What I'd like to do is implement something akin to SampledOrbits for orientation. RocketMan@JSC has implemented rvq files that contain a sequence of orientations in addition to as positions. What may be more useful is to store the axes of rotation at different point in time instead of actual orientations . . . The right approach is probably whatever NASA's SPICE toolkit is doing.

--Chris

If Celestia simply allowed the location and orientation for an object to be defined by Lua functions, it would be possible to experiment with many possible approaches.

- Hank

Avatar
Topic author
Cham M
Posts: 4324
Joined: 14.01.2004
Age: 60
With us: 20 years 9 months
Location: Montreal

Post #7by Cham » 22.08.2006, 21:43

Then what about periodic motion ? I mean, if there's only a point wise orientation like the sampled orbit (if I understand it correctly), it wont work for an arbitrary moment of time, but only for the sampled points.

And what about the animation between two sampled points ? Will the model change its orientation abruptly, or in a smooth way ? At what angular velocity ?

The command I suggested - OrientationRef - (or whatever) would be very easy to set in the SSC file. Of course, the model should change its orientation continuously, in a very smooth way.
"Well! I've often seen a cat without a grin", thought Alice; "but a grin without a cat! It's the most curious thing I ever saw in all my life!"

tec
Posts: 51
Joined: 14.03.2006
With us: 18 years 7 months
Location: Huntsville, AL

realtime Celestia

Post #8by tec » 22.08.2006, 22:52

You can check out the RealTime Celestia. It already has the orientation implemented (among other nice features) using quaternians. You will have to convince the developers to integrate these features in the CVS if you want them in the next release.

http://www.knology.net/~tec/

Tim

RocketMan@JSC
Posts: 43
Joined: 29.01.2005
With us: 19 years 9 months

Re: Orientation of spacecrafts [feature request]

Post #9by RocketMan@JSC » 23.08.2006, 02:51

chris wrote:What I'd like to do is implement something akin to SampledOrbits for orientation. RocketMan@JSC has implemented rvq files that contain a sequence of orientations in addition to as positions. What may be more useful is to store the axes of rotation at different point in time instead of actual orientations . . . The right approach is probably whatever NASA's SPICE toolkit is doing.

--Chris


I would agree about using SPICE to support all of our spacecraft ephemeris needs. It probably would not be that hard to implement into Celestia. We added it to a 6-dof sim and for planetary position and it was pretty easy. Also, it seems many people are interested in both the manned and unmanned space vehicle missions. Much of the data for the unmanned missions are available via JPL and the SPICE toolkit. I'm hoping the manned missions jump on board and start using it but thus far it has been spotty. Constellation will likely bring about a need for consolidation of this type of information for the public. We even have built a python interface that allows use of many features via python.

As a second benefit, the planetary bodies could also be driven via SPICE if the user desires--and accepts a small performance penalty.

Let me first clarify this rant. This is free open source software so I have little room to complain--much to the contrary--it's a great piece of software. Now for a hopefully short [rant] I've found the interfacing of standard orientations with Celestia very difficult. Perhaps it's just the lack of documentation (for orientation)--however, I am positive the Orientation option in the ssc format has one negative rotation. Take any model and throw a positive 90 deg rotation about each of the axes (one at a time)--no matter what you do the resulting frame will not be right handed. I have figured out how to make it right but, I do not like it. The LUA orientation stuff is a whole separate rant.[/rant]

Finish off with some good news--looks like Celestia is starting to gain a little momentum at JSC. Tomorrow I'll post some cool shuttle/tank pics and talk about this some more.

Scott

p.s. I just used tec's stuff and made changes to suit our needs.

produit
Posts: 9
Joined: 29.08.2006
With us: 18 years 2 months
Location: Geneva, Switzerland

Post #10by produit » 03.09.2006, 09:12

Hi,
as explained in:
http://www.celestiaproject.net/forum/viewtopic ... highlight=
I want to have correct attitude for INTEGRAL spacecraft in celestia.
In this case attitude is very irregular (change every 20 minutes)
but orbit is very stable.
This is the case for all telescope in space (hubble, chandra, XMM...)
So I think it will be good if we could have a way of loading information
in celestia separately for the orbit and for the attitude.
The .xyzw format will work for my case but it is an overkill,
I think a format with
just the quaternion versus time will be better in this case.

I am supportive of the idea of real time capabilities in celestia. In my case it will permit to integrate celestia in our
operation room.
I can also imagine providing as a service to the community a
server that will send INTEGRAL attitude in real time (using UDP
packet or anything else).
In fact we already do that for people that are interested in
GRB burst to enable their telecope to follow the same field of view
then INTEGRAL.
Nicolas Produit

Apollonian
Posts: 52
Joined: 19.10.2004
With us: 20 years

Post #11by Apollonian » 19.10.2006, 22:41

Hello everyone. I have been following this discussion for a few months now. I am very interested in looking at attitude in Celestia, especially since my master's thesis will now encompass attitude constraints.

I also have the opportunity to take an OpenGL graphics class this semester! So, I now have hope of finding a meaningful translation between the orientations/conventions used in OpenGL and the orientations/conventions used in Astrodynamics. That said, time and money are still hard constraints.

Still, can anyone point me to the place in the code base where the SSC files are actually rendered?

Also, I seem to recall (but missed) a discussion about someone having implemented a xyzq format reader. Can someone point me to this? Is this (will this be) included in the current repository code-base?

Thanks

Avatar
selden
Developer
Posts: 10192
Joined: 04.09.2002
With us: 22 years 2 months
Location: NY, USA

Post #12by selden » 19.10.2006, 22:59

Richard,

Chris is right in the middle of updating Celestia to support spacecraft attitudes, including support for the relevant SPICE kernels.

He's made postings about this to the development mailing list and here on the forum. Copies of his descriptions of the changes that have happened so far are available at
http://www.lepp.cornell.edu/~seb/celest ... s.html#5.4
Selden

chris
Site Admin
Posts: 4211
Joined: 28.01.2002
With us: 22 years 9 months
Location: Seattle, Washington, USA

Post #13by chris » 19.10.2006, 23:28

Apollonian wrote:Hello everyone. I have been following this discussion for a few months now. I am very interested in looking at attitude in Celestia, especially since my master's thesis will now encompass attitude constraints.

I also have the opportunity to take an OpenGL graphics class this semester! So, I now have hope of finding a meaningful translation between the orientations/conventions used in OpenGL and the orientations/conventions used in Astrodynamics. That said, time and money are still hard constraints.

Still, can anyone point me to the place in the code base where the SSC files are actually rendered?

Also, I seem to recall (but missed) a discussion about someone having implemented a xyzq format reader. Can someone point me to this? Is this (will this be) included in the current repository code-base?


There's not a single place in the code where ssc files are rendered. The closest thing are probably the files render.cpp, lodspheremesh.cpp, and rendercontext.cpp. Feel free to PM with any specific questions though.

You may be interested in the discussion about rotations in this thread: http://www.celestiaproject.net/forum/viewtopic.php?t=10291

I've checked in some new code that allows much more flexibility in how rotations are specified. This new rotation code doesn't suffer from the idiosyncrasies that caused headaches for people trying to deal with the ssc Orientation field.

--Chris

RocketMan@JSC
Posts: 43
Joined: 29.01.2005
With us: 19 years 9 months

Re: Orientation of spacecrafts [feature request]

Post #14by RocketMan@JSC » 20.10.2006, 02:20

RocketMan@JSC wrote:I am positive the Orientation option in the ssc format has one negative rotation. Take any model and throw a positive 90 deg rotation about each of the axes (one at a time)--no matter what you do the resulting frame will not be right handed.


Chris,

Could you shed any light on why this occurs?

Also, in my implementation, I used the Orientation feature in the ssc along with the xzyq file to provide a graphic model offset. This is useful since not all models are created with the body axes in the correct location. So it may be good to keep that in strictly for graphic correction.

Tomorrow I'll try and post a few code snippets to show you what I mean.

Scott

chris
Site Admin
Posts: 4211
Joined: 28.01.2002
With us: 22 years 9 months
Location: Seattle, Washington, USA

Re: Orientation of spacecrafts [feature request]

Post #15by chris » 20.10.2006, 05:57

RocketMan@JSC wrote:
RocketMan@JSC wrote:I am positive the Orientation option in the ssc format has one negative rotation. Take any model and throw a positive 90 deg rotation about each of the axes (one at a time)--no matter what you do the resulting frame will not be right handed.

Chris,

Could you shed any light on why this occurs?

Also, in my implementation, I used the Orientation feature in the ssc along with the xzyq file to provide a graphic model offset. This is useful since not all models are created with the body axes in the correct location. So it may be good to keep that in strictly for graphic correction.

Tomorrow I'll try and post a few code snippets to show you what I mean.


The Orientation field isn't going away, but I would like to find a way to make it work in a more standard way. The frustrations that you voiced about it were a big reason that I was much more careful with the implementation of orientation files.

Celestia uses a nonstandard coordinate system, mostly for 'historical' reasons. The y axis is normal to the ecliptic, the axis is the vernal equinox, and the z axis completes the right handed system. The net result is that you have to convert from the standard J2000 ecliptic reference frame to Celestia's internal coordinate system by rotating 90 degrees about the x axis.

I'm away from my dev machine now, but I'll post the transformation code tomorrow (or you can check out the code on SourceForge--see the LoadSampledOrientation() function in src/celengine/samporient.cpp. The 90 degree rotation is applied to the samples as their read, so that the creator of the orientation file never has to know about Celestia's coordinate system. I will eventually getting around to fixing Celestia to use the J2000 ecliptic reference frame internally, but that's a post 1.5.0 project.

I would appreciate any comments you might have to offer about how orientation should be handled in Celestia.

--Chris


Return to “Development”