Physics/Calculating effects of asymmetric thrust on spacecrat
Here's a question that may be a bit specific to be entertaining, but I don't have the mathematical understanding to solve (advanced algebra, max, and I didn't do that well). Specifically it refers to this game: http://goo.gl/BeIAP
I am trying to make a module that is able to individually throttle various different engines to keep the center of thrust aligned behind the center of mass in a method similar to that of the space shuttle and it's booster engines and external tank.
My primary goal is to be able to handle various different engines, some capable of being throttled and/or gimbaled and some not, where the plug-in identifies their position and orientation in a reference frame aligned with the cockpit/control point, and is able to actively adapt to changes in configuration (jettisoning solid boosters for example) and center of mass (expending fuel, jettisoning of empty tanks).
This task is complicated by a few more functions I wish to implement, to include:
*ability to use translation commands to utilize the gimbals and apply x and y acceleration (assuming primary thrust is aligned to z) to the spacecraft, without also causing a change in attitude.
*ability to affect roll around C.o.M. by utilizing gimbals on engines aligned with desired thrust vector, and utilizing both gimbals and throttles on engines not aligned with desired thrust vector.
*ability for the user to define an angle anywhere between 0 degrees and 90 degrees in relation to the reference point by which to alter the desired thrust vector "downward" (in relation to the cockpit in a normal rocket configuration, forward being the normal direction acceleration is applied) as to provide lift in scenarios where the vehicle is oriented horizontally. (see video for example: http://youtu.be/Vhl3HwUakUY
demonstrated craft required specialized modeling and adjustments not available to the average builder in a game about building rockets, my goal is to make this function available to a larger percentage of players)
What I am asking is:
First, what is the math required for this to work? What are the formulas and how would I put them together to determine how to throttle the engines? This is the most important feature in my opinion.
Second, what are your suggestions on incorporating engine gimbal and off axis engines for translation and attitude control into the equations? This is not as important, but feels like it should be incorporated.
Third, without changing the frame of reference, how would I modify the formulas to direct thrust from 0 degrees 90 degrees? An abrupt switch between only those two positions is a possibility, but I'd like to be able to shift to points between as well.
Your simulation is already impressive. I can try to make suggestions based on what I know or suspect of how the space shuttle adapted to changes in configuration. That wasn't the area of my involvement during my shuttle days. The shuttle software knew where the center of mass, c.o.m., was expected to be at the moment of liftoff. This was recalculated for every mission. I suspect that the software would know when time for the boosters or tank to be dropped was approaching and would anticipate the new position of the c.o.m. after completion of the operation and make gimbal adjustments accordingly. But feedback from the inertial navigation system would be needed to fine-tune for the required accuracy. The feedback from the inertial navigation system would be compared with the desired course parameters and gimbal adjustments (or reaction jets bursts) would be made to reduce the error toward zero.
Comment: You mentioned "ability to affect roll around C.o.M. by utilizing gimbals on engines aligned with desired thrust vector"
I assume the desired thrust vector points forward. And I assume the term roll has the typical definition -- rotation around the forward-aft axis. I don't see a way to affect roll utilizing gimbals on engines aligned with desired thrust vector. You could affect pitch and yaw with those gimbals.
1. The feedback I referred to above would be, as a minimum, angular velocity in roll, pitch, and yaw. The feedback would be compared arithmetically with the desired angular rotations. If the feedback exactly matches the desired data, the result of the comparison would be zero, and no correction would be required.
Any non-zero result in any axis would require
a. an adjustment to gimbals on engines aligned with desired thrust vector
b. gimbal and/or throttle adjustments of engines not aligned with desired thrust vector.
2. There are other ways to do this, but I am assuming that the inertial navigation system output is angular velocity. Attitude is monitored by keeping running sums of products of instantaneous angular velocity times a small time increment -- in each axis. These running sums would be angular displacement in all 3 axes -- or attitude. (It could be that managing these running sums would be performed in the inertial navigation system itself.) They would be compared with the desired attitude in much the same way as the angular velocity feedback is compared with desired in #1 above.
3. Continuing with the comparison of desired data and feedback from the inertial measurement system, this could be done by changing the desired data. This would cause commands to the propulsion system to cause the result of the comparison to go to zero.
I hope this helps,