An amalgamation of engineering and artistry

ACSL Research Work


I started my Master's studies at Virginia Tech in August 2021. I am specializing in RADS (Robotics, Autonomous, and Dynamical Systems) thrust area in the Dept. of Mechanical Engineering. I was taking Dr. Andrea L'Afflitto's course on Industrial Robotics and subsequently I joined his Advanced Control Systems Lab where I was given the task to work on the robust and adaptive control of Unmanned Aerial Systems (UAS). This is my weekly log of the work I did in that lab in reverse chronology.

ACSL Weekly Lab Meetings Log

Lab Meeting 14 - 08th December 2021 (Special Meeting)

  • Showed my approach so far and resolve symbolic errors.


  • That's all folks! Let's stop here. We are not a good match.

Lab Meeting 13 - 06th December 2021

  • Resolved many errors. Stuck with pole placement for now.

Lab Meeting 12 - 19th November 2021

  • Done calculating the robustness parameters
  • Observer design is in work
  • Book-keeping for
    • Classical output feedback linearization (with full-state information)
    • Robust feedback linearization with full-state information
    • Robust feedback linearization without full-state information (linear observer design)


  • There are several ways to design 'v' (virtual input) - pole placement is one technique (used in the provided code), then there are LQR, LQG, H-Infinity, etc.
  • It's all just a matter of plugging in the formula.
  • There are only a couple of meetings left in this semester. Want to see the result before that.

Lab Meeting 11 - 10th November 2021

  • Calculated the robustness parameters
  • Stuck with matrix dimensions of alpha_r and beta_r
  • Now things have started to make sense - states, linearized states, need for linearization, need for robustness, constructing missing states through observability


  • Checked the MATLAB code
  • MATLAB simulation code for spiralling quadcopter Quadrotor Output Feedback Linearization Simulation_10112021 sent by Julius
  • Work on the graph

Lab Meeting 10 - 5th November 2021

  • Completed Nonlinear System lecture series (important ones)
  • Calculated diffeomorphism in the Output Feedback Linearization code
  • Finished reading the paper Robust Output Feedback Linearization Without Full State Information. Need to understand the concept of observability better
  • Went through the example MATLAB code for magnetic bearing. It needs a few correction, so working on that.
  • Need time to implement it for the UAV


  • Gave a brief overview of observability
  • Show the comparison graph in the next meeting - Using the states as earlier vs. states obtained through robust output linearization

Lab Meeting 9 - 27th October 2021

  • While the Output Feedback Linearization concept was relatively easy, understanding Robust Output Feedback Linearization needs some context of Nonlinear Systems, hence I focused more on mathematical part this. Understood the why of linearization (and Lie derivatives)
  • Nonlinear Systems tutorials on YouTube by Topperly - Almost done with it


  • While understanding the 'why' of things is alright, I have been given a specific objective to accomplish. I should focus more on that. The semester will be over in \~20 days. Move fast.

Lab Meeting 8 - 20th October 2021 (Zoom)

  • Reading about Diffeomorphism
  • Going through Robust Output Feedback Linearization - theory and code
  • Couldn't make much progress because of mid-sem
  • Nonlinear systems lectures on YouTube - Topperly. Currently on phase-plane analysis


  • Propose intiatives, ask questions and decide if something is better/more feasible or not - that's how you outline a thesis
  • Chris - Integrating ailerons and rudder in Quad Biplane. Before directly jumping onto the MATLAB simulation, go through Grant's and Sean's code and recreate the mission profile with estimated moment we can get from these control surfaces (confirm)
  • Paul - Observe space through voxel maps, identify the center of the object of interest. You should be able to tell that this set of voxels is occupied by this object
  • Julius - Oct Tree algorithm, explored vs. unexplored voxels. To reduce computational effort, ignore bins which are more than 60% explored.

