⚠ Spotter required for this unit. You are powering on a 55 kg humanoid for the first time. Your spotter must be present with the e-stop tested before you connect power.

Step 1: Power On and Boot Sequence

The K1 has a defined boot sequence. Do not interrupt it.

  1. Verify the K1 is on the safety mat and in the center of the 3 m × 3 m clear area.
  2. Spotter takes position with e-stop in hand.
  3. Connect the Ethernet cable from your host PC to the K1's Ethernet port.
  4. Connect power. The K1's LED will begin a boot sequence — do not touch the robot during this phase.
  5. Wait approximately 60 seconds for the boot sequence to complete. You will see a final LED state indicating ready status.

Step 2: Network Configuration

# Configure your PC's Ethernet interface
sudo ip addr flush dev eth0
sudo ip addr add 192.168.10.10/24 dev eth0
sudo ip link set eth0 up

# Verify connectivity
ping -c 4 192.168.10.102

If ping does not respond, verify: (1) the K1 is fully booted, (2) the Ethernet cable is seated at both ends, (3) you are using the correct network interface name (use ip link show to list interfaces).

Step 3: SSH into the K1

ssh booster@192.168.10.102
# Default password: booster123 (change this in production)

# Verify services are running
sudo systemctl status booster_control.service

The control service should be active and running. If not, check journalctl -u booster_control.service -n 50 for error messages.

Step 4: Install the SDK on Your Host PC

python3 -m venv ~/.venvs/booster-k1
source ~/.venvs/booster-k1/bin/activate
pip install booster_robotics_sdk_python

Step 5: Read Joint States

Your first SDK interaction. This reads joint state only — no motion commands yet.

from booster_robotics_sdk import BoosterRobot, RobotMode

robot = BoosterRobot(ip="192.168.10.102")
robot.connect()

# Confirm current mode
state = robot.get_state()
print(f"Mode: {state.mode}")
assert state.mode == RobotMode.DAMP, "Robot is not in DAMP mode — stop here"

# Read all joint positions
print(f"Joint positions (rad): {state.joint_positions}")
print(f"IMU euler (deg): {state.imu_euler}")

robot.disconnect()

Step 6: First Command — Confirm DAMP Behavior

DAMP mode means zero-torque / low-impedance. In DAMP, you can gently move the robot's limbs by hand. Verify this before moving to Unit 2.

# Confirm DAMP is active
robot.connect()
robot.set_mode(RobotMode.DAMP)
state = robot.get_state()
print(f"Mode after set: {state.mode}")  # Should print: DAMP
robot.disconnect()

With DAMP confirmed, gently push one of the arm joints. You should feel very low resistance. Do not push limb joints to their end-stops.

Unit 1 Complete When...

You can ping 192.168.10.102, the SDK connects and reads joint state without errors, mode shows DAMP, and you have confirmed DAMP behavior by gently moving a limb. Log the output of state.joint_positions — you will compare this in Unit 2.