GEORGE ORTIZ
Robotics

Research and Projects

Locomotion and reinforcement learning, planning and control, perception, and mechatronics

01

Quadruped Locomotion Through Mud

Robomechanics Lab, CMU · Collaboration with FieldAI · In progress
Quadruped walking through simulated mud
Unitree quadruped in an MPM mud environment

In collaboration with FieldAI, this project develops an approach for mud-adaptive locomotion, enabling robots to move through highly variable muddy terrain safely and efficiently. I characterise the non-Newtonian contact forces acting on the robot and design a learned control framework to predict them, which lets the robot adapt its gait in real time to maintain stability and traction.

On the Newton branch of IsaacLab I imported the Unitree robot into the MPM example, tuned the PD gains to get a stable gait, loaded a custom policy onto the robot, and resolved two-way force coupling between the robot and the MPM environment.

  • NVIDIA Isaac
  • Newton
  • Genesis
  • Reinforcement Learning
  • Python
02

Quad-SDK: MuJoCo Integration, Plotting Code

Robomechanics Lab, CMU
Quadruped running in MuJoCo through Quad-SDK

As part of Quad-SDK's migration to ROS2, I added support for MuJoCo as a new simulation backend. MuJoCo's convex-optimization-based contact solver produces smoother, better-conditioned dynamics, and it's widely used in modern robotics research for simulation and learning control policies. I made a range of quadrupeds compatible with Quad-SDK's existing environment samples and wired them into the control stack.

I also wrote new plotting code to visualize simulation results and analyze quadruped performance under various conditions. Quad-SDK's original plotting code was written in MATLAB, which produced good paper-quality plots but was slow to generate, so I built faster tooling suited to day-to-day debugging and analysis. It's since been used to debug and analyze performance on a beam-walking locomotion project.

  • MuJoCo
  • Quad-SDK
  • ROS2
  • Simulation
  • Python
03

LeRobot Arm Hackathon NYC — SO-100

Hackathon · $1,000 prize
SO-100 arm drawing a dollar sign
Drawing a dollar sign autonomously

My team was given the components to construct an SO-100 robot arm — motors, controllers, 3D printed parts and cameras. We planned, built and calibrated the arm to match the leader arm configuration, then trained it by teleoperation. During training we saw a lot of noise in the learned policy, which stopped the pen from being picked up reliably.

Subtracting the leader and follower curves isolated most of the electrical noise, and a low-pass filter greatly reduced the joint trembling. Frame skipping — feeding every other frame as a command — doubled the arm's speed. We won the $1,000 prize for Most Innovative Use of Data.

  • Calibration
  • Reinforcement Learning
  • ACT Policy
  • Signal Processing
  • Vision Feedback
04

Using Webots to Design FSD for a Tesla Model 3

24-677 · Carnegie Mellon University
Self-driving Tesla Model 3 in Webots

This project implemented a range of controllers and estimators for a self-driving vehicle. I began by tuning the proportional, integral and derivative gains for PID performance. Since longitudinal control varies the speed, I linearised the lateral control using pole placement, discretised the model, and implemented LQR — which after tuning completed the track in under 130 seconds. Most of that gain came from tuning how far ahead the vehicle looked, giving it more time to react.

I also implemented planning and estimation. A* replanned the trajectory when a slower car acted as an obstacle, letting the vehicle overtake on the straight, and EKF SLAM estimated the rough position and heading of the vehicle throughout.

  • Linearization
  • PID
  • LQR
  • MPC
  • A*
  • EKF SLAM
05

SLAM and RRT for a 2D Mobile Robot

ME 656 · Stevens Institute of Technology
SLAM and RRT planning

Rapidly-exploring Random Trees planned a collision-free path by sampling the environment from a start to a goal state. SLAM then estimated and visualised the uncertainty along the robot's trajectory, with known obstacles modelled as landmarks to reduce it. The robot's confidence decreased when it couldn't see an obstacle, and rose again once it localised.

