top of page
MicrosoftTeams-image_edited_edited.png

Hello

I'm a graduate student at the University of Southern California, deeply passionate about robotics. My mission is to design and develop controllers for underactuated systems, empowering them to make informed decisions in rapidly changing, dynamic situations.

Fabrication

3D Printing, SolidWorks, Spark Plasma Sintering

Skills

Control

PID, LQR, MPC, WBC, TO, ROS-control

Tools

C++, Git, MATLAB, Simulink, Gazebo, Linux, Python

Education

August 2022 - May 2024

University of Southern California

Los Angeles, CA

Master of Science in Aerospace and Mechanical Engineering - Dynamics and Control

August 2017 - May 2022

Cleveland State University

Cleveland, OH

Bachelor of Science in Mechanical Engineering 

Dynamic Robotics and Control Labratory

Research Engineer

August 2022 - Present

At the Dynamic Robotics and Control Laboratory, I have been at the forefront of pioneering model predictive control (MPC) systems for Hector, a state-of-the-art 10-degree-of-freedom bipedal robot. Hector is built upon the robust Unitree A1 hardware platform. A significant part of my role involves creating and refining the simulation interface, leveraging ROS-control and Gazebo 11 for physics simulation. All our developmental work takes place in a Linux Ubuntu 20.04 environment.

 

My core mission at DRCL is clear: To empower Hector with advanced decision-making capabilities. This ensures the robot can execute highly dynamic movements seamlessly, both in simulations and in real-time on the physical hardware.

Key Projects at DRCL:

  1. Robust balancing with a focus on disturbance rejection

  2. Walking dynamics and control

  3. Advanced jumping methods

How people see Hector:

Hector_edited.jpg

How I see Hector:

hector2.png

Robust Balancing
Project

02

How to achieve robust balancing?

  1. Initial Approach - Quadratic Program: We began with a straightforward approach by tackling the linearized dynamics through a quadratic program. The result? A system capable of responding with appropriate inputs. However, this method lacked robustness; it wasn't adept at planning and reacting to external disturbances

  2. Model Predictive Controller (MPC): Building upon the initial model's shortcomings, we designed an MPC to enhance disturbance rejection. By forecasting a viable solution spanning the next 10 time intervals, we established a controller that showcased marked robustness against disturbances

  3. Whole-Body Controller Integration: To further refine command tracking, we implemented a whole-body controller. This controller ingests the MPC's ground reaction force solutions as inputs. It then optimizes these solutions, leveraging the floating base dynamics computed by the Pinocchio C++ library. The culmination of this process results in mapped optimized joint torques, delivering superior command accuracy

03

What are the results?

  1. MPC vs. QP: When tested on hardware, the Model Predictive Controller (MPC) significantly outperformed the Quadratic Program (QP) approach. Its robust performance was a clear testament to its efficacy.

  2. Whole-Body Controller (WBC) in Simulation: While the MPC excelled in hardware tests, the WBC displayed commendable robustness in simulation settings. When tasked with a height command, the WBC slashed the pitch angle error by over 50% compared to the MPC. This improvement in tracking error was noteworthy.

  3. Decision on WBC Implementation: Despite the WBC's impressive simulation results, we decided against its deployment on hardware for balancing purposes. The rationale? Preserving computation time. While the gains in accuracy were significant, we opted for the efficiency and robustness of the MPC in real-world applications.

ezgif.com-crop (3).gif
ezgif.com-crop(3).gif

01

Why robust balancing?

At the heart of any dynamic motion in bipedal robots lies the essential skill of robust balancing. Before delving into intricate movements, it's imperative to perfect the art of balancing in a robot's nominal configuration. By focusing on this foundational aspect, we can delve deep into the system dynamics. It provides a hands-on opportunity to intimately understand the intricacies and nuances of our robotic system.

Walking Dynamics and Control
Project

For a bipedal robot, moving from point A to B isn't as simple as it might seem. Despite our intuitive understanding of walking, effectively controlling such movement is complex. We define walking as a gait where one foot remains stationary in contact, while the other swings, adhering to a set trajectory.

