So I started with a Lighthouse 1.0 setup but quickly noticed that the accuracy was not as good as advertised/commonly understood. While the precision claims feel "accurate" (e.g. ~1-2mm), accuracy is way off (2-3cm). Every time I asked about it I get a variation of these responses
- Room too large (6mx6m), needs Lighthouse 2.0
- Room has windows and a large TV, needs curtains
- Your USB ports are probably bad, needs an Inateck PCI-E USB 3.0 KTU3FR card
- Your dongles are attached to closely to each other, need extension cables (but not too long!)
- Your USB ports have power management enabled
- You have other IR emitting equipment (e.g. Kinect)
- Wall-mounted basestations might pick up vibrations, needs tripod
So here is what I did:
- Spent $1K to buy 4x Lighthouse 2.0 Basestations on tripods
- Moved to a lab in the university without any windows, no TV, no large reflective surfaces, no Kinects or other IR emitters
- Bought Inateck PCI-E USB 3.0 KTU3FR card
- Bought 4x 15cm high quality USB 3.0 extension cables
- Reinstalled Steam VR 1.15.19 (tried Beta as well)
- Disabled USB Power Management + reconnected dongles
(I also tried running only 2 or 3 basestations, no improvements)
To prepare measurement I
- fixed 3x ViveTracker on the corners of the table (A,B,C)
- 4th ViveTracker was placed on a box in the center of the table
- Every ViveTracker has direct line of sight to all basestations
- measured distance between them using laser (precision <1mm)
- collect the 3D position reported for each tracker for 20,000 samples at 250Hz (80 seconds) using python `get_pose()` in https://github.com/TriadSemi/triad_openvr.
Here is what I measured
- Distance between Trackers A<->C (should be 1.585m, Accuracy)
- Distance between Trackers B<->C (should be 0.785m, Accuracy)
- Offset from the mean position for each tracker (Precision)
The result: Sub-millimetre precision but still lousy accuracy (A<->C -2.3cm, B<->C better at +0.7cm off)
Graphs:
- Tracker placements: https://imgur.com/YpEq0ks
- Photo of individual tracker placement: https://imgur.com/a/haOtX4s (covering the cylinder in tape doesn't help)
- Accuracy measurements: https://imgur.com/Bq2sK9t
- Precision measurements: https://imgur.com/K7QdkGd
I don't know what else to do. I am currently working on a proof-of-concept prototype that will most likely fail because it expects <1cm accuracy. I was confident to achieve this because I had the impression millimetre accuracy was possible. A working PoC will likely determine if I still have a job at university this year. I am desperate.
**Is there actually any documented case where somebody measured "accuracy" (and not precision) using ViveTrackers and achieved millimetre accuracy?**
Could somebody please help me find out what is wrong, or could somebody from Vive come out and just say "Sorry kid, 2-3cm is the best you can get with ViveTrackers" so that I can stop spending time and money on this? Thanks and sorry for the rant.
This has also been posted on reddit here: https://old.reddit.com/r/Vive/comments/lc0659/i_spent_1k_and_one_week_to_improve_tracking/