Nick Rotella scientist engineer developer

About Me

I'm a senior robotics software engineer at Agility Robotics working on state estimation and controls for humanoid robots. We're hiring -- feel free to email/message me on LinkedIn if interested!

I completed a Ph.D. degree in Computer Science in 2018 in the Computational Learning and Motor Control (CLMC) Lab at the University of Southern California, in collaboration with the Autonomous Motion Department at the Max Planck Institute for Intelligent Systems. My research focused on solving a broad range of problems in humanoid robotics; you can read about it in my thesis, Estimation-Based Control for Humanoid Robots.

I also earned a M.Sc. degree in Computer Science with a specialization in Intelligent Robotics from USC in 2014, and a B.Sc. degree in Mechanical Engineering from The Cooper Union in 2012.

Research

My research interests include state estimation, sensor fusion, model predictive planning/control, and deep learning for legged robots, with a focus on efficient implementations for real hardware.

Google Scholar ResearchGate arXiv

Unsupervised Contact Learning for Humanoid Estimation and Control

IEEE International Conference on Robotics and Automation (ICRA), 2018

Nicholas Rotella, Stefan Schaal, Ludovic Righetti

link pdf video

An MPC Walking Framework With External Contact Forces

IEEE International Conference on Robotics and Automation (ICRA), 2018

Sean Mason, Nicholas Rotella, Stefan Schaal, Ludovic Righetti

link pdf video

Balancing and walking using full dynamics LQR control with contact constraints

IEEE International Conference on Robotics and Automation (ICRA), 2016

Sean Mason, Nicholas Rotella, Stefan Schaal, Ludovic Righetti

link pdf

Inertial sensor-based humanoid joint state estimation

IEEE International Conference on Robotics and Automation (ICRA), 2016

Nicholas Rotella, Sean Mason, Stefan Schaal, Ludovic Righetti

link pdf

Humanoid momentum estimation using sensed contact wrenches

IEEE-RAS International Conference on Humanoid Robots (Humanoids), 2015

Nicholas Rotella, Alexander Herzog, Stefan Schaal, Ludovic Righetti

link pdf

Trajectory generation for multi-contact momentum-control

IEEE-RAS International Conference on Humanoid Robots (Humanoids), 2015

Alexander Herzog, Nicholas Rotella, Stefan Schaal, Ludovic Righetti

link pdf

Momentum control with hierarchical inverse dynamics on a torque-controlled humanoid

Autonomous Robots (AURO), 2015

Alexander Herzog, Nicholas Rotella, Sean Mason, Felix Grimminger, Stefan Schaal, Ludovic Righetti

link pdf video

State estimation for a humanoid robot

IEEE/RSJ Conference on Intelligent Robots and Systems (IROS), 2014

Nicholas Rotella, Michael Bloesch, Ludovic Righetti, Stefan Schaal

link pdf video

Properties of a temporal difference reinforcement learning brain machine interface driven by a simulated motor cortex

International Conference of the IEEE Engineering in Medicine and Biology Society (EMBC), 2012

Aditya Tarigoppula, Nick Rotella, Joseph T. Francis

link pdf

In addition to publishing, I spent much of my PhD working on estimation, planning, and control algorithms within our locomotion codebase. I tested this work primarily on a 17 DOF, torque-controlled humanoid lower body engineered by Sarcos Robotics. My work has involved everything from low-level embedded motor controller, device driver and networking programming to high-level optimization-based planning and whole body control; I strive to understand and interact with complex systems at every level.

A Quadratic Program-Based Inverse Dynamics

Robust Joystick-Based Walking Controller

Teaching

During my undergraduate education, I served as a teaching assistant for computational neuroscience and a summer research program for area high school students.

While I did not TA during my PhD studies, I guest lectured on a number of occasions for the graduate-level course Introduction to Robotics (CSCI 545) as well as supported departmental outreach efforts including the well-attended USC Robotics Open House.

As a strong believer in open-access education, I also spent considerable effort compiling a collection of lecture notes on a variety of robotics-related topics. I continue to draw from these in my current work and expand upon them via blog posts on this site.

Locally, I have volunteered as a TA for the TEALS K-12 computer science education program, as a judge for the Greater KC Science and Engineering Fair and the PLTW KC Engineering Design Contest, and as a programming mentor for FIRST Robotics Team 1939.

Recent Posts:

URDF, Kinematics, and KDL

The goal of this post was to plan for the transition the robot sim from using DH parameters which are very clunky and limited, to an expressive format like URDF; the inspiration for this change is KDL. This post is currently very much not done, but I decided to push it anyway because I got sidetracked and am not sure when I’ll have time to retur... Read more

The Kalman Filter: Derivation and Interpretation

This post will detail a first-principles derivation of the discrete-time Kalman Filter, beginning with some probabalistic background and ending with a linear-algebraic interpretation. We’ll also take a look at some practical considerations of applying the Kalman Filter - what if the state space is nonlinear? How are rotational states - for examp... Read more

Humanoid Model Predictive Control

In this post, we’ll move from discussing MPC at a high level to introducing humanoid robot dynamic models used for MPC, followed by the momentum MPC problem which motivated this series of posts. For the time being, the content of this post will laregly be copied from my PhD notes without much editing; figures and more context to come soon. H... Read more

Model Predictive Controllers

I was looking back through LaTeX notes from my PhD and found some interesting ones on Model Predictive Control (MPC) for humanoid locomotion which I never published or included in my thesis. I thought it might be useful to someone if used them to talk through Model Predictive Control a bit, then introduce the controller I was working on as an ex... Read more

ArduCopter Flight Controllers

In a previous post, I detailed how to install Ardupilot for drone control - ArduCopter, or Copter for short. We ran through a very basic high-level flight control example via the ROS/MAVLink interface provided by MAVROS, which relies on existing flight control modes in the core Ardupilot source. Today, let’s delve a little deeper into ArduCopter... Read more