Humanoids in Factories and Warehouses: What They Actually Do Today

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.

  1. Bounded payload. Totes and sheet-metal parts weigh roughly 10 to 25 kg, well inside the 15 to 25 kg range these humanoids handle.
  2. Fixed handoff geometry. Conveyor edges, fixture pockets and trolley slots give the perception stack known targets.
  3. 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.
  4. 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

  1. Pick one station. Choose a handoff between an AMR and a conveyor with stable geometry and a measured baseline of totes per hour.
  2. Instrument first. Log cycle time, retries, faults per 1,000 cycles and mean time between interventions (MTBI) for the human process.
  3. 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.
  4. Connect the fleet layer. Integrate with WMS/MES through the vendor platform, such as Agility Arc, a cloud-based fleet management and integration platform.
  5. Run shadow mode. The robot observes while humans work. Compare its planned actions to actual ones.
  6. Go live at low duty. Run one shift, then extend. Track MTBI, availability A and recovery time T_recover.
  7. 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.

Hot this week

Debugging Robot Code: Logs, Serial Output, rosbag, and Foxglove

Debug robot code faster with ROS 2 logging, serial capture, rosbag2 recording, and Foxglove. Copy the configs and scripts into your stack today.

Build a Mapping Robot With SLAM From Scratch

Build a SLAM mapping robot from scratch: wiring, odometry, LiDAR, ROS 2 slam_toolbox config and tuning. Follow the full guide and map your first room.

Depth Cameras: Stereo, Time-of-Flight, and Structured Light Compared

Compare stereo, time-of-flight, and structured light depth cameras: accuracy, range, sunlight, ROS2 setup. Pick the right sensor for your robot.

Python vs C++ for Robotics: Which Should You Use?

Python vs C++ for robotics compared: latency, ROS2 performance, control loops, and code examples. Learn which language fits your robot. Read the guide.

Build a ROS 2 Rover: Raspberry Pi 5, Motors, and LiDAR

Build a ROS 2 rover with Raspberry Pi 5, RPLIDAR C1, and a Pico motor controller. Copy the code, wire it, and map your room. Start building now.

Topics

Debugging Robot Code: Logs, Serial Output, rosbag, and Foxglove

Debug robot code faster with ROS 2 logging, serial capture, rosbag2 recording, and Foxglove. Copy the configs and scripts into your stack today.

Build a Mapping Robot With SLAM From Scratch

Build a SLAM mapping robot from scratch: wiring, odometry, LiDAR, ROS 2 slam_toolbox config and tuning. Follow the full guide and map your first room.

Depth Cameras: Stereo, Time-of-Flight, and Structured Light Compared

Compare stereo, time-of-flight, and structured light depth cameras: accuracy, range, sunlight, ROS2 setup. Pick the right sensor for your robot.

Python vs C++ for Robotics: Which Should You Use?

Python vs C++ for robotics compared: latency, ROS2 performance, control loops, and code examples. Learn which language fits your robot. Read the guide.

Build a ROS 2 Rover: Raspberry Pi 5, Motors, and LiDAR

Build a ROS 2 rover with Raspberry Pi 5, RPLIDAR C1, and a Pico motor controller. Copy the code, wire it, and map your room. Start building now.

Imitation Learning for Robots: Teach by Demonstration

Learn imitation learning for robots: behavior cloning, DAgger, ACT, and diffusion policies with ROS2 code. Build your first policy today.

LiDAR for Robots: 2D, 3D, and Solid-State Compared

Compare 2D, 3D, and solid-state LiDAR for robots. See specs, ROS2 configs, code, and a selection workflow. Pick the right sensor now.

ROS 2 Installation and First Steps: Nodes, Topics, and Messages

Install ROS 2 Lyrical on Ubuntu 26.04, then build your first node, topic, and custom message with working rclpy code. Follow the tutorial now.

Related Articles

Popular Categories