This is a 3-axis camera gimbal I'm been working on that is controlled via an Oculus Rift. The gimbal tracking follows the Rift's head tracking, and sends the stereoscopic video feed to the head-mounted display in real-time. The cameras used are each a PiNoir paired with a Raspberry Pi. The gimbal servos are controlled via PMW channels on a PIC32 processor. The PC software I'm working on captures the dual video feeds and applies barrel distortion before combining them into a single video feed for the Oculus. It also sends the orientation data to the PIC32.
In the previous demo videos of the gimbal, I was using a separate platform (PIC32) to operate the servos. To consolidate resources, and simplify design, I wanted to transfer the servo operation to one of the Raspberry Pis already on the gimbal.
A few months ago, I experimented with using the Raspberry Pi's IO pins to run servos. The code I put together for that can be seen HERE. I'm using IO pins 4, 17, and 18 to operate the X, Y, and Z axis servos, respectively. I used protoboard to create a simple breakout board between the Raspberry Pi and the servos. External power was used for the servos. Here is the initial design sketch I put together:
In the final design, I decided to add a power LED and status LEDs for each of the servo channels. I also flipped the servo connectors as compared to the above sketch. Here is the finished board with everything connected:
Right now the software is converting the tracking position for each servo into an 8-bit value to transport from the Oculus Rift to the Raspberry Pi. The result of this is somewhat choppy motion in the servos, so I will be switching to use 16-bit values next time I touch the software. Besides that, it's working well and I'm very happy with the result. The next step is to figure out how to mount this breakout board to the gimbal.