Karma Gravity Test

[2006.07.10]

Introduction
Experiments
Conclusion

Introduction

This is a first attempt to determine the correct USARSim scale. The idea is to simulate a falling object and measure the time it takes to reach the bottom. As falling time does not depend on object mass we can concentrate only on simulated gravity and use the falling time to find the correct scale. For this purpose I built the following map:

The "Bullet" is a Karma object with a special script that performs the following actions:

Download the map and the Bullet script: GravityTest.zip


Experiments

We can use these measures to find the traveled space in meters :

As we already know the traveled space in unreal units (because we built the map), we can write:

So the time information can link the unreal units to the real world units (if the gravity is correctly simulated). At this point we have our scale:

With a falling distance of 8192 unreal units I obtained the following results:

Test number
Last Time
Mean time
1
4.58
4.58
2
4.58
4.58
3
4.58
4.58
4
4.58
4.58
5
4.58
4.58

The average falling time is 4.58 seconds. This value lead us to the following scale:

The Bullet velocity at Z=0 is:

As I set KMaxSpeed=25000 (uu/s) for the Bullet object, its velocity was not capped.

Now we'll repeat the same experiment with a falling distance of 4096 unreal units:

Test number
Last Time
Mean time
1
3.24
3.24
...
all the same
all the same

The average falling time is 3.24 seconds. This value lead us to the following scale:

With 2048 unreal units we obtain:

Test number
Last Time
Mean time
1
2.29
2.29
...
all the same
all the same

The average falling time is 2.29 seconds. This value lead us to the following scale:


Conclusion

In this test I assumed that g= 9.8 m/s^2 and that the logged falling time is measured in seconds. Unfortunately both these assumptions are wrong. In "The scale between Unreal world and Karma physical world" report Jijun Wang has proved that g=19m/s^2 and that the game time is different from real time by a factor of 1.1 (see his paper for details). This means that the correct scale is 1m = 50uu.

If we need to adopt another scale we have to change the KActorGravScale of all simulated objects to:

This should assure a realistic behavior.