Carlos Morales

I'm a first year master's student at the University of Washington. I'm passionate about aerospace Guidance Navigation and Control. Specifically, I'm interested in applying convex optimization to solve challenging trajectory optimization and control problems.

Projects

Mars Hypersonic Entry Guidance

Recentely, I've been researching Martian hypersonic entry guidance using Sequential Convex Programming (SCP) methods, with a focus on bridging the gap between cutting-edge optimization theory and practical implementation. I'm codeveloping a reentry guidance tool that deploys our lab’s SCP methods while accommodating industry-ready aerodynamic and atmospheric modeling via look-up tables and interpolation from realistic datasets. My goal is to use this framework to design real flight trajectories one day. Above is an example trajectory generated for the Mars Science Laboratory (MSL) with publically available mission data and continuous time maximum heat rate satisfaction. This continuous time constraint formulation allows us satisfy mission critical constraints over coarse temporal grids, and without mesh refinement heursitics.
Github: prelim_msl_ctcs

6-DOF Powered Descent Guidance Using Convex Optimization

This is an implementation of a Sequential Convex Programming approach for real-time 6-DOF powered descent trajectory generation. It works by leveraging the efficieny of interior point methods by solving a series of convex subproblems that converge to a solution to the original nonconvex problem. To obtain a subproblem, the dynamics are linearized and discretized about a reference trajectory along with the remaining nonconvex constraints. This problem now describes a discrete-time linear time varying system which is convex and can be solved reliably using readily available convex solvers. Once solved, the reference trajectory is updated and the next subproblem is solved using the new reference trajectory. This process continues until the solution converges to a dynamically feasible solution. Interestingly, the intial trajectory guess does not have to be particularly great, a simple linear interpolation between the intial and final state can handle a wide-range of intial conditions.
Reference: Successive Convexification for 6-DoF Mars Rocket Powered Landing with Free-Final-Time
Github: scp_descent_guidance

Lossless Convexification Model-Predictive Control

This is an implementation of the Lossless Convexification technique for generating fuel-optimal trajectories for powered descent guidance problems developed by Behçet Açikmeşe. Due to non-convex thrust constraints imposed by requiring a minimum thrust vector, this optimization problem is inherently non-convex. Meaning, a local optimal solution is not gauranteed to be the global optimum. However, by the introduction of slack variables and careful reformulation of these constraints, the original problem can be "relaxed" into a new convex problem which can be solved quickly and reliably with existing solvers. Importantly, Açikmeşe and Ploen showed that the optimal solution to the new 'relaxed' problem is infact the optimal solution to the original problem.

Due to the efficieny of interior-point methods for convex optimization and the gauranteed convergence of the Lossless Convexification (lcvx) algorithm, lcvx can be implemented in a real-time Model Predictive Control (MPC) framework. This works be repeatedly solving the problem at each time step and inacting the imidiate desired control from the optimal trajectory. MPC allows you to account for disturbance and uncertainties because you are constantly re-solving the problem, treating your current state as the new initial condition. To implement this in a 6-DOF landing problem an additional attitude controller is needed to point the rocket along the desired thrust vector using the engine gimbals. A key assumption is that the attitude dynamics are much faster than the translational dynamics such that the rocket can quickly achieve the desired thrust vector from the guidance system.
Reference: Convex Programming Approach to Powered Descent Guidance for Mars Landing
Github: lcvx_descent_guidance lcvx with MPC: lcvx_mpc

Active Fin-Controlled Rocket

The goal of this project was to apply aerodynamic control theory to stabilize the attitude of a model rocket during ascent. I've developed an embedded quaternion-based attitude estimation algorithm using integrated gyro measurements (dead reckoning). Since rockets experience large amounts of acceleration, the assumptions made by traditional 9-DOF sensor fusion algorithms is broken. For this reason I've written my own attitude estimator by integration performed with a second order taylor expansion of the quaternion kinematic matrix exponential. I've also designed and manufactured custom actuators to control aft fins used to aerodynamically stabilize rocket's yaw, pitch, and roll. I developed 6-DOF aerodynamic flight control simulations using the modified semi-empirical aerodynamic models from the Barrowman equations, and used these simulations to optimize, design, and tune control gains before flight. The rocket was successfully launched and achieved a very stable attitude throughout its first flight. The plan for the future is to launch with larger motors and include data logging to better validate the control response.
Github: fin_rocket_flight_code

Optimal State-Space Control for Inverted Pendulum

Designed and built an inverted pendulum benchmark system to implement state space control methods. Performed linearization of the nonlinear equations of motion for the cart-pole system . Implemented Full-State Feedback with Linear Quadratic Regulator (LQR) to stabilize pendulum at its vertical equilibrium. System modelling and simulation performed with MATLAB, and the control law was implemented in C++.
Github: inverted_pend

2D Compressible Euler Equation CFD Solver

Programmed a CFD solver for the inviscid 2D Euler equations using a finite volume Lax Friedrich scheme with a Runge-Kutta 2 time integration from scratch using Python. Problem formulation consisted of airflow around an inclined flat plate given a variable angle of attack. The plate was discretized by a line-drawing algorithm used to define impermeable wall boundary conditions for each grid cell making up the plate.

Bi-copter Attitude Stabilization

Rigid body dynamics of a bi-modal drone simulated in MATLAB and SIMULINK using Euler Angle attitude representation. Attitude integrated in time using Runge-Kutta numerical integration of the Euler Angle kinematic differential equations. Successful attitude stabilization by coupled PID controllers for yaw, pitch, and roll controlling rotor thrust vector angles.

VEX Robotics

Led an interdisciplinary team to develop highly successful electromechanical robots that competed at an international level for over four years. Implemented autonomous control systems for accurate motion control of both holonomic and non-holonomic drive trains using PID, Odometry Position Tracking, Pure Pursuit, and Motion Profiling. Developed autonomous motion control libraries in C++ for incoming Purdue students to use the existing control algorithms we had already developed and tested. World Championship 2018-2019 (Ranked 1st in Division, 1st in Operator Skills, Division Finalists). Kalahari 2020 National Signature Event Tournament Champions.

Contact & Links

Phone:

+1 (317)-670-0841

Email:

carlosm3@uw.edu