The RRT algorithm generated 100 trajectories, and the final plots capture the extreme cases — the shortest path, and the minimum and maximum uncertainty at the goal state. A Kalman filter computed the uncertainty at each time step.

  • RRT
  • SLAM
  • Kalman Filter
  • Obstacle Avoidance
  • MATLAB
06

Resolved Rates & Min-Norm Redundancy Resolution

ME 650, Stevens Institute of Technology
Resolved rates manipulator simulation

A combination of assignments from a graduate course covering optimisation and mathematical design techniques for the control of serial manipulators. The first showed a resolved rates simulation for link speed optimisation: inverse kinematics via a closed-loop resolved rates algorithm let the robot adhere to speed constraints (1mm translation tolerance, 0.0524 radians rotational), simulated via first-order interpolation in MATLAB.

The second used both the gradient of a curve and the Jacobian projected into the null space to keep the end effector orthogonal to a surface, simulated with a minimum-norm pseudoinverse redundancy resolution algorithm. Maintaining that orthogonality is directly applicable to welding or writing.

  • Resolved Rates
  • Null Space Projection
  • Jacobian
  • Cost Functions
  • MATLAB
07

Camera Vision — Doosan H2515 Pick and Place

PROOF Lab, Stevens Institute of Technology
Camera vision cube detection

Data was collected with a webcam overlooking foam cubes scattered across the workspace, annotated in Roboflow, then trained with YOLOv8 to identify the pixel location and colour class of each cube. Because the dataset was small, colours close to the table had lower confidence, so higher-contrast colours were used instead. The centre of each bounding box was found with OpenCV and the coordinates scaled to the workspace.

Once joint angles were computed, the robot was sent commands using the Doosan Robot Language, a Python-based framework. I used the sockets library to establish the client-server connection that drove the arm.

  • OpenCV
  • YOLOv8
  • Python
  • Pick and Place
08

SESMA 3.0 — Soft Exosuit for Spinal Muscular Atrophy

Senior capstone · Stevens Institute of Technology
SESMA device

An external device to assist type III SMA patients with sit-to-stand transitions. It autonomously detects when the user wants to stand, actuates a spring tied to a spool, and a cable routed down the wearer's leg pulls them up. It achieved 10% assistance against the previous iteration's 3–4%, with total volume down 17% and width down 28%.

The main challenge was using a single motor to actuate both the spring charging mechanism and the cam that changes state, solved with a geared switching mechanism. To detect the transition we ran motion capture with markers routed like the cable, built 3D splines through the points, and discretised them to approximate how much cable length changes from sitting to standing — then actuated at the point of maximum knee torque.

  • Mechatronics
  • 3D Splines
  • CAD
  • SolidWorks
  • Machining
09

Hand Squeezing Device for Grip Rehabilitation

ME 522 · Stevens Institute of Technology
Grip rehabilitation device
Final assembly

Built for a graduate mechatronics course, this device was designed to alleviate joint pain and rebuild hand and forearm strength, with applications in PT clinics for testing and monitoring grip strength. A knob sets the squeezing strength, shown on an LCD; a limit switch on the handle counts repetitions and triggers a buzzer.

It ran on a PIC16F88 microcontroller programmed in PICBasic Pro — reading the potentiometer needed ADCIN rather than the Pot function to translate force correctly. The force is translated through a fourbar linkage that stretches a spring, which on this budget was a rubber band.

  • Mechatronics
  • PICBasic Pro
  • PIC16F88
  • Fourbar Linkage
10

Robot End Effector for Pick and Place

PROOF Lab, Stevens Institute of Technology
3D printed robot gripper end effector

The PROOF Lab's Doosan H2515 6-DoF arm needed an end effector for pick and place, so I designed and 3D printed a gripper that opens and closes its jaws under a PWM signal from an Arduino sent to a motor controller.

The arm's flange provided a 24V digital IO, which I stepped down to 5V with a voltage divider for the Arduino. A gear and hinging mechanism drives the jaws, letting actuation be toggled directly from the robot's own programming language.

  • SolidWorks
  • Mechatronics
  • 3D Printing