robotics software engineer

I write the software between the motors and the model.

Drivers, control loops, teleoperation, safety systems and the pipelines that turn recorded episodes into trained policies. Two robot stacks built end to end; one of them in the field.

Scroll

the stack

MOTORSCAN · 2 vendors DRIVERC++ · ros2_control CONTROL LOOP250–400 Hz TELEOPERATIONQuest · SpaceMouse · joystick RECORDERMCAP TRAININGLeRobot · ACT · π0 POLICYback on the arm MOTORSCAN · 2 vendors DRIVERC++ · ros2_control CONTROL LOOP250–400 Hz TELEOPERATIONQuest · SpaceMouse · joystick RECORDERMCAP TRAININGLeRobot · ACT · π0 POLICYback on the arm

Every box is code I wrote or own on a robot arm that is in the field today.

teleoperation

Drive it from the next room, or the next country.

Trying out VR teleoperation on Arlo with a Meta Quest 3S. Unity/OpenXR client over UDP, 1:1 pose tracking, gated by a deadman: the arm follows only while the trigger is held.
A Sielo user drives the arm with a 6-DoF SpaceMouse to pick up a phone and take a selfie.
Operator side: a Quest controller in hand, the arm on screen.
Open Droids: a teleoperated robot opens a fridge and places a bottle.

At Open Droids I built a VR teleoperation pipeline that streams a robot's stereo depth camera to a Meta Quest 3: 100–200 ms latency on the local network, 300–400 ms with the robot in San Francisco and me in Ottawa. At Sielo I integrated four input devices for the same arm, Quest 3S controllers, a SpaceMouse, the wheelchair's own joystick and a browser joystick, behind a joystick arming interlock, plus teach-by-demonstration record and replay and a zero-torque hand-guiding mode.

Trying out teleop in a grocery store.

control and safety

From bare motors to a loop you can trust.

Early
Mid
Now

The same arm over a year. In between: a C++ ros2_control hardware interface and CAN driver for seven actuators from two vendors; a 250–400 Hz loop with per-joint PD gains, feedforward, filtered feedback and gravity compensation; control and teleop processes on SCHED_FIFO with CPU pinning on a PREEMPT_RT kernel, which removed a power-on jerk; and a layered safety system: hardware E-stop, ESP32 firmware with a 20 Hz heartbeat and 150 ms failsafe, a velocity guard at the CAN boundary and a torque-residual collision detector.

First prototype on a workbench, bare motors and aluminum links
Where it started.

perception and assisted control

Point, say it, or click it.

An early test of voice control: the arm picks a bottle and places it in the user's hand.
Camera frame with detection boxes on a cup and a bottle
Detection on the camera's onboard processor.
Terminal output of a depth estimator printing objects and 3D coordinates
Depth to 3D coordinates, in the logs.

Click-to-go back-projects a clicked pixel through depth into the robot's base frame. A YOLOv8 pipeline on an OAK-D camera turns detections into 3D grasp targets through a calibrated camera-to-base extrinsic.

robot learning data

Record it, convert it, train it, deploy it.

Machine tending with an off-the-shelf arm: a ReBot B601 with a wrist-mounted OAK-D camera opens the printer door, loads a part, runs a vision inspection and sorts it into pass or fail.

SieloStudio, which I wrote alone, records teleoperated episodes to MCAP, converts them to LeRobot datasets, trains ACT, Diffusion Policy, SmolVLA and π0, and pins every model to a data-contract version so a deployed policy sees the same inputs it was trained on. π0, π0.5 and Diffusion Policy have run on the real arm through the Rosetta LeRobot-to-ROS 2 bridge.

An off-process recorder reads raw messages without decoding them and cut recording CPU from 0.76 to 0.10 cores. The machine-tending rig above runs the same kind of stack on a second arm: perception from the wrist camera, and the door, the part and the bins handled without an operator.

arlo, sielo robotics, 2025–

A wheelchair-mounted arm, in the field.

A user with the arm beside a car
A user lifting a stick with the arm
A user holding a cup brought by the arm
A user eating a snack held by the arm
The arm folded on a wheelchair in a van
Users and the arm around a table
Arlo with its users.

6-axis assistive arm on NVIDIA Jetson. About 90% of the commits are mine: driver, control, safety, teleop, perception, data pipeline, fleet tooling with health-checked over-the-air updates and automatic rollback, and the architecture guide, about 1,900 lines.

r1d1, open droids, 2024–25

Vendor parts to CES in four months.

Three robots side by side: R1D1, R1D2, R2D3
CES 2025.
R1D1 product shot on white
Pick an object, drop it in the bin.
R1D1 driving, arm and base as one system.
Pouring oil into a pot.
Placing a flower in a vase.

Founding engineer. Off-the-shelf components from several vendors made to work as one robot: interfaces for their RS232 and RS485 protocols on a Jetson Orin NX, and the ROS 2 layer for control, planning, perception and navigation. At CES 2025 the robot detected an object, estimated its 3D position from depth, planned a grasp with MoveIt and handed it to a person.

projects

2024

Four-wheel swerve-drive AMR

Kinematics derived from scratch, custom ROS 2 controller, tested in Ignition Gazebo. 30,000+ views on LinkedIn, reposted by Open Robotics.

2026

Autonomous power-line inspection, National Research Council Canada

Isaac Sim environment connected to ROS 2 for state, perception, planning and control.

2026

SO-ARM101 at home (hobby)

ACT, Diffusion Policy and π0.5 on a LeRobot arm.

2022–23

Kisaan Rover

Eight-wheel agricultural UGV: ArduPilot, Jetson Nano, RTK GPS. INR 250,000 in government funding; Robofest finalist.

about

Yugmil Patel

Robotics software engineer in Ottawa. M.Eng. Electrical and Computer Engineering, University of Ottawa, 2024–2026. B.E. Mechatronics, Gujarat Technological University, 2019–2023. Python and C++ on Linux; ROS 2; NVIDIA Jetson; Isaac Sim and Gazebo.

Robot interfaces
ros2_control, CAN (SocketCAN; Robstride and Damiao MIT-mode protocols), RS232, RS485/Modbus, ESP32 firmware, real-time Linux (PREEMPT_RT, SCHED_FIFO)
Kinematics and control
Closed-form and numerical IK (Eigen, KDL, TRAC-IK), PD and feedforward control, gravity compensation, joint limits, MoveIt 2, TF2, URDF/Xacro/SRDF
Teleoperation and XR
Meta Quest 3/3S (Unity/C#, OpenXR), 6-DoF SpaceMouse, joystick arbitration, deadman gating, UDP and WebSocket clients, point-cloud streaming, record/replay
Safety and diagnostics
Heartbeat and watchdog failsafes, E-stop and velocity guards, torque-residual collision detection, ROS 2 diagnostics, Grafana Cloud, gtest, multimeter and serial-console debugging, ISO 14971
Perception and learning
OAK-D stereo depth (DepthAI), on-camera YOLOv8, OpenCV, camera-to-base extrinsics; LeRobot, PyTorch, Hugging Face Hub; ACT, Diffusion Policy, SmolVLA, π0, π0.5
Data and software
MCAP, Foxglove; Python, C++17, TypeScript/React, FastAPI, Linux, Git, GitLab CI, Docker, CMake; NVIDIA Jetson (Orin, Orin NX, Nano), Isaac Sim, Gazebo

contact

Let's talk.

Email is fastest, usually answered the same day. patelyugmil@gmail.com · LinkedIn · Ottawa, ON.