Jump to content

DCS vectors for motion simulators


Recommended Posts

Some folks, including me, read out the values from export.lua to control a Motion-Simulator:

https://dl.dropboxusercontent.com/u/11075624/vJaBoG32%20-%20The%20Biest.mp4

 

Unfortunately this export values (Pitch,Bank,Yaw) are Euler Matrix Sequences.

For Exampel if you fly wings level and you´re Pitching up to +90°, then Yaw and Bank vectors flipping upside down (180,0° / -180°) at >90°.

 

 

Now imaging what happens when you´re sitting in a one Axis 360° Motion Simulator and you pitch up...spin me round like a record! :lol:

 

 

To solve this an absolute Bank vector is needed, which is NOT affected by any Pitch/Yaw alignment!

 

I know some coders from x-sim.de and x-simulator.net trying to solve this problem by hacking the export.lua, but it´s very difficult and no real headway, yet.

 

May someone here is familiar with the DCS vectors? Any help would be welcome.

 

THX!

 

Siddharta,

Virtual-JaBoG32

With kind regards,

 

Staff of Virtual JaBoG32

 

[sIGPIC][/sIGPIC]

Link to comment
Share on other sites

Nice rig, although the movements are completely wrong. In a real aircraft, you don't have any side forces unless you are in a yaw or uncoordinated turn. In the motion rig you showed every bank results in a side force, this is not realistic and to a real pilot woudl be very unintuivie and just feel wrong.

Windows 10 - Intel i7 7700K 4.2 Ghz (no OC) - Asus Strix GTX 1080 8Gb - 16GB DDR4 (3000 MHz) - SSD 500GB + WD Black FZEX 1TB 6Gb/s

Link to comment
Share on other sites

If you don´t do a barrel roll in R/L , e.g. doing a steady 30° bank turn with no pulling, you will have side G´s.

And note how the RL Pilotshead moves on rapid roll changes...this is very violent and it needs a roll motion axis to simulate it.


Edited by vJaBoG32

With kind regards,

 

Staff of Virtual JaBoG32

 

[sIGPIC][/sIGPIC]

Link to comment
Share on other sites

If you don´t do a barrel roll in R/L , e.g. doing a steady 30° bank turn with no pulling, you WILL have side G´s and it dosn´t feel wrong at all!

Back top topic would be very kind :thumbup:

 

You either never flew a real aircraft, or did it the wrong way. A coordinated turn will result in no noticeable side forces. If you're talking about an UN-coordinated turn, then yes, you have side forces and trust me, it feels very wrong ;)

 

However I wish you good luck in your project, it looks like a nice piece of kit.

Windows 10 - Intel i7 7700K 4.2 Ghz (no OC) - Asus Strix GTX 1080 8Gb - 16GB DDR4 (3000 MHz) - SSD 500GB + WD Black FZEX 1TB 6Gb/s

Link to comment
Share on other sites

You either never flew a real aircraft, or did it the wrong way. A coordinated turn will result in no noticeable side forces. If you're talking about an UN-coordinated turn, then yes, you have side forces and trust me, it feels very wrong ;)

 

However I wish you good luck in your project, it looks like a nice piece of kit.

 

i just read: pice of sh*** :-D


Edited by vJaBoG32

With kind regards,

 

Staff of Virtual JaBoG32

 

[sIGPIC][/sIGPIC]

Link to comment
Share on other sites

To solve this an absolute Bank vector is needed, which is NOT affected by any Pitch/Yaw alignment!

 

Absolutely Agreed! The forces need to be relative to the pilot in the seat!

 

If he is pulling 5g pitch up with a -5 bank angle roll left he is NOT going to magically flip over to +5° bank angle just because he happens to pitch over at the 90° pitch up attitude. Which is what is happening now with the only available values we can access in export.lua.

 

This is a major flaw with DCS at the moment as it stands for anyone wanting more than just VR realism.


Edited by BrassEm
Link to comment
Share on other sites

To explain the problem of Sticher:

The attitude of an aircraft can be described with the three values of yaw, pitch and roll, expressed in degrees. Whereby yaw should not be mixed up with heading and roll cannot be taken as bank.

Why?

Imagine, an aircraft goes with heading 360, straight and level. In this case yaw, pitch and roll are all at zero degree. If you lift the nose by 100 ° then you cross the 90 ° vertical attitude and finally your nose points a bit backwards. If you analyze this attitude you will find that yaw = 0, pitch = 100 and roll = 0. But your heading would be 180. The magic behind is, how axis turns are handled. The standard for calculations is, first yaw, then pitch and last roll. If the sequence is mixed up, a complete different attitude would be the result. Another fact is, that the axis turns are not done around the X,Y,Z axes. They are done around the U,V,W axes. Where U is the lateral axis, going through the wings (pitch), V axis is vertical (yaw) and W is the longitudinal axis, going along the fuselage (roll). Now the surprise, if you maintain your heading of 360° and lift the nose by 45°, a subsequent roll is done around the lifted W axis (not Y), which has some confusing results. If we take an aircraft, flying straight and level on heading 180°. The question shall be, what values for yaw pitch and roll must be used to bring an aircraft into this attitude. If the standard sequence of yaw, pitch and roll is maintained, one solution could be: yaw 180, pitch 0, roll 0. But there is at least a second possibility: yaw 0, pitch 180, roll 180.

