While working on a JSBSim FDM for the Sopwith Camel, which has a relatively large gyroscopic effect from the engine and propeller, I came to believe that JSBSim has the direction of the gyroscopic effect of the propeller reversed.
After extensive testing and experimentation, I am know certain that JSBSim's gyroscopic effect is reversed.
Here is why:
Historical accounts are unanimous that the Camel's propeller rotated clockwise (as seen from the pilot's viewpoint) and that the nose dipped on LH turns and the nose rose on RH turns. This is exactly the oppose of the effect in JSBSim and the correct direction of the dips can be duplicated only by using a JSBSim function to reverse the direction of the gyroscopic effect. (Or by reversing the sign of 'sense' - which of course reverses the direction of the torque as well.)
Standard articles on the gyroscopic effect are unanimous in giving the direction of the effect, which (according to wikipedia) is: "To easily ascertain the direction of gyro effect, simply remember that a rolling wheel tends, when it leans to the side, to turn in the direction of the lean." This corresponds in JSBSim terms to a clockwise rotating propeller, when you pull back the stick, should yaw the plane to the right. Under JSBSim, it yaws left.
Similarly, a clockwise rotating propeller, if you yaw right, should pitch down. This is exactly what is reported by Camel pilots but the opposite of what JSBSim does.
I believe the solution is simple. Line 276 of FGPropeller.cpp current reads:
00276 vH(eX) = Ixx*omega*Sense;
I believe it should read:
00276 vH(eX) = Ixx*omega*(-Sense);
Not coincidentally, note line 364 of FGPropeller.cpp:
00364 vTorque(eX) = -Sense*PowerRequired / (local_RPS*2.0*M_PI);
Why is -Sense required here whereas in 276, Sense is required? Most likely, Sense should have the same sign in both equations.
Note discussion of this issue here:
http://www.flightgear.org/forums/viewtopic.php?f=4&t=19584&p=183865#p183865
There is also a lengthy discussion here, see section "JSBSIM & THE DIRECTION OF THE GYROSCOPIC EFFECT":
By the way--the way this little bug could have easily escaped notice until now, is that gyroscopic effect just isn't that large on most aircraft, and it is (by design!) overpowered by other forces and factors. It is only a few of the early rotary-powered aircraft from the WWI era where the force is really large enough to play a factor in the everyday operation of the aircraft.
And getting the direction of the force right requires quite a bit of careful thought. It's not like torque where the direction is intuitively obvious to many. We might notice the gyroscopic force here and there but most of us don't have enough experience with the direction of the force to know whether that aspect of it is right or wrong. It took me a few months of thinking this through, reading a lot of different accounts, and reading and thinking through a lot of different accounts and explanations of the gyroscopic force to really be sure of the direction.
Any thoughts about this? I'm still making the Sopwith Camel FDM work correctly only by going through a fairly extensive process to reverse the direction of the gyroscopic effect. It seems better to have it fixed at the source level?
I will fix that later this week since I need to update the test suite to make sure that there will be no regression later on.
Once this will be fixed, we shall also need to make an annoucement to the FG forums to make sure that all the aircraft maintainers check that the fix will not break their aircraft.
Many thanks, Bertrand.
So I did my math and checked the formulas to find that a fix has already been introduced almost two years ago in the commits [efef74] and [6b7a21]. In order to get the correct sign of the gyroscopic effect you must specify a version attribute higher than 1.0 to your propeller definition such as
In the absence of the version attribute the gyroscopic sign is kept to its backward compatible yet incorrect value.
Since that was introduced a long time ago, this feature is already part of FlightGear. And since that was undocumented I will update JSBSim documentation accordingly.
Let me know if that fixes your problem.
Related
Commit: [6b7a21]
Commit: [efef74]
Last edit: Bertrand Coconnier 2017-03-02
Bertrand--many thanks!
I will check this out immediately. I assume this will, indeed, solve the problem but I will post here if not.
Thanks again!
Last edit: bhugh 2017-03-02
Also, I will add information about the fix and a link to this page in the JSBSim Thrusters documentation on the FlightGear Wiki here http://wiki.flightgear.org/JSBSim_Thrusters
Thanks!
Quick check-out tonight in FlightGear. This definitely fixes the issue. Thanks again!
Great! Thanks for the bug report and for the documentation update in FlightGear.
I have also documented this in JSBSim wiki (see [Propeller moments])