How to achieve walking?

  1. Leveraging the MPC Framework: Building upon the established MPC framework for Hector, we incorporated walking gait constraints. This was achieved by setting the swing foot force to zero within the QP solver.

  2. Optimization via Ground Reaction Force and Moment: With one foot's ground reaction force being zero, the computational problem is essentially halved. I developed an algorithm to pinpoint the swing foot, subsequently eliminating all constraints and dynamics related to that foot. This optimization significantly cuts down on computation time.

  3. Swing Foot Trajectory & Control: To guide the movement of the swing foot, we employ a bezier curve to craft its desired trajectory. This trajectory is then regulated with precision using a Proportional-Derivative (PD) controller.

03

What are the results?

  1. Walking Capability: Hector successfully achieved in-place stepping and forward walking, reaching top speeds of approximately 0.3 m/s

  2. Efficiency Improvements: Through the MPC algorithm, I managed to reduce the solve time dramatically. Initially at ~10 ms (which made real-time computations unfeasible), I brought it down to an average of ~2.5 ms, enabling real-time processing

  3. Ongoing Challenges: Hector's walking range is currently limited due to state estimation errors. I am actively addressing this by simulating a more accurate Inertial Measurement Unit (IMU) in Gazebo, which aligns closely with Hector's built-in IMU

ezgif.com-crop (7).gif
ezgif.com-crop (4).gif

01

Why walking?

02

Advanced Jumping Methods
Project

01

Why jumping?

Jumping capability in bipedal systems represents a pinnacle in mobility and robustness. Testing the upper limits of Hector's locomotion capabilities necessitates achieving such advanced maneuvers

02

Achieving advanced jumping methods involves a multifaceted approach. We segment the process into three crucial phases:

  1. Prejump Phase: Setting up the robot for the initial jump.

  2. Flight Phase: The robot's airborne trajectory.

  3. Landing Phase: Ensuring a stable and controlled landing.

Given the complex, non-linear nature of this challenge, we opted to compute trajectories offline:

  • We employ nonlinear solvers like Casadi to articulate the nonlinear dynamics.

  • Using MATLAB, we calculate the desired joint angles, velocities, and feed-forward torques.

  • I then interpolate this data to fit our system's requirement of 1000 Hz.

  • Finally, this information is directed to the motor's Proportional-Derivative (PD) controller to execute the jump.

03

What are the results?

Hector demonstrated strong performance in both the pre-jump and flight phases. Currently, we are refining the landing controller. Impressively, Hector achieved a jump height of 0.3 m, which is half its total height, while maintaining minimal position tracking errors. However, we've encountered challenges: the motors struggle to concurrently track high velocities and torques. Even with conservative power constraints established in the TO problem, this remains an active issue I am diligently addressing.

ezgif.com-crop (8).gif
ezgif.com-video-to-gif (6).gif

How to achieve jumping?

Robot Dynamics and Control Course Project

Spring 2023

Together with my team, we undertook the challenge of developing a controller for the A1 Quadruped robot, tasking it with specific operations: walking, turning, navigating blind stair climbs, and completing an obstacle course. The robot's dynamics were  modeled in Simulink, while its controller was crafted within MATLAB, interfacing with the Simulink model.

My specific contribution centered on crafting a model-predictive controller. Drawing inspiration from the "Dynamic Locomotion in MIT's Cheetah 3 Through Convex Model-Predictive Control" paper, I channeled my efforts into ensuring the A1 could adeptly climb stairs. This challenge was dissected into two focal points:

  1. Achieving the optimal body pitch, positioning the Quadruped for ascent.

  2. Guiding the robot's foot and body trajectory up the staircase, anchored in Raibert's heuristics.

Our results were a testament to our rigorous approach: the A1 managed to scale the stairs in under 6 seconds.

A1 Quadruped Simulink Plant Model
quadPlant.png
ezgif.com-crop (9).gif
bottom of page