Software Development

Company: TinyOwl/Runnr June 2014 – present
TinyOwl on iOS

I joined TinyOwl as the first employee with the vision of solving ‘What should I eat?’. We started by building an Android app that allows you to order food from nearby restaurants. I was responsible for writing most of the non-UI modules such as database access, networking, data sync (The app worked offline in those days). I also participated in structuring backend APIs. When the Android app got stable, I built the iOS app and formed a team to maintain it.

Currently, as an engineering manager, I drive a full stack team of Android, iOS and backend (ROR) devs. I focus on increasing the productivity of the team. On a technical front, I create patterns to make development faster & bug-free. Some of my work:

In my experience, I have found that the challenge in developing apps lies in making development faster and optimizing performance. I strongly focus on solving these challenges. I recently started blogging about these techniques here.

Links: android, ios

Masters Project | Energy Optimal Path Planning in Mobile Robots

Guide: Prof. Leena Vachhani, Systems and Control Engineering, IIT Bombay July 2013 – July 2014
Co-guide: Prof. Rangan Banerjee, Energy Science and Engineering, IIT Bombay
Rviz in ROS

Objective: To develop strategies for minimizing energy consumption in autonomous mobile robot navigation.

In stage 1, I implemented the energy minimizing strategy proposed in the paper ‘Minimizing Energy Consumption of Wheeled Mobile Robots via Optimal Motion Planning’ by S. Liu and D. Sun. The method uses as A-star search algorithm variant which considers energy based constraints (friction) in its cost function and a trajectory planner which minimizes energy consumption by optimizing velocity and arrival time parameters at the waypoints. I used ROS(Robot Operating System) as the platform for this project. For simulation, I used Gazebo. It was found that the resultant waypoint selection from the method wasn’t optimal. Results have been published here.

In stage 2, I improved waypoint selection by implementing A, Theta techniques to search on edges instead of points. Searching on edges allowed the cost function to consider costs for turning. I also developed an energy efficient trajectory planning technique which had linear computational complexity (vs exponential in existing method) and 14.8% more average energy savings.

I have used the software Gazebo for simulating a differential drive vehicle. Navigation goals are specified using Rviz from ROS. In this demo, the robot generates a smooth trajectory avoiding obstacles and follows it.

Links: simulation demo, thesis, publication

Co-ordination of Autonomous Vehicles

Guide: Prof. Arpita Sinha, Systems and Control Engineering, IIT Bombay September - October 2013
Simulation screenshot

In the course Motion Planning and Coordination of Autonomous Vehicles, I worked on a project on multi-agent systems which targeted the problem of autonomous driving of a vehicle in urban/city block environments with other moving vehicles and pedestrians. I implemented a planning technique in which the vehicle decides the choice of turn at the intersection based on the probability of collision with the anticipated future trajectories of randomly moving obstacle vehicles.

Links: demo video

Intelligent Ground Vehicle Competition

December 2012 - June 2014
Pushpak 2 at IGVC 2013

I was part of my institute’s team for Intelligent Ground Vehicle Competition, an international robotics competition, conducted by Oakland University, Michigan. The goal of this competition is to build a vehicle which will autonomously navigate through an obstacle course by detecting white lines, avoiding objects, following GPS waypoints. The competition is held in June every year.


We secured 7th position in the AutoNav Challenge with our vehicle “Pushpak 2”. My work involved implementing modules for communicating with our autonomous vehicle based on Joint Architecture for Unmanned Systems (JAUS). The base platform for our software was LabVIEW. The module for JAUS was implemented in C++ and it was called by importing the DLL in LabVIEW.


We shifted our platform to ROS. We rebuilt all components of the software. We made major improvements in the navigation strategy. Our work involved implementing:

Links: IGVC home, team website, design report, basic arena video

Embedded Systems Project | Autonomous Dancing Hexapod

Guides: Prof. Kavi Arya, Prof. Krithi Ramamritham September - November 2012
Department of Computer Science and Engineering, IIT Bombay
Autonomous Dancing Hexapod

As part of the course CS 684 Embedded Systems, I implemented the unique idea of hexapod performing dance moves spontaneously to match the music. Six different dance moves were designed. The major challenge was mapping the steps in a dance move to the beats of the music track based on the motion constraints of the hexapod.

The hexapod used was Firebird V. An Android application was developed from which the user can select the music track. The communication between the hexapod and Android phone happened via Bluetooth.

Links: demo video, project report

Summer Internship 2012 | Parallel Programming

Guide: Prof. Michèle Gouiffès May - July 2012
Institut d’Electronique Fondamentale, Université Paris SUD XI

This project involved accelerating the covariance tracking code by using Single Instruction Multiple Data (SIMD) instruction set (SSE by Intel). Using SIMD, a vector data operation can be performed in a single instruction, reducing the overall computation time. Thus, an operation of adding two vectors of 4 integers element by element can be completed using only a single instruction. Different modules of the code were accelerated separately. Results have been documented in the report.

Links: project report

Summer Internship 2011 | Image Processing

Guides: Prof. Michèle Gouiffès, Prof. Samia Bouchafa May - July 2011
Institut d’Electronique Fondamentale, Université Paris SUD XI
Montage of tracked objects in an image sequence

Covariance Tracking

This project involved developing a code to track a colored non-rigid object from an image sequence using the Covariance Tracking algorithm. The Covariance Tracking algorithm is a technique used to improve the robustness and adaptability of surveillance tracking systems in their applications in aerial surveillance and traffic management. Covariance Tracking involves the computation of covariance matrix of different features for storing the object model. The object is tracked by computing the similarity between the covariance matrix in the search window with the model covariance matrix. One of the parts of this project was to implement model update strategies to increase the accuracy of the method.

Links: project report