0000 · 0000
AMBIENCE LIVES HERE — CLICK TO MUTE OR UNMUTE AT ANY TIME.
ROBOTICS SOFTWARE ENGINEERISTANBUL · UTC+3

FULL VERTICAL SLICE. I BUILD THE ↑

From the motion planner down to the motor driver. ROS2 and MoveIt2 above, bare-metal STM32 and CAN below, and the geometry that connects them. I like the problems that live at the seams between layers — the ones nobody owns.

EDUM.SC. MECHATRONICS · GPA 3.50LANGENGLISH C1TZFULL EU OVERLAP
◈ CR10A · KINEMATIC STATE--:--:--
J1+000.00°
J2+000.00°
J3+000.00°
J4+000.00°
J5+000.00°
J6+000.00°
SEAM SAT0.000
PHASES6 / 13
MODULES39
TESTS1724 ✓
TEST LOC28 409
COMMITS145
▸ MOTION ONLY — NO ARC. WELDING DISABLED BY DEFAULT.
SCROLL TO DRIVE THE ARM
CONTROL LOOPBARE-METAL · NO RTOS
ATTITUDE ERR0.00°
0
LINES OF SOURCE
01 · src/ · 39 MODULES
0
TESTS PASSING
01 · 42 TEST FILES
0
BACKEND TESTS
04 · 88.19% COVERAGE
0
FILES MYPY-STRICT
04 · RUFF CLEAN ON 318
0
REAL ARM DRIVEN
01 · CR10A · 29 JUL 2026
ROS2 MOVEIT2 STM32 CAN BUS OPENCASCADE INVERSE KINEMATICS ICP OPEN3D PYQT5 FASTAPI PGVECTOR DOBOT CR10A ROS2 MOVEIT2 STM32 CAN BUS OPENCASCADE INVERSE KINEMATICS ICP OPEN3D PYQT5 FASTAPI PGVECTOR DOBOT CR10A
01
01

CAD-to-Robot
Weld Path

CLIENT WORK · SOLE ENGINEER
JUL 2026 — ONGOING
◈ CR10A · KINEMATIC VIEWIDLE
FLOOR PLANE · min_z 0.0 — WHERE THE ROBOT IS BOLTED REACH ENVELOPE · L1+L2 ELBOW LOCUS SEAM · FILLET · CONCAVE-EDGE DETECTED Drag along the seam to move the torch J1 BASE START END SATURATION 0.000 — FULLY REACHABLE
WP 00/14R1 0.0°R2 0.0°R3 0.0°ARC OFFDRAG THE SEAM ↔
◉ RUNS ON REAL HARDWARE

Give it a CAD part.
It welds it.

PYTHON · CADQUERY / OPENCASCADE · OPEN3D · PYVISTA · PYQT5 · OPENCV · DOBOT CR10A

Built for a cobot welding integrator. Customer part data and commercial terms withheld — described at the level of problem and approach.

It finds the weld seam, works out the toolpath, checks whether the arm can reach it without burying its own elbow in the workpiece, aligns the path to where the part really sits, and drives a Dobot CR10A along it.

  • The brief was one sentence. Put a camera on the arm, let it pick the points to be welded, then weld them. Everything after that sentence — research, stack selection, architecture, a thirteen-phase roadmap, implementation — was mine. There was no reference implementation. 36,321 lines of source, 28,409 of tests, 145 commits in about three weeks.
  • Geometry, not guesswork. STEP parsing through OpenCASCADE, seam detection by concave-edge analysis, joint-type classification (fillet / butt / lap) from opening angle and face arrangement, then oriented 3D waypoints with lead-in and lead-out. Rule-based by choice — ML only where rules genuinely cannot reach.
  • I solved the arm myself. A closed-form inverse kinematics solver for the CR10A, and a body-clearance model whose link capsules are measured off the robot's own mesh instead of estimated. That measurement caught a wrong driver constant and a prior model drawing the upper arm 613 mm oversized. Reach is checked against the whole body of the arm, not the tool tip.
  • The part is never where the CAD says. A depth camera and ICP registration recover the real pose and correct the CAD-derived path. A placement sweep then answers "where can this part stand" as a band of valid positions rather than one yes/no — and the band narrows the moment a 200 mm torch is fitted.
  • 29 July 2026 — first run on a real CR10A. Connected, enabled, drove a full path in real motion. Motion only: no torch fitted, no arc struck. It stopped once mid-run at a singularity, so the next version got a pre-flight singularity check. A fake controller was written so the driver could be developed without hardware, then given the real closed-form CR10A IK.
