ROAM-e is a flying co-axial drone, with onboard facial detection and recognition technology. Once the drone is trained on your face, you can set it up to follow you, and you alone. This is possible since it can distinguish your face from other faces.The application communicated with the drone via LAN, which allowed for responsive joystick control, and other quick actions.
The ROAM-e had two main features, ‘Selfie Mode’ and ‘Joystick Mode’.
Selfie Mode would use the on-board facial recognition technology to follow its user.
Joystick Mode allowed you to control the drone as you would a typical drone, with joysticks.
The on-board facial recognition technology was built upon OpenCV; using C++ rather than Python for it’s low level advantages.
Both iOS and Android applications are native, written in Swift 4 and Kotlin respectively.
The server side application (CMS and API) is written in Laravel 5.
The drone side application, specifically the facial recognition module, was written in C++, using the OpenCV 3 framework. To implement a lower-compute cost for the facial detection recognition, I used SIFT feature detection alongside HAAR facial detection algorithms.
I created a custom TCP communication protocol in order to allow the drone and the iOS / Android application to communicate to each other. Outside of this custom protocol, large blocks of raw MJPEG data was streamed to allow the drone to share its ‘livestream’ to the application.
The infrastructure leverages AWS Elastic Beanstalk, using S3, RDS, and EC2 instances to host the server application. A load balancer instance is used with an AutoScaling group to ensure that the infrastructure is scalable and propagates or terminates EC2 instances depending on the incoming traffic.
The third party tool Uptime Robot was used to get live updates and alerts of the uptime and downtime of the website and the API.