P-rad_sec behavior #1334
Replies: 17 comments 6 replies
-
Hi Josh
The issue is that The Taken from FlightGear GitLab: FGJSBsim::copy_from_JSBsim()
_set_Omega_Body( Propagate->GetPQR(FGJSBBase::eP),
Propagate->GetPQR(FGJSBBase::eQ),
Propagate->GetPQR(FGJSBBase::eR) );
_set_Euler_Rates( Auxiliary->GetEulerRates(FGJSBBase::ePhi),
Auxiliary->GetEulerRates(FGJSBBase::eTht),
Auxiliary->GetEulerRates(FGJSBBase::ePsi) );
void FlightProperties::set_Euler_Rates(double x, double y, double z)
{
_root->setDoubleValue("orientation/roll-rate-degps", x * SG_RADIANS_TO_DEGREES);
_root->setDoubleValue("orientation/pitch-rate-degps", y * SG_RADIANS_TO_DEGREES);
_root->setDoubleValue("orientation/yaw-rate-degps", z * SG_RADIANS_TO_DEGREES);
} If you’re not familiar with the difference take a look at - https://aviation.stackexchange.com/questions/83993/the-relation-between-euler-angle-rate-and-body-axis-rates Cheers |
Beta Was this translation helpful? Give feedback.
-
Hi Sean, For Q I understand, it behaves how I expect. Because in banks the lift. So the 0Q is negative Euler rate. Otherwise I don't know how to solve this aero issue. Cause at lower speeds it banks away from center when at bigger bank angles due to Clp. Aside from just arbitrarily increasing Clbeta or reducing Clr. Which doesn't seem right. It's not just my planes either. Kind Regards, |
Beta Was this translation helpful? Give feedback.
-
As @seanmcleod70 explained: they are not the same thing. If you read the text at the link he has provided, you will find the relation between the parameters: Hence the 2 properties are different.
Given that We definitely need to understand how |
Beta Was this translation helpful? Give feedback.
-
Josh can you:
|
Beta Was this translation helpful? Give feedback.
-
I'll get that to you. https://github.com/Octal450/MD-80/blob/master/FDE/Config/md-80-aerodynamics.xml#L531 NOTE: this issue is NOT isolated to my planes, and occurs in most JSBsim aircraft in FlightGear that are plausible. I can get the graphs to you but not this second. Bests, |
Beta Was this translation helpful? Give feedback.
-
Thanks. The first thing that strikes me is the usage of the property <function name="aero/coefficient/Clp">
<description>Roll moment due to roll rate</description>
<product>
<property>aero/qbar-psf</property>
<property>metrics/Sw-sqft</property>
<property>metrics/bw-ft</property>
<property>aero/bi2vel</property>
<property>velocities/p-aero-rad_sec</property>
<value>-0.51</value>
</product>
</function> This property is basically the ratio of a constant (the wing span) to the total velocity. I would expect this value to go through the roof at extremely low speed. Although this is supposed to be compensated by the multiplication with jsbsim/src/models/FGAerodynamics.cpp Line 141 in 405c00d jsbsim/src/models/FGAerodynamics.cpp Lines 158 to 161 in 405c00d In addition to the parameters requested by @seanmcleod70, could you also give the values for all the parameters that are used to compute aero/coefficient/Clp ?
|
Beta Was this translation helpful? Give feedback.
-
I doubt that's an issue here since I'm pretty sure Josh is referring to his airliner model MD-80 soon after take-off, so I would imagine around the 150KIAS range or so. As opposed to the issue we had a while ago with a stationary aircraft and wind and things like |
Beta Was this translation helpful? Give feedback.
-
Beta Was this translation helpful? Give feedback.
-
So, at first glance I don't see anything obviously wrong with the 737 response. The initial aileron input produces a large At the same time Given the yaw rate increase there is an increase in Also given the relationship between You can then see difference between When the aileron is centered as a step response at 3.5s the total At 4.5s the roll rate |
Beta Was this translation helpful? Give feedback.
-
I've run a check based on @seanmcleod70 Python script to verify that ![]() Just added the collection of psidots.append(fdm['velocities/psidot-rad_sec'])
thetas.append(fdm['attitude/theta-rad']) ps_theory = np.array(phidots)-np.sin(np.array(thetas))*np.array(psidots) |
Beta Was this translation helpful? Give feedback.
-
The first thing I did after Josh shared a link to his FDM was to confirm the set of rolling moments to see if there were any that the 737 model doesn't have compared to the MD80, and then to compare the formula for each to see that the formulas for calculating the individual moments were the same, and then lastly to compare the sign and magnitude of the derivatives/coefficients. Where necessary I've converted the MD80 derivatives from per deg to per radian.
So, I'd be surprised if the MD80's response isn't very similar to the 737's response. |
Beta Was this translation helpful? Give feedback.
-
Forgive me for not being as well versed in aero as you guys are. My end goal here is that when stabilized at a bank angle, Clp does not "try" to roll the airplane away from neutral by the cause of P - in real I can't see how there would be a moment from that, I'd think the moment would trend towards level wings, not away. I should note that with no turn coordination enabled, the issue is less apparent because the beta angle causes it to try to roll level. But with turn coordination turned on, it is apparent. IMPORTANT NOTE: The turn coordinator does NOT use an integrator and is not very tight, even in real, so this issue is NOT caused by too much rudder from turn coordination causing a roll moment. I have verified this already - it was my first guess as what could be happening. I should note that I temporarily put
I guess roll-rate-degps is just phidot from JSBsim? And fed that into Clp and it resulted in expected behavior - using the aero and non aero diff to add wind effects. Kind Regards, |
Beta Was this translation helpful? Give feedback.
-
Variables used in aero |
Beta Was this translation helpful? Give feedback.
-
No need to guess, I stated that in my very first response 😉 FGJSBsim::copy_from_JSBsim()
{
_set_Euler_Rates( Auxiliary->GetEulerRates(FGJSBBase::ePhi),
...
void FlightProperties::set_Euler_Rates(double x, double y, double z)
{
_root->setDoubleValue("orientation/roll-rate-degps", x * SG_RADIANS_TO_DEGREES); Generate a plot like I did for the 737 and let's take a look at the data. In the meantime can you spot anything you're not expecting in the 737 plot above? |
Beta Was this translation helpful? Give feedback.
-
"A picture tells a thousand words...", but while we wait for the equivalent graph data for the MD80 here is a potential match of the original figures mentioned compared to the 737's graph data.
So they match in terms of their sign in particular, and the magnitudes are fairly similar. |
Beta Was this translation helpful? Give feedback.
-
Hi Sean, Shows a situation where Clp will have the wrong polarity from what I'd expect. I will do a log for you. Kind Regards, |
Beta Was this translation helpful? Give feedback.
-
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
Hi,
I've noticed this for a long time (many years) but finally wondering about it. At slower speeds mainly, I noticed that when attitude is stable, the roll rate reported by FlightGear and JSBsim disagree. At higher speeds the issue doesn't occur and the two values agree much much closer.
The most extreme case here just after takeoff in a 20 degree LEFT bank, where the signs differ, FlightGear reports the aircraft is very slowly rolling further left (which it is), but JSBsim p-rad_sec (and aero) reports the plane is slowly rolling right. This causes Clp coefficient to be strongly negative which is causing the plane to keep rolling left...
This means the planes are roll attitude unstable just slightly, when they should really be attitude stable or even rolling slowly back to center. Just Clp is wrong here, Clr is correctly negative here in the bank. Clbeta is trying to roll right as it should. Surface moments are tiny as the controls are centered and the yaw damper is off.
What is going on here? Shouldn't p-rad_sec (and aero) be not disagreeing like this? If the plane is rolling slowly left, then p-rad_sec (and aero) should be showing a left roll. It's not a polarity issue, with larger banks, its close enough.
When I replace p-aero-rad_sec with /orientation/roll-rate-degps in the aero Clp, it behaves as I expect (minus missing wind info)
Kind Regards,
Josh
Beta Was this translation helpful? Give feedback.
All reactions