The part I'm most careful about: weld current, voltage and travel speed ship as explicitly unverified defaults, and welding stays disabled by default until a competent welder signs them off. A driver rule that rejects one on-site path over ordinary corner turns is still open, deliberately — it is a threshold in a safety path, so nothing was quietly loosened to make it pass.
Dobot CR10A collaborative robot arm
TARGET HARDWARE

Dobot CR10A

SOLVER
Closed-form inverse kinematics, written for this arm
CLEARANCE
Link capsules measured off the robot's own mesh
FIRST RUN
29 July 2026 — connected, enabled, drove a full path
ARC
No torch fitted, no arc struck. Motion only.
02
02

Autonomous
Modular Arm

M.SC. THESIS · ACTIVE
◈ RESEARCH IN PROGRESS

Joints you can swap while it is running.

ROS2 HUMBLE · MOVEIT2 · URDF / XACRO · STM32 · BARE-METAL CAN

Instead of a fixed kinematic chain baked into a URDF at build time, the arm discovers its own configuration and rebuilds its kinematic description at runtime. Pull a limb, put a different one on, and it re-derives the chain without a restart.

  • Joint modules are hot-swappable while the system is live.
  • ROS2 + MoveIt2 pipeline operational and demonstrable in RViz.
  • Distributed joint control on bare-metal STM32 over CAN — each module is an addressable node running its own control loop.
  • Where it is going: AI-driven self-reconfiguration — the arm choosing its own morphology for a given task.
◈ MODULE BUS · CAN 1 Mbit/sSCAN
DISCOVERING NODES… EACH MODULE IS AN ADDRESSABLE NODE RUNNING ITS OWN LOOP CAN_H / CAN_L · DIFFERENTIAL 120 Ω TERMINATION URDF · REBUILT AT RUNTIME FK / IK RE-DERIVED · NO RESTART
NODES 0BUS IDLEURDF STALEERR 0
◈ RECORDED RUN · SIMULATIONPAUSED
MODULAR ARM · URDF REBUILT AT RUNTIMERViz / GAZEBO SIMULATION — NOT HARDWARE · SILENT · 26 s
03
03

Brushless Motor
Stabilisation

PERSONAL · ON HARDWARE
◈ BLDC · 12-SLOT / 8-POLE · SIX-STEPARMED
12-SLOT STATOR · 8-POLE ROTOR · HALL FEEDBACK PHASE DRIVE · U V W IMU FUSION → PID → COMMUTATION ERR 0.00° TIMING MEASURED ON A SCOPE, NOT ASSUMED
RPM 0STEP 0/6HALL 000LOOP BARE-METAL
◉ BUILT ON REAL HARDWARE

A platform that refuses to fall over.

STM32 · BARE-METAL C · IMU SENSOR FUSION · BLDC · CLOSED-LOOP PID

A real-time self-balancing platform built from the driver up: closed-loop PID over fused IMU data, driving brushless motors through six-step commutation — including the unglamorous part, bringing up the motor driver, finding the noise, and tuning it on real hardware rather than in simulation.

  • Six-step commutation with rotor position feedback; phase timing tuned against measured back-EMF behaviour.
  • Sensor fusion to get a usable attitude estimate out of a noisy IMU before the controller ever sees it.
  • Control loop written bare-metal — no RTOS, deterministic timing, measured on a scope rather than assumed.
04
04

Grounded Engineering
Feasibility Platform

CLIENT WORK · 2-PERSON TEAM
AUG 2026 — ONGOING
◈ CONFIDENTIAL CLIENT

The numbers are computed, not generated.

FASTAPI · POSTGRESQL + PGVECTOR · LLM TOOL-CALLING · CELERY · REDIS · DOCKER · NEXT.JS

Built in a two-person team with AI-assisted development under enforced quality gates. Client data, pricing logic and internal rules withheld; the architecture below is a general pattern.

