1 / 11

Full-Stack Robotics Engineer

Hi, I’m Kieran

I build whole robots, from the mechanical design and electronics to the control software and AI.

Contents

Click any section, or scroll through the deck.

Kieran Pereira

First of all… Hello!

I'm a robotics engineer with a Master's from UC Berkeley.

I'm Head of Robotics at Undaunted, where we run the largest robotic security fleet in the US. Before that, I wrote the path planning for a fleet of autonomous sailboats that map waves so cargo ships can steer around them.

I like working on the whole robot, from the chassis to the code, in a small team that moves quickly.

Experience
Lockheed Martin
Airbus
UC Berkeley
Undaunted
Skills & tools
ROS 2
ROS 2
C++
C++
Python
Python
MATLAB
MATLAB
Simulink
Simulink
Fusion 360
Fusion 360
Kieran Pereira • kieranpereira@hotmail.com2 / 11
Undaunted · Head of Robotics

Undaunted: Building the largest robotic security fleet in the country.

Our robot dogs patrol apartment complexes and charge in a hub on site. The first hubs were plywood boxes that overheated, and the payload was a Ring doorbell strapped to the robot’s back.

Prospects saw a prototype and deals stalled. I designed the production hub, now 160 in the field, which together with our own payload helped unblock about $620K in stalled deals.

The charging hub
The original plywood charging hub sitting on gravel beside a building
A plywood box✗ Where we started

Rain got in, heat built up inside, and cables ran everywhere.

The production hub✓ 160 in the field · ~$620K unblocked

Weatherproof and air-conditioned, with a door that opens itself when a patrol starts.

How it shipped

  • Worked with local manufacturers and contractors to build 10 hubs a week
  • Built a Raspberry Pi and MQTT system so we can open the doors remotely
  • Got feedback from customers, manufacturers, field techs and sales before we locked the design, so we didn’t have to rework it later
10 built / weekAC-cooled
The payload
The quadruped with the original payload: a Ring doorbell camera strapped to its back
Off-the-shelf parts✗ Read as a prototype

We drove the robot through a Ring doorbell camera, so prospects assumed we were still prototyping.

CAD model of the in-house payload integrated onto the quadrupedDesigned in CAD
The in-house payload with speaker, cameras and lights, out on patrolOn patrol
The in-house payload✓ Helped close deals

Runs through our own dashboard and looks like a finished product.

What I built

  • A wiring loom that carries 34V, 12V and 5V to everything in the payload
  • Teleop on a Raspberry Pi that streams live video and two-way audio to our dashboard, using IMX cameras, a microphone and an amplified 12V speaker
  • Integrated a custom PCB that drives MOSFETs for the white and blue lights
  • Reworked the look with customers and sales until it read as a product. That helped close deals with Atlanta’s largest multifamily company
Kieran Pereira • kieranpereira@hotmail.com3 / 11
Undaunted · Head of Robotics

Undaunted: Building a US-made rover for sites our robot dogs couldn't cover

Our robot dogs only lasted two hours on a charge, which isn’t long enough to patrol large estates, depots or warehouses.

I took the rover through three builds in five months. A converted toy proved the idea, my own chassis broke in the field, and the third, built on a go-kart platform, is the one now patrolling Atlanta.

01
A converted kids’ ATVMonth 0–1✓ Proved the concept
  • Stripped a kids’ ride-on ATV down to its motors and used it as a rolling test bed
  • Replaced the stock controller with my own dual H-bridge board for skid-steer (tank) drive
  • Drove it remotely over LiveKit, through an LTE modem I specced and fitted
Patrolling in 1 month6 deterred in month one1080p · 160° FOV
Our own aluminium-extrusion chassis with the electronics box on top02
A custom chassisMonth 2–4✗ Where it broke
  • Designed and built an aluminium-extrusion chassis, mostly from Amazon parts
  • Four hub motors on VESCs; iterated from 4WD tank drive to 2WD front-pivot steering
  • At full weight the frame flexed and the wheels lost alignment; the geometry didn’t hold up
20 mph · 9 hr runtime4× VESC · 56 V1.7 kWh LiFePO₄
03
Go-kart architectureMonth 4–5✓ The fix
  • Rebuilt it on a go-kart platform with proper suspension and Ackerman steering
  • Moved fabrication to a US manufacturer, cutting per-unit cost by about 60%
  • Repairs mostly stopped. The rovers hit 96% uptime and deterred 56+ intruders
≈60% cheaper per unit96% uptime56+ deterred

5 mo

From toy to deployed product

150

Robots in the fleet, ~15 of them rovers

96%

Fleet uptime

#1

Robotic security fleet in the US

Kieran Pereira • kieranpereira@hotmail.com4 / 11
UC Berkeley · Capstone project

CaptAIn: A network of autonomous ocean drones

Aerial view of a winding mountain road tracing an energy-efficient path versus a straight line
Mountain roads zig-zag to keep the climb gentle. Ships can do the same with waves: a slightly longer route that burns less fuel.

