01 / SYSTEM2025–26
PAAMB — Bioinspired Robotic Snake
Bioinspired pipeline-inspection snake robot
Seven joints. Three gaits. A pipeline it has to inspect from the inside.
- Three-person team. My scope: mechanical design, electronics, firmware, sensor system, and FEA validation.
- Akshay Rajagopalan Nambiar — motor assembly, CoppeliaSim, physical build.
- Gopikrishna K P — Fusion 360 modelling, ML / FOMO, simulation.
- Guide: Arjun R Nair.
THE PROBLEM
Pipelines get inspected from the inside, where people and wheeled rigs don't fit well. A snake robot's cross-section is its entire footprint — if seven joints can be made to move like one body, hold a camera steady, and carry its own sensing, then a pipe no person can safely enter becomes inspectable from within.
The question this project had to answer: could a three-person team build the whole loop — mechanism, firmware, gaits, telemetry, video, and on-device defect detection — and have it work outside a simulator?
THE SYSTEM
Seven 3D-printed joint modules, modelled in Fusion 360 and validated with static-stress FEA before printing. An ESP32 drives seven MG996R servos through a PCA9685; the gait engine plays serpenoid curves — lateral undulation, sidewinding, and concertina — as phase-shifted joint angles.
A second ESP32 carries the sensing: MQ135 gas readings and BMP280 pressure/temperature streamed as telemetry. An ESP32-CAM at the head streams MJPEG to a Flask dashboard, which overlays live defect inference and exposes gait and e-stop controls.
WHAT I BUILT
- Mechanical design of the 7-joint mechanism — validated with static-stress FEA (every component cleared FoS > 2.6 in ABS)
- ESP32 + PCA9685 firmware: serpenoid gait engine with three switchable gaits
- Sensor node: second ESP32 with MQ135 + BMP280 telemetry
- ESP32-CAM MJPEG video pipeline
- Flask control dashboard: live stream, ML overlay, telemetry, gait + e-stop controls
- Wired the team's FOMO / TFLite defect model into the dashboard — matched its grayscale 96×96 INT8 input contract
MY SCOPE
- Mechanical design of the 7-joint serpenoid mechanism
- Electronics — the two-ESP32 architecture + PCA9685 servo driver
- Gait firmware — three serpenoid gaits (lateral undulation, sidewinding, concertina), written from scratch
- Sensor system — MQ135 gas + BMP280 telemetry on a second ESP32
- FEA structural validation — re-run until every component cleared FoS > 2.6 in ABS
WHAT BROKE
Early in CoppeliaSim the robot did exactly one thing: it rolled onto its side and stopped. Seven iterations chased it. The fix was less control, not more — instead of forcing every joint to stay upright, we corrected orientation only at the root link and let the rest of the body follow the serpenoid curve. Once the head stayed the right way up, the tail sorted itself out.
The model ran. It detected nothing. The dashboard's TFLite inference was silently wrong until the model's real input contract was matched — grayscale, [1,96,96,1], INT8, softmax head. No error, no crash; just confident silence until the tensor shape and quantization matched what the model was actually trained on.
The first FEA was wrong and we knew it: wrong material assigned, force pointing the wrong way. Rather than trust a number that looked fine, the whole study was thrown out and re-run with honest boundary conditions — component by component — until every structural part cleared a factor of safety above 2.6 in ABS.
A repo audit found WiFi credentials hardcoded in the firmware source. They moved to a gitignored secrets.h, and the lesson stuck: hardware projects leak secrets through convenience.
FIGURES



RESULT
- Three working gaits, switchable live from the dashboard
- Structure validated before printing: every component cleared a factor of safety above 2.6 in static-stress FEA (ABS)
- Defect detection ran on-device in real time on a FOMO / MobileNetV2 TFLite model — grayscale 96×96 INT8; YOLOv8 was evaluated during development and dropped
- End-to-end system: gait firmware, telemetry, live video, and detection running together off two ESP32s and a camera module