|
1 | 1 |    |
2 | 2 |
|
3 | | -# DO NOT USE THIS OR EXPECT ANYTHING AS A USER |
| 3 | +# Beta Version, may cause crashes or contain bugs! |
4 | 4 |
|
5 | | -No releases have been created, and we are very much in development mode. If you are interested in testing (and know how to compile code) or are interested in being a maintainer, please connect with us on the [discord `development` channel](https://discord.gg/r7krmSd) |
| 5 | +We are very much in development mode. If you are interested in testing or are interested in being a maintainer, please connect with us on the [discord `development` channel](https://discord.gg/r7krmSd) |
6 | 6 |
|
7 | | -# [Former docs] OpenVR-InputEmulator |
| 7 | +# OpenVR-MotionCompensation |
8 | 8 |
|
9 | | -An OpenVR driver that allows to enable motion compensatio. |
10 | | -Includes a dashboard to configure some settings directly in VR. |
| 9 | +An OpenVR driver that allows to enable motion compensation. |
| 10 | +Includes a dashboard to configure the settings directly in VR. |
11 | 11 |
|
12 | | -The OpenVR driver hooks into the lighthouse driver and allows to modify any pose updates or button/axis events coming from the Vive controllers before they reach the OpenVR runtime. |
| 12 | +This driver hooks into the device driver and allows to modify any pose updates coming from the HMD before they reach the OpenVR runtime. |
13 | 13 | Due to the nature of this hack the driver may break when Valve decides to update the driver-side OpenVR API. |
14 | 14 |
|
15 | | -The motivation of this driver is to allow the base of motion simulators (driving or flying) to be the reference point for the world, cancelling out simulator movement and differencing |
16 | | -head movement from the simulator movement to update the pose. |
| 15 | +The motivation of this driver is to allow the base of motion simulators (driving or flying) to be the reference point for the world, cancelling out simulator movement and differencing head movement from the simulator movement to update the pose. |
17 | 16 |
|
18 | 17 |
|
19 | 18 | # Notes: |
20 | 19 |
|
21 | 20 | This is a work-in-progress and may contain bugs. |
22 | 21 |
|
23 | 22 |
|
| 23 | +## How to open |
| 24 | + |
| 25 | +There are two ways to open the settings page: |
| 26 | +1. On VR, open the Steam Dashboard (Menu button on the controller). In the bottom left is a new icon, a small cogwheel. Click on this icon to bring up the OVRMC overlay |
| 27 | +2. Go to the install folder and click on "startdesktopmode.bat". This will open OVRMC on your regular desktop. |
| 28 | + |
| 29 | + |
24 | 30 | ## Top Page: |
25 | 31 |
|
26 | 32 |  |
27 | 33 |
|
28 | | -- **Identify**: Sends a haptic pulse to the selected device (Devices without haptic feedback like the Vive trackers can be identified by a flashing white light). |
29 | | -- **Status**: Shows the current status of the selected device. |
30 | | -- **Device Mode**: Allows to select a device mode. |
31 | | - - **Default**: Default mode. |
32 | | - - **Disable**: Let OpenVR think that the device has been disconnected. |
33 | | - - **Redirect to**: Impersonate another device. |
34 | | - - **Swap with**: Swap two devices. |
35 | | - - **Motion Compensation**: Enable motion compensation with the selected device as reference device. |
36 | | -- **Device Offsets**: Allows to add translation or rotation offsets to the selected device. |
37 | | -- **Motion Compensation Settings**: Allows to configure motion compensation mode. |
38 | | -- **Render Model**: Shows a render model at the device position (experimental). |
39 | | -- **Input Remapping**: Allows to re-map input coming from controller buttons, joysticks or touchpads. |
40 | | -- **Profile**: Allows to apply/define/delete device offsets/motion compensation profiles. |
41 | | - |
42 | | - |
43 | | -## Motion Compensation Settings Page: |
44 | | - |
45 | | - |
46 | | - |
47 | | -**Vel/Acc Compensation Mode**: How should reported velocities and acceleration values be adjusted. The problem with only adjusting the headset position is that pose prediction also takes velocity and acceleration into accound. As long as the reported values to not differ too much from the real values, pose prediction errors are hardly noticeable. But with fast movements of the motion platform the pose prediction error can be noticeable. Available modes are: |
48 | | -- **Disabled**: Do not adjust velocity/acceration values. |
49 | | -- **Set Zero**: Set all velocity/acceleration values to zero. Most simple form of velocity/acceleration compensation. |
50 | | -- **Use Reference Tracker**: Substract the velocity/acceleration values of the motion compensation reference tracker/controller from the values reported from the headset. Most accurate form of velocity/acceleration compensation. However, it requires that the reference tracker/controller is as closely mounted to the head position as possible. The further away it is from the head position the larger the error. |
51 | | -- **Linear Approximation w/ Moving Average (Experimental)**: Uses linear approximation to estimate the velocity/acceleration values. The used formula is: (current_position - last_position) / time_difference. To reduce jitter the average over the last few values is used. |
52 | | - - **Moving Average Window**: How many values are used for calculating the average. |
53 | | -- **Kalman Filter (Experimental)**: The position values are fed into a kalman filter which then outputs a velocity value. The kalman filter implementation is based on the filter described [here](https://en.wikipedia.org/wiki/Kalman_filter#Example_application.2C_technical). |
54 | | - - **Process/Observation Noise**: Parameters used to fine-tune the kalman filter. |
55 | | - |
| 34 | +- **HMD**: Choose the HMD you use (usaly only one should appear) |
| 35 | +- **Status**: Shows the current status of the selected HMD. |
| 36 | +- **Reference Tracker**: Choose the tracker / controller you want to use as reference. |
| 37 | +- **Status**: Shows the current status of the selected tracker / controller. |
| 38 | +- **Identify**: Sends a haptic pulse to the selected device (not yet implemented) |
| 39 | +- **Enable Motion Compensation**: Enable motion compensation with the selected devices. |
| 40 | +- **LPF Beta value**: Filter setting. Need to be between 0 and 1. Use the +- Buttons to incread / decrease in 0.05 Steps. |
| 41 | +- **Apply**: Apply the choosen settings. |
| 42 | + |
| 43 | + |
| 44 | +## LPF Beta value: |
| 45 | + |
| 46 | +Values must be between 0 and 1. A value closer to 0 means a stronger filter. A value clsoer to 1 means a weaker filter. |
| 47 | +If the value is to low, you may expirience a slow drifting. Raise the value for a faster response. |
| 48 | +Default value is set to 0.2 |
| 49 | + |
| 50 | + |
| 51 | +## Mounting advice: |
| 52 | + |
| 53 | +Mount the reference tracker/controller as closely to the head position as possible. The further away it is from the head position the larger the error. |
| 54 | +Continuous and heavy vibration will affect the IMU performance, causing noticable IMU drift. This will be noticable in the HMD in form of your camera moving violently arround the car. To adress this, it is suggested to use a damping system. |
| 55 | + |
56 | 56 |
|
57 | 57 | ## Initial Setup |
58 | 58 | See the wiki |
59 | 59 |
|
60 | 60 | ## Building |
61 | | -1. Open *'VRInputEmulator.sln'* in Visual Studio 2019. |
| 61 | +1. Open *'VRMotionCompensation.sln'* in Visual Studio 2019. |
62 | 62 | 2. Build Solution |
63 | 63 |
|
64 | 64 | # License |
65 | 65 |
|
66 | | -This software is released under GPL 3.0. |
| 66 | +This software is released under GPL 3.0. |
0 commit comments