ROVA is a quad copter drone, with inbuilt technologies such as obstacle avoidance, that allow the user to take a ‘perfect selfie’.
I was responsible for the development of both the native iOS and Android application that allows the user to fly the drone using a joystick-like UI. The application also allows users to take images and videos, and perform auto-takeoff and auto-land.
The application communicates to the drone via LAN and uses a typical joystick UI to control the drone.
The ROVA allows the user to live stream at 60FPS 1080P, and can capture images at 1080P with it's 12MP camera.
The user can store captured images & video to the SD card within the drone, or store them on the phone itself.
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.
An already written TCP API communication protocol was followed by the iOS & Android application in order to allow the drone and the iOS / Android application to communicate to each other. Outside of this 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.