Teleoperation Methods
VR Teleoperation (Quest 3)
Meta Quest 3 tracks your head and hand pose. The K1 mirrors head yaw/pitch and arm end-effector position in real time. Best for natural, expressive demonstrations. Requires k1_vr_teleop ROS2 node.
Leader-Follower
A physical leader exoskeleton or arm system mirrors joint angles to the K1. Higher precision for manipulation. Requires compatible leader hardware.
Step 1: Head Pose Control
Start with head control — it does not require CUSTOM mode and is lower risk.
from booster_robotics_sdk import BoosterRobot, RobotMode, HeadCommand
import time
robot = BoosterRobot(ip="192.168.10.102")
robot.connect()
robot.set_mode(RobotMode.PREP)
time.sleep(5)
# Sweep head yaw
for yaw in range(-45, 46, 5): # -45 to +45 degrees
cmd = HeadCommand(yaw_deg=float(yaw), pitch_deg=0.0)
robot.send_head_command(cmd)
time.sleep(0.1)
# Return to center
robot.send_head_command(HeadCommand(yaw_deg=0.0, pitch_deg=0.0))
time.sleep(1)
robot.set_mode(RobotMode.DAMP)
robot.disconnect()
Step 2: Arm Control in CUSTOM Mode
Install the lifting fixture before proceeding. Verify the K1 is suspended or on a supporting stand such that leg falls are not possible.
from booster_robotics_sdk import ArmCommand
robot = BoosterRobot(ip="192.168.10.102")
robot.connect()
robot.set_mode(RobotMode.DAMP)
time.sleep(1)
robot.set_mode(RobotMode.PREP)
time.sleep(5)
robot.set_mode(RobotMode.CUSTOM)
time.sleep(2)
# Move right arm to a predefined configuration
# Joints: [shoulder_pitch, shoulder_roll, shoulder_yaw, elbow_pitch,
# wrist_pitch, wrist_roll, wrist_yaw] — in radians
home_config = [0.0, -0.3, 0.0, 0.5, 0.0, 0.0, 0.0]
cmd = ArmCommand(side="right", joint_positions=home_config, kp=40, kd=2)
robot.send_arm_command(cmd)
time.sleep(2)
# Reach forward
reach_config = [0.4, -0.3, 0.0, 1.2, 0.0, 0.0, 0.0]
cmd = ArmCommand(side="right", joint_positions=reach_config, kp=40, kd=2)
robot.send_arm_command(cmd)
time.sleep(3)
# Return to home and shutdown
robot.send_arm_command(ArmCommand(side="right", joint_positions=home_config, kp=40, kd=2))
time.sleep(2)
robot.set_mode(RobotMode.PREP)
time.sleep(3)
robot.set_mode(RobotMode.DAMP)
robot.disconnect()
Step 3: VR Teleoperation Session
# Launch K1 VR teleop node (requires Quest 3 connected via Air Link or USB)
ros2 launch k1_teleop k1_vr_teleop.launch.py \
robot_ip:=192.168.10.102 \
vr_device:=quest3
The session displays a status panel on the Quest 3 overlay. Calibrate your T-pose before the first motion. Practice for 5 continuous minutes before proceeding to Unit 4.
Head and Arm Joint Limits
| Joint | Min | Max | Unit |
|---|---|---|---|
| Head Yaw | -90 | +90 | deg |
| Head Pitch | -40 | +30 | deg |
| Shoulder Pitch | -1.57 | +1.57 | rad |
| Elbow Pitch | 0.0 | +2.09 | rad |
Unit 3 Complete When...
Head yaw and pitch respond correctly to commands. Arm control in CUSTOM mode works with the lifting fixture. You have completed one 5-minute VR or leader-follower teleoperation session. You can transition PREP → CUSTOM → PREP → DAMP without errors.