Research topic
Robots on the building site
Which residential construction tasks off-the-shelf and purpose-built robots can do, alone or beside a crew, learned and checked in physics simulation, and what that would take off the cost of a new home.
27 projects, each with its own page, code and tests. See them on the full research index.
research/build-data · 20 tests
Research programme: LightGBM quantile models beat the per-city, per-type empirical-quantile baseline on pinball loss in 13 of 15 city/target/quantile cells (2024 test year, Chicago, San Francisco, Austin); Chicago's tails are the exception
Abstract
An open research programme on duration forecasting from public building-permit feeds. Session 1 wrote the proposal (12 checked works, four falsifiable hypotheses, time-split evaluation with conformal intervals) and probed the feeds: Chicago has 851,778 rows, all issued, so it cannot show permits never issued; San Francisco has 1,297,657 rows with 750,188 completed; Austin has 2,382,939 rows with 2,184,191 completed. NYC DOB NOW is excluded until its licence is checked. Session 2 built the loader, schema, datasheets and a manifest (row counts match the probe) and found the median application-to-issue lag is 0 days in all three cities (p90 56, 81, 142), with SF and Austin build times at a median of about 105 days. Session 5 ran the reference-class baselines on the real feeds; session 6 (milestone 3) fitted LightGBM quantile models (q 0.1, 0.5, 0.9) and a same-day classifier, forward split with train to 2022 and early stopping on 2023, tested on 2024. The boosted model beats the baseline in 13 of 15 city/target/quantile cells by 2 to 36% (paired week-block bootstrap intervals exclude zero); in Chicago application-to-issue it wins at the median and loses at the 0.1 and 0.9 quantiles. One test year, 3 seeds, fixed fast configuration, intervals not yet conformalised.
research/buildbot-carry · 7 tests
Can a stock humanoid carry a stud faster than a labourer? A MuJoCo single-support step envelope: the G1 steps 0.50 m with one 2x4 and cannot carry two; the H1 steps 0.20 m with one and 0.10 m with 15 kg; neither beats a labourer who takes a bundle of four, and the model is restrictive (no falls, drops or energy scored).
Abstract
A model-based single-support envelope, not a walking policy: the pose just before touchdown (stance sole planted, swing sole landing L ahead and s higher, centre of mass L/2 ahead with the linear-inverted-pendulum acceleration applied as tilted gravity), solved in MuJoCo against each joint’s peak torque and a friction limit. At the stud-carry pose the G1 steps 0.70 m unloaded, 0.50 m with a 3.8 kg 2x4 (waist pitch binds) and cannot carry two; the H1 steps 0.25 m unloaded and 0.10 m with 15 kg and cannot climb a 7¾ in riser. Turned into carry rates over 5–30 m trips, a G1 delivers 0.64–1.10× a one-stud labourer and 0.16–0.27× a labourer with four studs; an H1 with 3–4 studs 0.66–1.94× and 0.16–0.48×. Labourer speed, bundle size, handling time and step time are assumed and swept. The gait is restrictive (flat soles, ZMP at the sole), so the H1 figures sit far below Unitree’s own claims; no falls, drops or energy were scored.
research/buildbot-carrycop · 6 tests
Does moving the planned centre of pressure along the sole raise a humanoid's carry speed? Not by a constant offset: the G1's 4 kg result moves one grid cell (0.10 to 0.13 m/s) and joint torques, not the sole, set the limit.
Abstract
A one-parameter test of the idea that the pessimistic carry speeds of buildbot-carryphase come from planning the centre of pressure (CoP) at the foot's middle. The CoP is held at offsets from −6 to +9 cm along the sole and the Menagerie G1 and H1 are re-scored over 1,944 cases (payload, step length, step time) by inverse dynamics against joint torque limits. Offset 0 reproduces the earlier speeds; the best offset moves one result by one grid cell (G1 at 4 kg, 0.10 to 0.13 m/s) and nothing else. Torque limits, not the sole, bind: 125–150 of the G1's 180 cases per offset exceed a torque limit. A negative result for a constant offset; it does not test a time-varying CoP, trunk or arm motion, or a learned policy. Prescribed gait, no falls or energy scored, not a safety case.
research/buildbot-carryphase · 9 tests
Can a stock Unitree G1 or H1 carry a stud as fast as a labourer? A pendulum gait with no trunk compensation gets the G1 to 0.25 m/s unloaded and 0.10 m/s at 4 kg; a robot with one piece per trip would need 4-13 m/s to match a labourer carrying three.
Abstract
Single-support inverse dynamics of the Menagerie G1 and H1 carrying a load along a prescribed linear-inverted-pendulum gait (636 cases over payload, step length, step time, ramp and step-up), scored against joint torque limits and the sole. The G1's fastest feasible step is 0.25 m/s unloaded and 0.10 m/s at 4 kg (none at 5 kg); the H1's 0.15 m/s unloaded and 0.07 m/s at 14 kg. A 1:12 ramp leaves the G1's speed unchanged; the H1 finds no step on a ramp. These are pessimistic lower bounds, because the gait has no trunk compensation and the centre of pressure leaves the sole first. A robot holding one piece per trip would have to walk 4–13 m/s to match a labourer carrying three over a 40 m haul, so it loses even at the vendor's quoted ~2 m/s. Preliminary: a prescribed gait and not a policy, falls and energy not scored; the step width, handling times and pieces per trip are my assumptions, swept; nothing is a safety case.
research/buildbot-carryramp · 4 tests
Does a heel-to-toe sweep of the planned centre of pressure raise a humanoid's carry speed? No: one grid cell for the G1 at 4 kg and the unloaded H1, and nothing for heavier loads, because joint torques set the limit.
Abstract
A follow-up to buildbot-carrycop, which held the planned centre of pressure (CoP) at a constant offset. Here the CoP moves linearly along the sole during single support (the linear inverted pendulum with a ramped CoP has a closed-form orbit) and the Menagerie G1 and H1 are re-scored over 1,680 cases (payload, step length, step time, eight sweeps) with the carryphase inverse kinematics and joint-torque limits. Result: the G1's ceiling does not move except the known one-cell gain at 4 kg (0.10 to 0.13 m/s, also reached by a constant 6 cm-behind CoP); the H1 gains one cell unloaded (0.15 to 0.20 m/s) with a −3 to +3 cm sweep but loses all cases when the sweep starts 6 cm behind the sole point. Torque, not the sole, remains the wall. Prescribed gait, no falls or energy scored, no trunk or arm motion, not a safety case.
research/buildbot-cohold · 7 tests
Can a stock Unitree G1 or H1 hold one end of a sheet while a person lifts the other? For a 22 kg sheet the person carries 11.1-11.5 kg-equivalent in a 2-4 s lift; the G1 manages up to 8 kg, the H1 a 23 kg drywall sheet; lag sets the tilt (2-6 degrees at 0.2-0.5 s).
Abstract
A person lifts one end of a 4x8 sheet 0.3 m; a Menagerie G1 or H1 holds the other under impedance control that copies the person's motion after a lag. Planar rigid-sheet dynamics (108 control settings), static whole-body torque checks along the lift, and ISO/TS 15066 speed limits. For a 22 kg sheet the person's load stays at 11.1–11.5 kg-equivalent in a 2–4 s lift (NIOSH constant 23.1 kg) and reaches 15.5–20.4 kg in a 0.5 s snatch. Peak tilt is about hand speed × lag ÷ sheet length: 2.2° at 0.2 s lag, 3–6° at 0.5 s. The G1's waist limits it to an 8 kg sheet (6 kg in a fast lead); the H1 holds half of a 23.2 kg drywall sheet at 0.77 of its elbow limit. The standard's body-region formula gives 0.13 m/s for the face and 0.29 m/s for the chest at the robot's end, against 0.28 m/s hand speed in a 2 s lift. Simulated and preliminary: the standard's values come from a secondary source (arXiv:2311.13814), the hand controller and lift are my own choices, the robot stays in one stance, and nothing is a safety case.
research/buildbot-cost · 8 tests
Does a stock humanoid pay for itself on a house site? The break-even slowdown against a $38/h loaded carpenter is about 2.4 for a $16k Unitree G1 and 1.1 for a $90k H1; over a sweep the G1 saves money in 15% of draws, the H1 in 0.4%, and a perfect H1 would remove 0.19% of an average home's price on the taskbook scope (inputs swept, not measured).
Abstract
Prices the 46 crew-hours of buildbot-taskbook against the ownership cost of a Unitree G1 ($16,000 launch price) or H1 ($90,000) and a $29.12/h carpenter median (BLS, May 2025). A robot may take only the tasks whose static payload test it passes (H1 32.7 h, G1 5.9 h). The net saving per replaced crew-hour is the loaded wage less slowdown × (ownership rate + supervision × wage), so there is a break-even slowdown: about 2.4 robot-hours per crew-hour for the G1 and 1.1 for the H1 at 0.3 supervision. Over a 4,000-draw sweep the G1 saves money in 15% of draws and the H1 in 0.4%; the best draw saves about $200 on this scope, and a free instant H1 would remove $1,217, 0.18% of NAHB's $665,298 average price. A crude cost-scaled scenario (hours matched to NAHB's framing share) gives up to 8.1% as a ceiling. Slowdown, supervision, success, burden, life and upkeep are swept, not measured: no robot skill is simulated yet, prices are 2024 launch figures, and payload passes are upper bounds.
research/buildbot-custom · 12 tests
Does a purpose-built nailing gantry beat a stock humanoid at fastening sheathing? A modelled two-axis bridge nails a 62-nail sheet in 61 s (6.1x hand nailing); a $100k machine needs about 150 houses a year to break even on walls (50 with roof cassettes), where the H1 saves money in 0.4% of draws (price and times swept, not sourced).
Abstract
Designs the machine the earlier buildbot projects point to: a two-axis bridge with a nailer over a flat panel table. On the 62-nail schedule of a 4x8 sheet from buildbot-fasten, 1 m/s axes, 3 m/s2 and 0.5 s a nail give 61 s a sheet, 6.1× faster than hand nailing at the taskbook's minutes; over the sweep 20 to 115 s. The nail windows need a total tip scatter under 1.24 mm, so finding the studs, not the axes, takes the budget. Nailing is 3.3 crew-hours on the walls and 9.0 with roof cassettes ($125 and $341 a house at a $37.86 loaded hour), so a $100k machine breaks even at about 150 houses a year (walls) or 55 (with roof); over a sweep the median is 326 and 120. The H1 saves money in 0.4% of draws on the same wall hours, the G1 cannot take them, and neither reaches the roof. Machine price, load and scan times, axis performance and operator share are swept, not sourced; no machine is built or quoted and the hand minutes are the taskbook author's estimate.
research/buildbot-fasten · 7 tests
Can a stock Unitree G1 or H1 push a nailer into a wall and place nails inside a stud face? One 4x8 sheet is 62 nails, 34 with a +-3.9 mm window; the tip needs 1.24 mm scatter for a 95% sheet. The G1 pushes up to 142 N and reaches 18 of 62 nails from one stance, the H1 up to 276 N and 36 of 62 (static, peak torque, no policy).
Abstract
The nailing schedule of one 4x8 sheet (62 nails; 34 joint nails have a ±3.9 mm window from the 3/8 in edge distance on a 1.5 in stud face), the largest wall push the simulated Menagerie G1 and H1 can make, and the joint error the windows allow. A whole sheet needs a tip scatter of at most 1.24 mm for 95%; the arm kinematics turn 1° of independent joint error into 10–24 mm, so joints need 0.05–0.11°, which 11-bit sensors meet in the model (no backlash or compliance). The G1 pushes 8–142 N (wrist and waist limited) and covers 18 of 62 nails from one stance; the H1 pushes 82–276 N (elbow limited), 36 of 62. Not sourced: the push needed to seat a nailer (swept 20–100 N), friction (swept), any Unitree repeatability; the edge distance and nail size come from secondary sources. No policy trained, no recoil modelled; static, peak torque.
research/buildbot-flatsheet · 8 tests
Can a G1 humanoid nail a 4x8 sheet lying flat on a table? Not better than on a wall: pushing down at 50 N with its feet planted it holds only 30 of 693 reach cells, reaching 48 of the sheet's 62 nails in 16 stances (13 stances for all 62 on a wall), and matching hand nailing (372 s) only if each re-stance takes under 23-24 s (push, standoff and re-stance time are swept, not sourced; static IK, no walking).
Abstract
MuJoCo whole-body statics of the Menagerie Unitree G1 pushing a 3.4 kg nailer straight down with its feet planted (reach 0.2–0.8 m, sideways 0–0.8 m, hand height 0.4–1.4 m, pushes of 0, 50 and 100 N, torque and friction limits). A table does not help: at 50 N only 30 of 693 cells are held (94 with no push, none at 100 N), limited by the waist and wrist pitch motors and by the solver’s balance rule. The best plan, with the table top 1.0–1.1 m high and the feet 0.25 m from the edge, reaches 48 of the sheet’s 62 nails in 16 stances, worse than the 13 stances for all 62 on a wall (buildbot-stance); those nails take 43–54 s plus 15 re-stances, equal to the 372 s hand estimate at 23–24 s per re-stance. The push to seat a nail, nailer length, table standoff and re-stance time are swept, not sourced; the IK stays near the home pose with the centre of mass over the feet, so this is an upper bound on difficulty; no collisions, walking or recoil.
research/buildbot-grounded · 6 tests
With simulated carry and nailing results in place of a swept slowdown, does a stock humanoid pay on a house site? The H1's carry slowdown is 0.41 to 1.70 against a one-stud labourer (pays in 72% of cells) and 1.63 to 6.82 against a bundle carrier (never pays), against a break-even of 1.07; the dollars are tens per house.
Abstract
Replaces the swept slowdown of buildbot-cost with the simulated outputs of buildbot-carry and buildbot-fasten. At a $37.86 loaded hour and 0.3 supervision the break-even slowdown is 1.07 for an H1 and 2.42 for a G1. The H1's simulated carry slowdown against a labourer who carries one stud a trip is 0.41–1.70 (median 0.85), below break-even in 72% of 36 cells; against a labourer carrying a bundle of four it is 1.63–6.82 and never pays. The G1 is 0.90–1.64 against one stud (always pays) and 3.59–6.57 against a bundle. Whether a humanoid pays for carrying therefore turns on how a crew carries, not on the robot. The dollars are small either way: carrying is a $40 ceiling per house for the H1, and nailing the reachable 58% (H1) or 29% (G1) of a sheet's nails $15–$73. Preliminary: the carry model is an upper-bound gait on 2x4 studs (the house is 2x6), nailing is coverage not speed, the labourer rates are assumptions of buildbot-carry, and nothing is tested on hardware.
research/buildbot-holdheat · 5 tests
Can a stock humanoid hold a stud for a minute? G1 static joint torques re-read against a swept continuous-torque fraction: the waist is at 0.54 of peak with empty hands at the carry pose and 0.91 with a 3.8 kg stud, so below a 0.6 continuous ratio nothing is sustainable (0.6 kg at 0.6) and a stud reaches the winding limit in 0.14 thermal time constants at 1/3. A 150-pose search finds a posture (hands 0.15 m ahead, 0.7 m high) at 0.33 of peak, so the 0.91 is not the floor.
Abstract
buildbot-payload checks loads against each joint's peak torque. Motors can only hold a fraction of peak indefinitely, and no continuous rating for the Menagerie G1 was found, so this sweeps the continuous/peak ratio from 0.25 to 0.6. From the MuJoCo static torques at the stud-carry pose (0.3 m ahead of the feet, 0.6 m high), the waist pitch motor already sits at 0.54 of peak with empty hands, so with a continuous rating below 0.6 of peak nothing is sustainable there, and at 0.6 only 0.6 kg is: even a 3.8 kg stud takes the waist to 0.91 of peak and, with a first-order thermal model (loss ∝ torque2), reaches its limit in 0.14 thermal time constants at a ratio of 1/3. A 3.4 kg nailer at stud height reaches 0.76 of peak; one end of a sheet with a person exceeds peak. A pose search then finds the 0.91 is posture-specific: a 150-pose grid reaches 0.33 of peak with the stud held 0.15 m ahead and 0.7 m high (wrist pitch binding, no self-collision flagged, stud geometry not modelled), which is sustainable at any ratio of 0.4 or more. Static torques only; the thermal time constant and the continuous rating are unsourced, so only dimensionless hold times are reported; not a rated runtime.
research/buildbot-holdpose · 5 tests
Does a searched arm and waist posture let a G1 hold a stud longer? In MuJoCo the stud's peak joint fraction falls from 0.91 (default) to 0.76 with the centre of pressure on the sole point and to 0.49 (best of three noisy seeds) 3 cm inside the toe edge, enough to make a stud sustainable at a continuous rating of 0.5 of peak; a 2x6 goes 0.93 to 0.68 and sheets stay above peak.
Abstract
buildbot-holdheat found the G1 waist at 0.54 of peak torque with empty hands at the stud-carry pose and 0.91 with a 3.8 kg stud. The arms are redundant for a fixed hand position and the centre of pressure can move along the foot, so this searches both in MuJoCo (random anchors then a (1+1) evolution strategy, self-collision rejected, three seeds, best kept). With the centre of pressure 3 cm inside the toe edge the default posture gives 0.744 and the best searched posture 0.487 (other seeds 0.63 and 0.68, so the search is noisy and 0.487 is an upper bound on the minimum); a continuous rating of 0.5 of peak then makes the stud sustainable. With the centre of pressure on the sole point the gain is 0.910 to 0.756; at the toe edge 0.586. A 2x6 goes 0.93 to 0.68; sheet, block and drywall cases stay above peak. For a continuous rating of 0.4 or less nothing is sustainable at this pose. Static only; the continuous rating and thermal time constant remain unsourced (swept), the toe edge is read from the model, and the search is weak.
research/buildbot-mjsheet · 4 tests
Does the hand-written flexing-sheet plant of buildbot-skills agree with MuJoCo? Pass/fail labels agree on 99.8% of 2600 episodes across 13 policies, so the sim-to-sim transfer failure (0-11% vs 81% where tuned) is not an artefact of my equations.
Abstract
buildbot-skills reported that sheet-following skills tuned on a rigid-sheet model fail on a held-out plant with a flexing board, sensing delay and actuator lag, but that plant was my own numpy Lagrangian. Here the same plant is rebuilt in MuJoCo 3.16 (two boxes on hinges, a spring-damper at the midline, RK4, the pin's acceleration put into gravity) with the same Python controller, delay and actuator code, and the 13 policies of buildbot-skills are run on 200 shared random worlds each. The pass-fail label agrees on 99.8% of the 2600 episodes (at worst 99% for one policy); no policy's pass rate differs between engines by more than 1 point; the share of unstable episodes agrees for 12 of 13 policies. Median peak-tilt difference is 0.0005–0.003° for the usable (B-trained) gains and up to 0.7° for marginally stable gains. So the transfer failure is not an artefact of the hand-derived equations. It does not test the shared inputs: delay (0–30 ms), actuator lag, sheet stiffness (150–6000 N m/rad) and the planar two-force-point abstraction are the same ranges of mine and none was measured.
research/buildbot-mobilebase · 6 tests
Does a G1 on a drive-and-lift base nail a 4x8 sheet faster than a walking G1? Yes in 22 of 24 speed settings: 54-121 s a sheet (13 stances, 12 moves of 5-63 s) against 85-119 s walking and 372 s by hand, and it matches a 61 s gantry only with a fast tip, 0.5 m/s drive and 0.2 m/s lift (speeds swept, not a chosen machine; reach unchanged from static statics).
Abstract
Takes the 13-stance cover of buildbot-stance (62 nails, reach 0.3 m, 50 N push) and replaces its swept re-stance time with one computed from a drive speed (0.2–1.0 m/s) and a lift speed (0.05–0.5 m/s) plus a 0 or 2 s settle, with the stances visited in the exact shortest order (Held-Karp). The 12 moves cost 5–63 s and the sheet takes 54–121 s (nailing 25 s at a 4 m/s tip, 59 s at 0.5 m/s), against 85–119 s for a walking G1 at 5 s per step and 372 s by hand. Matching the 61 s gantry needs the fast tip, a 0.5 m/s drive and a 0.2 m/s lift; lift speed matters more than drive speed, and settling dominates once the base is quick. Drive, lift and settle are swept, not taken from a chosen machine (a JLG scissor-lift listing is quoted unverified); the G1 reach is carried over unchanged from static statics, with no sway, vibration or base mass, and the stance cover minimises count, not time.
research/buildbot-nailpay · 9 tests
How slow must a person be at nailing a sheet of sheathing for a Unitree G1 nailing it to pay? A walking G1 (85 s a sheet) pays above 35 s of person time at 0.3 supervision, a base-mounted one above 26 to 76 s; about $110 a house, and the person's time per sheet is the unsourced unknown.
Abstract
Turns the question of buildbot-grounded around: the robot's time per 62-nail sheet is now simulated (buildbot-mobilebase: 54 to 121 s on a drive-and-lift base, 85 s walking at 5 s a step), the person's is not sourced, so this solves for the person time above which a G1 saves money at a $37.86 loaded hour. A walking G1 pays above 35 s a sheet at 0.3 supervision hours per robot-hour (18 s at 0.1, 94 s at 1.0); a base needs 26 to 76 s at 0.3. The taskbook’s assumed 372 s is far above these, but a pro who nails a sheet in about a minute would not be beaten on cost. The dollars are about $110 a house on 32 wall sheets. Not sourced: the person time (no crew-productivity figure was found), the base price, and the supervision and use ranges, which are swept. Simulated robot times are an upper-bound reach model.
research/buildbot-nailseq · 8 tests
Does a nailer's recoil slow a G1 down when it fires a whole 62-nail sheet in sequence? Not by much: the arm is settled and back on the wall within 0.31 s at 4 N s of recoil, shorter than the 0.16 s moves only for a fast tip, so a sheet loses 0 s (2.3-2.5 s at 10 m/s2 and 4 N s) and the clean-sheet probability does not move; the stud finder still sets the budget (recoil, loop, tip speed and wall are swept, not sourced).
Abstract
The 62 nails of a 4x8 sheet fired in serpentine order, each shot's recoil transient taken from 45 MuJoCo traces of the Menagerie G1 hold model (three hold heights, three loops, 0.25–4 N s). The next nail waits until the nosepiece is back on the wall and the tip is within 0.25–4 mm; the left-over error joins the robot scatter and the shared stud-finding error in one clean-sheet probability. The wait after a shot is 0 s at 0.25 N s and up to 0.25–0.31 s at 4 N s, set by the wall coming back, not by tip position; the shortest move between nails is 0.16 s at 0.5 m/s, so a sheet is slowed by 0 s, and by 2.3–2.5 s only for a 4 N s recoil with a 1–4 m/s, 10 m/s² tip. Left-over error is at most 0.37 mm, so the clean-sheet probability is unchanged (1.00 with perfect stud reads, 0.93 with a 1 mm read): the stud finder, not recoil, keeps the budget. The recoil, loop delay, tip speed and wall are swept, not sourced; the transient is not re-simulated along the sheet and re-stancing is not modelled.
research/buildbot-payload · 7 tests
Can a stock humanoid carry building materials? MuJoCo static payload envelopes of the Unitree G1 (median 4.5 kg, waist-limited; matches Unitree's 2–3 kg rating) and H1 (median 14.2 kg, elbow-limited): the G1 can carry a 2x4 but not a 2x6, the H1 can take one end of an OSB or drywall sheet with a person and set a lightweight block, but not a whole sheet, a normal-weight block or a 60 lb bag, and neither reaches an 8 ft ceiling.
Abstract
Whole-body static payload envelopes of the MuJoCo Menagerie Unitree G1 and H1: feet fixed, the combined centre of mass of robot and load kept over the feet, every joint inside its peak torque limit, and the load bisected at each hand height and reach. The G1 holds a median 4.5 kg in its palms (1.5–4.7 kg at 0.4–0.5 m forward, up to 12 kg close in), in line with Unitree's 2–3 kg arm rating, and its 50 N·m waist pitch is the usual limit. The H1 holds a median 14.2 kg, limited by its 18 N·m elbows. On nine residential tasks the G1 can carry a 2x4 and hold a nailer but not a 2x6. The H1 can take one end of a 4x8 OSB or drywall sheet with a person and set a lightweight concrete block, but not a whole sheet, a normal-weight block or a 60 lb bag, and neither reaches an 8 ft ceiling. Task masses are sourced (USG, NDS, a CMU survey, a nailer listing), and OSB is swept over 45–51 lb. Static only, at peak torque, with a pose that is not torque-optimal; not a rated payload.
research/buildbot-recoil · 5 tests
Does a framing nailer's recoil knock a stock Unitree G1 arm off the stud window? In a closed-loop MuJoCo hold, up to 4 N s of recoil moves the tip 1-4 mm (window +-3.9 mm) but 1 N s or more lifts the nosepiece off the wall for 25-140 ms; stiff loops go unstable with 10-20 ms delay (recoil, delay and wall are swept, not sourced).
Abstract
A closed-loop MuJoCo check on the Menagerie G1 holding a 3.4 kg nailer against a wall (pelvis fixed, no legs). A half-sine recoil impulse hits the tip; the sweep covers impulse (0.25–8 N s), loop bandwidth (2–12 Hz), delay (0–20 ms), wall stiffness and preload. Up to 4 N s the tip stays within 1–4 mm of its place (joint-nail window ±3.9 mm) for 4–12 Hz loops, but an impulse of 1 N s or more lifts the nosepiece off the wall for 25–140 ms, and stiff loops go unstable with 10–20 ms of delay. The recoil of a real nailer, the G1's loop delay, the wall stiffness and damping, and the 4 ms pulse are not sourced (swept or assumed); legs and balance are not modelled.
research/buildbot-screwline · 6 tests
How well must a drywall-screwing robot find the framing? A 4x8 sheet (28 wall screws, 36 ceiling) needs one read per member good to 1.0 mm for 95% clean sheets, nearly the nailing figure; allowing 3 missed screws gives 1.7 mm, averaging 4 reads 2.1 mm.
Abstract
Re-runs the buildbot-studfind error budget with a drywall schedule: 16 in screw pitch on walls (28 screws a sheet) and 12 in on ceilings (36), a #6 screw, 0.9 mm of robot scatter per screw from buildbot-fasten, and a shared reading error per framing member. One read of each member must be good to 1.02 mm (1 sigma) on a wall and 0.98 mm on a ceiling for 95% of sheets to land every screw, close to nailing's 0.89 mm because the two sheet-edge members (±3.9 mm windows), not the screw count, bind. Allowing 1 or 3 missed screws raises that to 1.35 or 1.66 mm; 4 or 16 averaged reads to 2.05 or 4.10 mm; re-measuring each screw (1.00 mm) is no better than a shared read. A stud finder’s ‘within 1/8 in’ claim gives 35% clean wall sheets from one read if taken as 1 sigma, 78% from four. Simulated: reading scatter is swept, not measured; pitch is from a USG FAQ, the 3/8 in edge distance from a gypsum-fibre guide and the screw size is nominal, none read from ASTM C840; reads are assumed independent and Gaussian.
research/buildbot-shift · 7 tests
How many hours of an 8-hour shift can a battery-powered Unitree G1 work? One 421 Wh pack gives 4.7 h; two packs and one charger give 7.7 h; above about 300 W the charger is the limit, and pack logistics move the cost break-even only from 2.42 to 2.27 to 2.46 (draw swept, not measured).
Abstract
Event model of battery swaps for a Unitree G1: 421.2 Wh packs (9000 mAh at 46.8 V), a 270 W charger and the vendor's “about 2 hours” runtime, which implies about 211 W. One pack gives 4.7 h of work in an 8 h shift; two packs and one charger give 7.7 h, and a third pack adds nothing. Above about 300 W the charger is the bottleneck (3 packs for 7 h at 300 W, 4 at 400 W). Fed into buildbot-cost, pack wear and extra packs move the G1 break-even slowdown only from 2.42 to 2.27–2.46, so battery logistics are a scheduling detail rather than the deciding cost, and put the robot at 1,200–1,900 h/yr. The draw is back-calculated from a vendor claim and swept 150–400 W, not measured; swap time, usable fraction, charger efficiency and pack cycle life are assumed.
research/buildbot-skillpack · 7 tests
Can the building-site robot skills ship as loadable files? Five JSON skill files reload and re-score exactly; a follow skill tuned on the worse of two plants passes 68%, 65% and 70% on the rigid, flexing and MuJoCo plants, no better than tuning on the flexing plant alone (72%, 69%, 71%).
Abstract
Five versioned JSON skill files (four sheet-following impedance gains and a 62-nail sheathing tolerance budget) with a validating loader and a re-scorer that regenerates each file's test episodes from its stored seed; all five reproduce their claimed success exactly. The follow skill trained on a rigid plant only passes 82% there and 0% on a flexing plant and in MuJoCo; the hand-set gains pass 61%, 28% and 28%; the skill trained on the flexing plant passes 72%, 69% and 71% on the rigid, flexing and MuJoCo plants; a skill tuned on the worse of the rigid and flexing plants passes 68%, 65% and 70%, so mixing the two does not beat training on the flexing one. MuJoCo (200 worlds) agrees with the numpy plant within sampling error. Delay, actuator lag and sheet stiffness are swept ranges, not measurements; the B-trained seed was picked on its test set, the mixed one on a validation set; nothing ran on a robot.
research/buildbot-skills · 7 tests
Does a sheet-following skill tuned on a rigid-sheet simulator survive a flexing sheet with delay? It passes 81% of episodes where it was tuned and 0-11% on the held-out plant; tuning on the held-out plant gives 61-66% there.
Abstract
The buildbot-cohold follow skill (impedance gains K, B and an integral term) was tuned by random search on a rigid-sheet plant with randomised sheet mass (6–23 kg), lift time, reference lag and feed-forward error, then tested on 1000 fresh episodes of a held-out plant: two rigid halves on a torsional spring, a first-order force actuator and delayed feedback. A policy passes if peak tilt ≤ 3°, final tilt ≤ 0.5° and the person's load stays under the NIOSH constant. On the training plant the tuned skills pass 81–82% of episodes (lag-limited ceiling); on the held-out plant they pass 0–11%, because the high gains they pick go unstable under delay. The buildbot-cohold nominal setting passes 61% then 26%. A skill tuned on the held-out plant passes 61–66% there and 67–72% back on the rigid one. Randomising the parameters a simulator has does not cover the dynamics it lacks. Delay (0–30 ms), actuator lag (5–50 ms), sheet stiffness (150–6000 N m/rad) and the pass thresholds are my ranges, not measurements; the second plant is my own planar model, not a second physics engine.
research/buildbot-stance · 10 tests
How many times must a G1 humanoid re-stand to nail one 4x8 sheet? About 13 stances at 5 platform heights: with its feet planted it holds a 3.4 kg nailer at 50 N only 0.7-1.5 m high and 0.3 m sideways, so one stance covers at best 6 of 62 nails, and the sheet matches hand nailing (372 s) only if each re-stance takes under 26-29 s (push to seat and re-stance time are swept, not sourced; no walking simulated).
Abstract
MuJoCo whole-body statics of the Menagerie Unitree G1 holding a 3.4 kg nailer with its feet planted (reach 0.3–0.5 m, height 0–1.6 m, sideways 0–0.8 m, pushes of 0, 50 and 100 N, torque and friction limits). At 0.4 m and 50 N it holds only 32 of 153 points (0.7–1.5 m high, at most 0.3 m sideways); the best stance covers 6 of the sheet’s 62 nails (10 at 0.3 m), floor stances reach at most 29, and a 100 N push seat leaves no nail reachable. Covering the whole sheet takes about 13 stances at 5 platform heights (9 under a generous grid rule). Nailing and moves take 25–59 s; with 12 re-stances the sheet equals the 372 s hand estimate at 26–29 s per re-stance. The push to seat a nail and the re-stance time are swept, not sourced; the IK is not a search for the best posture, so the low nails are an upper bound on difficulty; no walking, platform or recoil is simulated.
research/buildbot-studfind · 8 tests
How well must a nailing robot find the studs? A 4x8 sheet needs a single stud reading good to 0.89 mm (1 sigma) for 95% clean sheets; a stud finder's 'within 1/8 in' claim gives 28% (8 of 62 nails missed) or 69%; averaging reads and pooling a straight wall help, re-measuring each nail is worst.
Abstract
buildbot-fasten left stud-finding as the unmodelled term in the nailing budget. Here every nail on a stud shares that stud's position error, and a 4x8 sheet has four studs (two joints of 17 nails with a ±3.9 mm window, two intermediate studs with ±17.4 mm) and 14 plate nails, with 0.9 mm of robot scatter on each nail. Quadrature and Monte Carlo agree (within 0.01). A single read of each stud must be good to 0.89 mm (1 sigma) for 95% of sheets to land all 62 nails in their windows; at 3 mm only 31% do. A stud finder's vendor claim (‘within 1/8 in’) gives 28% clean sheets and 8 of 62 nails missed if read as 1 sigma, 69% and 1.1 missed if read as a 95% bound. Averaging n reads allows √n more scatter (3.56 mm at 16 reads); pooling the studs of a wall through a 16 in grid allows 2.95 mm for a perfectly straight wall and nothing once layout scatter reaches 4–8 mm; re-measuring at every nail is worst (0.86 mm), because 62 independent errors must all be small where a shared one is four draws. Simulated: reading and layout scatter are swept, not measured; the vendor figure is a claim with an unstated statistic; reads are assumed independent and Gaussian; no camera or wall is modelled.
research/buildbot-taskbook · 10 tests
Which house-building tasks hold the crew hours, and which can a stock humanoid hold the load for? An open task book of a 28x40 ft wood-frame house: 20 tasks with cycles, masses, tolerances and crew-hours, scored against the simulated Unitree G1 and H1 payload envelopes; fastening is 31% of the hours, and the H1 passes the payload test for 53-81% of them (minutes per unit are assumptions, swept).
Abstract
An open task book of one small house (28×40 ft, one storey, 2×6 at 16 in, from house-framing's takeoff): 20 tasks across wall framing, wall and roof sheathing, insulation and drywall, each with cycles, mass handled, hand height, reach, a tolerance, minutes per unit and crew-hours, as CSV and JSON. Counts come from code (210 framing pieces, 32 wall and 46 roof sheets, 72 drywall sheets, 8,760 fasteners); masses from the lumber, sheet and tool figures of buildbot-payload; robot verdicts from its simulated G1 and H1 payload envelopes. Minutes per unit are my assumptions: no primary time study could be read from this session, so they are swept ×1/3 to ×3, and my framing rows come out 5.5× below the one cited norm I found (Methvin, 0.12 man-hours per metre of stud, read as a search snippet), shown as a second scenario. Total 46 crew-hours (40–77 over the sweep) for this scope, or 93 with framing at the norm. Fastening is the biggest verb (29% of the hours, 21% in the second scenario) and taping and sanding drywall the biggest task. The H1 passes the payload test for tasks holding 54–81% of the hours (57–85% in scenario B), the G1 only 6–22% (7–31%); roof and ceiling work sits outside both robots' reach envelope. A payload pass is not a skill: force, placement accuracy and perception are untested.
research/buildbot-torquewall · 5 tests
Which joint's torque limit caps a stock humanoid's carrying? For the G1 it is the waist pitch: doubling it alone takes the heaviest feasible payload from 4 to 6 kg; the H1 has no single bottleneck.
Abstract
The Menagerie G1 and H1 humanoids are re-scored on buildbot-carryphase's prescribed single-support carry step (990 cases: payload, step length, step time) with one joint group's torque limits multiplied by 2 or 4. For the G1 the waist pitch (50 N·m in the model) is the wall: doubling it alone lifts the heaviest feasible payload from 4 to 6 kg and the 4 kg speed from 0.10 to 0.20 m/s, while the arms, legs or ankles alone change nothing; all joints at 4× reach 10 kg. The H1 has no single bottleneck (hip pitch, then elbow): only scaling every joint helps. Best speed stays near 0.2 m/s because the gait is prescribed. Limits are the community Menagerie model's, scale factors are swept what-ifs (no actuator is claimed), payload steps are coarse, and no falls or energy are scored. Not a safety case.
Other research topics
Proper scoring & elicitation28Effort & peer prediction9Verification games & slashing19Detection & tolerances14Markets as routers13Prediction-market design9Paying contributors8Decentralised training systems23Digital twins & sim-to-real164LLM chip design loops40Robot manufacturing loops53Ambient AI assistant46Self-replicating manufacturing34Simulation-first design64Engineered clothing45Task-specific AI accelerators40Algorithmic chip-design loops42Open-source purpose-built robots44The software-engineering loop43Adversarial human imitation41Open-source residential construction41Autonomous multi-angle capture34Sensing, imaging and 3D31Energy supply and dense energy storage39Robot societies among people31Agentic co-design of low-cost robots27Laundry-hanging robots25Machine learning on qualitative data23Robots on the building site27Civilizations & group psychology1History & human sciences1
Produced with AI assistance (Claude). Results are from the code in this repository and are simulated or stylised unless the abstract says otherwise; nothing here implies affiliation with or endorsement by any lab, researcher or company cited. MIT licensed.