Ajay Shankar


I am currently a PhD candidate in the Department of Computer Science at the University of Nebraska-Lincoln (UNL), USA. I work in the Nimbus Lab, where I research agile and intelligent aerial vehicles (multicopters). I am co-advised by Dr Carrick Detweiler & Dr Sebastian Elbaum (now at Univ. of Virginia, USA), and have fortunate collaborations with Dr Adam Houston (Earth and Atmospheric Sciences, UNL). Although my work falls primarily under software autonomy, during the course of system development, I often build and interface low-level hardware sensor and actuator systems (electro/mechanical).

You can find more about my work here on this page, jump to some of my projects on GitHub, or scroll through my articles on Google Scholar.

I enjoy bicycle trips all around the Great Plains in Nebraska, and often pretend to be a good photographer of the Prairies.

(this->username) at (cse · unl · edu)
223 Schorr Center, 1101 T St,
Lincoln, NE, USA - 68858.

Research Outlook

The core of my research focuses on furthering the autonomy of aerial vehicles as they interact physically with their environment. This capability of tactile interactions makes them far more useful agents as they handle objects, transfer cargo, and undertake long-range autonomous missions. The notion of aerial interactions is pushed further by considering interactions between two UASs while they are airborne. In our recent work, we've developed systems, mechanisms and algorithms that have allowed two multicopters to transfer a (cargo) payload between them without having to land. We've also extended our approach to let them dock mid-air.

This paradigm of bringing UASs closer and closer to the world creates novel opportunities that lets them sense the atmosphere, measure properties of air and water, and even explore previously unmodeled phenomena in real time.


Aerial Docking

Aerial Payload Transfer

Parachute Recovery

Environmental Sensing

More ..

Open Source & Reports

Freyja is a flight control stack for flying precise and aggressive trajectories using a multirotor (available on GitHub). Written entirely in C++/ROS, it packages outer-loop optimal state regulators (LQR/LQG) and state estimators (EKF/Kalman) as well as communication interfaces to common autopilots (ArduPilot/px4, Ascending Technologies). Besides handling position and velocity targets as a feedback regulator, the system is capable of handling acceleration feed-forward commands (using the differential flatness of the multirotor system), and also includes an optimal full-state observer that additionally measures external forces acting on the system (such as wind and payload offsets). As a result, we are able to fly precise & aggressive trajectories outdoors under moderately-high wind speeds (by interfacing with RTK GPS systems). An example video at the top of this page shows a multicopter flying a circular trajectory at speeds exceeding 5m/s under wind speeds of over 25km/h (~15mi/h, ~7m/s). The highest translational speed controlled by Freyja so far is ~9.5m/s. Freyja is at the backbone of several projects listed here, and many others within the Nimbus Lab.

Some of the technical components of my work have evolved into independent projects which may find broader use-cases. With inspiration from former colleagues, I've developed a high-fidelity physics-based simulator for multirotor systems called Freyja-Simulator (available on GitHub). The simulator is built on Matlab/Simulink blocksets, and provides library blocks for a generic multirotor, an LQR feedback control system, and some other physical objects (such as cables) that can be attached to each other. This complements the C++/ROS implementation for Freyja, and the trajectories developed here in Matlab can be translated directly over to C++.
screenshot from Frejya simulator

I've contributed to a GPS RTK plugin that enables autopilot reporting of RTK baseline & base-station data already codified in mavlink:common. The plugin handler publishes this data over a standard ROS topic.
I've also authored and currently maintain a Nimbus Lab fork of one of the largest open-source project stacks for aerial systems, ArduPilot. The fork addresses a key limitation of the Copter flight stack: direct raw-thrust control with battery compensation. This modified "computer-flight mode" firmware is used extensively within the Nimbus Lab (and a few subscribers outside), and is an essential component of our LQG/LQR control architecture.

Funding, Services