Robotics engineer

Nehal
Nevle

State estimation · SLAM · Planning · Embodied AI

I build the software that tells robots where they are and where to go.

State estimation, SLAM, planning and embodied AI, across the full robotics stack, through to deployment on real robots. Nearly every embodiment so far, from autonomous pods to quadrupeds. Now underwater.

Nehal Nevle presenting on stage at zDay 2023, the launch of ZPod, India's first autonomous vehicle, with the ZPod beside him
Launching ZPod · zDay 2023
Original illustration of an underwater ROV with thrusters, a camera dome, a tether and Doppler velocity log beams Now

Underwater autonomy

Visual-inertial odometry, DVL fusion and inspection tooling for robots that cannot see GPS.

The whole stack

Perception to planning. Every body.

Estimation and mapping, prediction and planning, embodied AI and its deployment on real robots, simulation and CI.

Currently

Autonomy Engineer

Griffin Labs, Singapore. Building generalisable autonomy.

Sep 2026 – now

  • Embodiments
  • Autonomous cars & pods
  • Two-wheelers
  • Quadrupeds
  • Outdoor autonomy
  • Defence robotics
  • Inspection robots & scanners
  • Manipulators & AMRs
  • Underwater, now
/ Experience

Where I've
built robots

Worked in: Singapore · Bengaluru

  1. LionsBot T1, a mobile robot with an arm for restroom cleaning, in a shopping mall
    TCR (LionsBot T1) · Image: Griffin Labs
    Mega robotic workcell: two robot arms sorting dishes into racks
    Mega workcell · Image: Griffin Labs

    Sep 2026 – now

    Autonomy Engineer

    Griffin Labs · Singapore

    Building generalisable autonomy. Working on TCR and Mega.

  2. VIRA, a tracked electric ground robot with a cargo rail deck
    VIRA · Photo: Aeroarc
    ARCV MULE, a Ghost Robotics quadruped robot with a sensor head
    ARCV MULE · Photo: Aeroarc

    Sep 2025 – Aug 2026

    Senior Robotics Engineer

    Aeroarc · Bengaluru

    India's defence robotics: the VIRA tracked UGV (15 units in active deployment), the ARCV MULE quadruped (10 in active deployment) and the PhiSCAN 3D LiDAR scanner.

  3. Illustration of a compact stereo camera dev kit: one box with two cameras side by side
    Stereo camera dev kit · Illustration

    Aug 2024 – Aug 2025

    Founding member · Robotics & AI

    BYTES · Bengaluru

    Led tech and product. Built a dev kit: one box, two cameras.

    • Raised $500K.
    • Built the product and ran a public demo.
    • Selected for the Entrepreneur First (EF) cohort and YC Startup School.
  4. The ZPod autonomous pod parked in front of a Minus Zero zDay 2023 banner
    ZPod at zDay 2023 · Photo: Minus Zero, via EVreporter

    Mar 2023 – Sep 2024 · Head of Planning & PredictionJun 2022 – Mar 2023 · Founding Engineer, Autonomy

    Minus Zero · ZPod

    Bengaluru

    Took ZPod, India's first autonomous vehicle (launched at zDay 2023), from zero to 100k+ lines of production code; ZPod has driven 10,000 km.

    • Grew with the company from pre-seed to Series A.
    • Simulation pipeline and an India-specific AV simulator.
    • Agentic Unreal Engine pipeline to build photorealistic simulators.
    • Closed-loop CI/CD.
    • Genetic-algorithm and actor-critic PID tuning.
    • H-GAIL and PPO for RL driving.
    • NVIDIA DriveWorks.
  5. PhiSCAN, a handheld 360-degree rotating LiDAR scanner with a camera and a top handle
    PhiSCAN · Photo: Phicode

    Sep 2025 – Aug 2026 · At Aeroarc

    PhiSCAN 3D scanner

    Aeroarc · Bengaluru

    360° rotating LiDAR system that turns field scans into colourised, georeferenced point clouds.

  6. Oct 2021 – Jun 2022

    Robotics Intern

    Clutterbot (via In2peta Robotics)

    • YOLOv5 + SolvePnP bin localization (+5% accuracy).
    • FSM control and ArUco docking.
    • Led two interns.
  7. Education

    B.Tech ELC (Robotics)

    Amrita Vishwa Vidyapeetham

    Summer schools

    • Machine Learning Summer School, Genoa, Italy
    • EEML (Eastern European Machine Learning Summer School), Budapest
/ Playground

Play with
the algorithms

Real algorithms running in your browser, not canned animations. Each demo starts when you scroll to it and pauses when you scroll away.

