Skip to content
View caioplcerda's full-sized avatar

Block or report caioplcerda

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Content in all repositories owned by your account will be closed.
Maximum 250 characters. Please don’t include any personal information such as legal names or email addresses. Markdown is supported. This note will only be visible to you.
Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse
caioplcerda/README.md

Caio Lacerda

Aerospace engineering student at CU Boulder. I build flight software and the hardware it runs on — avionics, embedded control, autonomous vehicles.


AI Grand Prix

Autonomous drone racing
24 gates @ 38 m/s

Airgentas 2

High-power rocket

OBR Mark III

Autonomous rescue robot

B.S. Aerospace Engineering Sciences, University of Colorado Boulder — expected May 2030 Composites on a space-shot vehicle with the CU Sounding Rocket Laboratory Work authorization: F-1, no employer sponsorship required


AI Grand Prix — autonomous drone racing

Python MAVLink2 YOLOv8 OpenCV · ~13,700 lines

Fly a quadrotor through a gate course with no GPS, no map and no human in the loop. Position comes from integrating IMU in an NED estimator; the drift is corrected by the one absolute reference available — seeing a gate and knowing how wide it is. The official simulator was Windows-only and unreleased, so I wrote a 6-DOF simulator to the organizers' spec and developed the whole stack against it.

Gate detection YOLOv8n, P 1.00 / R 0.97, recall holds at 1.00 through motion blur to 31 px and 50% occlusion
Control 50 Hz position loop, cubic-spline trajectory, 5 m lookahead
Validation 243 unit tests · 60-gate gauntlet at 38 and 48 m/s

The finding I'd point at: every speed benchmark for months was wrong. Terminal velocity is sqrt(MAX_ACCEL/DRAG) — the vehicle was hard-capped at 20 m/s and could never fly the trajectories being planned. Fixing it also broke the controller, because drag had been supplying implicit damping. Three further optimizations were built, measured, and reverted for being worse — all documented in the repo so they don't get re-attempted.

Airgentas 2 — high-power rocket

MicroPython Raspberry Pi Pico 2 fibreglass machined aluminium

A 1.16 m composite-airframe vehicle designed for 500 m. The motor casing was turned from aluminium and the nozzle machined from steel rather than bought as a commercial reload. Apogee is detected barometrically and the parachute released by servo — mechanical, not pyrotechnic, so recovery can be bench-tested without consumables.

A recovery system gets exactly one attempt, so the flight code is built around that: a PAD → BOOST → COAST → DESCENT state machine that keeps deploy logic unreachable until launch is confirmed, a filtered altitude signal, a debounced deploy criterion, dual barometers, and a backup timer for a silently failed sensor.

Founded Antares Rocketry and led 17 engineers across structures, avionics and recovery.

OBR Mark III — autonomous rescue robot

Python Raspberry Pi 5 OpenCV 3D printing

Follows the line from a camera rather than reflectance sensors: adaptive thresholding over a 21 px window, then a scanline derivative to find the edges. Three PID loops at 50 Hz — one directional, two on wheel velocity from encoder feedback. Gains are tuned live in a browser over MJPEG, so a change costs a slider drag instead of a redeploy.

Intersections and 90° curves produce nearly the same image, so detection is disambiguated geometrically and every detector debounced before it can act. The Pi 5 dropped RPi.GPIO support mid-build, so the hardware layer was ported onto a custom lgpio backend. Chassis fully 3D printed; tyres cast in silicone from a printed mould.

Brazilian Robotics Olympiad 2025.


Experience

AI Automation Developer Intern — TOTVS · Feb–Jun 2026 Largest enterprise software company in Latin America. Shipped two AI agent products now sold commercially across Latin America, the only intern on either product team. Python and JavaScript automation pipelines against LLM APIs, replacing manual workflows for enterprise clients.

Tools

Languages Python, C, C++, MATLAB, JavaScript
Embedded Raspberry Pi, Pico, Arduino, ESP32, STM32 · I2C, SPI, UART, PWM
Flight & control PID, MPC, Kalman filtering, sensor fusion, trajectory optimization, MAVLink
Perception OpenCV, YOLOv8, synthetic data generation, camera calibration
Fabrication CAD, 3D printing, composites layup, machining

caioplace@gmail.com · LinkedIn · Boulder, Colorado

Pinned Loading

  1. AIGrandPrix AIGrandPrix Public

    Autonomous drone racing stack for the AI Grand Prix virtual qualifier: YOLOv8 gate detection, NED state estimation without GPS, 50 Hz trajectory control, and a 6-DOF MAVLink simulator written to th…

    Python

  2. airgentas-2 airgentas-2 Public

    High-power rocket: fibreglass airframe, machined aluminium motor casing with steel nozzle, Raspberry Pi Pico 2 flight computer with barometric apogee detection and servo parachute deployment. Antar…

    Python 1

  3. OBR-Mark-III OBR-Mark-III Public

    Autonomous rescue robot for the Brazilian Robotics Olympiad (OBR) 2025. Raspberry Pi 5, PID line following with encoder feedback, OpenCV vision, live browser tuning. Fully 3D-printed chassis with c…

    Python 1

  4. dart-80 dart-80 Public

    Fast, cheap, fully 3D-printed 80 mm EDF delta jet: Fusion 360 CAD, STLs, structural + OpenFOAM CFD analysis, support-free print plan

    Python

  5. esp32-filmcam esp32-filmcam Public

    An ESP32-CAM turned into a film camera: press reset, get one frame, develop it into scanned-35mm-looking images

    Python 1

  6. dataagile/dataagile-agent-kit dataagile/dataagile-agent-kit Public

    Plugins DataAgile para Protheus (ADVPL/TLPP) e Fluig no Claude Code, Codex CLI e Gemini CLI: base técnica curada, Agent Team, compilação TDS-CLI e E2E com Playwright

    JavaScript 3 1