Foculus_Rift_Tracker_STM32F3DISCOVERY icon indicating copy to clipboard operation
Foculus_Rift_Tracker_STM32F3DISCOVERY copied to clipboard

Magnetometer Calibration not emulated.

Open mungewell opened this issue 10 years ago • 12 comments

With the new 0.4.3 SDK the 'foculus' is not recognised properly, it seems that this due to the magnetometer calibration data not being emulated

simon@bigbox:/storage/ovr_sdk_linux_0.4.3$ sudo ./oculusd 
OVR::DeviceManagerThread - running (ThreadId=0x7fd12575c700).
OVR::DeviceManager - initialized.
OVR::Linux::HIDDevice - Opened '/dev/hidraw3'
                    Manufacturer:'Oculus VR, Inc.'  Product:'Tracker DK'  Serial#:'3AC4A55AFFFF'
Error: {ERR-011} [SensorImpl] Magnetometer calibration not found!
[TrackingManager] Sensor added: PrintedSerial= UUID=

Using the 0.3.2 SDK as a reference we can see what data it is expecting to see, a 52byte block described here in 'unpack()': https://github.com/jherico/OculusSDK/blob/0.3.x/LibOVR/Src/OVR_Sensor2ImplUtil.h#L163

In 0.3.2 it is read via a feature report here: https://github.com/jherico/OculusSDK/blob/0.3.x/LibOVR/Src/OVR_SensorCalibration.cpp#L45

mungewell avatar Nov 07 '14 06:11 mungewell

By the way the full DK1 package has been opened sourced here: https://github.com/OculusVR/RiftDK1

mungewell avatar Nov 07 '14 06:11 mungewell

Hi Mungewell, sorry for not being very active these days on the Foculus code. I might revive the project this winter, when there's less distracting stuff to do outdoors :) I had a quick look at the RiftDK1 firmware and must say that I'm quite impressed by the amount of features they put in there. It is much more complex than I assumed it to be. Probably there were quite some firmware and driver updates since the last time I checked.

One question: Now that everything is open source, could we not just compile and flash the original DK1 firmware ... perhaps slightly modify it to take into account the different pin-outs / sensor ICs

Cheers YFL

michael-betz avatar Nov 11 '14 14:11 michael-betz

The 'simplest' solution is just to take what they had... use their gerbers to build some PCBs and hand load them. Unfortunately this also means that you need have to have a separate ST-Link dongle. I had asked whether anybody is doing this (https://forums.oculus.com/viewtopic.php?f=26&t=16838) but so far no response.

Perhaps their code can be shoe-horned into discovery board, do you think that forking it to do that would be appreciated? After all the discovery board is very available.

Also, please don't feel 'pressured' to work on Foculus, you already gave us a good head-start on getting Rift support.

mungewell avatar Nov 11 '14 16:11 mungewell

I truly appreciate this firmware. It motivated Me to do many things this year. Numerous people have seemingly been hoping this project would get updated already...honestly kinda waiting. Any updates or good recommendations would certainly be appreciated! At least a little guidance on saying what code should be modified to enable compatibility. Also...know of any good open VR firmware for STM32 discovery head tracking that isn't based on rift? :)

Thanks in advance!

01GOD avatar Nov 26 '14 05:11 01GOD

@mungewell that would be one way of doing it. Note that the STM32F3DISCOVERY board has a ST-Link dongle on-board, which could be used to flash the firmware.

The other way would be to take their firmware and adapt it to the STM32F3DISCOVERY board. Certainly possible but would take some programming effort and quite a bit of time to read through and understand their code. I'm afraid I won't have the time for that anytime soon. If anyone else is up to it, this could be a very nice learning experience and also an excellent way to get some hands-on experience with signal processing and programming 32 bit microcontrollers!

Another option is to patch the Foculus code up to the point where it will be recognized by the driver again. There's a high risk that it would break with the next SDK upgrade though, as I didn't implement a lot of the original features (especially for calibration). This I only noticed after seeing the open-sourced code of the original tracker.

Looking at the bigger picture, I think there should be some kind of open interface standard for HMDs, which would make it easier for the DIY enthusiast and for game developers alike! I don't really like the idea of the Oculus Rift SDK becoming the quasi-standard, as I'm afraid it will turn into a closed-source product in the future.

michael-betz avatar Nov 27 '14 11:11 michael-betz

Just hearing about the Open-Gear project which uses the ST32F3 discovery board....Woo Woo. http://www.roadtovr.com/rev-vr-podcast-ep-88-introducing-opengear-gear-vr-alternative-developer-mark-schramm/ http://www.open-gear.com/

mungewell avatar Dec 19 '14 17:12 mungewell

Hi guys ,try make the sensor serial is invalid serial number to SDK 0.4.x see following pics oculus-4-2-config oculus-4-2-config-about

FrogWu avatar Feb 10 '15 18:02 FrogWu

it's work , but I don't know how

FrogWu avatar Feb 10 '15 18:02 FrogWu

Wow! How did you do that?

spyfeedback avatar Feb 10 '15 19:02 spyfeedback

Ummm...yes...how to get it functioning with SDK 0.4?

01GOD avatar Feb 10 '15 20:02 01GOD

Sorry , I just see these pics at blog , I am searching information how to implement it

FrogWu avatar Feb 11 '15 10:02 FrogWu

Hi! So, anybody know how to use Foculus tracker with Oculus Runtime > 0.4? We are trying to make own tracker and came across a similar problem. Please help!

Dmitry-rman avatar Jun 10 '15 15:06 Dmitry-rman