VR headset ver 2.0
I decided to do some revisions to the design of my head mounted display over the weekend. I had learned some things from the wood version, and had some new ideas to add to it.
Things I wanted to change
So I learned a couple of things from the wooden model:
1) The wood I chose was a poor choice. The surface of it chipped occasionally during cutting, producing a poor surface quality. I also had to spray paint it black to get better contrast on the inside.
2) The rubber band holding system for the phone was not the most reliable. The phone often became misaligned and skewed.
3) It was uncomfortable to wear, even with the foam padding added.
4) The strap was inadequate to hold the device up without being ridiculously over tight.
5) The whole thing drooped with the weight of the phone due to the poor strap situation.
6) Find a better way to stream the video to the device.
1) I decided to switch the material to a plastic. I used Black ABS sheet from Amazon. This material was only .177” thick compared to the .21” thick wood used previously. This required some design updates to change the dimensions of the interlocking portions. Also, since it was already black, I did not need to spray paint it. One side was smooth and the other had a textured surface to it. I opted to keep the textured side on the inside as the smooth side had a somewhat reflective look to it, and I did not want reflection off the interior.
2) I still use rubber bands to hold the phone the unit, but instead of from top to bottom, they now go from side to side. I integrated some hook points into the corner supports, which now stick out from the sides to allow the rubber bands to be attached to them. Added to this, the lower portion of the unit now has a sort of tray that extends out of the front to allow the phone to rest on that. I milled out a slot approximately an ⅛” deep to accommodate the phone. This slot holds the phone very nicely. I also milled out a through slot to allow the volume control on the phone to still be manipulated (and not hit accidentally) while it is installed in the head mounted display.
3) To make it more comfortable to wear, I designed a piece that increases the bearing surface where it contacts the face. These parts are identical arc segments, and have the same radius as the rest of the unit. I added edge slots to the top and bottom flat pieces to allow these bearing surfaces to snap in and self locate. They are a VERY tight fit, especially the three of them together along the top of the unit. The bottom ones are supposed to cushion on each side of your nose, but right now it seems that the edges left on them are still a little sharp. With the foam added to these though, it is much more comfortable than the version 1.
4) The strap I used originally was salvaged from my old Gen Chem goggles. As such it was very thin, and not very effective. I had milled in slots on each side to allow for a strap to be threaded through, but the chem goggle strap still slipped through a little too easily. I could not make the slots any thinner as I was limited by the size of my end mill. The chem goggles strap was really a placeholder until I found a better option, which I did in some flexible fabric strip from Amazon. This strip was about three times the width of the old strap, and was fabric covered, so much more comfortable than the rubber strap. The new strap is also a bit thicker, which means that it holds its position in the slots much better.
5) The dropping was caused by the weight of the phone being cantilevered so far away from the support points. This was causing extra contact force on the lower portion which contributed to the uncomfortableness of the wood version. To solve this, I added in slots for a central, over the head strap. This provides a little more control of the unit as it is attached to the face. The over the head strap runs back to a piece that has three slots in it to attach to the horizontal strap. This allows for alignment of the center strap even when you change the tightness of the other strap. The real oculus rift also uses a center strap like this, and presumably it helps there too. I tried using the straps from a headlamp, but since they were sized to sit higher on your head, they were too tight for this application. The new strap system is adjustable for tightness and works quite well.
6) Streaming the video to the device is still very much a problem. I have tried using USB tethering from my computer to my phone, but there is still some noticeable lag. I am hoping to give it a try soon with a wireless N router, and my PC connected with a hard line to the router to get better response. This should give me a better frame rate in theory. So far I have been using a program called Splashtop to stream content from my PC to my phone and I have also tried the LimeLight app to emulate my phone as an nVidia shield (this only starts up steam in big picture mode though). I have also used a program called FreePIE to take gyroscope measurements from my phone and translate them into mouse movement (this is what allows for head tracking). It works, but I need to zero in on the correct gain variables to eliminate constant shaking and get a better response. Further tweaking is required.
Cutting and Assembling
This was the first time I used ABS plastic in anything. Previously, I had worked with acrylic, cork and wood. ABS is a plastic somewhat similar to acrylic, but it cut much much easier for me. The ABS did not chatter as much, could be cut deeper per pass, and allowed for a faster feed rate. Chips coming off were a very consistent black dust. Actually, it was TOO consistent. The mess that the ABS makes is much worse than anything I’d used previously. It covered the cardboard side pieces, the rails, and the spindle in a fine black powder. It did not really interfere with further cuts, but it did require a lot of vacuuming to clean up. I have since implemented a dust shoe onto my spindle in an attempt to control the mess it makes, but that is still a work in progress (see other post about machine upgrades). A couple of times, the debris from machining built up on the bottom rail of my X-axis and caused the wheels to bind up. A quick pass of the vacuum and a running my finger along the V-rail to clear it and it was working fine again. A working dust collection system will be a life saver for me though.
BUT, aside from the debris it was throwing off, everything was cutting out quite nicely. All the edges were fairly clean, and the corner relief cut outs worked just fine. Once everything was cut out, I brushed them clean and trimmed off any sharp corners on the edges. A test fit worked out, so I then applied super glue to all the cutouts, and assembled it completely. I used a similar method as last time, C-clamps and quick clamps all over it.
After the CNC’d pieces were glued, it was time to add in the 3D printed parts. The corner supports/rubber band hooks slipped in fine, though a little loose as my printer must not be putting out the correct sized parts. Super glue remedied this. The piece to keep the image split (I call it the eye splitter) was coerced into its slots on the top and bottom. I tried to design it so that it would combat the bow in the top and bottom pieces of the box, but it is so thin that it is buckling under the force.(UPDATE: the eye splitter DID buckle when I transferred it, so for now its not in there). The face contact pieces were very tight fit onto the plastic, and stayed very secure without any glue. These pieces went in very easily on the bottom portion, but on the top, were actually designed as a line to line fit, so I had to force them on. Now though, they are definitely locked in place with each other. I also used a soldering iron to weld the plastic together on each, so they are not going anywhere anytime soon.
Next up was assembling the moving components. The focus adjusters fit up easily, but required a nut on the inside for tightening this time. A nice side effect of the rough side of the ABS was that they made for better clamping on the focus adjusters. They are still set to the closes position to the eyes though. Eye to Eye adjustment is still achieved by pushing the lense holders in or out and letting the rubber bands on the side pull the legs toward each other.
The lenses were press fit into the lense holders. They were very easily pressed in and stayed in very securely. I only adjusted the diameter of the holder slightly, but I think I stumbled onto the perfect amount of interference for the press fit. I was very happy with how this turned out. No glue is required to hold them in place.
I also implemented a couple of other new things that I thought would be useful. I left in the holes on top to allow for screw mounting if I still wished it, or as mounting points for IR LEDs. IR LED’s are a planned side upgrade that would allow me to use the FreeTrack or PointTracker libraries for head tracking. While these would require a webcam being placed right in front of you to get it to work, I think it may be more reliable than the script I currently use to translate my android gyroscope readings into mouse movement. There are also slots in the bottom of the unit to allow IR LED’s to be mounted. I also shortened the length of the focus slots because I found that I almost exclusively used the setting closest to my eyes. The eye splitter was also upgraded to have ledges where it sits inside the unit. Now it is a tight fit inside without any glue required. It does have some buckling issues though due to a slight bow of the top and bottom sections. The eye splitter is only 1mm thick across the main section, so maybe a thicker design change would be a good idea.
The new design is lighter and sleeker than the wooden version. It is thinner material, doesn’t smell like spray paint, and holds the phone better. I definitely like the side to side holding method rather than the top to bottom. The shelf holds the phone in place even when you are adjusting the rubber bands to secure it down. It is also MUCH more comfortable to wear. The head strap holds it on better, and even aids in blocking out some peripheral vision that the other let design let in. I haven’t done much actual testing with the new one yet, but it still provides a convincing 3D view effect and has decent head tracking.
If anyone is interested in the source files, let me know. I have the SolidWorks Assembly, .dxf files of each flat part, .svg files of each flat part, and .stl files of the printed parts.
I am still considering buying a dedicated display for this. A lot of small LCD displays I see advertised as raspberry pi displays would be perfect. Ebay has bare LCD’s and driver boards for approximately $80, but they all seem a little over my skill level in electronics. Another option is a 7” HDMI display from Adafruit for roughly $150. This already has everything I need except a way to mount it to my head. I could easily use the VESA mounting points on the back, or incorporate it into a design. Yet another option is to buy a iPad 3 retina screen and associated driver. This would run about $120. The problem with this the screen size of 9.1”. That is really pushing what I could mount to my head comfortably. The retina display resolution does sound very appealing though. All three of these options bring the unfortunate/fortunate reality of tethering my display. With my display untethered right now, it allows you to walk around or turn 360 degrees without problem. With a tethered display though, it is simply another monitor, so lag time should not be as big a factor.
I am also looking for other lenses. The lenses I have I pulled out of a 3D viewer from amazon, and while they work, I have read that there are better alternatives. Supposedly, aspheric lenses offer the best kind of quality for this application, and a magnification of around 2.5x-5x would be ideal. Pocket magnifiers could be harvested for their lenses, but they are surprisingly expensive on amazon or ebay. They would also need to be identical to each other work well. I also thought of using the lenses out of jewelers head magnifiers. These take the form of two rectangular lenses formed together with a rectangular plastic holder. I would not be able to adjust eye to eye distance with these, but it is possible that the quality they provide would make up for that. Amazon carries some, but I am not sure I am ready to drop $25 on something that I simply want to test the possibility on.
Better head tracking is another thing on my further upgrades list. With 3 IR LED’s and an appropriate webcam, head tracking could be done easily. Things like TrackIR and FreeTrack already use this method, and people use these types of setups for head tracking in flight sims already. I do not think it would be very difficult to add this capability to my head mounted display, even if its only as an option. If I go the route of a dedicated display, I will NEED to consider other head tracking options, as my phone currently doubles as both my display and my tracker.
*** UPDATE 4/1/15 ***
I’ve uploaded my design files for this project to GrabCAD. If anyone is interested they are linked here: https://grabcad.com/library/galaxy-s5-vr-goggles-1
I also made a few new renders.