Space Requirements

A single-arm teleoperation station requires a minimum 3 m × 3 m floor area, but 4 m × 4 m is strongly recommended for safe operator access, equipment carts, and camera stand positioning. If you plan a bimanual setup (two arms), add 1.5 m of table width. For a humanoid robot, minimum 5 m × 5 m with a padded floor.

Ceiling height: 2.7 m minimum; 3.0 m preferred. Overhead camera mounts need 2.0–2.5 m clearance. Humanoids require 2.4 m minimum.

Lighting: Controlled, diffuse overhead lighting is critical. Avoid directional sunlight from windows — use blackout curtains or work in a windowless room. LED panel lights (5000K, CRI >90) at 400–600 lux at table height produce consistent illumination for computer vision. Inconsistent lighting between your data collection and deployment environment is a major cause of policy failure.

Flooring: ESD (electrostatic discharge) flooring or ESD mats under the robot table protect motor controllers and compute hardware. Non-slip flooring outside the robot workspace for operator safety.

Power: Dedicated 20A circuit for robot + compute. UPS on robot arm to prevent damage from sudden power loss. Do not share circuits with HVAC or other high-draw equipment.

Equipment Checklist with Prices

EquipmentBudget OptionMid-Range OptionNotes
Robot arm$3,100 (WidowX-250)$9,200 (xArm 6)See arm guide
Teleop controller$500 (Meta Quest 3)$3,100 (SO-100 leader)Leader arm preferred for data quality
Primary camera (wrist)$150 (RealSense D405)$600 (RealSense D435i)Depth improves policy; RGB-only acceptable
Fixed overhead camera$150 (Logitech BRIO)$400 (Basler acA1300)BRIO adequate for most tasks
Fixed side camera$150 (Logitech BRIO)$400 (Basler acA1300)Optional; improves occlusion coverage
Camera mounts$200 (articulating arms)$500 (optical breadboard)Rigidity matters for extrinsic stability
Compute workstation$2,000 (RTX 3080)$5,000 (RTX 4090)GPU for inference, CPU for ROS2
NVMe SSD (data storage)$200 (2TB)$400 (4TB NVMe)Log at full quality; delete later
NAS (archival)$500 (Synology DS223)$1,500 (Synology DS923+)RAID1 for safety; 8TB+ recommended
Network switch$80 (TP-Link 8-port)$300 (managed Netgear)Dedicated LAN for low-latency ROS2
UPS (uninterruptible)$150 (CyberPower 600VA)$400 (APC 1500VA)Prevents arm motor damage on power loss
Robot table$300 (80×120cm 80kg rated)$800 (custom steel)Must not flex; bolt arm to table
Total (estimate)~$7,500~$20,000Before arm cost

Network Setup for Low-Latency Data Collection

Network architecture significantly impacts ROS2 reliability and data logging integrity. Use a dedicated setup:

  • Dedicated 1 Gbps switch: One switch for the robot LAN (arm controller, workstation, NAS). Do not share with office traffic. TP-Link TL-SG108 ($30) is adequate; a managed switch lets you set QoS to prioritize ROS2 traffic.
  • Isolated WiFi for VR: Meta Quest 3 requires WiFi for ADB debugging and AnyTeleop streaming. Run a dedicated access point (WiFi 6, 5 GHz only) isolated from the robot LAN. Configure the workstation with two NICs: one wired to robot LAN, one WiFi to Quest.
  • Static IP addressing: Assign static IPs to the robot arm, cameras (if IP cameras), workstation, and NAS. Dynamic IPs cause ROS2 node discovery issues. Use 192.168.1.x range for robot LAN.
  • NAS configuration: Map the NAS as a network drive and configure your HDF5 logger to write directly to it. Synology NAS with 2-bay RAID1 provides write speeds of 100+ MB/s, sufficient for 3-camera RGB recording at 30 fps.

Camera Placement Guide

Camera placement is one of the most important and underspecified decisions in teleoperation lab setup. Poor placement causes occlusion, motion blur, and lighting inconsistency that degrade policy training quality.

