
Sept 2025 — Present · Waterloo, ON
Exo Software Team Lead
UWaterloo Biomechatronics Design Team
Overview
Led the software team for Exo, a project team within the UWaterloo Biomechatronics Student Team building a soft exoskeleton for the ACE competition.
As the Software Lead, coordinated development across embedded firmware, control, simulation, and a reinforcement learning-based motion assistance system.
Exoskeleton v1

Full mechanical, electrical, and software details are available in our 2026 ACE competition slides.
System Overview

Connected the full software stack from sensors and motor drivers to the motion assistance policy.
Streamed motion data from IMUs and motors over CAN into the embedded firmware. The resulting state was passed to a reinforcement learning policy running in ROS2, which generated assistive torque commands for the motors.
Motion-Adaptive Assistive Control
Deep Reinforcement Learning

Developed a reinforcement learning-based controller to adapt assistance to the wearer's movement instead of relying on separate controllers for various movements and making algorithm complex.
Engineered learning strategy using model-free DDPG policy to map hip and knee joint motions into continuous torque commands for the actuators.
Simulation & Training
Trained model and simulated hundreds of environments in parallel in NVIDIA Isaac Sim, allowing policies to be trained and evaluated within short time.
Deployment to Real Hardware

Deployed the trained policy on real hardware, using real joint and IMU measurements to generate assistive torque in real time.
Firmware

Built a deterministic embedded control layer around FreeRTOS with fixed-rate tasks and priority-based scheduling.
The highest-priority control task ran at 1 kHz, applying torque and safety limits before commanding the motor drivers. Keeping these limits in firmware created a safety boundary independent of the higher-level controller.
Stack
- C
- C++
- FreeRTOS
- ROS 2
- Python
- NVIDIA Isaac Sim
- CAN