Jump to content

DIS incorrect orientation and Dead recknoning


photo

Recommended Posts

Hello,

It looks like Unigine interprets the Entity State PDU orientation in the wrong frame. I think the orientation is meant to be in the world reference frame, not in the body frame.

With KDIS, we usually convert from body to world orientation with KDIS::UTILS::HeadingPitchRollToEuler().

Also, is DeadRecknoning implemented? I tried sending with F_P_B and a linear velocity, but this does nothing.

Tested with 2.11a

For your convenience, I attached a small Qt app to test CIGI and DIS (CCL and KDIS are embedded in the src, so rebuilding should be a one click with QtCreator), and my small test project (based on the IG template).

Thanks you!

 

CigiHost.zip delme211a.zip

Link to comment

Hello Stephane,

We fixed rotation for DIS, it'll be available in 2.11 release. If this is a stopper for you, we can build a patch for required version.

As for the dead reckoning situation is a bit complex.

In IG, you can change extrapolation value to imitate dead reckoning, but it wouldn't use acceleration to calculate entity position. In other words, there's no full dead reckoning support, and we can't push it into 2.11. But for sure we can add it after 2.11.

I'd like to ask how important is this functionality for your project and can it be replaced with dead reckoning implemented in KDIS library (Extras/DeadReckoningCalculator.h) as a temporary measure?

Thanks.

How to submit a good bug report
---
FTP server for test scenes and user uploads:

Link to comment

Hi morbid,

While it's true we have a KDIS emitter we can tweak to send PDU every 10ms for test purposes, the real emitters are VR-FORCE (from MÄK) and STAGE (from Presagis). They are notorious for sending PDU very infrequently, and we cannot precisely control how they send PDU, so yes it is important to implement dead reckoning in the IG side.

Also, the IG interpolation/extrapolation now works great with CIGI, but is not used at all for DIS (or do I need to enable something else?)

Is there a way to control the timeout for DIS entities, so they can be removed when an Entity State PDU has not been received for more than X seconds? (X being typically 60s).

Last note: sending a IG Ctrl with Reset now crashes the engine in World::update().

Link to comment
3 hours ago, Amerio.Stephane said:

Also, the IG interpolation/extrapolation now works great with CIGI, but is not used at all for DIS (or do I need to enable something else?)

Not implemented at the moment.

3 hours ago, Amerio.Stephane said:

Is there a way to control the timeout for DIS entities, so they can be removed when an Entity State PDU has not been received for more than X seconds? (X being typically 60s).

We can add this in the future releases.

3 hours ago, Amerio.Stephane said:

Last note: sending a IG Ctrl with Reset now crashes the engine in World::update().

This happens in 2.11 alpha, right? We'll investigate this.

UPD

Just to check. Which packets you want to use for dead reckoning in DIS?

How to submit a good bug report
---
FTP server for test scenes and user uploads:

Link to comment
1 hour ago, morbid said:

Which packets you want to use for dead reckoning in DIS?

We mainly send Entity State PDU to control entities. Nothing fancy at the moment. Did you meant which kind of DR? I would need to check with VRForce, but control both slow and rapid aircrafts, and a few ground entities. Not sure which DR algo they use. Would need to check.

Link to comment
×
×
  • Create New...