Oculus rift. The main objective of the project was to control the drone using virtual reality glasses and a fixed camera system located under the drone. For reasons of convenience of using virtual reality, it was necessary to rethink the project in order to give the cameras the same range of motion as in the Oculus Rift. Thus, the operator who controls the drone is sent a first-person video game view to facilitate his task.
A process that tends to evolve, but is limited by its still too high cost. Our goal is to design an embedded system on a drone. Allows you to reconstruct two video streams, two different cameras to restore a stereoscopic image that can be used by Oculus Rift.
Description of the project. We need to restore two video streams coming from the system from two cameras, which for technical reasons will be located under the drone. This system should allow cameras to be able to transcribe the movement of glasses located on the user’s head. The delay between rendering these movements and the image should be short enough to maximize the user experience.
Data must be sent over the network to get rid of any cable. So, we have implemented this system, which consists of two cameras, driven by two servomotors capable of moving cameras in half-planes in front of the drone. He is enslaved by the linux circuit board, which makes networking possible. It was necessary to present a design that included all equipment in compliance with certain restrictions. Then find out how a virtual reality headset (part program) works to restore various sensor values from a box connected to USB. 3.
VR Jam competition. Hardware and strategy. For this project, we need RaspberryPi 2, which is a single-card processor with an ARM processor under Linux. Its advantage is that it is easily programmable, small (credit card size), has 4 USB ports, a Wi-Fi connection and several contacts for controlling various components. We will need two servomotors, not necessarily very powerful, since the current distribution of the RaspberryPi 2 is limited to 2 amperes. We obviously need two cameras. T
he resolution of Oculus Rift (DK1) is 800 * 600 pixels per eye, it is not necessary to exceed this value. To make the system autonomous, use an external Smartphone-type battery selected from the RaspberryPi 2 power characteristics. These components are described in detail in the appendix. For the rest, it was necessary to imagine and use different tools (3D-printer, laser cutter) to give shape to various details.
Now we will develop in detail the main parts of the project. First, we will talk in detail about the design of the camera system around RaspberryPi, and then about controlling the Oculus Rift to establish a connection between the two modules, and finally, we will finish the section “Plastic support”.
Camera system. We developed a two-camera system capable of reproducing a stereoscopic image in a virtual reality headset. It can also restore the user’s head movements using Oculus Rift. In this part, we will focus on servomotor control and image recovery. Designing the structure was pretty quick (one or two sessions). We made two prototypes because the first was too fragile. It consists of 4 pieces of wood (the choice of wood, because it is light and easy to process with a laser cutter).
It was decided to use the SG90 microservices (available in the application) to power the cameras. Optionally, they do not have much torque (there is no need for a huge torque to move the cameras a few grams), so less energy is consumed. Therefore, we try to save the external battery. These servomotors need special signals (PWM) to make them move to a specific position. They are directly connected to RaspberryPi contacts. Indeed, we did not need to use the map extension to control our two servomotors.
RaspberryPi 2 has enough contacts to drive at least two. These servos are controlled via WiringPi, a C-based library originally available for Arduino to generate various Pulse With Modulation on some of the pins on the board. For the rest, it was necessary to connect the values of the accelerometers with different PWM, corresponding to different positions for the servomotors.