Now the special behavior of the DCS values. In regard to the first example (yaw = 0, pitch = 100, bank = 0), as soon as pitch crosses the 90° border, they count the pitch backwards by switching to the second possibility: yaw = 180, pitch = 80, roll = 180, which results exactly in the same attitude. But a motion platform in this case, would almost kill a sim pilot by because the roll of zero switches suddenly to 180°.

The only exact math solution would be to evaluate the content of the required 3 by 3 turn matrix, which contains the unique positions of the U,V,W axes expressed in Sine and Cosine. Regardless what yaw, pitch or roll was used. But this is a real tricky process which requires a deep understanding how matrices proceed. I am sorry, that I cannot help for the moment because my job holds me busy for the next time. But there could probably be a math genius in the community, who can solve the problem.

 

To the other problem of side forces: In an exact coordinated turn, no side forces are noticed. Only the G forces are present which are felt as an exact vertical increase of weight. To simulate this forces, a calculation including gravity and centripetal forces are required. An exact simulation of the increase/decrease of G forces is not possible with a fix mounted simulator.

Please apologize the length of this article. I had already direct contact with Stitcher in the past. I only want to specify the details for a possible solution.

[sIGPIC][/sIGPIC]

Link to comment
Share on other sites

Excellent post towsim. That is the crux of the problem.

 

For the matrices to work you would need a full quadrature of pitch. Which we don't have access to just yet. The logic to extrapolate this would be a series of if-then tests. Then work out the angle quadrature. The graph below shows a near vertical loop which shows the problem with the radical change in yaw and bank.

 

Export_Lua_Output_TestFlight_20160915b_DCS%20Pitch%20Correction%20needed.jpg

 

 

While we have ±180° for yaw and bank, we only have ±90° for pitch at the moment as per the ADI output.

 

Directions%20of%20Movement%20in%20SimTools%2020161016a.jpg


Edited by BrassEm
Link to comment
Share on other sites

InGame Videos from Vektor

 

To visual this problem, i made some vids of the DCS vectors:

 

Bank Axsis Flip at Pitch up or down 90°

 

https://dl.dropboxusercontent.com/u/11075624/Bank(Roll)-Axis-Flip.mp4

 

 

Pitch Limitation at Bank flip 1/2 Pi 90°

 

https://dl.dropboxusercontent.com/u/11075624/Pitch-Axis-half-pi.mp4

With kind regards,

 

Staff of Virtual JaBoG32

 

[sIGPIC][/sIGPIC]

Link to comment
Share on other sites

So clearly DCS is giving some problems with axis at 90 degrees and such, but the question is: do you need your motion platform to move exactly as the airplane in DCS moves? Or do you need your motion platform to simulate as close as possible the moments of inertia and the g forces that you would experience?

 

Unless you have a centrifuge at your disposal, the only g-forces that you get to play with is the natural 1g that keeps us stuck to the ground.

