projects
Deployment case studies
1. Apollo humanoid release integration
Context: Apollo is Apptronik’s general-purpose humanoid robot platform. My work sits in the legged controls stack, where controller behavior has to survive the transition from simulation and subsystem tests to an integrated robot operating under release pressure.
My role: I worked on whole-body MPC controller integration, state estimation, whole-body motion planning, teleoperation-related validation, and on-robot hardware debugging across the integrated stack.
Deployment constraints: Release work required fast iteration across software, hardware, application engineering, and systems teams. The main challenge was not only whether the controller worked in isolation, but whether the robot behavior remained valid when perception, teleop, hardware, and demo workflows were exercised together.
Outcome: Supported public-release integration and live demo readiness by validating controller behavior on hardware, debugging integration issues in real time, and helping de-risk customer-facing robot demonstrations.
Stack: Whole-body MPC, state estimation, C++, CasADi/codegen, robot hardware validation, Git.
2. Moonwalkers product deployment at Shift Robotics
Context: Moonwalkers are robotic mobility devices shipped to end users by Shift Robotics. The control software has to feel intuitive to first-time users while remaining reliable on deployed hardware.
My role: I owned gait control and sensing software in Shift OS, including calibration/training workflows and gait sensing improvements driven by user feedback.
Deployment constraints: The product had to work across different users, walking styles, environments, demo conditions, and hardware units. Field feedback mattered because small sensing or calibration issues directly affected user trust.
Outcome: Shipped user-facing control improvements documented in the Shift OS 2.0 release notes, improved gait sensing intuitiveness through field testing, supported live demos at CES 2024 and university campuses, and helped troubleshoot deployed hardware/software issues in real time.
Stack: Classical control, estimation, sensor fusion, biomechanics, embedded systems, C/C++, Python, hardware troubleshooting.
3. Contact-aware MPC hardware validation at Flexiv Robotics
Context: During my internship at Flexiv Robotics, I worked on validating a contact-aware MPC force controller for a 7-DoF manipulator.
My role: I bridged simulation and hardware validation, connecting PyBullet-based development to a real robot control workflow through LCM communication.
Deployment constraints: Contact-rich manipulation required validating controller behavior beyond simulation, with attention to timing, force response, and consistency between the model and hardware behavior.
Outcome: Validated the controller across simulation and hardware, helping close the gap between algorithm development and robot execution.
Stack: MPC, trajectory optimization, PyBullet, LCM, C++, Python.
Research and technical projects
1. Analytical Second-Order Derivatives vs. CasADi for Whole-Body MPC (2026)
ca.Callback): analytical is faster per call and eliminates the codegen/memory wall (8.83 MB C + 1.40 GB build RAM → 0). Wiring it into the live solver is the next step.
Skills used: C++, Python, Pinocchio, CasADi, Whole-Body MPC, Rigid-Body Dynamics, Spatial Vector Algebra
MPC (Molnar et al., RA-L): paper · code — Analytical derivatives (Singh et al.): paper · pinocchio fork — Technical note (PDF)
2. Second-Order DDP via the modRNEA contraction (2026)
First vs. second order. The backward sweep needs the value-function Hessian, which contains the second derivative of the dynamics, Fxx, contracted with the value gradient. The standard solvers (iLQR / FDDP) drop this term — the Gauss–Newton approximation — so they are first-order and converge linearly. Keeping it gives full second-order DDP, which converges quadratically near the optimum; but forming Fxx is an O(n³) third-order tensor at every knot, long considered too expensive.
The modRNEA contraction. DDP only needs the Hessian contracted with the value gradient (a costate), not the full tensor. The modified-RNEA second-order algorithm computes this costate-contracted directional derivative in O(n²), with no 3D tensor. I ported it onto Pinocchio 3.2 (finite-difference verified to ~1e-6) and built a second-order solver (SolverSODDP) in Crocoddyl that injects the contracted Hessian blocks directly into the backward pass.
Quasi-Newton amortization. Even at O(n²), recomputing the second-order term every iteration costs roughly twice a first-order iteration. The quasi-Newton scheme (Singh et al., Humanoids 2023) recomputes it only every p iterations (here p = 5) and reuses the cached blocks in between, cutting the per-iteration overhead to about +25% while preserving the convergence benefit.
Results. Benchmarked on a 7-DoF iiwa reach (the same solver runs on the Franka Panda shown above). SO-DDP reaches the same optimum as FDDP but converges quadratically: to a 1e-12 stopping tolerance, FDDP needs 57 iterations while SO-DDP needs 22 (full) or 25 (quasi-Newton), running 1.6–1.85× faster in wall-clock — with the advantage widening as the problem is solved more tightly. The second-order benefit is largest on ill-conditioned problems, where the Gauss–Newton model is poorest.
Skills used: C++, Pinocchio, Crocoddyl, Differential Dynamic Programming, Spatial Vector Algebra
3. Operational Space Control for a 7-DOF Franka Panda Arm (2026)
Skills used: Python, PyBullet, Pinocchio, Operational Space Control, Trajectory Optimization
4. Multi-Shooting DDP optimization for a for a 7-DoF Quadruped using Quasi-Newton (2020-2023)
Skills used: C++, Fortran, Optimization, Spatial Vector Algebra
5. Analytical Partial Derivatives of Rigid Body Systems (2020-2023)
Skills used: C++, Fortran, Optimization, Spatial Vector Algebra
6. Differential Dynamic Programming for Rigid Body Systems (2018-2023)
Skills used: Fortran, Optimization
7. TOWR for Urban Environments (Jan-May 2021)
Skills used: C++, ROS, Optimization, IPOPT
8. Trust Region Method Based on Cholesky Decomposition (Aug-Dec 2019)
Second-order optimization methods often use the Levenberg-Marquardt method to decide the step length. To improve the step length selection criteria, in this project, a trust region method based on Cholesky Decomposition used for second-order optimization algorithms is implemented. In the end, suggestions on the method are mentioned to use it for high degree-of-freedom systems like legged robots. This method is key in accelerating the use of the full second-order method for optimization-based robotics.
Skills used: MATLAB, Optimization
Slides
9. Methods of Orbit Determination (Jan-May 2018)
The problem of determining the future state of a satellite based on a set of observations is formulated and analyzed. Under the effect of various forces, the orbit of the satellite is estimated for 6 days using an Extended Kalman Filter formulation and is propagated for another day to report the state information in the ECI coordinate frame at the ∆V1 epoch. A high fidelity gravity model (20x20 non-spherical model) along with lunar, solar perturbations, solar radiation pressure, etc. are included for propagating the orbit and develop the analytical expressions required in the estimation process.
Skills used: MATLAB, Estimation, Navigation, Astrodynamics
Slides
10. Collaborative Air Autonomy- System of Systems (Aug-Dec 2015)
Skills used: MATLAB, Agent Based Modeling, Systems-of-systems
