Linear Control Simulations

At Vassar, I took a senior intensive course with Professor Andy Borum on state-space linear control. In this class, we covered ideas such as state feedback, integrators, observers, reference tracking, and optimal control with infinite horizon LQR. With each project below, we focus on one of these ideas (compounded with the previous ideas) to come up with a controller to achieve our control goal.

Each project begins with the differential equations that describe our system. In almost all of these projects, these ODEs are nonlinear. Since this class focused mainly on linear control, we approximate the nonlinear behavior about an equilibrium point. This is achieved by taking jacobians with respect to the state variables and control inputs, which gives us linear ODEs that approximate the system about that equilibrium point. We then represent these linear ODEs in state-space, which we use to calculate control input(s). This input is then fed to ODE45 in MATLAB that solves the nonlinear differential equation. This solution is animated, and we were able to observe the system’s behavior to better intuitively understand how different parameters affect the system dynamics.

Rainbow Road – Using LQR to race segways

In this project, we have a two-wheeled robot whose motion is described by 6 state variables, with 2 control inputs of torque for both wheels. Of these, we are supposing that we are only able to measure 5 of these values, so we use the observer setup from the glider project (below), as well as infinite horizon LQR approach for optimal control. We fine tune the R matrix symmetrically to ensure effort is equal for both wheels, and we also chose values for Q based on the relative importance of each state.

Unpowered flat-plate glider – Using an observer to increase flight distance

In this project, we are simulating the dynamics of a glider described by the flat plate model (no airfoil). Our goal was to increase flight distance given slightly randomized initial conditions. Since this system can only measure 2 out of the 5 state variables that describe the dynamics, we use an observer to estimate the other states to control the glider.

Gravity-assisted robot arm – Tracking a reference trajectory

In this project, we are given a system with two state variables, which are the motor angle, and the joint angle. This project focuses on tracking a reference we choose. In this scenario, our goal was to track a piecewise function with a maximum jump of pi/2 radians for the joint angle.

Space Attitude Control – Controlling a rigid box to rotate about the intermediate axis

In this project, we observe the effects of the tennis racket theorem. The dynamics tell us that a slight perturbation of pure rotation from the intermediate axis throws the rigid box out of stability. In other words, rotation about the intermediate axis is unstable. We add two control inputs to our system, which are torque inputs that can apply torque about an axis. With this setup, we create controllability matrices for each axis to find out which ones are controllable. After ensuring that the intermediate axis is controllable, our goal is to control the box to rotate about its intermediate axis.

Landing Control for a Quad-Rotor – Learning the basics of state feedback by applying a PD controller

In this project, we try to create a landing control for a quad-rotor that experiences nonlinear ground effects. Our goal is for the drone to hover 1mm above the ground within 10%. To accomplish this, we use a PD controller.