This 1g comes from the top of your head (if you're sitting upright), and the way the motion platform orients your body to it, will make you feel a maximum of 1g from the side, the back etc.

 

How would your motion platform simulate hard braking on a landing run?

A level D sim platform points the nose down, so you hang by your harnesses, you have a percentage of that 1g pushing you on your back, and you have a feeling of deceleration.

 

As I understand, in your motion platform, it would simply mimic what is happening to the aircraft, so basically it would sit straight and level no matter how hard your DCS plane is decelerating.

 

What I'm getting at is that airplane attitude ≠ platform attitude.

Windows 10 - Intel i7 7700K 4.2 Ghz (no OC) - Asus Strix GTX 1080 8Gb - 16GB DDR4 (3000 MHz) - SSD 500GB + WD Black FZEX 1TB 6Gb/s

Link to comment
Share on other sites

That's right at all, the most important motions are the accelerations

Software like simtools doesn't only outputs bank and pitch but outputs yaw , sway, surge (acceleration/deceleration) , heave (+/- G-forces) and some extra axis like sideslip or roll acceleration

 

If you Bank left you will feel some side forces but when you turn left you only feel a positive g force and no side force .

Link to comment
Share on other sites

  • 1 month later...

Interesting rig, but I already see one serious problem with it...

 

You have no pitch axis. Therefore, if you set it to do what you are describing, then you would end up hanging upside down in your chair after an immelman, split-s, or any other partial loop and partial roll combination.

 

The problem isn't that DCS has invalid motion vector outputs, it's that you rig has incomplete axiis. If you had pitch and yaw gimbals to match your roll gimbal, it would work the way you want it, but with only the roll axis simulated, it has a built-in failure.

Link to comment
Share on other sites

  • 1 month later...

No. Even with all axis online the "bug" is still there, because a pitch up 90° result in a pit movement with -180° Yaw and -180° Bank.

Nevertheless the final attitude and direction of the SimPit would be right then - but still you don´t have a movement of the Pitch and Bank Axis in RealLive @ 90° Pitch Up!

 

The problem is the output vetors from DCS are absolute world bound.

But i need relative vectors bound on the plane!

So any movement of a certain axis in DCS results ONLY in a movement of this Output Vector Axis.


Edited by vJaBoG32

With kind regards,

 

Staff of Virtual JaBoG32

 

[sIGPIC][/sIGPIC]

Link to comment
Share on other sites

  • 1 month later...

I really wish the developers could do something about this issue. It seems it has been done before as tacview is able to model the aircraft orientation in 3D space. It just needs to be made available to us motion rig builders via the export.lua.

__________________________________________________

Win 10 64bit | i7 7700k delid @ 5.1gHz | 32Gb 3466mhz TridentZ memory | Asus ROG Apex motherboard | Asus ROG Strix 1080Ti overclocked

 

Komodosim Cyclic | C-tek anti torque pedals and collective | Warthog stick and throttle | Oculus Rift CV1 | KW-908 Jetseat | Buttkicker with Simshaker for Aviators

 

RiftFlyer VR G-Seat project: http://forums.eagle.ru/showthread.php?p=2733051#post2733051

Link to comment
Share on other sites

I had some mailings with a tacview-coder.

They didn´t had to change a thing, because the present position vectors works just perfect for them.

In other words, the DCS vectors are just right and the best mathematical way to describe an object position and attitude...it´s only wrong for physical RL use.

 

BTW...great seat frusheen!!


Edited by vJaBoG32

With kind regards,

 

Staff of Virtual JaBoG32

 

[sIGPIC][/sIGPIC]

Link to comment
Share on other sites

  • 1 month later...

News Folks!

After some notes on the public support forum, ED

has opened a Ticket for this issue:

https://www.digitalcombatsimulator.com/en/support/60400/

 

"Hello,

I've filed a bug with our internal bug trucking system, requesting to have the DCS matrix exported along with Euler angles.

Chances are you will get the DCS matrix with one of the upcoming updates.

 

Wait for it.

--

Best regards,

Andrey Filin

Eagle Dynamics IT Team"

-------------------------------------

 

 

This would be so awesome ED :joystick::thumbup:

With kind regards,

 

Staff of Virtual JaBoG32

 

[sIGPIC][/sIGPIC]

Link to comment
Share on other sites

Hi,

 

I dont claim to fully understand all this, but i have a Simxperience motion sim that i use for sim racing. It would be nice to try DCS with it. Would this help the guys at Simxperience develop a driver that would make their motion sim work with DCS?

Link to comment
Share on other sites

Heads Up Pilots!

Answer from ED Dev:

 

"Lua export script with lua Matrix class sample added

in that matrix class mathematics rotation is matched with DCS internal code

 

 

local data = LoGetSelfData()

 

local yaw = 2.0 * math.pi - data.Heading -- because heading returned opposite for navigation use

local pitch = data.Pitch

local roll = data.Bank

 

local m = Matrix33()

 

m:RotateY(yaw);

m:RotateZ(pitch);

m:RotateX(roll);

print("-------------------------------------")

print(m.x.x,m.x.y,m.x.z)

print(m.y.x,m.y.y,m.y.z)

print(m.z.x,m.z.y,m.z.z)

 

"

 

It seems that this values are sine/cosine angles (unit vectors).

I´m not sure how to use them at all music_whistling.gif

Can someone do something with this?!?


Edited by vJaBoG32

With kind regards,

 

Staff of Virtual JaBoG32

 

[sIGPIC][/sIGPIC]

Link to comment
Share on other sites

  • 2 weeks later...

Matrix33() function errors when put into export.lua. (Not implimented yet or I've used incorrect syntax?). I get a dsc.log entry of;

 

00256.044 ERROR Lua::Config: Call error LuaExportAfterNextFrame:[string "C:\Users\Dave\Saved Games\DCS\Scripts\Export.lua"]:75: attempt to call global 'Matrix33' (a nil value)

stack traceback:

[C]: in function 'Matrix33'

[string "C:\Users\Dave\Saved Games\DCS\Scripts\Export.lua"]:75: in function <[string "C:\Users\Dave\Saved Games\DCS\Scripts\Export.lua"]:45>.

 

The function LoGetSelfData() data.Heading, data.Pitch, data.Bank returns the same values as the LoGetADIPitchBankYaw() function.

Link to comment
Share on other sites

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...