Robots and systems, built end to end
From a 56-DOF mobile bimanual robot to an 8×8×8 LED cube. If it moves, senses, or thinks, it is probably here.

Grasp-aware planning and shared learned local control for cooperative transport. Explore the paper, seven-stage task visualization, 35/40 frozen missions across ten scenes, and interactive trajectories. Separate development experiments study recovery and local coordination.

Coming soon. An ongoing project on dexterous tool use with a multi-fingered hand; the page opens with a passcode.

An early research project turning egocentric observations into interactive 3D scenes. Start with imitation learning, fine-tune contact-rich manipulation in simulation, and evaluate transfer back to the robot. Explore the first three-photo scene, estimated camera poses, movable cup and reconstruction limitations.

Open-source (MIT) whole-body robot: a 3-module holonomic swerve base, a 0.635 m lift with actuated torso, two 7-DOF arms, two 17-DOF ORCA hands, and a 3-DOF active head. 56 DOF from $8,722, with no machine shop. Teleoperated from Apple Vision Pro, iPhone, browser, or gamepad; full MuJoCo digital twin; demonstration-to-policy pipeline (ACT, Diffusion Policy, π0) deployed onboard. System paper under review.

Apple Vision Pro demonstrations retargeted onto a 23-DoF xArm + ORCA hand by a bifurcated SE(3) optimisation, then cloned by a chunked transformer with a grasp-weighted loss. State Bottlenecking — a mandatory home pose between sub-tasks — takes two-object clearing from 22 % to 88 %. The page lets you switch each term of the retargeting cost off and watch the pinch geometry come apart.

6-DoF variable-mass lunar lander in MuJoCo with a 2-DoF gimbaled engine. A SAC policy learns guidance and control as one map; a cascaded PD baseline, re-run for 500 descents, lands 70.2 % of the time and comes apart above 50 m/s entry speed. The page lets you fly the lander and re-run the Monte Carlo in your browser.


Monocular depth pipeline for human-robot walking environments: Metric3D v2 fine-tuned on 16,780 RGB-D stair images, metric reprojection to 3D point clouds, and plane extraction for stair rise and run. Re-run in 2026 on the archived scenes: 1.7 cm rise / 2.5 cm run mean error against a tape measure.

Tabular Q-learning, DQN, PPO and SAC on a cart-pole whose every observation is corrupted by Gaussian noise. A five-seed re-run found the released bin limits collapse cart position into two of eight bins and double the drift, that survival peaks at σ = 0.1 rather than at zero noise, and that a coarse grid beats a fine one fifteen-fold at a fixed budget. The whole tabular experiment runs live in the page.

Monocular stair/obstacle geometry from one image feeds a five-link biped with knees walking by virtual holonomic constraints (hybrid limit cycles, verified against their return maps). From one view of an obstacle the planner schedules the approach and two step-over gaits chained through the impact map. Includes the re-test of the two-link ECE1658 design and an in-browser demo.

Maximum-a-posteriori estimation over every pose at once, on SE(3), with a stereo camera and an IMU — and the sliding window that approximates it. A four-seed re-run found batch is both more accurate and cheaper than a wide window over a whole trajectory, and that a window looks over-confident only when its noise model is wrong. Drag the window size in the page and watch the estimate move.

A 170 mm robot finds itself in an 8 × 4 maze using four ultrasonics and nothing else: a tile is four bits of wall, and because the bits run around the tile, turning 90° is a bit rotation. Localization becomes a set intersection over 24 tiles × 4 headings. Swept exhaustively, no single reading ever localizes it — but with the gyro trusted, every start resolves in one tile-move. Drive it on the page and watch the candidates disappear.

512 hand-soldered LEDs driven by nine daisy-chained shift registers over one SPI bus. Only one of the eight layers is ever lit; the cube is an illusion held together by refreshing faster than the eye can follow. Twelve animations and a shallow-water liquid you tip by dragging — volume held to 10−13, surface level to 0.008 cells per column — plus 3-D Snake with wrap-around walls and Pong against a machine that solves for where the ball will cross its own face. Drag the refresh rate down and watch persistence of vision give out.

A TurtleBot 2 mapping an unknown 6×6 m room with a Kinect, three bumpers and GMapping, switching between reactive, behaviour and deliberate control. A six-room re-run found the four strategies are separated by less than their own variance, and that the hybrid controller is simultaneously the best and the worst of them. Watch the occupancy grid fill in live, and race all four.
Custom 4:1 planetary reduction for the UofT Formula team's first electric car, quadrupling torque at an estimated 91 % efficiency. Re-checking the design against its own numbers: the gearbox cuts the motor-to-differential span from 273 mm to 96 mm, two of the four shortlisted tooth sets cannot take four equally spaced planets, and a rad/s-labelled-Hz slip put the system's natural frequency 2π too high. Spin the gear set on the page.