Arcturus AllSeaingVehicle
Sensors lead for MIT's autonomous robotics competition team (Arcturus)
An autonomous surface vehicle that perceives a buoy-marked course with stereo vision and lidar, maps it, plans through it, and drives itself — built by MIT's Arcturus team for the RoboBoat and Njord 2023 marine-autonomy competitions.

Autonomous Surface Vessel (ASV) for Roboboat 2022

The boat runs a single ROS pipeline end to end. A ZED 2i stereo camera and a Velodyne 3D lidar feed a YOLOv5 detector trained on the team's own buoy and marker dataset; lidar clusters are projected into the image so 2D detections become labeled 3D objects. Those objects accumulate into a persistent occupancy-grid map, a competition state machine plans waypoints through it, a local planner bends them around obstacles, and the commands reach a Pixhawk flight controller running ArduRover over MAVROS — which finally becomes differential thrust on two propellers.
The same code runs unmodified in a Gazebo simulation of the course: a VRX-derived marine world with Gerstner-wave physics, custom hydrodynamics and buoyancy plugins, and ArduPilot software-in-the-loop.
- Perceive: YOLOv5 + ZED 2i stereo; Velodyne clusters fused into labeled 3D objects
- Map: Object tracker builds a 300 m occupancy grid of buoys and docks
- Plan: Task state machine + local planner emit collision-free waypoints
- Control: PID velocity control to differential thruster PWM
- Actuate: Pixhawk/ArduRover via MAVROS; Arduino mission payloads

Boat model in Gazebo

Course Overview in Gazebo
My contributions:
Thruster PID control & Simulation
I built the boat's velocity controller as a pair of PID loops — one on forward velocity, one on angular velocity — that resolve into two thruster commands: total thrust and a left/right split. Before putting it on the boat, I wrote a 2-DOF dynamics simulator (thrust, drag, hull inertia, thruster moment arm) with live visualization and response plots, and used it to tune gains with saturation limits in place. The tuned loops then moved into a ROS node mapping commanded twist to thruster PWM.
Water-Gun Arduino Scripts
RoboBoat isn't just navigation — tasks require shooting water at a target and launching balls. I wrote and iterated the Arduino firmware for the ball-shooter / water-gun payload (motor sequencing, pump control, a small serial command interface for testing). I also contributed IMU-to-Jetson integration samples for the Arduino sensor bridge.