← SHEET 02 · ASSEMBLIES HW-006

Pull-Down Wardrobe Rail, Pantograph Arm

HWMECHANISM
LIVE DRAWING — HOVER OR DRAG TO CRANK · BUILT FROM THE REAL PLANT PARAMETERS
PART NOHW-006
MATL / SYSTEMSTEEL ARMS · ALUMINIUM RAIL
TOOLSHand calc · Node glTF export
PULL-DOWN WARDROBE RAIL, PANTOGRAPH ARM — wardrobe-rail.glb

Splitting the bedroom into three levels solved the floor-space problem but created a new one: the wall storage that used to be at arm’s reach is now stacked up above the level-2 sleeping platform, out of comfortable reach from level 1. This is a design for a pull-down rail that brings the hanging clothes down to chest height on demand and tucks itself back up out of the way — the same parallelogram trick behind HW-002, the folding staircase I already built for this room, applied to a wardrobe rail instead of a set of stair treads.

OVERVIEW & MOTIVATION

The room split (see HW-002) put a −1 office below the original floor and a level-2 sleeping platform above it, still under construction. That vertical split pushed the remaining wardrobe carcase and its shelf up against the level-2 structure, so the hanging rail that used to sit at a normal reach height now has to live near the top of the carcase — comfortably out of reach for grabbing a shirt. The brief: pull a handle, and the rail comes down and forward, clear of the shelf lip, to a normal dressing height; let go (or push back up) and it returns and tucks itself back under the shelf. This is a design study only — not yet built — worked through by hand calc and a parametric box model, the same way HW-002 started before it went to FreeCAD and steel.

Design inputs, stated up front (none of these are measurements — they are the choices this design is built around):

PARAMETERVALUEUNIT
RAIL_LEN (hanging rail, garment span)900mm
STOWED_RAIL_HEIGHT (target)~2050mm
DEPLOYED_RAIL_HEIGHT (target)~1400mm
GARMENT_LOAD (rated, design input)12kg
RAIL + CARRIER HARDWARE (design input)3kg
GARMENT CGon rail axis (vertical load only)

MECHANISM & KINEMATICS

The pantograph is a parallelogram four-bar, the same identity that keeps HW-002’s treads level: fixed pivot A (upper) and ground pivot B, offset by a fixed vertical link GLINK on the wall-mounted bracket; two arms of equal length ARM_LEN, one running from A to point P and one from B to point Q, rotating together through the same swing angle theta. Because the coupler (rail carrier) P→Q is fixed at the same length and direction as the ground link A→B, the identity

P - Q  ==  A - B   (both = (0, GLINK), for every theta)

holds for every theta — the carrier translates along an arc but never rotates, so a rail bolted rigidly to it stays horizontal through the entire pull-down stroke. This was checked numerically at five angles across the swing (theta = 5°, 32.5°, 60°, 87.5°, 115°): P−Q evaluated to exactly (0.0000, 210.0000) mm at all five, confirming the carrier orientation never changes.

Local frame: origin at pivot A, +x forward (out of the carcase), +y up.

P(theta) = ( ARM_LEN·sin(theta),  ARM_LEN·cos(theta) )
Q(theta) = P(theta) − (0, GLINK)

Parameters: ARM_LEN = 460 mm, GLINK = 210 mm, pivot A mounted at H_A = 1800 mm above the floor, X_A = 90 mm forward of the back wall. theta sweeps from THETA_STOW = 5° (arm near vertical, rail tucked under the 2050 mm shelf) to THETA_DEP = 115° (arm swung forward and down past horizontal).

Rail position across the swing (height = H_A + Q.y, forward offset = Q.x):

ARM ANGLE θRAIL HEIGHTFORWARD OFFSET
5° (stowed)204840
32.5°1978247
60°1820398
87.5°1610460
115° (deployed)1396417

Stowed height 2048 mm sits just under the 2050 mm shelf; deployed height 1396 mm meets the ~1400 mm chest-height target with a 417 mm forward reach — both design targets are met. Forward offset peaks near 87.5° (arm swinging past horizontal) and eases back slightly by 115° as the arm continues down; that’s the arc doing what an arc does, not a design error, and it settles the rail forward and low enough to load garments from the front rather than reaching under a shelf.

ASSIST SIZING

Total rated load = 12 kg garments + 3 kg rail/carrier hardware = 15 kg, split across two arm assemblies (left and right ends of the rail), so each side’s moment calc uses a 7.5 kg per-arm load: W = 7.5 × 9.81 ≈ 73.6 N, acting straight down through the rail axis (garments hang from hooks on the rail, so the load’s horizontal lever arm about pivot A is just the rail’s forward offset, Q.x).

