Home humanoid robots can do some chores today, but mostly slowly, under supervision, and often with a remote human operator in the loop. The hardware is advancing quickly: tendon-driven hands, backdrivable actuators, and vision-language-action (VLA) models now let a robot open a dishwasher it has never seen. The hard limits are contact-rich manipulation, battery runtime, and safety around people. This guide breaks down the physics, the stack, and the realistic task list.
Quick Takeaways
- Works now: tidying objects, carrying laundry baskets, loading dishwashers, and fetching items, usually at 3 to 10x human time.
- Does not work reliably: folding fitted sheets, cooking, scrubbing, and anything needing tactile feedback at under 10 ms latency.
- Hidden cost: many early consumer units rely on teleoperation for tasks the onboard policy cannot finish.
- Hard constraints: roughly 2 to 4 hours of runtime on a ~1 to 2 kWh pack, and a 60 to 70 kg robot that needs a safety case before sharing a room with children.
| Spec | Typical Home Humanoid (2026 class) | Robot Vacuum | Human |
|---|---|---|---|
| Degrees of freedom | 40 to 60 | 2 | 200+ |
| Mass | 30 to 70 kg | 3 to 4 kg | 70 kg |
| Runtime | 2 to 4 h | 1.5 to 2.5 h | 16 h awake |
| Hand DoF (per hand) | 11 to 22 | 0 | 27 |
| Task coverage | Narrow, supervised | Single task | Everything |
| Price range | $20,000 to $100,000+ | $300 to $1,500 | n/a |
Why the Humanoid Form Factor at All?
Homes are built for humans. Stairs are 17 to 20 cm risers. Door handles sit at about 90 cm. Counters sit at 90 cm. A wheeled base with two arms handles 80% of single-floor tasks cheaper. A bipedal platform wins only if you need stairs, tight clutter, and tool reuse.
| Platform | Stairs | Footprint | Energy Efficiency | Complexity |
|---|---|---|---|---|
| Wheeled base + arms | No | Small | High | Low |
| Quadruped + arm | Yes | Medium | Medium | Medium |
| Full biped humanoid | Yes | Small | Low | High |
Expect hybrid designs (wheeled legs, torso lift) to ship before fully bipedal ones in volume.
Kinematic and Dynamic Foundations
Balance: the Zero Moment Point
A walking humanoid stays upright if the Zero Moment Point (ZMP) remains inside the support polygon. For the linear inverted pendulum model (LIPM):
x_zmp = x_com - (z_c / g) * a_com
where:
x_com = center-of-mass position (m)
z_c = constant CoM height (~0.8 m for a 1.7 m robot)
g = 9.81 m/s^2
a_com = CoM acceleration (m/s^2)
With z_c = 0.8 m, the pendulum natural frequency is omega = sqrt(g / z_c) = 3.5 rad/s. Any disturbance, such as a child bumping the robot, must be rejected within roughly 1/omega = 0.29 s or the robot falls. Modern controllers use whole-body model predictive control (MPC) at 500 Hz to 1 kHz, with reinforcement-learned locomotion policies running at 50 Hz on top.
Arm Control: Why Impedance Beats Position Control
Household contact (wiping a table, closing a drawer) needs compliance. Impedance control makes the end effector behave like a mass-spring-damper:
F = K (x_d - x) + D (xdot_d - xdot) + M (xddot_d - xddot)
tau = J^T F + g(q) # joint torques from Cartesian force, plus gravity compensation
K = stiffness (N/m), D = damping (N·s/m), M = apparent mass (kg)
For wiping, use K = 200 to 400 N/m normal to the surface and K = 1500 N/m tangentially. Critical damping: D = 2 * sqrt(K * M).
Reference ROS 2 Impedance Node
#!/usr/bin/env python3
# Cartesian impedance controller for a humanoid arm (ROS 2 Humble/Jazzy).
# Publishes joint torques at 500 Hz. Assumes a Jacobian service/topic exists.
import numpy as np
import rclpy
from rclpy.node import Node
from sensor_msgs.msg import JointState
from geometry_msgs.msg import PoseStamped
from std_msgs.msg import Float64MultiArray
class ImpedanceController(Node):
def __init__(self):
super().__init__('impedance_controller')
# Stiffness (N/m) and apparent mass (kg), per Cartesian axis [x, y, z]
self.K = np.diag([1500.0, 1500.0, 300.0]) # soft along z (surface normal)
self.M = np.diag([2.0, 2.0, 2.0])
self.D = 2.0 * np.sqrt(self.K @ self.M) # critical damping
self.x_d = np.zeros(3) # desired position
self.x = np.zeros(3) # measured position
self.xdot = np.zeros(3) # measured velocity
self.J = np.zeros((3, 7)) # 3x7 Jacobian, 7-DoF arm
self.g_q = np.zeros(7) # gravity torque vector
self.create_subscription(JointState, '/joint_states', self.on_state, 10)
self.create_subscription(PoseStamped, '/target_pose', self.on_target, 10)
self.pub = self.create_publisher(Float64MultiArray, '/arm/effort_cmd', 10)
self.create_timer(1 / 500.0, self.control_loop) # 500 Hz
def on_target(self, msg):
p = msg.pose.position
self.x_d = np.array([p.x, p.y, p.z])
def on_state(self, msg):
# In production: run forward kinematics, Jacobian, and gravity model here.
pass
def control_loop(self):
# Cartesian force from spring-damper law (target velocity assumed zero)
F = self.K @ (self.x_d - self.x) - self.D @ self.xdot
F = np.clip(F, -30.0, 30.0) # safety cap: 30 N contact force
tau = self.J.T @ F + self.g_q # map to joint torques
out = Float64MultiArray()
out.data = tau.tolist()
self.pub.publish(out)
def main():
rclpy.init()
rclpy.spin(ImpedanceController())
if __name__ == '__main__':
main()
The 30 N clamp is a safety limit, not a tuning parameter. Household-safe contact forces for transient human contact are typically capped well below 150 N, per ISO/TS 15066 guidance for collaborative robots.
The Perception and Planning Stack
A home humanoid runs three layers:
- Reflex layer (1 kHz): joint torque loops, fall detection, collision stop.
- Skill layer (10 to 50 Hz): learned policies such as “grasp mug” or “open drawer,” often diffusion policies or VLA transformers.
- Task layer (~1 Hz): a language model decomposes “clean the kitchen” into skills and monitors success.
| Component | Typical Hardware | Role | Latency Budget |
|---|---|---|---|
| RGB-D camera | Stereo + ToF | Object pose, scene geometry | 33 ms |
| IMU | 6-axis MEMS, 1 kHz | Base state estimation | 1 ms |
| Tactile skin | Capacitive / optical | Slip detection | 5 to 10 ms |
| Onboard compute | 100 to 500 TOPS SoC | Policy inference | 20 to 100 ms |
| Actuators | Quasi-direct-drive BLDC | Torque-transparent motion | <1 ms |
Sensor fusion for base state commonly uses an extended Kalman filter over IMU, leg odometry, and visual odometry:
x_k|k-1 = F x_k-1 + B u_k # predict
K_k = P_k|k-1 H^T (H P_k|k-1 H^T + R)^-1 # Kalman gain
x_k = x_k|k-1 + K_k (z_k - H x_k|k-1) # update with measurement z_k
Motor Types: What Actually Moves the Joints
| Motor Type | Torque Density | Backdrivability | Cost | Home Suitability |
|---|---|---|---|---|
| BLDC + harmonic drive | High | Low | High | Precise, but stiff and unsafe on impact |
| Quasi-direct-drive BLDC | Medium | High | Medium | Best for safe contact |
| Series elastic actuator | Medium | High | High | Excellent force sensing, lower bandwidth |
| Tendon-driven (hands) | Medium | Medium | Medium | Light fingers, wear-prone |
Realistic Chore Scorecard
| Chore | Manipulation Difficulty | Reliability Today | Typical Speed vs. Human |
|---|---|---|---|
| Fetching items | Low | High | 2 to 3x slower |
| Carrying laundry basket | Low | High | 2x slower |
| Loading dishwasher | Medium | Medium | 5 to 10x slower |
| Wiping counters | Medium | Medium | 4x slower |
| Folding towels | High | Low to medium | 10x+ slower |
| Cooking a meal | Very high | Low | Not viable unattended |
| Cleaning bathrooms | Very high | Very low | Not viable |
Battery Math: Why Runtime Is the Bottleneck
Energy consumption approximates:
t_runtime = E_pack / P_avg
Example: E_pack = 1.6 kWh, P_avg = 500 W (walking + manipulation + compute)
t_runtime = 1600 Wh / 500 W = 3.2 hours
Standing idle may draw only 150 to 250 W, since compute and joint holding torque dominate. Walking pushes 600 to 1000 W. A robot that charges itself (docking or wireless pad) changes the economics, because it can work in 2 to 3 hour bursts across a day.
Real-World Workflow: Deploying a Dishwasher-Loading Skill
This is the process roboticists follow to get one chore working in a specific home:
- Map the environment. Run SLAM (Cartographer or Nav2 + RTAB-Map) to build a 2D occupancy grid at 5 cm resolution. Tag the dishwasher location as a semantic waypoint.
- Calibrate the arm. Run hand-eye calibration, targeting under 2 mm reprojection error.
- Collect demonstrations. Teleoperate the robot through 50 to 200 demonstrations of the task with VR or exoskeleton control.
- Train the policy. Fine-tune a diffusion policy on the demos, using action chunks of 16 steps at 10 Hz.
- Validate in simulation. Replay in Isaac Sim or MuJoCo with randomized plate geometry and lighting.
- Deploy with a fallback. Set a confidence threshold (for example 0.8). Below it, the robot pauses and requests human help rather than guessing.
- Log failures. Every failed grasp becomes training data for the next model version.
Success rate typically climbs from about 40% on the first policy to 85 to 95% after several data rounds, for one narrow task in one kitchen. Generalizing to a new kitchen drops it again.
Teleoperation: The Question Buyers Must Ask
Several early consumer humanoids use a human-in-the-loop model. A remote operator takes control when the autonomy policy stalls. This raises three questions:
- Privacy: cameras inside your home may stream to an operator. Ask about data retention and operator vetting.
- Latency: a 100 ms round trip is workable for pick-and-place but unusable for catching a falling object.
- Economics: if 30% of tasks need an operator, your cost per chore includes human labor.
Safety and Standards
Humanoids in homes fall outside the industrial rules most robots follow. Relevant references include ISO 13482 (personal care robots) and ISO 10218 / ISO/TS 15066 (collaborative contact limits). A 60 kg robot falling from standing height carries about E = m g h = 60 × 9.81 × 0.9 ≈ 530 J of potential energy, so fall protection, safe-fall behaviors, and speed limits near people are design requirements, not options.
Verdict: Will They Really Do Your Chores?
Yes, for a short list of structured tasks, with caveats about speed, supervision, and cost. A robot vacuum plus a dishwasher still beats a humanoid on price and reliability for most homes. Humanoids make sense as a general-purpose platform that improves through software updates, the way smartphones did. Expect the first real value in assisted living and elder care, where a lifting, fetching, and monitoring robot fills a clear labor gap.
FAQ
Can home humanoid robots do laundry?
Partially. Current robots can collect clothes, load a machine, and move baskets. Folding remains unreliable, especially for soft, deformable items like fitted sheets, because fabric has near-infinite degrees of freedom and gives little tactile feedback.
How much do home humanoid robots cost?
Announced consumer-oriented units range from roughly $20,000 to $100,000+, with some vendors testing subscription pricing. Research platforms cost more. Prices and availability change quickly, so verify current vendor listings before budgeting.
Are home humanoid robots safe around kids and pets?
Not unconditionally. Safety depends on backdrivable actuators, force limits, fall behavior, and speed caps. No humanoid should be left unsupervised around young children without a vendor-documented safety case and compliance with standards such as ISO 13482.
Do humanoid robots work without internet?
Basic locomotion and simple skills run onboard. Complex reasoning, updates, and teleoperation fallback often need a cloud connection. Ask whether the robot degrades gracefully offline.