Cargo ships burn up to 30% of their fuel pushing through waves. We're building Google Maps for the ocean so they can route around them.

  • That wasted fuel adds up to about 1% of all global emissions.
  • Steering around high waves can cut fuel use by about 20%, worth around $6.5B a year.
  • Our autonomous sailboats measure the waves in real time, so ships know where the rough water is.
Swarm mesh network diagram showing sailboats spaced 200 m apart
Fleet of autonomous sail drones on the water
Creating the path-planning and control algorithms in ROS2
INPUTSPLANNINGACTUATIONGround StationwaypointsSensor DataIMU · wind · GPSWaypoint Queuequeue + de-dupeCoordinate Calculationsoptimised path · tackingKalman-filtered sensorsRudder ServoLQI course controlSail ServoLQI trim control
My ROS2 node graph. Waypoints and live sensor data go through path planning, then out to the rudder and sail servos.

The boats run on wind, and no sailboat can sail straight into it. My ROS2 planner works out a route anyway.

  • Tacks (zig-zags) automatically when the target is upwind
  • Takes new waypoints mid-route
  • Adjusts heading and sail trim as the wind shifts
Kieran on the Berkeley Marina pier with an autonomous sail drone

It sailed itself 2.3 km up SF Bay and back.

Fully autonomous, upwind and downwind. We built 50 boats and field-tested 18.

Kieran Pereira • kieranpereira@hotmail.com5 / 11
CaptAIn · Field testing

Field testing and cleaner sensor data

Boat simulation GUI showing commanded rudder and sail angles
The replay simulator, showing rudder and sail commands

Testing on the water was slow and expensive.

  • Every test depended on the tide and on the marina being open.
  • Sea trials told us the most about how the boat behaved, but we needed a faster way to try new features.
  • So I built a simulator that replays logged sensor data from earlier sea trials through new versions of the controller.
  • We could then run hardware-in-the-loop tests in the lab and catch actuation bugs before going out on the water.
  • Iteration time dropped from days to hours.
Field-testing setup with the autonomous boat at the Berkeley Marina

Our sensor data was too noisy to steer the boat with.

  • Cheap IMUs on a boat rocking in every wave gave us motion data we couldn't trust.
  • I wrote a 1-D Kalman filter to combine the readings and smooth out the noise.
  • In field tests, steady-state sensor noise (RMS) dropped by 85%.
Field data: the filter removing wave noise from a steady signal
Steady-state IMU noise: raw signal versus low-pass + 1-D Kalman
The filter's response to a sudden disturbance
Kalman filter response to a spontaneous stimulus
Kieran Pereira • kieranpereira@hotmail.com6 / 11
Holding our competition rocket, with the CanSat payload nose section at the top
We started the team from nothing, then designed, built and flew this rocket in under a year.

2nd place at the Mach22 national competition.

It was our first entry. Some of the teams we beat had spent up to 3 years on their rockets.

UCL Rocketry · Head of Payload

CanSat Payload: 360° Flight Video & In-Flight Air-Quality Capture

The goal

  • Build a CanSat that records 360° footage of our rocket's flight.
  • Collect pollutant and atmospheric data as a quicker, recoverable alternative to weather balloons.

What I did

  • Led a team of 5 engineers building the CanSat. It flew to 1.5 km and came back intact.
  • Did the CAD and designed the parachute and 360° camera deployment mechanisms.
CanSat payload CAD with recovery lifting eye
Avionics stack and wiring packed inside the payload
The CAD, the packed avionics bay, and the 360° GoPro deploying, all inside a 3D-printed shell.
The camera shook too hard to film, so we designed a spring-catch to stabilise it

Lab tests showed the shaking would ruin the footage. Our spring-catch locks the GoPro in place once the payload deploys.

  • As the payload deploys, an outer tube displaces a spring…
  • …driving a stopper that catches and fixes the camera at 45°.
  • Felt on the stopper absorbs the vibration, so the 360° footage stays steady.
CAD section of the spring-catch: a stopper and an outer tube that displaces the spring
The catch mechanism, with the stopper and outer tube labelled.
Spring-catch undeployed: the GoPro rests against the inner tube surface
Before deployment, the GoPro rests on the inner tube.
Spring-catch deployed and mounted under the payload
After deployment, the stoppers hold the camera at 45°.

My proudest project. I helped start UCL Rocketry independently after the university declined to back us. It has since grown into UCL's most successful engineering team, with podium finishes at Spaceport America and several European competitions.

Kieran Pereira • kieranpereira@hotmail.com7 / 11
Berkeley Robotics and Human Engineering Laboratory · Quadruped running robot

BladeRunner: Training a quadruped to run on spring blades

An energy-efficient running quadruped for search and rescue.

Quadruped gait biomimicry: diagonal synchronization versus front-and-back leaping at higher speeds
At speed, quadrupeds switch from a diagonal trot to a bound, leaping off the front and back legs. That's the gait we trained for.