Loading demo…
Keyframes
0
Loop edges
0
ATE (RMS)
–
χ² · iter
– · –
SLAM

Close the loop

Drive a robot with biased odometry, close a loop, and watch pose-graph optimisation pull the drift back.

  • 2D pose graph
  • Levenberg–Marquardt
  • live ATE

From my work State estimation in uw-vio-dvl and uw-vslam-bench.

How it works · numbers

Wheel odometry has a small heading bias, so the estimate (coral) drifts away from the truth (dashed). Drive back to the start: a loop-closure edge (lime) appears. Optimise runs Levenberg–Marquardt on the full 2D pose graph.

Loading demo…

Learned (top)Energy + LQR (bottom)

Swing-up time
––
Upright for
––
Peak cart force
––
Effort ∫|F|dt
––
Embodied AI · RL

Swing up, stay up

Same pendulum, same start, same pushes: a learned policy (top) against energy swing-up + LQR (bottom).

  • swing-up 0.84 s vs 2.54 s
  • 50/50 vs 50/50 swing-ups
  • push recovery 100% vs 100%

From my work H-GAIL and PPO for RL driving at Minus Zero; humanoid-mimic-rl.

How it works · numbers

Two identical cart-poles, same start, same pushes. Top: a small neural network trained offline with evolution strategies. Bottom: the classical energy swing-up handing over to LQR. Both get at most 20 N on the cart. Push, drag or tap a pole and both feel it. Training script: tools/train_pendulum.py.

Loading demo…
Solve time
–
Best cost
–
Speed cmd
–
Min clearance
–
Planning

MPPI playground

A robot plans by rolling out hundreds of noisy futures and averaging them by cost. Tap to set a goal.

  • 256 rollouts
  • 2.6 s horizon
  • 20 Hz

From my work Planning & prediction, which I led at Minus Zero (ZPod).

How it works · numbers

256 noisy control sequences are rolled out over a 2.6 s horizon, 20 times a second. Each is scored for goal progress and clearance. The plan (coral) is their cost-weighted average. Lime rollouts are cheap, violet ones are expensive.

Loading demo…

Learned policyIK planner · –

Reach time
––
Tip error
––
Tip path
––
Obstacle hits
––
Manipulation · RL

Reach around it

A learned policy (lime) and IK + A* (peach) reach for the same target. Tap to set one.

  • 100% reach
  • 1.56 s vs IK 1.82 s
  • touches 6.8% vs IK 0%

From my work Clutterbot (bin localization, FSM control); working on Mega at Griffin Labs.

How it works · numbers

Two SCARA arms from above on one base, sent to the same target. Lime: a small neural network trained offline with evolution strategies to command joint speeds; it sees the obstacle and the analytic IK goal poses, and dodges the obstacle as it goes. Peach: analytic inverse kinematics with a minimum-jerk profile, and A* in configuration space (inset) when the straight move would hit the obstacle. Both obey the same joint speed and acceleration limits. Training script: tools/train_scara.py.

Loading demo…
Error now
–
2σ bound
–
Max err, dark
–
Sim time
–
Underwater

Lights out

Black out the camera and watch a Kalman filter drift, with and without a DVL.

  • Kalman filter
  • 20 s blackout
  • camera + DVL

From my work The idea behind uw-vio-dvl: VIO with a tightly coupled DVL.

How it works · numbers

A Kalman filter integrates a biased accelerometer and corrects it with velocity from the camera and/or a DVL. Black out the camera with and without the DVL and watch the estimate (coral) leave the true path (cream). A toy model of the idea behind uw-vio-dvl.

Loading demo…
Goals reached
0
Collisions
0
Min clearance
–
Speed
–
Sonar navigation

Feel the way

An ROV that sees only a noisy sonar fan steers to your goal with a VFH planner. Tap to set a goal.

  • VFH planner
  • sonar only
  • certainty grid

From my work rov-rl-mujoco: an RL controller learning this task in MuJoCo.

How it works · numbers

An ROV sees only a noisy sonar fan. Echoes build a certainty grid (violet), a vector field histogram (ring) marks blocked directions in coral, and the ROV steers into the free gap closest to the goal. This is a VFH planner; the RL version of this task in rov-rl-mujoco is still training.

Tap to set a goal. Drag a pillar to move it. Turn on the cross-current to see what an unmodelled disturbance does.

Loading demo…
Tracking · RL

Hold the distance

Two followers try to hold 10 m from a weaving beacon: a learned Double DQN (lime) and a P controller (peach).

Double DQNP controller

RMS range error
––
In ±10 % band
––
Closest approach
––
Status
––
How it works · numbers

