~/projects/ascension

Ascension Robotics

> Software developer on a combat-robotics student design team — building the navigation and perception stack that drives, finds, and tracks opposing robots in real time.

// perception → actuation

camera feedlive frames on Linux
→ YOLO detector8-class target detection
→ PnP pose estimationcalibrated camera intrinsics
→ Nav2 + MPPIturret-decoupled planning
→ serial → MCUcustom ROS nodes drive the turret
Role
Software Developer
Period
Sept 2025 – June 2026
Platform
Jetson Orin Nano · ROS 2
Team
Student design team
Detector
mAP 0.66 → ~0.98 · ~14K images
C++ROS 2Nav2MPPItf2OpenCVONNX RuntimePythonsystemdLinux

Turret-decoupled navigation

Wrote a TurretDecouple C++ ROS 2 component that publishes a heading-locked tf2 frame and remaps velocity commands, so Nav2 can plan for a holonomic base carrying a continuously spinning LiDAR turret.

DWB → MPPI controller

Restored lateral motion by migrating the Nav2 local controller from DWB to MPPI (omni model), retuning critics, costmaps, and velocity limits within a CPU budget shared with vision.

Target detection

Raised the 8-class detector's mAP@0.5:0.95 from 0.66 to ~0.98 by rebuilding the dataset and label scheme — from ~7K color-only images to ~14K team-color × robot-class images — and cut camera-intrinsic RMS reprojection error ~80% to sharpen PnP pose estimates, all running in real-time C++ on a Jetson Orin Nano.

Labeling & bringup tooling

Cut manual labeling effort ~75% with ONNX pre-annotation, a PnP validity filter, and a dedup frame extractor; made the robot stack start at boot and stop cleanly by replacing a fragile script with a systemd user service.