relativty / Relativty

An open source VR headset with SteamVR supports for $200
https://www.relativty.com/
GNU General Public License v3.0
6.44k stars 342 forks source link

[Improvement] Switch from MPU-6050 6 axis sensor to MPU-9250 9 axis #13

Closed luckcolors closed 5 years ago

luckcolors commented 6 years ago

As previously discussed on discord, using a gyroscope without a fixed reference point causes yaw drift to happen to on the Z axis on long sessions (this naturally happens due to earth's rotation). Switching to the MPU-9250 a 9 axis sensor gives us access to the (magnetometer) compass wich allows us to get the referece point on earth's north. Doing this change will make the expense fom the sensor from 0.80-1$ to 2$, (in my opinion something that is worth the extra 1$ :) ) . We could also use alternative sensors like the BNO055 but it's 10$ on aliexepress.

Jimvanhazendonk commented 6 years ago

that's a very interesting point. but won't any stronger magnetic field throw off the sensor a bit?

On Mon, Jan 29, 2018 at 12:09 AM, luckcolors notifications@github.com wrote:

As previously discussed on discord, using a gyroscope without a fixed reference point causes yaw drift to happen to on the Z axis on long sessions (this naturally happens due to earth's rotation). Switching to the MPU-9250 a 9 axis sensor gives us access to the (magnetometer) compass wich allows us to get the referece point on earth's north. Doing this change will make the expense fom the sensor from 0.80-1$ to 2$, (in my opinion something that is worth the extra 1$ :) ) . We could also use alternative sensors like the BNO055 but it's 10$ on aliexepress.

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://github.com/relativty/Relativ/issues/13, or mute the thread https://github.com/notifications/unsubscribe-auth/AAG_PmoShcsONM7174GYdcWDVHw0YNzzks5tPP41gaJpZM4Rv5u_ .

-- Jim van Hazendonk www.racoon.media

maxim-perumal commented 6 years ago

We should do this. I will order an MPU-9250 today.

luckcolors commented 6 years ago

Umm, soo what's the decision on this? If you decided that we should switch, we should update the Readme as well and make the necessary code changes.

maxim-perumal commented 6 years ago

@luckcolors I haven’t received my MPU9250 yet. You can make the necessary code changes, PR, and I will update the code when tested.

delp commented 6 years ago

I ordered an MPU9250 as well and will perform testing with it in my build when it arrives.

luckcolors commented 6 years ago

Awesome! When you get the sonsor in your hands we should start to discuss about the code required to make the sensor and the error correction work.

delp commented 6 years ago

I'll be happy to coordinate with you on this.

kasokz commented 6 years ago

Instead of proposing the MPU-9250 which contains a MPU-6500 as improvement, couldn't we use the MPU-9150? MPU-9150 contains the MPU-6050, which we are already familiar with, and an additional magnetometer. The magnetometer of the MPU-9250 is a little better than the one inside the MPU-9150, but that shouldn't make much of a difference. Source of the statement here: http://www.sureshjoshi.com/embedded/invensense-imus-what-to-know/

luckcolors commented 6 years ago

I think if we can get a newer sensor the better, if you notice at the end of the MPU-9150 page's there's a note saying it's discontinued.

Ybalrid commented 6 years ago

The Oculus DK1 used a magnetometer to correct yaw drift (and the included accelerometer to have a vertical reference too). But it really used to be a pain to calibrate correctly...

I think the direction you should go toward, it you want to make this project evolve, would be to add an external optical tracking system, and add positional tracking too.

You would kill two birds in one stone as you would have two sources for the user's head orientation, one being absolute, and not integrated over time...

It could be as simple as a few LEDs on the headset and a cheap webcam watching the user. But it would require more processing on the computer side. If implemented, the hardware cost would still be quite low, and it could be just an "additional" upgrade to the base system.

Just some random thoughts ^^"

ToastTea commented 6 years ago

Here are a couple open-source projects for head tracking so you don’t have to reinvent the wheel. http://www.free-track.net/english/ And http://www.edtracker.org.uk/

delp commented 6 years ago

@Ybalrid I've been playing around with trying to get positional information from a xbox 360 Kinect. I have it working physically and though it's nice hardware for a good price (Usually about $10 at the thrift store) I have had a really difficult time with all of the software made for it (at least on linux.) None of it has aged very well. I spent several weeks battling horrible dependency problems and never succeeding in getting anything beyond LibFreeNect to work. So I think I've ruled out the Kinect as a road I want to go down, personally.

But I think I agree with you, in my mind the ideal solution for positional tracking would be a simple cheap IR/Camera setup that also sends info to the computer. I would like to try this at some point once the main headset has some more builds and testing.

At this point we are really just in need of as many people as possible to try 1) sourcing affordable parts 2) assembling from the info we have 3) documenting the good and bad and any build/software problems.

xmak commented 6 years ago

Is there any progress with integrating MPU-9250 or MPU-9150?

hugogarrix commented 5 years ago

With the change to the STM32 board, a upgrade to the MPU-9250 is planned. We hope to implement this future in a few months.

JustinS-B commented 5 years ago

We now have headset-ready code available to test out the MPU-9250 and MPU-9255 based boards.

bentalebahmed commented 5 years ago

You should try Microsoft Kinect, i have used it for positional tracking and then sending data to android phone that supports VR also added a haptic feedback system, and you can detect up to 12 player (i guess). You can check this link (research poster submitted for VRST 2018 in Tokyo ): https://hal.archives-ouvertes.fr/hal-02052104/document