Motion-based Drone Simulation Controller


Controlling Drone Simulation with a Drone IMU

Spatial Data Scientist: Logan Gall

Degree Program: Masters of Geographic Information Science

Overview

Learning how to fly drones is difficult. Typical drone controllers use joysticks that are not intuitive to understand on first attempts. To try and lower this barrier to entry, I developed a way of controlling a drone simulator using… a real drone! Normally, when a flying drone gets an input, it uses built in sensors to spin its motors and make the drone move in the right direction. In this scenario, we are flipping the script and using the drone’s current orientation as input. With a fast Python script, I was able to communicate with the drone and get its current orientation. When a user tilts and rotates the drone, the motion directly corresponds to game inputs. This project provides a new way of interacting with technology beyond the typical gamepad or mouse and keyboard. Using a real life device for controls allows for intuitive user control that could be applied for advanced input devices and entertaining education.

Using a Physical Drone to Control a Virtual Drone

Built into every drone is an Inertial Measurement Unit (IMU). This has an accelerometer and gyroscope to figure out what direction the drone is facing. Using the Multi-Wii Serial Protocol (originally developed for Nintendo Wii controllers!), we can communicate directly with the drone within a Python script. We pull the drone’s orientation, and standardize the angles. With these values, we then emulate an XBox controller to the computer, giving real-time game control inputs. The drone’s IMU is not good at relative motion, so we have to use an additional controller for throttle control. I used two large buttons on the XBox adaptive controller to allow a user to quickly tap and change how fast the drone is flying.


Project Advising

Dr. Eric Shook, Director, GeoCommons