top of page

Duration: Sept 2019 - Dec 2019

Purpose: Project conducted at the UAV Lab at the Indian Institute of Science, Bangalore as part of the Wipro-IISc Research and Innovation Network

Skills: Robotic Operating System, Mavros, Gazebo


Testing out new code and algorithms on an actual drone is dangerous... for the drone and for the people watching. So all new code is tested on simulations first. Software in the loop (SITL) enables the simulation to use the same flight controller firmware present on the actual drone in our simulation, giving us realistic results. The same algorithms and code can then be easily loaded onto the drone with little changes. 

To simplify development of future algorithms, I created a library using Mavros that encapsulates the common operations used in autonomous drone maneuvering.

In this library, the drone is controlled through velocity set-points in body NED frame. Additionally, altitude has been decoupled from motion in the xy plane, and the two are independently controlled, making control and rapid prototyping of autonomous algorithms very simple.

A sample few lines to takeoff a drone, pitch it forward at 1 m/s for 5 seconds and land would be -

VelocityController Iris;

Sourcing from the popular Erle Robotics simulation for ROS Indigo, the simulator has been adapted to work with ROS Kinetic. The simulator uses the Ardupilot SITL Gazebo Plugin for communication with the PX4 firmware, and a model of the Erlecopter.

The simulated drone has a downward and forward facing camera which has been used in simulations of other projects such as Precision Landing on a Moving Target.

I have also used this library to create a simple keyboard teleoperation control for drones that can takeoff, land, move them around and vary their speed.


This is still fairly unstable, and although it has been tested on our drone configurations used at the UAV lab at IISc, different versions of firmware or different versions of ROS would require modification before this can work. It also is not fully robust with error handling and is best used in a controlled environment.


bottom of page