Mohanad KandilRobotics, software & research
Back to writing

Why I’m coming back to hardware.

I used to build underwater robots. Now I’m studying hardware timing in C++ and getting started with FPGA inference.

Illustration of a purple PCB and chip
Illustration inspired by my first PCB. The original board appears below.

In eighth grade, I built a smart-home proof of concept. At that age, it felt enormous. I was putting software and electronics into a model of a home that I could change and show to other people. Looking at it now, with its blue frame and all the wiring visible, I remember how much I wanted to get the whole thing working.

Leaning over my blue-framed smart-home prototype, with exposed wiring and computers beside it
Working on my smart-home proof of concept in eighth grade.
The complete smart-home model with a blue roof, clear walls, wiring and a beacon, in front of its project poster
The model on display, with the project poster behind it.

School also meant science fairs and robotics competitions. I was a RoboCup finalist in 2018 and competed in WRO, among other events. I spent years building robots with teams, and the underwater vehicles became a big part of that time.

Science-fair exhibitors with their project posters, including my ROBO PI poster
Science-fair days, presenting ROBO PI.
A group on a stage beneath the Intel ISEF logo, with an audience in the foreground
The Intel ISEF stage.

Our first underwater vehicle was an ROV, steered by a person at the surface through a tether. We had to make its electronics and mechanisms respond to the operator’s commands.

Our first remotely operated underwater vehicle, with a yellow body, white tubes and thrusters, on a worktable
Our first ROV, teleoperated from the surface.
Our team in green shirts at an underwater robotics awards ceremony, holding a certificate and trophy
A team photograph from our underwater robotics competition years.

We later built Blue Marlin with the Immortals team, also under human control. In 2018, I designed my first PCB for it: a two-layer Arduino Mega shield that brought the robot’s electrical connections onto one board inside its enclosure.

Blue Marlin beside a pool, with blue supports, a clear domed enclosure, and black thrusters
Blue Marlin, our second ROV, with blue supports and a clear dome around the electronics.
Component side of the Blue Marlin PCB, with blue screw terminals and headers
Component side
Underside of the Blue Marlin PCB showing tracks and solder joints
Tracks and solder joints

The board connected the thruster speed controllers, pneumatic valve controls, lights, and analogue sensor inputs. We also brought out unused Arduino pins for later additions.

Routing both layers was one of the electrical team’s challenges. Our team report describes choosing track widths to limit voltage drop and heating, and making an etched prototype before soldering the components.

I worked on another ROV along the way, too. Watching this pool-test recording still brings back how it felt to see a machine we had worked on moving in the water.

A pool test of another ROV I worked on during those years.

Later, with VorteX, we worked on an autonomous underwater vehicle for RoboSub. The AUV was designed to carry out tasks without a person continuously steering it. My part included programming motion-control algorithms in ROS for underwater manoeuvring and path planning.

The yellow autonomous underwater vehicle submerged in a tiled swimming pool during development
Our later AUV during pool development, designed for autonomous operation.

Our RoboSub report describes how the team approached perception, state estimation, and control. Detecting a gate was one part of the problem; the vehicle also needed to estimate its motion and turn a desired movement into thruster commands. We explored simulation and control models to study how those parts could work together.

Through an agreement for the team to test in the Suez Canal, we took the AUV beyond the pool. The footage below shows an object-pickup attempt, with the grippers working around a basket. The visibility was limited, and we were trying to position both the vehicle and its mechanisms.

An object-pickup attempt during our Suez Canal trials, with multiple camera views of the grippers and basket.
Our team at the Underwater Robotics Challenges ceremony with a first-place award
With the team at the Underwater Robotics Challenges.
Our team at the Alamein Robotics Championship holding an ROV senior category third-place award
Our team’s third-place award in the ROV senior category at Alamein.
Holding a first-place Underwater Robotics Challenges award and a plaque
A first-place award from our underwater robotics work.
Holding the Egyptian flag with a teammate at a robotics awards ceremony, with a trophy in front
With a teammate and the Egyptian flag at an awards ceremony.

In 2025, a friend and I started Volta. I wanted to see whether AI could help with the work of designing a board. We began with an assistant for datasheet work, then explored natural-language commands for schematics and PCB layouts in KiCad.

Our first prototype used Python to connect to KiCad’s board data through its API and command-line tools. We combined an LLM planner with rule-based checks and manufacturability scripts to propose design actions.

KiCad’s board editor beside Volta’s agent panel, which lists four mounting-hole footprints and their positions from the open board
An early Volta prototype, showing footprint data from the open KiCad board in the agent panel.

Our original one-pager set out plans for placement, routing, and design checks inside the tools engineers already used. The prototype was still early. We secured investment, but it came with the condition that we drop out of university. We chose to continue our studies and stopped working on the venture. I’ve kept the prototype.

Much of my recent work has been on AI agents and the pipelines around them. Working on Volta got me interested in the hardware running AI. I wanted to understand how much time a chip spends computing versus moving data, and what that means for energy use.

I now have an AMD Kria KV260 Vision AI Starter Kit on my desk. Over the past couple of months, I’ve been spending more time on chips and getting familiar with the board. I have a first inference experiment in mind: a small, quantised matrix operation whose software and hardware implementations I can compare.

The plan is to establish a software baseline, check that a simulated hardware implementation produces the same numerical results, then run it on the FPGA. I want to measure the whole path, including data-transfer time and resource use, as well as the energy needed to finish the workload. A faster operation would be useful; I also want to know what it costs in electricity.

Alongside that, I’m experimenting with low-level kernels for model operations and studying how to compare them fairly with existing implementations. I haven’t established a speedup or energy saving yet.

I’m also studying hardware timing with Traceperf, a C++ learning project developed with substantial AI assistance. It reads simulation traces and reconstructs read transactions on AXI, an interface connecting parts of a system. I’m working through the code and reproducing its experiments to build my own understanding.

One experiment caught my attention: a request could be accepted before its internal read began because a stalled previous response was holding up the launch. A timing model that treated acceptance and launch as the same event would miss that delay. I like having a specific behaviour to investigate, and a model whose assumptions I can check against a trace.

My goal over the next five or ten years is to help design chips for training frontier AI models, with lower energy use and cost. Next, I want to run the matrix-operation experiment on the KV260 and measure how it compares with the software baseline.