Skip to main content
rfx ships ready-to-use configs for the most common targets.
rfx.SO101_CONFIG   # 6 DOF arm, 50 Hz
rfx.GO2_CONFIG     # 12 DOF quadruped, 200 Hz
rfx.G1_CONFIG      # 29 DOF humanoid, 50 Hz

SO-101

rfx.SO101_CONFIG.joints
# ["shoulder_pan", "shoulder_lift", "elbow",
#  "wrist_pitch",  "wrist_roll",    "gripper"]

rfx.SO101_CONFIG.control_freq_hz  # 50

Go2

12-DOF quadruped. Transport over Ethernet via Zenoh. Default control rate 200 Hz.

G1

29-DOF humanoid. Transport over Ethernet via Zenoh. Default control rate 50 Hz. In progress.

Custom configs

Any config is a YAML file declaring joints, sensors, rate, and transport. Load directly:
from rfx.robot import RobotConfig

config = RobotConfig.from_yaml("path/to/robot.yaml")
robot = rfx.RealRobot(config)
Or override only the parts you need at runtime via the CLI:
rfx deploy runs/my-policy --robot so101 \
  --port /dev/ttyACM0 \
  --rate-hz 100