The motherboard of the Owl is a Raspberry Pi compute module and board, chosen as it offers two DMA camera inputs.
The two video streams are combined into a single 1280 x 480 stream, which is then communicated to a host computer via an RTP interface over USB in the MJPEG format. They are not synchronised. The cameras can pan and tilt independently via the four high-speed MKS DS65K servos, each capable of a no-load angular velocity of 0.203 sec/60° at 4.8V (source: www.mksservosusa.com). This equates too approximately 300°s-1.
Observational data has shown that human eye saccades averages 160°s-1 (Abrams et al., 1989), but can reach a maximum angular velocity of approximately 900°/s (Wilson etal., 1993), thus the robotic analogue cannot capture the full speed of the human visual system. However, 300°/s is satisfactory for the experiments planned.
The neck of the robot can rotate about one axis with a Corona DS558HV servo, offering a range of 160 degrees and a top no-load angular velocity of 300°s-1 (source: hobbyking.com). This velocity will be lower due to the mass of the owl head, but still satisfactory for target tracking. Servos are controlled by the Pi compute module, however, the PWM drive values are generated by the host computer.
The Pi compute module runs a python script which creates an IP socket over a USB connection via a TCP protocol. The script waits for a 24-byte packet, which contains five 4-digit decimal integer numbers in an ASCII string separated by spaces, these are the new servo positions instructed by the host computer.
Software limits are applied to these new positions so that the servos do not over actuate to a state where the camera ribbon cables are damaged.
The host computer supports the main software, programmed in C++ with the OpenCV 3.1 library. This set up will allow for faster computations, compared to just using the on-board Pi compute module. Cameras were calibrated using OpenCV functions to correct for intrinsic distortions.