Humanoid robots in 2026 do narrow, structured material-handling jobs: moving totes, loading fixtures and sequencing parts. Most deployments are small fleets, and the deployment data is thinner than the press releases suggest. This guide separates paid, running work from pilots and from announced plans. It then covers the control and integration layer that makes those jobs feasible.
Quick Takeaways
- Tote handling is the only paid, multi-year humanoid job with public throughput data. Agility’s Digit has moved more than 100,000 totes on a paid GXO contract.
- Automotive plants use humanoids for fixture loading and part sequencing. BMW says Figure 02 supported production of more than 30,000 X3 vehicles in ten months, working ten-hour shifts Monday to Friday.
- Fleet sizes stay small, and capacity is not output. Large order books and planned factory capacities do not tell you how many robots work a shift today.
- Integration decides ROI. Fleet management, MES/WMS interfaces, safety validation and fault recovery matter more than the demo-grade skills.
| Deployment | Robot | Task | Status (Nov 2026) |
|---|---|---|---|
| GXO, Georgia | Digit (Agility) | Tote moves between AMRs and conveyors | Paid, multi-year RaaS; two more sites planned for early 2027 |
| BMW Spartanburg | Figure 02 → Figure 03 | Sheet-metal loading; part sequencing | Pilot completed; logistics sequencing started 2026 |
| Hyundai Metaplant | Atlas (Boston Dynamics) | Training in a plant-side center | Factory operation targeted for 2028 |
| Mercedes-Benz | Apollo (Apptronik) | Parts delivery, kitting, inspection | Pilot; unit counts undisclosed |
| Chinese auto/logistics sites | Walker S2 (UBTech) | Logistics, factory tasks | Hundreds delivered; orders over 800M yuan |
| Tesla Fremont | Optimus | Not disclosed | Production started; no material factory work disclosed |
What Is Actually Deployed
Warehouses: Digit at GXO
Agility and GXO announced the first humanoid robots-as-a-service contract in 2024. At the Flowery Branch, Georgia site, Digit unloads autonomous mobile robots, moves totes to conveyors, and stacks totes aside when downstream stations back up. That last behavior is the useful signal. The robot reacts to ordinary warehouse variation instead of replaying a fixed script.
GXO plans to add Digit at warehouses in Statesville, North Carolina, and Lebanon, Tennessee, starting in early 2027. The first units will be Digit 4, with a shift to Digit 5 when it becomes available. Agility’s Salem factory is designed for up to 10,000 robots per year, but that is capacity, not output, and 2026 production is undisclosed.
The Toyota Canada deal is smaller. One report describes a year-long Toyota pilot converting into a seven-unit deployment in February 2026. Other trackers cite different counts, so treat fleet sizes as single-digit to low double-digit.
Automotive plants: BMW and Figure
Figure 02 inserted sheet-metal parts into welding fixtures in BMW’s body shop. Figure 03 now picks unsorted components and sorts them into sequencing trolleys, which are then moved to a collection point. BMW describes humanoids as a complement to existing automation. Its Figure 02 integration involved production IT, occupational safety, process management and shop-floor logistics from the start.
Planned, piloted or unproven
- Atlas (Hyundai): Boston Dynamics opened a training center inside Hyundai’s Georgia Metaplant on September 21, 2026. Kia’s CEO said humanoids are expected to begin operating at the Georgia Metaplant in 2028. Reports of earlier “active operations” come from low-quality syndicated sources. The training-center and 2028 timeline is the better-supported reading.
- Apollo (Apptronik): Apptronik has not disclosed how many Apollo units Mercedes-Benz uses, how many facilities have them, the commercial terms, or whether the work has moved past pilot validation.
- Optimus (Tesla): Tesla’s Q3 2026 update says production has begun on Fremont lines, but not how many robots do useful factory work.
- Walker S2 (UBTech): UBTech reports orders exceeding 800 million yuan and supplies robots for automotive manufacturing, smart factories and logistics. Airbus bought units to explore aviation manufacturing. Omdia reports 1,000 shipments for UBTech and 4,200 for Unitree.
Why These Tasks Work
The common jobs share four traits.
- Bounded payload. Totes and sheet-metal parts weigh roughly 10 to 25 kg, well inside the 15 to 25 kg range these humanoids handle.
- Fixed handoff geometry. Conveyor edges, fixture pockets and trolley slots give the perception stack known targets.
- Tolerance for pauses. A 10 to 20 second retry does not stop a line. A robot stalled at a station only delays that one cycle.
- Human-built infrastructure. Aisles, stairs and shelving already fit a human-scale body, so the facility does not need to be rebuilt.
Humanoid vs. alternatives
| Platform | Payload | Flexibility | Cost / Integration | Best fit |
|---|---|---|---|---|
| Humanoid (bipedal) | ~15–25 kg | High, but slow per cycle | High; fleet software and safety case still maturing | Mixed brownfield tasks |
| AMR + fixed arm | 5–100+ kg | Low; fixed station | Low–moderate; mature | Repeating pick/place |
| Mobile manipulator (wheeled) | 5–30 kg | Medium | Moderate | Aisle picking, machine tending |
| Conveyor / AS/RS | Very high | Very low | High capex, lowest cost per unit | Stable, high-volume flow |
Humanoids win only when the task mix changes too often for fixed automation and the facility cannot be redesigned. A wheeled base is faster and more stable whenever the floor is flat.
Control Architecture Behind a Tote-Handling Humanoid
Most current systems pair a learned whole-body controller with classical supervision. The learned policy tracks commands. A deterministic layer enforces limits.
Whole-body control formulation
A common formulation solves a quadratic program at 200–1000 Hz:
min || J_task * qdd + Jdot_task * qd - xdd_des ||^2_W + lambda * || tau ||^2
q̈, τ, f_c
s.t. M(q) qdd + h(q, qd) = S^T tau + J_c^T f_c (dynamics)
f_c in friction cone (|f_t| <= mu * f_n) (contact)
tau_min <= tau <= tau_max (actuator limits)
ZMP inside support polygon (balance)
Here M(q) is the inertia matrix, h(q, q̇) collects Coriolis and gravity terms, J_c is the contact Jacobian and f_c the contact forces. When a tote adds payload m_p, the controller must re-solve with the extra load at the wrist and a shifted center of mass.
Throughput and payback math
Use these formulas to sanity-check any vendor claim.
Throughput = (3600 / T_cycle) * A * (1 - p_fail * T_recover / T_cycle)
Payback (months) = C_capex / (L_human - C_opex) , all terms per month
Effective cost per tote = (C_robot_month + C_support_month) / totes_per_month
Worked example. Every input below is an assumption, not vendor data:
| Variable | Value |
|---|---|
| T_cycle | 20 s |
| Availability A | 0.80 (charging, faults) |
| p_fail | 0.02 per cycle |
| T_recover | 30 s |
| Shift length | 8 h |
Throughput = 180 × 0.80 × (1 − 0.02 × 30 / 20) = 144 × 0.97 ≈ 140 totes/hour.
A human moving totes at 300/hour is twice as fast. Humanoids pay back through shift coverage, injury avoidance and unfilled labor, not raw speed.
Integration Layer: ROS 2 Safety Supervisor
The supervisor below shows the deterministic layer that sits above a learned policy. It monitors payload estimate and fleet heartbeat and gates motion. It runs on ROS 2 Humble (Python, rclpy).
#!/usr/bin/env python3
"""Safety supervisor: gates a humanoid's tote-handling policy."""
import rclpy
from rclpy.node import Node
from std_msgs.msg import Float32, Bool
from geometry_msgs.msg import Twist
MAX_PAYLOAD_KG = 15.0 # hard payload limit (rated payload)
HEARTBEAT_TIMEOUT_S = 0.5 # fleet-manager heartbeat watchdog
LOOP_HZ = 50 # supervisor loop rate
class SafetySupervisor(Node):
def __init__(self):
super().__init__('safety_supervisor')
# Inputs: payload estimate (kg), human-proximity flag, policy velocity command
self.create_subscription(Float32, '/payload_kg', self.on_payload, 10)
self.create_subscription(Bool, '/human_in_zone', self.on_human, 10)
self.create_subscription(Twist, '/policy/cmd_vel', self.on_cmd, 10)
self.create_subscription(Bool, '/fleet/heartbeat', self.on_beat, 10)
# Output: gated command forwarded to the base controller
self.pub = self.create_publisher(Twist, '/cmd_vel', 10)
self.payload = 0.0
self.human = False
self.cmd = Twist()
self.last_beat = self.get_clock().now()
self.create_timer(1.0 / LOOP_HZ, self.loop)
def on_payload(self, m): self.payload = m.data
def on_human(self, m): self.human = m.data
def on_cmd(self, m): self.cmd = m
def on_beat(self, _): self.last_beat = self.get_clock().now()
def loop(self):
age = (self.get_clock().now() - self.last_beat).nanoseconds * 1e-9
out = Twist() # zero twist = stop
overload = self.payload > MAX_PAYLOAD_KG
stale = age > HEARTBEAT_TIMEOUT_S
if not (overload or stale):
scale = 0.3 if self.human else 1.0 # slow to 30% near people
out.linear.x = self.cmd.linear.x * scale
out.linear.y = self.cmd.linear.y * scale
out.angular.z = self.cmd.angular.z * scale
self.pub.publish(out)
def main():
rclpy.init()
rclpy.spin(SafetySupervisor())
if __name__ == '__main__':
main()
This node is not a certified safety function. Production humanoids need a validated safety-rated stack, and the standards picture is still incomplete. One industry tracker notes Digit is not certified to a humanoid-specific standard. Treat any supervisor like this one as a software layer on top of hardware e-stops and safety-rated monitoring.
Real-World Workflow: Commissioning a Humanoid Tote Station
- Pick one station. Choose a handoff between an AMR and a conveyor with stable geometry and a measured baseline of totes per hour.
- Instrument first. Log cycle time, retries, faults per 1,000 cycles and mean time between interventions (MTBI) for the human process.
- Define the safety case. Specify zones, speed limits near people, e-stop reach and fall behavior. Review it with your safety officer before the robot moves.
- Connect the fleet layer. Integrate with WMS/MES through the vendor platform, such as Agility Arc, a cloud-based fleet management and integration platform.
- Run shadow mode. The robot observes while humans work. Compare its planned actions to actual ones.
- Go live at low duty. Run one shift, then extend. Track MTBI, availability A and recovery time T_recover.
- Decide on data. Compare effective cost per tote against the human baseline before ordering a second site.
Common Failure Modes
| Failure | Typical cause | Mitigation |
|---|---|---|
| Missed grasp | Deformed or reflective tote | Tactile feedback, retry limits |
| Battery downtime | Charge cycles cut availability A | Hot-swap or fast charging |
| Localization drift | Repetitive aisles | Fiducials, map re-anchoring |
| Stalled handoff | Conveyor backed up | Buffer/stack behavior, WMS signals |
| Network loss | Wi-Fi dead zones | Local fallback policy, safe stop |
Frequently Asked Questions
Are humanoid robots actually working in warehouses today?
Yes, in small numbers. Digit has moved more than 100,000 totes on a paid GXO contract and logged 65,000 hours across commercial operations and customer programs. Most other humanoid programs remain pilots or planned rollouts.
What tasks can humanoid robots do in factories?
They handle structured material handling: loading sheet-metal parts into fixtures, sorting parts into sequencing trolleys, and moving totes or kits. BMW’s Figure robots did the first two at Spartanburg. Fine assembly, variable inspection and heavy lifting are still development areas.
Will humanoids replace human workers soon?
Current evidence does not show replacement. BMW added a second-generation robot to a new job rather than cutting headcount. Fleets are small, and each robot needs support staff, fleet software and safety oversight.
How much does a humanoid robot cost to run?
Public pricing is thin. Some vendors sell robots-as-a-service, and the GXO contract is the first such humanoid deal. Use the payback formula above with your own labor cost, availability and failure rate instead of trusting headline figures.



