Inspiration
Cardboard LiveVR was one of those shower ideas, the ones that seem to hit you out of nowhere but you must have garnered inspiration for from somewhere. The whole idea stems from the fact that, in our ever-connected world, most of the things we tend to experience online are pre-rendered, overdone, or just plain virtual. Cardboard LiveVR offers a live look at a certain part of the world. Besides the obvious novelty, a LiveVR system mounted on a mobile platform could offer unparalleled exploratory experiences: drone pilots with a first-person birds' eye view, anyone?
What it does
Cardboard LiveVR offers a new type of user experience in the field of live video. As you move with Google Cardboard up to your face, a camera mounted on pan and tilt hardware mimics your movement. This in turn gives you a fuller, more customized view of your surroundings.
How I built it
Cardboard LiveVR is a project in two parts. On the user-end, the UI is an HTML/CSS/Javascript implementation of Google Cardboard. Instead of using the Cardboard SDK, Cardboard LiveVR is designed to be able to run on many different smartphone platforms without a need for repackaging or redistribution. Javascript looks for motion events and relays them to the server over HTTP. On the server-side, Cardboard LiveVR is powered first and foremost by a Raspberry Pi running Python, specifically the Flask web framework. As motion events are POSTed to the server, Python and Arduino interact over serial to move a webcam.
Challenges I ran into
Javascript with MotionEvents is not the happiest of pairings. Although horizontal motion was easily understood and integrated, vertical movement led to strange behavior, with the code being unable to understand the difference between movement up and movement down. Because of this, unfortunately, tilt is currently unavailable on Cardboard LiveVR. In addition, general strange behavior plagues the code responsible for handling motion resulting in lefts when there should be rights and vice-versa. Despite a lot of testing, this behavior seems emblematic of using Javascript to do the job of native software.
Accomplishments that I'm proud of
This is the first full hardware hack I've personally seen through to the end. Despite several annoying setbacks (did someone say Linux permission quirks?), the project was actually completed. I also used Javascript somewhat effectively for the first time, despite issues in the way it handles motion. Finally, the piece holding in the small, disused tilt servo is the first thing I've designed and 3D printed myself
What I learned
-Don't use Javascript for motion events -You CAN use HTML and CSS for simple animations in Google Cardboard -Flask doesn't like getting smacked by hundreds of HTTP requests in a matter of seconds -The proper code is '''document.getElementById(whatever)''' and if you accidentally type ID instead of Id, you will be very confused at 1 o'clock in the morning wondering why everything broke -You REALLY shouldn't edit permissions on /etc/ in Linux. ONLY bad things will happen.
What's next for Cardboard LiveVR
Hopefully, Cardboard LiveVR will continue development, perhaps away from Javascript and towards a language that can actually handle motion events. Maybe this sort of idea will one day exist to give drone pilots more well-rounded flight-experiences or to give first-responders a more immersive way to comprehend the situation ahead of them, or maybe it'll just make some kid smile for being the coolest feature ever on an RC car. There really is a world of possibility for the concept.

Log in or sign up for Devpost to join the conversation.