What we did

  • We analysed how spring running blades store and return energy, the same prosthetic design used in Paralympic sprinting.
  • We modelled a quadruped in MATLAB Simscape Multibody with J-shaped running blades on each leg, capturing compression, joint dynamics, and ground contact.
  • We trained a DDPG actor-critic agent to run as efficiently as possible on those blades, with a reward shaped around the cheetah gait from our biomechanics research.
BladeRunner quadruped model in MATLAB Simscape Multibody
The Simscape model I trained the policy in.
Training locomotion with deep reinforcement learning (DDPG)
Training runs. The agent learns its joint torques by trial and error in the simulation, with no scripted gait.

The reward wasn't just “go fast”

  • Rewarded a level body, the way running animals hold their posture.
  • Penalised sudden changes in joint direction to save torque.
  • Penalised long ground contact to keep each stride quick.
  • Kept the front legs in phase with each other, and the back legs too.

A gait 44% faster than Boston Dynamics' Spot.

It covered 23 m in 10 s in simulation and stayed stable the whole way.

Kieran Pereira • kieranpereira@hotmail.com8 / 11
UC Berkeley · Co-founder & CTO

Obsidian Performance Gear

Bad form is a common cause of training injuries, and most people only notice once something hurts.

We built a swimming coach and a weightlifting coach on the same embedded hardware. Both vibrate to correct your form mid-exercise.

Hand-soldered protoboard with an ESP32 Feather, MPU6050 IMU and two motor driver breakouts
The hand-soldered body unit from the swimming build, with an ESP32 Feather, the body IMU and two motor drivers.

Two prototypes

01Prototype · Swimming

  • IMUs on the head and body. It buzzes when your head lifts out of line or your body roll drifts, so you can correct it mid-stroke.

02Prototype · Weightlifting

  • A sensor pod on the arm tracks the lift angle on every rep and streams it live to our Python visualiser (demo on the right).

How it works

  • An ESP32 reads two MPU6050 IMUs and drives four vibration motors.
  • The firmware runs four FreeRTOS tasks, using mutexes, queues and task notifications to keep sensing, feedback and telemetry in sync.
The weightlifting prototype running live, with our Python GUI tracking the arm through a lateral raise.

System architecture · swimming build

View the firmware on GitHub →

2× MPU6050 IMUs

head pitch + body roll

shared I²C · mutex-guarded

ESP32 · FreeRTOS

4 tasks: sense ×2 · telemetry · command

threshold breach → PWM

4× vibration motors

buzz the side that drifted

queues → Bluetooth SPP

Python GUI

live view · commands back

We also tested the business

156

Customer interviews · NSF I-Corps

2

Signed letters of intent

1

Draper University accelerator offer

We were five Berkeley MEng founders who’d worked at SpaceX, Tesla, Lockheed Martin and Samsung R&D. Read the pitch deck →

Why we stopped

The tech worked, but we’d built it around an idea that wasn’t worth pursuing. The interviews made that clear, so we shut it down rather than keep building.

Kieran Pereira • kieranpereira@hotmail.com9 / 11

It only reads out signs it's 80%+ sure of, says the most important one first, and won't repeat a sign within 10 s.

84.4% mAP · 0.81 F1

Beat Meta's benchmark on a harder global, 63-class dataset. Graded at the equivalent of a 4.0 GPA.

Inference

~15.5 FPS

Unseen test

0.711 F1

UCL Capstone · Individual Project

UCL Capstone: Traffic-Sign Detection & Narration

The drivers most at risk are the ones missing the signs.

  • Young drivers are 32% of those killed or seriously injured. Risk rises again after 70.
  • 44% forget what common signs mean. Inattention is behind 56% of road deaths.
  • Driver-assist rarely comes in the cheap used cars these drivers buy.
  • I built a low-cost system that reads road signs out loud.
Bar chart: UK car drivers killed or seriously injured per million population by age, peaking at ages 20-29
Peak risk: ages 20-29
Methodology

A custom YOLOv5 pipeline in PyTorch

  • Cleaned and restructured the dataset
  • Tuned the architecture and hyperparameters
  • Tested it live and in poor conditions

Data prep

Model development

Testing and narration

Methodology flowchart: dataset selection, manipulation, augmentation, background elimination, model architecture, hyperparameter optimisation, final training, then scenario, large-dataset and narration testing

100k

Training images

401

Raw sign classes

270

GPU hours post-opt

31

Hyperparams tuned

Training results
Line chart of maximum F1 score versus epoch for each pipeline stage, with the final model crossing the state-of-the-art threshold
Each data-prep stage raised F1 (0.32 → 0.41 → 0.75). Tuning the hyperparameters with a genetic algorithm took the final model to 0.81 F1, past the state of the art.
Real-world testing
Stop sign progressively occluded from 0 to 75 percent, showing the model detects it up to 50 percent obstruction
Occlusion test on a stop sign
  • Reads signs that are up to half hidden by leaves, dirt or other vehicles.
  • Still works in fog, rain, snow and low light.
  • Scored 0.711 F1 on 7,783 images it had never seen.
Kieran Pereira • kieranpereira@hotmail.com10 / 11