A system that reads incoming automation project documents and produces a first-pass technical feasibility assessment — the work a senior engineer does in the first two hours of looking at an enquiry.

  • Payload, reach, torque, cycle-time and cost checks run as deterministic Python functions the model calls as tools. The LLM interprets the results; it never invents them.
  • Hybrid retrieval — vector plus lexical, reciprocal rank fusion — over a structured 46-table schema, scoped by process and sector rather than keyword-matched.
  • Every claim carries a reference back to a record. Unsourced statements are labelled engineering estimates, and commercial data is stripped from the response server-side rather than hidden in the UI.
  • Human-in-the-loop by design: nothing is released without engineer approval, and approved corrections return as reusable knowledge.
Measured, not asserted: mypy --strict clean across 217 source files, ruff clean across 318 · 2,351 backend tests at 88.19% coverage against an enforced 85% floor · 202 frontend unit tests · 23 Playwright E2E scenarios · 10 of 11 quality gates green. A blind eval over five real past projects averaged 8.10/10 — source accuracy 10/10, hallucination 10/10 — and cost proximity came in at 4.60/10, below threshold. It was reported as it stood rather than tuned until it passed.
◈ ANALYSIS PIPELINE · 7 STAGESREADY
INBOUND DOCUMENT → FIRST-PASS FEASIBILITY EVERY CLAIM → SOURCE RECORD UNSOURCED → LABELLED ENGINEERING ESTIMATE 0 CLAIMS GATES 0/11
STAGE 0/7SOURCED 0%RELEASE HOLD
05

Stack

SIX DOMAINS · DRAG OR SWIPE →
01

ROBOTICS

Planner, chain and cell — the layer that decides where the tool goes.

ROS2 HumbleMoveIt2GazeboRVizURDF / xacroTF2FK / IKTrajectory planningFANUCDobot CR10A
02

EMBEDDED

Below the planner: deterministic timing on bare metal.

STM32Bare-metal CCAN busUART / SPI / I2CPIDIMU fusionBLDCReal-time
03

GEOMETRY & VISION

The middle: turning shape into a path a robot can drive.

OpenCASCADECadQuerySTEP / DXFOpen3DICPPyVistaOpenCVPoint clouds
04

BACKEND & AI

Retrieval and tool-calling where the answer must be traceable.

FastAPIPostgreSQLpgvectorDockerRedisLLM tool-callingRAG.NET CoreNext.js
05

CONTROL & V&V

Proving the loop behaves, and proving the proof.

State-spaceLQRObserversRoot-locusMATLAB / SimulinkV-modelHIL designMC/DC
06

MECHANICAL

Where the software has to meet a real structure.

SolidWorksAnsys FEAAutoCADFusion 360DIN standardsDFM
DOMAIN 01 / 06
06

Experience

LOG · MOST RECENT FIRST
JUL 2026 — PRESENTCONTRACT · REMOTE

Robotics Software Engineer

Cobot welding integrator · Istanbul, remote

CAD-to-robot weld path generation on a real Dobot CR10A, and a retrieval-grounded engineering feasibility platform. See 01 and 04 above.

AUG 2025 — APR 2026FULL TIME

Mechanical & Automation Engineer

BYRSAN Makina San. ve Tic. Ltd. Şti. · Istanbul
  • PLC/HMI control interface for a packaging machine, from I/O mapping to operator screens.
  • DIN-compliant structural calculation and SolidWorks FEA for overhead crane systems; failure modes closed through iterative root-cause analysis.
  • Built the company's digital infrastructure end to end — corporate site, automated lead pipeline, and a deployed React + Firebase quote-management system.
FEB 2025 — MAY 2025INTERNSHIP

Engineering Intern — Robotics & .NET

Tezmaksan Makina San. ve Tic. A.Ş. · Istanbul
  • Programmed FANUC industrial robots; supported robotic cell integration, bring-up and validation on a production floor.
  • .NET Core Web API dashboards for real-time machine monitoring and industrial IoT pipelines.
2021 — PRESENTACADEMIC

M.Sc. & B.Sc. Mechatronics Engineering

Yıldız Technical University, GPA 3.50 · Pamukkale University, GPA 3.11

M.Sc. thesis: the autonomous modular robotic arm above. Also a full V-model V&V campaign design for a digital engine control unit — requirements-based test cases, MC/DC coverage criterion and a specified HIL bench, with DO-178C / ARP4754A / ARP4761 awareness. Earlier: Lisans Makina (mechanical design, 2025) and Vega Makina (control-board fault diagnosis and sensor calibration, 2024). Certified: SHGM İHA-1 UAV pilot licence.