Personal project
Genesis: a mobile manipulator, registers to VLA
Mecanum base, single and dual-arm variants, a whole-body planner that solves on CPU, keypoint perception and a VLA training pipeline. Built from scratch.

Abstract
Genesis is a mobile manipulator I build to learn robotics end to end, from ESP32 registers to vision-language-action policies. It started as one 5-DOF arm on a mecanum base. It now covers a dual-arm variant on a lift column, a whole-body planner that solves on CPU, keypoint perception on a frozen vision backbone, and one task stack that runs in MuJoCo, Isaac Sim, Gazebo and on the robot.
Introduction
No client, no deadline. The rule is that every abstraction is earned: a layer gets built once the math under it is written down. So it grew upward: firmware, kinematics, perception, autonomy, learning. The mechanical and electrical sides are mine too. The chassis and the lift column are Fusion 360, the servo driver board is KiCad.

The platform
- Base. Four mecanum wheels, ESP32 firmware, register-level PWM, hardware encoders, per-wheel PID.
- Arms. SO-101 5-DOF, one on the first build, two on a lead-screw lift column on the current one.
- Compute. Raspberry Pi 5 and two ESP32s, ROS 2 Jazzy, a Zenoh bridge to the dev machine.
- Power. Two 4S 18650 packs, actuators and logic separated, BMS and per-rail buck converters.
Motion planning
Whole-body planning runs on CPU and stays there. Collision checks are vectorized over batches of configurations, not one at a time, IK is solved batched and hardware agnostic, a coarse pass prunes before the fine one runs, and edges drop out as soon as a lane hits an obstacle.Single instruction, multiple data: one operation evaluates many configurations at once across the CPU's vector lanes. Pinocchio and Coal answer the kinematics and collision queries, OMPL searches, TOPPRA re-times the path against torque limits. A dual-arm solve lands near 600 ms.
Semantic perception
A frozen DINOv3 ViT-S/16 does the seeing. Patch tokens from layers 6, 9 and 12 concatenate into one dense feature map, and small heads on top predict task-specific 2D keypoints, grasp contacts rather than boxes. Those heads train only on synthetic renders. Freezing the backbone is what carries them to real cameras zero-shot. PnP against a floor plane or a second view lifts the keypoints to a 6-DoF pose, and the same features stream into the policy, so grasping stays closed-loop.

Autonomy
Tasks are YAML: pick, place, explore, approach, policy. Macros expand into whole-body goals at runtime, and every goal carries an on_failure branch, so the tree recovers instead of stopping. Targets are named frames resolved against the live scene just before planning, never fixed coordinates. MuJoCo and Isaac Sim sit behind one executor interface, and MuJoCo compiles in memory from the URDF at boot rather than from a brittle model file. The stack above never learns which one is underneath.
Learning
The planner doubles as a scripted expert, so demonstrations are generated without teleoperation. ACT and SmolVLA train on them today. A learned policy plugs back into the behavior tree as one segment, driving the same executor as the planner.
Implementation status
| Subsystem | Feature | Status |
|---|---|---|
| Hardware | Custom servo driver PCB (KiCad) | โ |
| Hardware | Chassis, arm mounts and lift column (Fusion 360) | โ |
| Hardware | Dual SO-101 arms on the lift column | ๐งช |
| Hardware | Power system restructure | ๐งช |
| Firmware | Register-level PWM + PCNT encoder interface | โ |
| Firmware | Wheel PID (anti-windup, derivative filter) | โ |
| Firmware | ESP32 โ RPi5 serial communication protocol | โ |
| Mobile Base | Mecanum kinematics (FK + IK) | โ |
| Mobile Base | Good Boy autonomous ball retrieval | โ |
| Mobile Base | Wheel odometry + TF2 broadcast | ๐งช |
| Mobile Base | IMU integration + EKF sensor fusion | ๐งช |
| Mobile Base | Frontier exploration + SLAM | ๐งช |
| Mobile Base | A* / RRT* autonomous navigation | ๐งช |
| Manipulator | Analytical, Newton-Raphson and batched IK | โ |
| Manipulator | IBVS + PBVS visual servoing | โ |
| Manipulator | Grasp planning | ๐ง |
| Motion Planning | Pinocchio + Coal kinematics and collision queries | โ |
| Motion Planning | OMPL collision-free path search | โ |
| Motion Planning | SIMD batch collision checking + early exit | โ |
| Motion Planning | TOPPRA time-optimal re-timing | โ |
| Motion Planning | Whole-body coordination (base + arms) | โ |
| Motion Planning | Dual-arm whole-body solve ~600 ms on CPU | โ |
| Perception | Camera intrinsic + hand-eye calibration | โ |
| Perception | LiDAR integration + scan filtering | โ |
| Perception | Frozen DINOv3 ViT-S/16 feature extraction | โ |
| Perception | 2D keypoint heatmap heads | โ |
| Perception | 6-DOF pose via PnP + floor / multi-view | โ |
| Perception | Synthetic keypoint data (Replicator, BlenderProc) | โ |
| Perception | Depth camera pipeline | ๐๏ธ |
| Autonomy | Hierarchical YAML task definitions | โ |
| Autonomy | Behavior tree with on_failure recovery | โ |
| Autonomy | Dynamic frame resolution (semantic targets) | โ |
| Autonomy | Unified executor protocol (sim โ real) | โ |
| Teleoperation | Gamepad teleop (base + arm) | โ |
| Teleoperation | MediaMTX live video stream | โ |
| Teleoperation | Custom handheld controller (6-DOF + screen) | ๐๏ธ |
| Teleoperation | Leader-follower arm teleoperation | ๐๏ธ |
| Teleoperation | VR teleoperation (Quest 3) | ๐๏ธ |
| System | Zenoh distributed compute (RPi5 โ dev machine) | ๐งช |
| System | rosbag2 logging + telemetry pipeline | ๐๏ธ |
| Learning | LeRobot / VLA data collection pipeline | โ |
| Learning | Autonomous demonstration generation | โ |
| Learning | ACT imitation policy | โ |
| Learning | SmolVLA fine-tuning | โ |
| Learning | Keypoint-conditioned policies | ๐งช |
| Learning | HIL-SERL + reward classifiers | ๐งช |
| Learning | Dataset management + versioning | ๐งช |
| Learning | Sim-to-real transfer | ๐ง |
| Learning | RL dexterous manipulation | ๐ง |
| Learning | pi0 / GR00T export | ๐๏ธ |
| Simulation | Gazebo + ROS2 integration (URDF, sensors) | โ |
| Simulation | MuJoCo digital twin (MjSpec from URDF at boot) | โ |
| Simulation | Isaac Sim rendering + domain randomization | ๐ง |
| Simulation | Isaac Lab / MJX parallel environments | ๐ง |
| Simulation | RL policy training (PPO / SAC) | ๐ง |
โ Complete ยท ๐งช Testing ยท ๐ง In Progress ยท ๐๏ธ Planned
Limits and next steps
- Hardware trails simulation. The dual-arm variant is proven in sim first.
- Keypoint-conditioned policies are training but not yet validated on the real arms.
- Navigation on hardware waits on the power restructure and the EKF.
- Teleoperation for data collection comes next, leader-follower then VR.
