The main goal of this project is to promote and encourage autonomous aviation or unmanned flights, specifically drones, which have many potential use cases like surveillance, parcel delivery, military, search and rescue, aerial photography and mapping, agriculture, and many more. In this project, where the drone's movement is guided using Alexa voice service, the integration of various software services/applications(AWS Lambda, WebSocket API Gateway, and more) is crucial. The below diagram depicts a brief overview of the project
- An IoT-based project where Alexa is used as a VUI(Voice User Interface) to control the drone hands-free
- Developed an Alexa Skill which interacts with end-users on Alexa-enabled devices or Alexa app
- End-to-end communication was achieved via WebSockets and Radio Telemetry
- WebSocket API is built on AWS Lambda and deployed on AWS API Gateway
- Developed an application that runs on a Ground Control Station(GCS) device
- GCS app communicates between drone(using radio telemetry) and Alexa(using WebSockets)
- Radio telemetry was made possible using open-source dronekit-python package built upon low-level MAVLink messaging protocol
- Dronekit-python passes commands to the Drone’s onboard Flight Control Unit(FCU) with installed ArduPilot firmware
- AWS DynamoDB logs input voice commands and stores active WebSocket connection-IDs
- Drone with ArduPilot firmware compatible PixHawk flight controller
- A computer for running a custom ground control station (GCS) software
- SiK Telemetry Radio for communication between the ground station and drone
- Amazon Echo device
- Amazon Web Services AWS { Lambda, API Gateway, DynamoDB }
- DroneKit Python API
- Alexa Skills Kit SDK for Alexa Skill programming
- Voice commands
- Takeoff
- Change altitude
- Fly in a specified direction for a specified distance(in meters)
- Return to launch position
- Know status of drone(mode, distance from home location etc..)
- Geofence
- A cylindrical geofence is drawn centered at the launch location
- Commands which require the drone to fly beyond geofence radius/altitude will be discarded/rejected and not executed
- Geofence radius and altitude are customizable
- Radius and altitude are both measured in meters
Potential future additions
-> Aerial photography using a camera on the drone-> Autonomous missions, surveys, circle and rectangle missions etc
-> Live footage streaming using the camera on drone
-> LTE-powered drone to eliminate limited-range issues