the BNO055 HeadTracker is working now, the Razor Phone gives nice 120 / 90 Hz gamestream via USB,
its time to disassemble the PSVR headset again and ressemble in modified way as follows:
if i use most of PSVR and use dremel-drill to work out no needed original lenses and middle nose part to get a full window, i can look through. Going that way, i could use the plastic rubber facemask.
Then take measures and use orig screws/holes to fix the RazorPhone2 in orig display position.
I will try to use a glasses with 3-5 diop , and not build in the glasses/lenses into the headset. to have the glasses closest to the eyes it is best to wear glasses like sunglasses… and not as lenses milimeters more away from eyes. .
The IMUs have problems with drift in horizontal and that makes manual centering via custom key set needed. I could notice that drift with the usb headtracker from ZEISS. https://www.heise.de/newsticker/meldung/Zeiss-Headtracker-kommt-im-April-1817672.html
Maybe the drift is more or less, depending on a calibration after powering up the device, 10 seconds none moving. And maybe i will give it a second try?
BUT again.. i thought about TrackIR – its expensive solution, without look over shoulder feature. i thought about EDtracker a arduino solution with MPU-9250 https://hobbycomponents.com/electronics/440-diy-head-tracker-bundle which seems well supported by the german team from: https://elitedangerous.de/forum/index.php?board/43-head-tracking-eye-tracking/ while edtracker founders withdrawed.
and while looking through internet i came around with the BOSCH Sensortec BNO055 „Smart sensor combining accelerometer, gyroscope, magnetometer and orientation software“ https://www.bosch-sensortec.com/products/smart-sensors/bno055.html
This IMU has many great features that should be a better solution to me. – a auto calibration – python libs – community support – hight refresh rate – fusion data, quaternions to euler this all was interesting enough to me to give it a chance , and i ordered the USB Stick Evaluation Version, red USB3.0 version, from Digi-Key for 50,-€ incl. shipping from USA. Shipping was very fast within 3 days!
the BNO055 is available in different styles – the BOSCH evaluation USB Stick green USB2.0 only, red USB3.0 – Arduino breakouts from adafruit and others – Arduino Professional Series: IoT MKR https://store.arduino.cc/arduino-mkr-imu-shield – and as chip alone
BOSCH Sensortec – Calibrating BNO055 https://www.youtube.com/watch?v=Bw0WuAyGsnY NDof FMC OFF NDof FMC ON NDof Nine Degrees of freedom FMC = Fast Magneto Calibration
Paul McWorther uses BNO055 with Arduino and explains equations.. great stuff ;o)
there are documentations from BOSCH and code examples in the internet. Finally it was a trail within 4 days to get the device working in streaming mode on a windows pc using python 3, build up on existing scripts, modified by me.
First we need to install the BOSCH Sensortec Development Desktop 2.0. https://www.bosch-sensortec.com/software-tools/tools/development-desktop-software/ When it is installed we can run the programm and connect to the USB Stick. For me the USB connections failed , but COM3 worked.
In the installation folder structure of Development Desktop 2.0 we find the .dll and PDF manual for a first small python script. Is started with python version2. The script was not fully ready to go, and did not contained full fledged support of everything the bno055 delivers.
From that point i looked through various examples for arduino, and found BOSCH github repository https://github.com/BoschSensortec https://github.com/BoschSensortec/BNO055_driver
the .h header file gives impression on whats all possible, the registers and values, functions…
and then, there is BOSCH sensortec forum: https://community.bosch-sensortec.com/t5/forums/searchpage/tab/message?advanced=false&allow_punctuation=false&filter=location&location=category:bst_community&q=bno055 where some usefull information is located.
this post contains a zip with python example using the co called „GenericAPI“, https://community.bosch-sensortec.com/t5/MEMS-sensors-forum/BNO055-USB-Stick-USB-3-APIs/m-p/6166
finally i got a full fledged python3 script into my hands, bno055_usb_stick_py-0.9.5 https://pypi.org/project/bno055-usb-stick-py/ that was intended for linux. so i had to install python3, comes ready with pip inside, batteries included ;o) then installed pyserial … (py -m pip install pyserial) then outcommented linux lib „pyudev“(that needs linux only „fcntl“) and setted manual values in the autodetec function to use COM3… from that point it was working in streaming mode.
from there is used a while loop with sleep 0.01, and reading stream 10 packages, read the euler values and converted them in usefull representation for Virtual Joystick vJoy http://vjoystick.sourceforge.net/site/
vJoy gives us the possibility to simulate a Joystick Device within python. So i update the 3 axis of that virtual joystick.
Next step is simple.. using OpenTrack https://github.com/opentrack/opentrack/releases to read the input from that (virtual) Joystick and make output for „freetrack2.0 enhanced“. Figure out some settings in OpenTrack and i was ready to go, to use it within in WarThunder.
i could use simlulating mouse input using python, but OpenTrack gives already some usefull features (axis mappings and much more) and outputs comon protocolls.
i still used Euler values because i dont need endless rotations, and i mapped the euler values to suitable values for my aim to use as headtracking look around with feature of „look over shoulder“ with 1:1 ratio of Head-View-Alignment.
PSVR headset is available for 3 years now and used ones are available on ebay for some bugs.
On Youtube we can see some people trying to connect PSVR with PC and a few try to show 2D.
So i bought a used PSVR, tried some things out.
Setup1 First test was to connect PSVR to PC. That was quite simple. Connected everything as should as like as with a PS4 but instead PS4 i connected to Laptop hdmi.
without any software or driver installation
Result: the PSVR goes on/stays on. It shows the PC desktop in VR mode, left and right eye get their own image. The head movement is translated, so that i can look into the corners, the screen is located fixed in the room. Sound goes to headset, has to be set to desired output device. Display is running 60Hz only, without extra drivers, but should be able to go 90 or even 120. https://de.wikipedia.org/wiki/PlayStation_VR
next i want to display the pc desktop on the PSVR display in 2D as fullHD and not side by side.
The PSVR has 2 different HDMI connectors. One is standard and the other is special. The pins are identically but the plug outer form is different, so that users can not plugin the cables in a wrong/not correct setup. This gives us only one possible way to connect the headset to PC, with the standard hdmi cable. The second HDMI cable from headset goes to the triangle signed port of the processing unit. The output to tv stays empty. The output to PS4 has to be connected to processing unit input that is signed with X, with an extra hdmi cable. USB can left empty, if we only proof the display, the USB is for sending signals to PS4/PC like IMU chips data.
In that fashion i connected the PSVR to my laptop, without any software or driver installation.
Result: the PSVR goes on/stays on. It shows the PC desktop on full display not side by side, thats what i wanted. The optics are not made for that, thats right. I will have to tear down the PSVR to remove the 3D optics lenses and figure out how to implement 2D googles lenses with 3-5 diop.
TearDown: as show in youtube, https://www.youtube.com/watch?v=n1FbV7hx3d0 i tear down the PSVR headset completely.
Surprise No1: To my surprise, the lenses are kittet/molded in. So if you ever have scratches in the lenses, you need more that just new lenses.
Surprise No2: the display itself is fullHD ok… BUT it comes with a black vertical line in the middle, and because of that, this display will never be a display to show content in 2D, you would always have a vertical black line in the middle. Thats the reason, why this display is out of the game. BUT the headset itself is quite nice strapband, holds nicely at head.
So i will use this, try to put in a whole smartphone instead the display.
While tear down and build back together i recognized that if the display cable isnt 100% correctly connected, the PSVR unit goes on at start and goes out again. Thats the reason, why i cannot run the headset without a plugged in orig display, to use the orig PSVR mainboard with everything like the blue LEDs , the IMU sensors and so on.
I will have to rip everything out and use a own solution for headtracking. The blue LEDs would be nice to use, but there is no software that can track all PSVR headset LEDs and calculate the position in room. TrinusVR is only tracking the middle center LED but not all LEDs!? And if that would work, we would still have trouble with the feature „look over shoulder“. So i will not use the blue LEDs, and not the PSVR IMU.