← All skills

Skill

Project planning

Planning how work gets done. The FTC two-robot build plan, the LQR proposal, and the Odin test campaign's protocol.

3 log entries2 projects

FIRST Tech ChallengeBest example

Two robots, so software never waits

Also shows: Technical leadership

As captain I set up a new way to build our robot: two robots developed in parallel. While the CAD was being finished, we assembled the drive trains. Software then got the first robot, a bare drive train, to test on, while mechanical integrated the first feature, such as the lift, on the second. Once that feature passed our definition of done, the teams traded: software integrated the feature and kept developing, and mechanical moved on to the next feature, like the arm, on the other robot, and the trading continued all season. Software was always testing on a competition-ready robot while mechanical kept building, our drivers got more practice before the robot was feature complete, and we would have had a robot ready for competition even if mechanical badly missed a deadline.

Timeline in two rows, software and mechanical: after the CAD and drive trains, software tests on robot A while mechanical builds the lift on robot B; at each definition of done the two teams trade robots, so software takes the robot with the newest feature and mechanical builds the next feature on the other
The hand-off: at each definition of done, the two teams trade robots.

Advanced Robotics at UW

Path tracking: from pure pursuit to LQR

CodeThe LQR study

Also shows: Control systemsTechnical leadershipC++

Our chassis followed paths with pure pursuit: aim at a point a fixed distance down the path and ramp the speed up toward it. The robot's accelerations stay implicit in that, so it has no idea how hard it can brake or how fast it can take a corner, and at speed it swings wide of turns and overshoots where it should stop. I proposed replacing it with path tracking that models those accelerations explicitly, and led the feature from idea to implementation: I wrote the design and gathered the resources behind it, from spline fitting and arc-length reparametrization to the Riccati equation and a study that found LQR tracks more accurately than pure pursuit. First, a cubic spline through the waypoints is reparametrized by arc length, the speed at each point is capped by its curvature, and a forward and a backward pass keep every speed-up and every stop within what the robot can deliver. Then an LQR tracks that profile on a world-frame model of the chassis, where its dynamics stay constant, and its force is rotated into the robot's frame. I designed it and built the framework; the comparison here runs the finished MVP against our pure pursuit in simulation.

The same slalom, the same simulated chassis and the same 2 m/s top speed: LQR (blue) against the team's pure pursuit (orange), in real time.
Bar charts for three paths: LQR finishes each sooner and stays within about 3 cm of the path, against 33 to 46 cm for pure pursuit
Three paths: LQR finishes 1.5 to 2.1 s sooner and stays within 3.2 cm of the path; pure pursuit strays up to 46 cm.

Advanced Robotics at UW

A test platform against motion capture

Code

Also shows: Experiment designPython

The sentry localizes with an Odin1, a lidar-inertial sensor that relocalizes into a prebuilt map. Before the team decided whether the whole localization system could rely on it alone, we wanted to know how accurate it is and where it is weak. So I built a test platform that measures it against the motion capture room, whose OptiTrack tracks the robot to a fraction of a millimeter. It starts and stops the sensor, records every run, guides whoever is driving with live mocap feedback, and can also drive the robot itself through the Jetson and the robot's controller, with a watchdog and speed caps. A campaign day runs a fixed protocol: calibration spins, a mapping drive, figure-8 laps at set speeds, ten-minute holds, back-and-forth motion to measure latency, cold starts, and outages where someone covers the sensor.

Diagram of the system: motion capture and the Odin1 sensor feed the characterization scripts, which record every run and write a report; in autonomous mode they send chassis velocities over UDP to the Jetson, which forwards them over UART to the sentry's motor control board
The three parts, and the default human-driven mode.
Bar timeline of day 1: preflight 8 minutes, calibration 3, mapping 5, figure-8 laps 6, holds 41, latency 3, cold starts 16, outages 11; 93 minutes in all
Day 1, step by step, from the campaign's time estimate.