M_load(theta) = W × Q.x(theta)
ARM ANGLE θLOAD MOMENTASSIST MOMENTRESIDUALHAND FORCE
2.95 N·m2.18 N·m0.77 N·m1.7 N
32.5°18.19 N·m13.97 N·m4.22 N·m9.2 N
60°29.32 N·m24.67 N·m4.65 N·m10.1 N
87.5°33.82 N·m33.26 N·m0.56 N·m1.2 N
115°30.68 N·m38.11 N·m−7.43 N·m−16.2 N

Assist: a 240 N gas strut, fixed anchor S on the bracket 160 mm below pivot A (S local = (0, −160)), attached to the arm at T, 300 mm out from A along its length. The strut’s moment arm about A is |Tx·Sy − Ty·Sx| / |S−T|, which comes out to 9.1 mm at stow rising to 158.8 mm at full deployment — chosen (via S and T’s placement) to stay single-signed across the whole sweep, so there’s no dead-centre point where the strut loses effect. Assist moment = 240 N × arm(theta). The strut was sized so assist ≈ load moment at 87.5°, the peak-moment angle — that’s the point most likely to feel heavy or crash, and it comes out balanced to within 0.56 N·m. Residual hand force stays under about 10 N through most of the stroke; at full deployment the strut slightly over-assists (−16.2 N, i.e. a 16 N hold-back force is needed to keep the rail extended for loading, since the strut now wants to pull it back toward stow). That’s an intentional trade — it means the rail doesn’t hang open under its own weight — but it does mean loading clothes at full reach takes a light hold, worth a positive latch or detent in a build iteration.

Overloading the rail past the 12 kg rated garment load shifts every number in this table: more moment, less residual margin, and eventually a hand force outside the comfortable band or a strut that can’t hold the deployed position at all. And in every pose the two pivots see the whole cantilevered load — the wall/carcase fixing at the mounting plate, not the arms themselves, is what actually limits how much this can carry.

PARAMETRIC MODEL

wardrobe-rail/build-glb.mjs rebuilds the whole assembly in its deployed pose from the same parameter block used above (RAIL_LEN, GLINK, ARM_LEN, THETA_STOW, THETA_DEP, H_A, X_A, plus the carcase and strut-anchor dimensions). Every arm endpoint (P, Q, and the strut anchors S, T) is solved with sin/cos/atan2 — no coordinate in the script is eyeballed. The script logs its own joint coordinates and a P−Q parallelogram check on every run, then calls the shared writeGLB / validateGLB helpers (../_glb.mjs) to emit and self-check the GLB. Changing RISE-equivalent inputs like ARM_LEN or GLINK re-solves every joint, arm angle, and strut length automatically.

Current build: 31 parts (carcase sides, back and shelf, two mounting plates, four arms, two carriers, eight pivot markers, two assist struts and their anchors, the rail, a handle, and five hangers) — 372 triangles at 12 per box.

STATUS & NEXT STEPS

This is a design study: calculated and modelled (hand-calc + parametric GLB), not built. Next steps before cutting any steel: mock the arm pair in flat bar to feel the real pull-force curve against the hand-calc above, hang an actual 12 kg load of clothes on a prototype rail to check the moment numbers against reality, and confirm the carcase/stud fixing at the mounting plate can actually take the cantilevered load through the full swing — that fixing, not the linkage, is the real limiting factor.

USE CASES & APPLICATIONS

Pull-down rails like this show up anywhere storage needs to move to the user instead of the other way round: accessible wardrobe rails for wheelchair users or shorter reaches, pull-down kitchen shelves over a counter, overhead tool storage in a garage or workshop, and aircraft-cabin overhead lockers. More generally, the parallelogram-keeps-it-level principle behind the carrier is the same one behind parallel drafting machines, level-luffing tower cranes, and anglepoise lamps — anywhere a working surface has to stay level while its support swings through an arc.

FILES

  • hw-wardrobe-rail.md — this page.
  • pantographrail.js — live animated side-elevation drawing (src/scripts/mechs/).
  • wardrobe-rail/build-glb.mjs — parametric deployed-pose GLB export (run with node build-glb.mjs from its own folder; writes to public/models/wardrobe-rail.glb and self-validates with validateGLB).

← BACK TO ASSEMBLIES

NAME ODILBEK MARIMOV
DWG NO. PF-2026
SHEET 01 / 07
DISCIPLINE ROBOTICS / MECHATRONICS
SCALE 1:1
REV A
THIRD-ANGLE PROJECTION
DATE 2026-07-11
UNITS mm