Projects
ballistic-solver (C/C++ · Python · Unity/C#)
Simulate-first intercept optimizer for moving targets under gravity and quadratic drag (+ optional wind). It integrates nonlinear projectile dynamics (RK4) and solves launch angles (θ, φ) by forming a closest-approach miss residual and running Levenberg–Marquardt.
What I built- Dynamics: fixed-step RK4 with quadratic drag (+ wind as air-velocity)
- Numerical optimization: closest-approach residual → LM (damped least squares) + line-search/lambda tries
- Speed: Broyden-style Jacobian refinement to reduce full re-linearizations
- Robust outputs: explicit status/message + best-effort solution even on non-ideal convergence
- Deployment: stable C ABI (FFI-ready), PyPI package with prebuilt binaries, Unity/C# via P/Invoke
Mapless Autonomous Parking (Isaac Sim · ROS 2 Humble · Autoware Universe)
Real-time mapless parking without prebuilt pointcloud/vector maps: online occupancy mapping → occupancy-only Hybrid A* replanning → fraction-index path interpolation + Stanley-based tracking for forward/reverse parking maneuvers.
What I built- Autoware compatibility layer: pointcloud fields/frame adaptation + self-cropping + ground filtering
- Occupancy mapping: ego-fixed local OGM → global accumulation with probability heuristics, plus decay back to unknown for stale cells
- Compute-bounded replanning: occupancy tiling + sliding-window ROI updates to reduce cell count and keep replanning tractable
- Planning without vector maps: custom node using Autoware freespace planning algorithms (Hybrid A*) from occupancy-only + vehicle constraints
- Trajectory processing: fraction-index-based interpolation over waypoint segments to construct continuous virtual references for low-speed maneuver tracking
- Trajectory follower (core control): Stanley-based lateral control with a lateral-error derivative damping term, plus longitudinal velocity control for stable low-speed convergence
- Forward/Reverse execution: segment-wise direction handling + gear command integration based on trajectory direction/velocity sign
- Real-time engineering & debugging: QoS tuning to avoid backlog/timing loss, RViz2 visualization (OGM/trajectory/vehicle), and CLI status reporting
Racing Analyze GUI (MATLAB · Telemetry Analysis · Driver Coaching)
Segment-based racing telemetry analysis workbench for comparing multiple logged runs, visualizing driver/vehicle behavior, and supporting coaching-oriented inspection for circuit driving. Developed and used in collaboration with Luxon Racing Team in the GT-A class of the O-NE SUPERRACE CHAMPIONSHIP.
What I built
- Fast track/core build: GPS-fix-based track core / segment reference generation for repeated run comparison
- Fast multi-log workflow: efficient loading and caching of multiple logged runs, enabling quick switching across segments after a single analysis pass
- Segment-wise comparison: gate/segment-based run slicing across All / S0 / S1..Sn / S(n+1) for aligned comparison of the same track region
- Interactive replay: time-slider-based replay with play / pause / stop / speed control and pane-aware marker updates
- Flexible visualization modes: XY, TS, MAP, POLAR, KDE, GG views for telemetry inspection from multiple perspectives
- Sensor-channel flexibility: arbitrary logged channels can be assigned to x / y / color, enabling broad exploratory analysis across vehicle states and driver inputs
- Signal conditioning: smoothing and abnormal-data interpolation support for more stable visualization and comparison
- Pane-level workflow tools: per-pane rerender and pop-out windows for focused inspection without rebuilding the full workspace
- Metrics extraction: segment-level metrics such as segment time, velocity statistics, and acceleration-related indicators for quick run ranking and review
- Practical use case: supports visualization assistance and coaching workflow for real racing data analysis