nanospork / NOFC

Nolo OSVR Fusion Configuration
6 stars 2 forks source link

Velocity Reporting #1

Open nanospork opened 7 years ago

nanospork commented 7 years ago

Context

Velocity reporting enables VR games and applications to understand how fast a user's controllers are moving. This allows users to, for example, throw objects. It is also important for smooth, low-latency representation of controller motion.

The recent update to NOLO firmware version 2.0 (and 2.1?) added velocity reporting to the NOLO controller hardware.

Objectives

Tasking

nanospork commented 7 years ago

I'm planning to work on the OSVR-Fusion update, but we will need an update to Nolo-OSVR first. I can work on the SteamVR-OSVR update if nobody else is available.

johnlajoie commented 6 years ago

I'm looking through the nolo-osvr plugin. Is there some documentation for the new NOLO firmware?

I spent yesterday pulling together all I need to rebuild NOFC, including all the dependencies and the SDK, and I can build working software from the current code. I'm willing to work on the nolo-osvr driver if no one else has spoken up for it. I'm assuming the additional angular velocity information in the data coming from the firmware is documented somewhere, but maybe not?

My motivation in this is purely so that throwing grenades works better in DoomVFR ....

Nevermind - I think I've got what I needed from the NOLO Windows SDK...

nanospork commented 6 years ago

Note to readers: This item is being discussed at https://github.com/nanospork/nolo-osvr/pull/2

nanospork commented 6 years ago

Update: The necessary changes for velocity reporting have been made in https://github.com/nanospork/NOFC/pull/6 for nolo-osvr and in https://github.com/nanospork/steamvr-osvr/tree/controller-integration for SteamVR-OSVR.

Using the draft v0.3 config, velocity reporting works. It's not 100% reliable, but I think this is a Nolo hardware limitation.

Work remains on OSVR-Fusion, which is bypassed in the above config due to a bug that is preventing the velocity data from OSVR-Fusion from reaching SteamVR intact. I haven't discovered the root of this bug - help is wanted. If anyone can review the OSVR-Fusion code, I'd appreciate any findings.

nanospork commented 6 years ago

I had a eureka moment: I think this bug is a result of line 134 here. Since the v0.3 config doesn't use timestamps, it hasn't been sending the velocity. Simply setting the config to use timestamps should fix the issue!

nanospork commented 6 years ago

Looks like Fusion still needs an update to rotate the coordinate system of the controllers - right now they are throwing in the opposite direction when you apply the 180-flip, but other than that, it works!

Also, the velocities seem a little... weak. I wonder if there is a units issue somewhere.

nanospork commented 6 years ago

Implemented an update to fusion that fixes the velocities when the 180 flip is in effect. We're nearly there.