How I made a SteamVR Lighthouse Base Station

Video Statistics and Information

Video
Captions Word Cloud
Reddit Comments
Captions
hi in this video I will show you how I made my DIY light Hot Space Station this video is mainly about the base stations but a little background on the complete tracking system will help with understanding Lighthouse is a laser-based tracking system the base stations serve as the reference for the headset and the controller tracking each base station sweeps two perpendicular leader planes across the room and broadcast synchronization signals and device information through infrared light pulses so core idea behind this system is to use precise timing of the little sweeps to calculate angles the photosensors on the headset and the controllers pick up these leader sweeps from the base station turn the position and orientation of each object can be calculated with some algorithms it's just a quick overview I came across many open source projects and detailed explanations during this project you can find links to them in the video description this project started with a broken base station so one day I found that one of my base stations no longer works after some quick search I found that one of the two lasers was dead and there is no easy way to find a replacement so I bought another broken base station hoping to salvage at least one laser from it I got lucky that one laser was indeed intact and my repair attempt was successful generally trying to repair a broken base station is not a good idea safety concerns aside it will mess up the calibration and cause the accuracy to the grid I did it anyway and the result was not bad after that I was left with this very broken base station I noticed the rest of the space station was fully functional so I thought why not try to repair it just for some fun I did a lot more searches and found that it is possible to drill out the laser diode from its assembly and replace it with an optical disk drive laser but in practice it didn't work the power rating of a typical Optical disk drive laser is only 5 to 10 milliwatts the base station lasers work at 30 milliwatts also their current rating is much lower than what the base station lasers use so I had to look for something else which was quite a pin the data sheet of a little diode is usually unavailable the windows I found most of the time only provide an output power rating and occasionally with a rough current range since the driving current is set by the base station Hardware if the current rating is too low the laser diodes will either get damaged instantly or have a very short lifetime if the threshold current is too high the little diodes won't Offerly enough power I tested a bunch of different laser diodes and the eventually chose to use and 8 30 nanometer 30 milliwatt liter diode with a rated operating current of about 70 milliamps after I got the latest working I built an infrared audio for the optical sync in the end I got everything working the lasers were slightly autofocus and not aligned very well so the tracking was a bit shaky but it worked after that just out of curiosity I wanted to try if it's possible to emulate a base station by using the LED or rear build because all the device information about the base station is broadcasted through the light pulses if I broadcast the same information with the LED array similar should recognize it once again I searched around I found that the optical transmission protocol has already been documented also there are open source trackers using lighthouses so I built some sensors and wrote scripts to read the signals from the base station after I decoded the information I used LED array to send it to track object which in my case was a web tracker with some trial and error it eventually worked a base station icon showed up in steamvr I got very excited I saw the possibility of making a DIY base station and decided to give it a try so what do we need to build a minimally functional base station based on its working principle we need something to create two laser points that sweep at a constant angular velocity and some infrared LEDs to broadcast the synchronization signal here is a picture of an early base station prototype from valve as you can see in this picture mainly there are two Motors two lasers some infrared LEDs some Optical components and some Electronics to create a sweeping laser plant the laser beam generated by the laser diode first has a mirror that sits on the rotor then goes through a violence to turn into a plan when the motor rotates the laser plant sweeps as well the rotor assembly looks like this the laser assembly and its output looks roughly like this adding another rotor and laser with some Electronics forms a basic base station for the control logic this chart shows a simplified timing diagram the two Motors are controlled to have an almost constant angular velocity and always keep a 180 degree phase difference when each motor passes the starting position the LED array will Flash the sync signal respectively the format and timing of the optical sync signals can be found in some open source projects okay basically that's how it works so it should not be too difficult to make one by myself right base stations are mechanical systems so there will always be some imperfections this means the lasers could be misaligned the mirrors could be misaligned the lenses could be misaligned and the motors could be misaligned ideally the laser lines would be straight and sweep at a constant angular velocity however when the alignments go wrong they will get distorted which will cause tracking issues while over uses this calibration parameters to compensate for the errors but the calibration methods are unknown to make sense harder the level of mechanical Precision I can reach is significantly lower than what wealth can do the frame of the base station is made by die casting which can achieve excellent accuracy and rigidity so unless I measuring all the components like the wealth prototypes I can get nowhere near the same build quality besides the misalignments another trouble is that the two Motors need to rotate at precisely 60hz it directly determines the accuracy of the angle measurements I didn't worry too much about that because I thought I could use 100 spinal Motors so I started prototyping initially I tried to use similar mechanical designs from the base stations but it went terribly wrong so laser lines were so distorted that I could see the Distortion directly with my eyes the accuracy of a entry-level fdm printer is what it is in the end I had to get more creative I took some inspiration from low-cost mechanical Riders the solution was to post the entire list assembly directly on the rotor this off-the-shelf line laser assembly is relatively accurate using it could eliminate most errors caused by the misalignments between the optical components as a result of this design I had to put a wireless power module and some Electronics on the rotor itself ideally I would use hot grub spindle motors for my base station but in my case since I used an off-the-shelf Wireless power module I didn't have enough space to fit all the components on the rotor so I ended up using stable Motors that have a double in the hollow shaft design for extra space it was a mistake I should have designed that wireless power module myself and gone with the hard drive Motors to compensate for the Jitter I put two still runs on both ends of the sniper motor to increase the moment of inertia the downside of my design is that with all these components on both ends of the rotor it's difficult to make it balanced it's still doable but I made a down mistake in assuming the density of pra is one gram per cubic centimeter as a result I had to put chunks of Steel and many dampers on my base station to stop it from jumping around and oscillating violently also because the Snapper Motors I chose are not designed to operate at this high speed I had to put two powerful cooling fans to dissipate the Heat this high speed voltage shows the running base station before I could get any reasonable tracking quality I needed to do some basic calibration I performed the phase calibration by using a laser pointer to Mark the center of a base station and then aligning it to the center of a sensor on the web tracker after the alignment I turned off the laser pointer and powered up the base station to get sensor readings so since already on the X and the y-axis should both be zero so I got the calibration values after a lot of trial and error I got everything working it was pure happiness for me when I finally saw the controller moving with my hand thanks to the steam Ware tracking algorithm it worked surprisingly well the tracking quality was not as good as the real stuff you can say there are some Traders and sudden drums but it's not too bad I played some games to get a few of the Dragon quality I could shoot down some Far Away targeting onward foreign difficulty without much trouble additionally I tried to verify the absolute accuracy by measuring distances between objects using a pair of HTC wire base stations as a reference due to the lack of further calibration the error could be up to a few centimeters depending on the distance and potential in the base station field of view fortunately the human perception system can tolerate some discrepancies between Visual and proprioceptive feedback what you see and what you feel doesn't need to match exactly there is a lot of research on using this phenomenon to redirect or scale hand movements on purpose I personally don't find this level of error from a base station disturbing it's hardly noticeable unless I really look for it I also measure the trader in base stations my base station has about 3 times the reader of the HTC Vive base station it's just a rough comparison since I didn't measure the velocity variation during each rotation as a proof of concept it worked pretty well although with many problems just to name a few it is incredibly noisy extremely heavy and sometimes it doesn't start up correctly due to the violent vibration caused by the unbalanced rotors I could work on improving it but at that time I felt I should revisit my earlier failed attempt so for the next prototype I abandoned the wirelessly powered laser and went with a spinning mirror basically the same design as HTC wire base station I put up another base station prototype with some easy to buy components to control the motors I used a proportional integral velocity controller and the proportion of its controller the control scheme is very simple but worked well however due to the motors being sleeved by remoters and the rotors don't have much moment of inertia there are tons of Jitter in the system from this video you can see the controller shakes a lot again I played some games I didn't feel much difference in pizza and the experience was not too bad but he onwards Amy became much of a struggle due to the Jitter it was especially bad for 200 weapons as shown in this video overall for quick test it worked compared to the previous prototype is much quieter and whatever is much less however the Jitter is really bad and I started to notice the arrows in the controller tracking caused by the misalignments and the lack of calibration I looked for calibration methods first the most obvious method is using the measured value against the ground truth it's similar to what I did earlier but to do it with much higher precision I didn't have the tools to do it but I still tried I tried to start with something simple so I used my previous prototype in order to ignore some of the calibration parameters my attempt was limited by the accuracy of my setup it generated very close values to what I got with the laser pointer method is definitely not worth the tedious process I went through so I searched for other methods most literature I found is about calibration in a stereo base station configuration which is not directly helpful to my project but still provides a lot of useful information Dimension strategies like trading the base stations as cameras and applying magic hierarch calibration techniques with more digging I eventually found the answer the idea is if everything is perfect just measured sensor values should be the same as the values calculated from the tracker pose which is calculated from the measured values first by Trying to minimize the reproduction error from multiple sets of data the calibration values could be found similar to camera lens Distortion calibration it requires a calibration object however since we are dealing with photodios here it's challenging to construct such an object and it could require using expensive instruments to calibrate luckily the headset is already calibrated in the factory and has a long Baseline between the sensors so it is a good option enough data sets to cover the entire field of view of the base station could be acquired by either rotating the base station or moving a headset in the room this idea is not difficult to understand but execution was really daunting for me since I had zero experience with computer vision and optimization methods I could already see problems like geometry of the base station can affect the calibration model I might try it in the future to fulfill my interest but for now I sunk in a DIY scenario I still prefer to reduce misalignments through mechanical means so if I were to make my next base station I would still choose my earlier approach one benefit is I don't need to spend time tuning tolerances between components it's actually quite difficult to get right even with a resin 3D printer and the result is hardly repeatable off the shelf laser pointers are simply easier to work with for the calibration based on my earlier approach I would use crossline lasers and build a calibration plate I think it's easier to perform than moving a headset across the room to collect data which is really meant to be done by a robot and there is no scary mess involved so the calibration path is finished now let's look at the Jitter as you can see my second prototype has a terrible amount of Jitter the first method to improve it is to increase the router's moment of inertia is quite effective basically that's all the engineers at wealth got the development kit base stations working the rotors in the dev kit base stations are probably made of zinc alloy and it resulted in a solid performance however this method is limited by how large and heavy the router can be it also makes the router harder to balance and results in higher vibration fundamentally the trader has something to do with the motor itself so it has did a lot of motors the best option is hard drive spindle Motors however there are a lot of carriers the first problem is that they are not easy to source modern hard drives usually have the motor directly pressed or glued to the chassis it makes repurposing the motor very difficult or practically infeasible for the motors that can be salvaged they come in all kinds of shapes and characteristics another problem is I encountered similar bearing Behavior as Allen is mentioned in his hectic talk I have no idea what's happening here and I didn't find much information either I sung increasing the rotors mode of inertia should help greatly because the motors are designed to carry the platters in the hard drive another good option is Snapper Motors especially smaller ones like nearby 11 they have very solid performance and are easy to source with fine-tune Dynamic stepper drivers they can operate with relatively low noise at high speed however due to the nature of open loop computation to have problems like heat and resonance the rotor must have enough moment of inertia to avoid the resonance band during operation here are some options that could work but I don't recommend them because they are difficult to source these are the toy options they have excellent availability and other ship their performance is rather bad but if the rotors have enough moment of inertia they could work their performance could be anywhere between the Green curve and the red curve lastly Motors that have high clogging torque don't work I first tried a very popular Droid motor paired with a drone ESC and it didn't work the performance was more than 10 times worse than anything I would tested I didn't tried a driver IAC with sound of soldier commutation and tune the parameters the best deckhood it still didn't work the performance was just terrible the Coggin talk is usually very high for drone Motors I believe that's the reason for the poor performance so my conclusion under a DIY setup there really is no single best option I would use 100 Motors if available unstable Motors if not I originally planned to build a new prototype and a Tracker to work with it but the involvement turned out to be a lot more than expected so I consider this project finished at this point you can find the materials I gathered during this project in the Repository the tracker currently doesn't have software to establish tracking or communicate with steamvr yet the repo contains the hardware design and a very basic program using the Pio on the PIP code to read sensor outputs as a bonus I want to briefly talk about two different Lighthouse implementations I came across during this project performance wise they are worse than steamware tracking but I find their designs interesting despite there are very different looks they share many things in common they both have the ability to measure distance directly it could make the tracking algorithm easier to design and reduce the sensor count on the headset and controllers so for example there are only six photodials on the e3b headset and the 9 on each controller HTC Vive has 32 on the headset and 24 on the controllers they all use sleeve very Motors to reduce cost and both Implement quite heavy motion filter into smooth stagger as a result both systems suffer from high latency and stutter due to the filter design in this video you can see some stutter on the e3p controller the latency is also quite high and I had trouble playing Beat saber even on Expert difficulty the u3p base station has red rotors inside similar to a stereo camera the sensor position in 3D space can be calculated from three angle measurements and a known geometry of the base station here are some pictures of the base station and the controller the normal base station uses ultrasound to measure distance with knowledge of two angles under distance measurement the 3D position of the target could be found here are some pictures of the disassembled base station that's it for this video thanks for watching
Info
Channel: Anran
Views: 10,295
Rating: undefined out of 5
Keywords:
Id: 2vALTxu0yUc
Channel Id: undefined
Length: 23min 14sec (1394 seconds)
Published: Sun May 14 2023
Related Videos
Note
Please note that this website is currently a work in progress! Lots of interesting data and statistics to come.