Two followers try to stay 10 m from a beacon that weaves, sweeps and turns, using the same noisy relative position and velocity. Same plant, acceleration limit, beacon path and noise for both. Lime: a Double DQN trained offline. Peach: a proportional controller with tuned gains. Two of the five paths were never used in training. Training script: tools/train_standoff.mjs.

Loading demo…
Tracking · EO sensing

Where will it be?

Where will a tracked box be 1.2 s ahead? A small diffusion model (lime) against constant velocity (peach).

DiffusionConstant velocity

Off at 1.2 s
––
90 % region
––
Truth inside
––
Target
–
How it works · numbers

A tracker that sees a target's box for 0.8 s has to say where it will be 1.2 s later, and how sure it is. Lime: a small diffusion model draws many possible futures, conditioned on the target class's agility. Peach: the constant-velocity prediction standard trackers use. Synthetic tracks from a 1280 × 720 px, 30° camera; no real imagery. The tracks are toy manoeuvres, not a model of any real platform.

/ Open source

Current
projects

Underwater perception and estimation, with results measured against ground truth. Negative results are published too.

Plot of one trajectory during a 20 second camera blackout: the estimate without DVL wanders far off, the estimate with a simulated DVL stays close to the motion-capture ground truth
Figure: uw-vio-dvl README (one example trajectory) · © Nehal Nevle

uw-vio-dvl

Visual-inertial odometry with a tightly coupled Doppler velocity log.

3.88 m → 0.66 mATE through a 20 s camera blackout, with simulated DVL
Bar charts comparing CPU and GPU front-end latency per frame and per stage
Figure: uw-gpu-klt README · © Nehal Nevle

uw-gpu-klt

CUDA KLT feature-tracking front end.

2.0–4.9×faster, no accuracy loss
Grid of underwater camera crops with detector boxes for a tire, a window, marine growth, cracks and debris, each marked with the verifier's verdict
Figure: uw-inspect-report README · © Nehal Nevle · camera frames from the AFRL bus_outside recording

uw-inspect-report

A detector plus a VLM draft the inspection report.

8/8true findings confirmed · precision 0.89
Scatter plots of injected versus estimated stereo rotation about each axis, lying on the ideal diagonal
Figure: uw-calib-health README · © Nehal Nevle

uw-calib-health

In-water stereo calibration monitor.

≥ 0.2°every change detected · 0 false alarms
Time series of visual SLAM drift rate and a predicted risk score that does not single out the windows before drift
Figure: uw-vslam-bench README · © Nehal Nevle

uw-vslam-bench

Underwater visual SLAM benchmark, with the negative results published.

Benchmark+ negative results
Overhead map of an ROV navigating with sonar through an obstacle field with moving obstacles: RL policy on the left, VFH+ planner on the right
Figure: rov-rl-mujoco README · © Nehal Nevle

rov-rl-mujoco

RL for an ROV in MuJoCo: sonar-only navigation through crossing traffic, and control in strong currents, against classical baselines.

2.7× lower errorthan a tuned PID in a 0.4 m/s current (0.048 vs 0.131 m) · 100 % vs 90 % success · sonar navigation being re-validated
Browser quadruped simulator: a robot dog trotting over loose gravel rocks, rendered with three.js
Screenshot: Q14 Dynamics Lab · © Nehal Nevle

Q14 Dynamics Lab

Robot-dog simulator in the browser: hand-written multibody dynamics (CRBA/RNEA/ABA), trained trot over 40 dynamic rocks, experimental SPH water.

1 kHzphysics in a Web Worker · real time on flat ground
Occupancy grid map built by SLAM in RViz, with obstacles and the robot pose
Screenshot: turtlebot_autonomy README · © Nehal Nevle

turtlebot_autonomy

ROS 2 Humble on TurtleBot3: exploration + SLAM, a custom C++ RRT* Nav2 planner plugin, Isaac Sim. Semantic navigation (Grounding DINO + CLIP): not yet tested end to end.

RRT*custom Nav2 plugin in C++ · Docker image
Booster T1 humanoid walking forward in MuJoCo with a trained PPO policy
Frame: humanoid-mimic-rl README · © Nehal Nevle

humanoid-mimic-rl

Booster T1 humanoid in MuJoCo MJX: PPO walking, plus get-up, backflip, DeepMimic imitation and a SuperMimic reimplementation (training).

0 falls128 × 20 s walk episodes · 100 % success · 0.47 m/s vs 0.5 commanded
In progress
Humanoid get-up, backflip and SuperMimicTraining
Sonar-based RL navigation for the ROVEvaluating
All repositories on GitHub
05 / Contact

Let's build robots that know where they are.