Darren Grant
2010-11-30 09:48:55 UTC
So I originally posted the following to the bulletphysics.org general
discussion forum. But perhaps this mailing list is a better venue
since the subject is related to what I imagine is basic flight sim
Darren
discussion forum. But perhaps this mailing list is a better venue
since the subject is related to what I imagine is basic flight sim
I am a programmer tasked with developing a newtonian simulation of
high performance spacecraft. For the sake of discussion, each craft
is a rigid body with non uniform moments that must navigate its
environment by applying only (central) forces and torques. Mass and
acceleration can vary by a couple orders of magnitude. Linear and
angular tracking are treated independently. The high order
parameters are: max speed, max angular speed, max torque scalar (may
be component-wise) and max force magnitude.
The linear tracking code is very simple and attempts to minimize the
difference between actual velocity and desired velocity using
kinematic knowledge of motion to produce the desired velocity at
each tick (accelerate to apogee, decelerate to target). This is
comfortable territory.
Angular tracking is significantly more bloated and follows the same
principals by trying to minimize local angular error component-wise.
There is some hand-waving of the coupling of large angular terms
that makes this even remotely acceptable. So it works alright if
there is an abundance of turning power, but the big problem is that
it is just a messy solution that I'm afraid might blow up in my face later.
Is there a better way to approach the angular tracking problem or is
this just how it is done? I intend to start layering flight AI on
top of this simulation.
(If there are flight sim devs out there in the crowd, what can I
say, I would really appreciate your advice!)
:)
Cheers,high performance spacecraft. For the sake of discussion, each craft
is a rigid body with non uniform moments that must navigate its
environment by applying only (central) forces and torques. Mass and
acceleration can vary by a couple orders of magnitude. Linear and
angular tracking are treated independently. The high order
parameters are: max speed, max angular speed, max torque scalar (may
be component-wise) and max force magnitude.
The linear tracking code is very simple and attempts to minimize the
difference between actual velocity and desired velocity using
kinematic knowledge of motion to produce the desired velocity at
each tick (accelerate to apogee, decelerate to target). This is
comfortable territory.
Angular tracking is significantly more bloated and follows the same
principals by trying to minimize local angular error component-wise.
There is some hand-waving of the coupling of large angular terms
that makes this even remotely acceptable. So it works alright if
there is an abundance of turning power, but the big problem is that
it is just a messy solution that I'm afraid might blow up in my face later.
Is there a better way to approach the angular tracking problem or is
this just how it is done? I intend to start layering flight AI on
top of this simulation.
(If there are flight sim devs out there in the crowd, what can I
say, I would really appreciate your advice!)
:)
Darren