Booster K1 Setup Guide
Complete step-by-step setup for the Booster K1 humanoid robot — from unboxing through first walking steps to platform teleop integration.
Safety & Workspace Preparation
Workspace requirements
- Minimum floor area: 3 m × 3 m clear, hard, level surface
- Ceiling clearance: Minimum 2.2 m
- No obstacles within the operating radius during WALK mode
- Emergency stop: Ensure the remote controller is charged and within reach before powering on
- Lifting fixture: Required for CUSTOM mode development — the robot must be suspended before entering joint-level control
Unboxing checklist
- Inspect all 22 joints for shipping damage — move each gently by hand in DAMP state
- Verify Ethernet cable is included and your workstation has a free wired port
- Charge the remote controller fully before first use
- Read the Booster Robotics K1 Instruction Manual included in the box
Power On & Boot Sequence
Configure your Ethernet interface
The K1's default wired IP is 192.168.10.102. Set your computer's wired network interface to:
- IP address:
192.168.10.10 - Subnet mask:
255.255.255.0 - Gateway:
192.168.10.1
Verify connectivity
ping 192.168.10.102 # should respond with <5ms latency on wired
Inspect boot status via SSH
ssh booster@192.168.10.102 # password: 123456 booster-cli launch -c status # confirm service is running
SDK Installation & First Connection
Install the Booster SDK
The official Python SDK is distributed on PyPI and requires Python 3.8 or later.
pip install booster_robotics_sdk_python --user
First SDK connection and status read
import booster
client = booster.BoosterClient("192.168.10.102")
status = client.get_robot_status()
print(f"Mode: {status.mode}")
print(f"Battery: {status.battery_percentage:.1f}%")
print(f"IMU: {status.imu_status}")
Manage the robot service (SSH)
booster-cli launch -c start # start service booster-cli launch -c stop # stop service booster-cli launch -c restart # restart service cat /opt/booster/version.txt # check firmware version
Basic Locomotion Test
Mode transition sequence: DAMP → PREP → WALK
Always follow this exact sequence. Never skip PREP or go directly from DAMP to WALK.
import booster
import time
client = booster.BoosterClient("192.168.10.102")
# Step 1: Enter PREP — robot stands and holds position
client.change_mode(booster.Mode.PREP)
time.sleep(3) # IMPORTANT: wait full 3s for balance stabilization
print("Robot standing in PREP mode.")
# Step 2: Enter WALK mode
client.change_mode(booster.Mode.WALK)
time.sleep(2)
# Step 3: Walk forward slowly
client.walk(0.2, 0.0, 0.0) # forward 0.2 m/s
time.sleep(3)
client.walk(0.0, 0.0, 0.0) # stop
# Return to standing
client.change_mode(booster.Mode.PREP)
Walking velocity parameters
The client.walk(forward, lateral, angular) call accepts:
- forward: −0.5 to +0.5 m/s (positive = forward)
- lateral: −0.5 to +0.5 m/s (positive = right)
- angular: −1.0 to +1.0 rad/s (positive = turn left)
Remote controller shortcuts
- LT + START: Enter PREP mode
- RT + A: Enter WALK mode (from PREP)
- LT + BACK: Enter DAMP mode
- Left stick: Walk direction · Right stick: Turn
- D-Pad: Head movement
Predefined actions (WALK mode)
client.play_action("wave") # wave hand
client.play_action("handshake") # handshake
client.play_action("bow") # bow
client.play_action("fortune_cat") # fortune cat pose
client.play_action("new_year_dance") # new year dance
client.play_action("rock_dance") # rock dance
Arm Manipulation
Head pose control
Control head yaw (±90°) and pitch (−40° to +30°) using set_head_pose(yaw_rad, pitch_rad). Convert degrees to radians first:
import math def deg2rad(d): return d * math.pi / 180.0 # Look 30° left and 10° down client.set_head_pose(deg2rad(30), deg2rad(-10)) # Return to center client.set_head_pose(0.0, 0.0)
CUSTOM mode — direct joint control
# Enter CUSTOM mode from PREP only, with robot on lifting device client.change_mode(booster.Mode.CUSTOM) # Joint indexing: j1=head_yaw, j2=head_pitch, j3–j22=body joints # Refer to K1 Instruction Manual for full joint map
Built-in agent modes
client.enter_agent("default") # Booster default agent
client.enter_agent("soccer") # soccer agent
client.enter_agent("hi_chat") # conversational AI agent
client.enter_agent("dance") # dance agent
Data Collection & Platform Teleop
The k1_agent.py script bridges the Booster K1 to the RoboticsCenter platform via WebSocket, enabling remote operation, joint monitoring, and demonstration data collection from a browser.
Install and launch the agent
pip install websockets # Real hardware python k1_agent.py \ --backend wss://your-backend.run.app \ --session YOUR_SESSION_ID \ --node-id k1-lab-01 \ --telemetry-hz 8 # Mock mode — no K1 hardware required python k1_agent.py \ --backend ws://localhost:8000 \ --session test-session \ --mock
Telemetry streamed by the agent (8 Hz default)
- Joint angles for 6 primary joints in degrees (j1–j6)
- Motor states: position, RPM, temperature per motor
- Walk velocity components: vx, vy, wz
- Battery percentage and current mode string
- Active agent name (Default / Soccer / Dance / HiChat)
- Millisecond timestamp for frame alignment
booster-cli log -st YYYYMMDD-HHMMSS -et YYYYMMDD-HHMMSS -o /home/booster/Documents