Wrist camera: Mount 25–35 cm from gripper fingertips along the wrist axis, angled 15° downward toward the gripper centerline. Use a rigid mount — any flex introduces unstable camera motion. The Intel RealSense D405 (global shutter, 640×480 at 90 fps) is ideal for wrist mounting due to its 55 mm form factor.

Fixed overhead camera: Position 120–180 cm above the table, angled 40–50° from vertical. This provides a bird's-eye view of the full workspace including both robot arm positions for bimanual tasks. Avoid directly overhead (90°) — foreshortening makes depth estimation difficult.

Fixed side camera: Position at table height, 90° from the robot's primary working direction, 80–120 cm from workspace center. This view captures grasps occluded from the overhead perspective. Essential for tasks involving objects on the far side of the table.

Consistency rule: Once you begin data collection, do not move cameras. Changes in camera pose require re-calibration and break policy training — policies learn the camera geometry implicitly. Mark camera mount positions with tape.

Software Stack

The recommended open-source software stack for a new lab in 2025:

  • ROS2 Humble (Ubuntu 22.04): The current LTS release. Install ros-humble-desktop. Configure ROS_DOMAIN_ID to isolate your lab from building network traffic.
  • Robot arm driver: interbotix_ros2 (WidowX/ViperX), ur_robot_driver (UR arms), xarm_ros2 (xArm), or openarm_ros2 (OpenArm 101).
  • OpenArm Agent (SVRC open-source): Handles teleoperation input, episode management, HDF5 logging, and streaming to the SVRC data platform.
  • Camera drivers: realsense2_camera (ROS2 package) for RealSense; usb_cam or v4l2_camera for USB webcams; pypylon for Basler cameras.
  • HDF5 logging: h5py with chunked writes. Chunk size: 1 episode per chunk, or 100-step sub-chunks for large episodes. Compression: LZF or GZIP level 1 (fast compression, good ratio for image data).
  • SVRC Platform: Upload episodes to platform.roboticscenter.ai for visualization, quality review, and format conversion to LeRobot/RLDS.

Calibration Procedure

Calibration is required before data collection and must be repeated if any camera moves or is disturbed.

Intrinsic calibration: Use a 7×9 ChArUco board (100mm squares). Collect 30–50 images from varied distances and angles. Process with OpenCV's calibrateCamera. Target reprojection error <0.5 pixels.

Extrinsic calibration (camera-to-robot): Attach an AprilTag to the robot end-effector. Command the arm to 15–20 known joint configurations, capture the tag pose in each camera, and solve the hand-eye calibration with cv2.calibrateHandEye(). Verify by checking that the computed tag pose matches the FK-predicted pose to within 3 mm.

Wrist camera calibration: The wrist camera moves with the arm. Calibrate the camera-to-flange transform offline using a fixed ChArUco board at multiple arm poses. Re-verify after any wrist camera mount adjustment.

Latency measurement: Clap hands in front of all cameras simultaneously and measure the frame offset between cameras. Target: <16 ms (1 frame at 60 fps) between all cameras. Hardware triggering achieves <1 ms.

Safety Setup

  • Emergency stop (e-stop): Wire a physical e-stop button accessible from the operator position. Test it on every session start. The e-stop must cut power to the arm's motor controllers, not just pause the software.
  • Speed limits during setup: Configure maximum Cartesian speed to 50 mm/s during initial workspace mapping. Increase to 200 mm/s only after verifying joint limits and workspace boundaries.
  • Collision zones: Define software collision zones in MoveIt2 or the arm SDK for table surface, camera mounts, and operator standing position. Update after any workspace reconfiguration.
  • Operator training: All operators must complete a 2-hour training session covering e-stop operation, arm behavior in fault states, proper standing position during operation, and episode abort procedure. Document this in a lab safety log.
  • Payload verification: Weigh grippers and end-effectors before installation. Confirm total payload is within rated limits including gripper. Overloaded arms fail unpredictably and can injure operators.