Lab Meeting 7 - 13th October 2021

  • Understood the theory of output feedback linearization (Khalil's chapter 13 and lecture notes)
  • Went to couple of initial chapters of the Khalil's book to understand the mathematical representation of non-linear systems
  • Went through the code line by line and annotated. Wrote down the equations and correlated it with quadcopter tutorial paper


  • Robust Output Feedback Linearization paper and code for DC motor sent by Julius
  • Once done with the code validation, move on to computing \(\ddot{x}\) and \(\dddot{x}\) of the linearized states through the provided code (custom modifications required)
  • Run UAV simulation and compare the two cases side by side -
  • Estimated \(\ddot{x}\) and \(\dddot{x}\)
  • \(\ddot{x}\) and \(\dddot{x}\) obtained from code. Ideally, with the same aircraft and same reference trajectory, it should do the same thing when the same physical quantities are calculated by 2 different control methods.
  • Linearized states = \(
    \begin{bmatrix} r \\ \dot{r} \\ \ddot{r} \\ \dddot{r} \\ \phi \\ \dot{\phi} \end{bmatrix}

Miscellaneous (in response to Chris's work)

  • Keep documentation on every decision - why did I arrive at a certain configuration, trade-offs considered, comparisons with alternate configuration, cost-benefit analysis, etc. (mainly for hardware specifications)
  • Compare the performance of the UAV in multiple hardware configuration - battery, propeller, ailerons, rudder, etc.

Lab Meeting 6 - 6th October 2021

  • Julius sent the MATLAB file output_feedback_linearization_outer_loop.m, lecture slides AOE5344.Lecture 18: Multi-Input/Multi-Output Linearization and Hassan-k-khalil-nonlinear-systems book.
  • Mail sent to Dr. L'Afflitto outlining the immediate objectives
  • Prof. told to help Julius on his vision-based project. Continue familiarizing with the Flight Stack and help Paul


  • Learn operating 3D printer in the lab. Go through Lab Manual.
  • Discussion on inner loop, outer loop, Lyapunov function - in response to Diksha's work

Lab Meeting 5 - 1st October 2021 (Zoom)

  • Meeting postponed from 29th September
  • Further reading the tutorial paper
  • Further reading Dr. L'Afflitto's A Mathematical Perspective on Flight Dynamics and Control
  • Going through Grant's thesis
  • Sat with Diksha and went through the MRAC codes
  • Ask about the textbooks on Flight Dynamics and Control


  • Not satisfied with my research performance
  • Need to push myself

Immediate Objectives (as stated in email reply)-

  • Strengthen the theory part for the control algorithms (H-infinity, MRAC, Output Feedback Linearization).
  • Go through the entire latest Flight Stack Code (special emphasis on PIXHAWK_INTERFACE.cpp, MOCAP.cpp and CONTROL.cpp), understand the functions, tweak parameters and see how it actually affects flights (through flight test).
  • If possible, be there for every flight test with Chris and Diksha.
  • Julius informed me that Chris has previously worked on the Shipboard Landing controller, so I asked him to send the relevant code base so that I can understand what has been done already. This has not come up in my previous conversation with him. He had sent me some lecture notes to go through. Today, Julius sent me the code and set some specific objectives for code validation, so I will get started on that right away.
  • Learn to perform flight simulations on my own - numerical simulations, Hardware-In-the-Loop simulations and Flight Test (Also, look for a suitable graphic simulator).

Lab Meeting 4 - 22nd September 2021 (Zoom)

  • Flight testing on Friday
  • Going through Lavretsky's book


  • Grant's and Sean's theses sent

Lab Meeting 3 - 15th September 2021

  • Further reading the paper
  • Non-linear control system lectures on YouTube and Khalil's book
  • Talked to Chris about the last Sunday's flight test


  • Julius suggested an idea to use edge detection/computer vision to detect shelter
  • Thesis idea - Landing pad pattern detection
  • Shipboard landing or landing on a moving vehicle

Lab Meeting 2 - 8th September 2021

  • Reading the tutorial paper - An Introduction to Nonlinear Robust Control for Unmanned Quadrotor Aircraft
  • Control system lectures for the background
  • Diksha is isolating, so couldn't perform the test flight
  • Talked to Julius about extra resources I should refer to


  • Read Lavretsky's book for MRAC theory. Start with chapter 9 (scalar and MIMO cases) and then move to chapter 10 (output-feedback case)
  • Code sent for MRAC (3 zip files)
  • Learn flight test. See your code in action.

Lab Meeting 1 - 2nd September 2021 (Zoom)

A Guidance System for Tactical Autonomous Unmanned Aerial Vehicles
Advanced Control Systems Lab, Virginia Tech


  • Tactical behaviour to multi-rotor unmanned aerial vehicles (UAVs)
  • Assumption - neither deterministic nor stochastic information on the opponents is available
  • The system comprises of -

    • optimization-based path planner
    • a quadratic programming-based algorithm to reconstruct collision avoidance constraints from voxel maps
    • a trajectory planner (which implements a fast model predictive control algorithm)
  • The proposed guidance system allows an autonomous vehicle to reach a goal set, whose position relative to the vehicle's initial position is given, without any prior knowledge of the environment

  • Tactical mechanism -

    • House mice inspired - Coasting obstacles i.e following a reference trajectory that leads the UAV to the goal set and which is sufficiently close to the obstacles such as walls, pillars, and other similar environmental features.
    • Regulate the UAV's velocity according to its distance from the obstacles' set. If the UAV is shielded by some obstacle, then it should proceed slowly to allow the navigation system to product a more accurate obstacles' map. If no obstacle conceals the vehicle's position, then the UAV should proceed as fast as possible.
  • Reckless (predictable trajectory) Vs. Tactical behavior (unpredictable trajectory)

  • 9 user-defined parameters that can be set a priori

  • Objective - an optimization-based path planner and a model predictive control algorithm for trajectory planning


  • Warm start
  • Affine constraint function
  • Difference between path planning and trajectory planning


  • Focus on the control algorithms part
  • Work with Diksha and Chris on actual flight test. Become familiar with the end-to-end pipeline for flight testing.

Lab Meeting with Chris on Flight Stack - 28th August 2021

  • Setting up Vicon Tracker software
  • MoCap camera calibration
  • Defining the origin
  • Camera masking
  • Object tracking
  • SSHing in to Odroid via PuTTY
  • Remote debugging and upload via winSCP
  • Couldn't fly the drone because of missing parameters
  • Flight stack code debugging - syntax errors, function referencing, changing double to float