The Problem
Chronic lower back pain affects hundreds of millions of people worldwide. Most mechanical therapy devices are either static (the patient stays fixed while a module acts on them) or require the patient to actively move. Chirobot takes a different approach: the robot itself drives underneath a patient lying in a supine position and delivers controlled positional movement as part of a physical therapy protocol, with no repositioning required from the patient.
The platform has to satisfy three constraints at the same time: a chassis low enough to slide under a patient, full omnidirectional mobility (translation in any horizontal direction combined with simultaneous rotation), and the structural capacity to carry full-body patient loads.
The Design Challenge
The core constraint was holonomic motion under patient load. A standard differential drive can only move forward/backward and rotate; to change direction, it must first reorient. That is unusable for a therapy robot that needs to trace arbitrary patterns under a lying patient.
I chose a 3-wheeled holonomic base with Mecanum wheels arranged at 120° symmetry. Each wheel carries passive rollers mounted at 45° to the wheel axis, so independently controlling the speed and direction of each wheel produces any combination of longitudinal, lateral, and rotational velocity without reorienting. The 120° symmetric layout also distributes the patient's body weight evenly across the three contact points.

Shrinking the Footprint
The central contribution of this phase was reducing the chassis footprint. A common misconception in three-wheeled Mecanum layouts is that the wheel axes must point radially toward the center. They do not: the only kinematic requirement is that the three wheel-plane orientations produce a full-rank inverse-kinematic matrix. As long as the three rows stay linearly independent, the platform keeps full holonomic mobility regardless of wheel orientation.
That geometric insight unlocked the optimization. In the first clean chassis, each servo sat with its long 51.1 mm axis pointing radially, which set the minimum radius and produced a 226 mm chassis. Rotating every servo 90° so its long axis runs tangentially swaps that 51.1 mm for the 39.8 mm width. A numerical sweep over two placement parameters, with a Separating Axis Theorem collision check between the three servo bodies, found the best layout.
−29%
Chassis diameter, 226 mm to 160 mm
Ø30 mm
Inscribed central free zone for electronics
30 kg
Theoretical load capacity across 3 wheels
0
Drivetrain parts changed between iterations
The tangential layout cut the chassis diameter by 29% with no changes to the drivetrain: the same servos, couplers, shafts, bearings, and wheels carry over unchanged. Allowing the wheels to protrude past the rim by half their diameter, a geometrically valid configuration for Mecanum wheels, would shrink it further to 134 mm (41%).
Trading Height for Footprint (Jul 2026)
In July 2026, I designed a new base around a different trade-off. In the previous chassis, the two LiPo packs lay flat, so their full area added to the surface the robot occupies on the ground. The new base holds them in tilted cradles on either side of the three servos, which substantially reduces the projected surface on the ground at the cost of a taller robot. That cost is acceptable because the robot already needs a minimum height to house its servos, batteries, and electronics: height is a parameter that can be traded against footprint, not a fixed constraint. This version is not fully optimized. It is a proof of concept showing that placing the batteries non-horizontally is a viable way to shrink the footprint further.



Drivetrain
Per-wheel drive chain
- Servo
- Hiwonder HTD-45H bus servo, 45 kg·cm at 11.1 V
- Bus protocol
- LewanSoul half-duplex, three servos daisy-chained
- Transmission
- Brass 6→4 mm coupler, 4 mm stainless shaft, KP08 pillow block
- Wheel
- 60 mm Mecanum, 9 rollers at 45°, 10 kg rated
Each shaft gets a second radial support from a KP08 pillow block beyond the servo's own output bearing. Without it, the full bending moment from wheel-to-ground reaction forces would be reacted entirely through the servo's internal gearbox bearing, which is not rated for sustained radial loading at patient-body-weight magnitudes.
Mechanical Architecture
The chassis was designed from scratch in SolidWorks, with modularity as a core principle: every component can be swapped without disassembling the full base. This was critical during early lab iterations where wheel geometry and motor mounting angles changed frequently.
Key decisions:
- Low-profile chassis to minimize the ground clearance needed for a patient platform above
- Recessed wheel wells to protect the omnidirectional wheels while keeping the overall footprint compact
- Motor-to-frame interfaces using clamping collars and vibration-resistant fasteners (important given the continuous vibration load during operation)

Fabrication and Iteration
The chassis was fabricated using FDM 3D printing, which allowed rapid iteration between design revisions. Early prints used organic, support-heavy geometries that were structurally sound but difficult to assemble. Later iterations moved to cleaner low-profile geometries with integrated motor mounting channels, reducing print time and improving assembly speed.
Actuation is handled by the three bus servos with custom shaft couplings, powered by two 3S 2200 mAh LiPo packs wired in parallel (11.1 V, 4400 mAh) through a rocker kill switch.
Electrical Architecture
Power splits into two independent rails. The servo rail feeds 11.1 V straight to the LewanSoul bus board driving all three servos; the logic rail uses an LM2596 buck converter to step down to a regulated 5 V for a Raspberry Pi Zero 2W, the sole onboard computer.
Isolating the two rails is essential for stability. Servo commutation produces large current transients that drop the bus voltage on a shared supply, which can trigger Pi brownouts and uncontrolled reboots. The two-rail architecture eliminates that coupling at the cost of a slightly more complex harness. The control loop was designed to run on the Pi: take a target chassis velocity, apply the 3-wheel Mecanum inverse-kinematic transform, send speed commands over the serial bus, and read back position and load feedback to catch stalls.
Status When Paused (Jul 2026)
By the time the project was paused in July 2026, the base geometry, the hardest part of the project, had gone through two iterations: the tangential-servo chassis and the tilted-battery proof of concept. Omnidirectional motion and load capacity had not been validated. The remaining steps were:
- Complete the wiring harness and commission the two-rail power system
- Implement the inverse-kinematic drive loop on the Pi and validate omnidirectional motion on a flat surface
- Run structural load tests to characterize chassis deflection under patient-representative loads
- Add camera-based localization for closed-loop path following, planned for a later phase
Final Report
The complete technical report behind Chirobot.
4pages · PDF