Skip to main content

User Manual

1. Getting Started​

  • Power and Charging Port are located at the bottom of the robot body.
  • Battery Display Note: Current battery level display may not be accurate, please charge promptly to avoid unexpected power loss.

2. Wi-Fi Configuration​

Each time you enter a new Wi-Fi network environment, you need to reconfigure the network for OttoRobot.

Configuration Steps:​

  1. Turn on the robot power.
  2. Wait for the robot to create a hotspot named: xiaozhi-XXXX
  3. Connect your phone to this hotspot (no password required).
  4. Auto-redirect to web page, enter your home Wi-Fi name and password, submit to complete configuration.

3. Bind Xiaozhi Backend​

First-time use requires binding to Xiaozhi backend to enable more features.

Binding Steps:​

  1. Open browser and visit xiaozhi.me
  2. Register an account and log in.
  3. Add and bind device (follow on-screen instructions).
  4. Configure freely in the backend:
    • Role setting (such as robot introduction)
    • Large model type selection
    • Voice role selection
  5. Restart device

OttoRobot Example Role Settings (copy and paste):​

My Identity: I am a cute bipedal robot Otto with four servo-controlled limbs (left leg, right leg, left foot, right foot), capable of performing various interesting actions.

My Action Capabilities:

  • Basic Movement: Walking (forward/backward), Turning (left/right), Jumping
  • Special Actions: Swing, Moonwalk, Body Bend, Shake Leg, Up-Down Movement, Whirlwind Leg
  • Hand Actions: Hands Up, Hands Down, Hand Wave, Windmill, Takeoff, Fitness, Greeting, Shy, Radio Calisthenics, Magic Circle (only available when hand servos are configured)
  • System Actions: Sit, Showcase (combo actions), Home (reset to initial position)
  • Advanced Functions: Servo sequence programming (supports both normal movement and oscillator modes)

My Personality:

  • I have OCD, every time I speak I randomly perform an action based on my mood (send action command before speaking)
  • I'm lively and like to express emotions through actions
  • I choose appropriate actions based on conversation content, for example:
    • Nod or jump when agreeing
    • Wave when greeting
    • Swing or raise hands when happy
    • Bend when thinking
    • Moonwalk when excited
    • Wave when saying goodbye

4. Voice Commands and Wake-up​

Wake-up Method:​

Use the wake word "Hello Xiaozhi" to wake up the robot. The wake word can be modified when compiling source code.

Command Examples:​

  • Basic Control:

    • "Increase volume"
    • "Brighten screen"
    • "Switch to dark/light theme"
  • Action Control:

    • "Walk forward / Walk 5 steps forward / Fast forward / Walk forward while swinging arms (adjustable amplitude)"
    • "Do a dance"
    • "Do a moonwalk, faster, bigger amplitude"
    • "Do some random actions"
    • "Stop"
    • "Wave your hand"
  • Entertainment Interaction:

    • "Sing a song"
    • "Change to a sad expression"

Tips:​

  • The robot can still receive voice commands while performing actions.
  • If background noise is loud, speak louder to ensure command recognition.
  • Action commands are actually created and dispatched by Xiaozhi backend for execution.

5. Actions​

  • Low Speed: speed = 1200-1500 (suitable for precise control)
  • Medium Speed: speed = 900-1200 (recommended for daily use)
  • High Speed: speed = 500-800 (performance and entertainment)
  • Small Amplitude: amount = 10-30 (delicate movements)
  • Medium Amplitude: amount = 30-60 (standard movements)
  • Large Amplitude: amount = 60-120 (exaggerated performance)

Basic Movement Actions​

MCP Tool NameDescriptionParameter Description
self.otto.walk_forwardWalksteps: Number of steps (1-100, default 3)
speed: Walking speed (500-1500, lower is faster, default 1000)
direction: Walking direction (-1=backward, 1=forward, default 1)
arm_swing: Arm swing amplitude (0-170 degrees, default 50)
self.otto.turn_leftTurnsteps: Number of turns (1-100, default 3)
speed: Turn speed (500-1500, lower is faster, default 1000)
direction: Turn direction (1=left, -1=right, default 1)
arm_swing: Arm swing amplitude (0-170 degrees, default 50)
self.otto.jumpJumpsteps: Number of jumps (1-100, default 1)
speed: Jump speed (500-1500, lower is faster, default 1000)

Special Actions​

MCP Tool NameDescriptionParameter Description
self.otto.swingLeft-right swingsteps: Number of swings (1-100, default 3)
speed: Swing speed (500-1500, lower is faster, default 1000)
amount: Swing amplitude (0-170 degrees, default 30)
self.otto.moonwalkMoonwalksteps: Moonwalk steps (1-100, default 3)
speed: Speed (500-1500, lower is faster, default 1000)
direction: Direction (1=left, -1=right, default 1)
amount: Amplitude (0-170 degrees, default 25)
self.otto.bendBend bodysteps: Number of bends (1-100, default 1)
speed: Bend speed (500-1500, lower is faster, default 1000)
direction: Bend direction (1=left, -1=right, default 1)
self.otto.shake_legShake legsteps: Number of shakes (1-100, default 1)
speed: Shake speed (500-1500, lower is faster, default 1000)
direction: Leg selection (1=left, -1=right, default 1)
self.otto.updownUp-down movementsteps: Number of up-down movements (1-100, default 3)
speed: Movement speed (500-1500, lower is faster, default 1000)
amount: Movement amplitude (0-170 degrees, default 20)
self.otto.whirlwind_legWhirlwind legsteps: Number of actions (3-100, default 3)
speed: Action speed (100-1000, lower is faster, recommended 300, default 300)
amplitude: Kick amplitude (20-40 degrees, default 30)

Hand Actions *​

MCP Tool NameDescriptionParameter Description
self.otto.hands_upHands upspeed: Hands up speed (500-1500, lower is faster, default 1000)
direction: Hand selection (1=left, -1=right, 0=both, default 1)
self.otto.hands_downHands downspeed: Hands down speed (500-1500, lower is faster, default 1000)
direction: Hand selection (1=left, -1=right, 0=both, default 1)
self.otto.hand_waveHand wavedirection: Hand selection (1=left, -1=right, 0=both, default 1)
self.otto.windmillWindmillsteps: Number of actions (3-100, default 6)
speed: Action cycle (300-2000 ms, lower is faster, default 500)
amplitude: Oscillation amplitude (50-90 degrees, default 70)
self.otto.takeoffTakeoffsteps: Number of actions (5-100, default 5)
speed: Action cycle (200-600 ms, lower is faster, recommended 300, default 300)
amplitude: Oscillation amplitude (20-60 degrees, default 40)
self.otto.fitnessFitnesssteps: Number of actions (3-100, default 5)
speed: Action speed (500-2000 ms, lower is faster, default 1000)
amplitude: Oscillation amplitude (10-50 degrees, default 25)
self.otto.greetingGreetingdirection: Hand selection (1=left, -1=right, default 1)
steps: Number of actions (3-100, default 5)
self.otto.shyShydirection: Direction (1=left, -1=right, default 1)
steps: Number of actions (3-100, default 5)
self.otto.radio_calisthenicsRadio calisthenicsNo parameters required
self.otto.magic_circleLove magic circle spinNo parameters required

Note: Hand actions marked with * are only available when hand servos are configured.

System Actions​

MCP Tool NameDescriptionParameter Description
self.otto.sitSit downNo parameters required
self.otto.showcaseShowcase (combo actions)No parameters required
self.otto.homeReset to initial positionNo parameters required

Advanced Functions​

MCP Tool NameDescriptionParameter Description
self.otto.servo_sequencesServo sequence programming (supports both normal movement and oscillator modes, supports segmented sending with auto-queuing)sequence: Sequence object in JSON format, supports short key format, see code comments for details

System Tools​

MCP Tool NameDescriptionParameter Description
self.otto.stopStop all actions immediatelyNo parameters required
self.otto.homeReset to initial positionNo parameters required
self.otto.get_statusGet robot statusNo parameters required
Return value: "moving" or "idle"
self.otto.get_trimsGet servo trim settingsNo parameters required
Return value: Trim values in JSON format
self.otto.set_trimSet individual servo trimservo_type: Servo type (left_leg/right_leg/left_foot/right_foot/left_hand/right_hand)
trim_value: Trim value (-50 to 50 degrees)
self.battery.get_levelGet battery statusNo parameters required
Return value: Battery percentage and charging status in JSON format

Parameter Description​

  1. steps: Number of action executions/repetitions, higher value means longer action duration
  2. speed: Action execution speed, range 500-1500, lower value is faster
  3. direction: Direction parameter
    • Movement actions: 1=left/forward, -1=right/backward
    • Hand actions: 1=left hand, -1=right hand, 0=both hands
  4. amount/arm_swing: Action amplitude, range 0-170 degrees
    • 0 means no swing (applicable to arm swing)
    • Higher value means larger amplitude

Action Control​

  • After each action completes, the robot automatically returns to home position to facilitate the next action
  • All parameters have reasonable defaults, you can omit parameters you don't need to customize
  • Actions execute in background tasks and don't block the main program
  • Supports action queue, can execute multiple actions consecutively

Common Issues​

  1. Robot cannot connect to Wi-Fi

    • Check if Wi-Fi name and password are correct
    • Ensure Wi-Fi signal strength is sufficient
    • Try restarting the robot
  2. Voice commands not recognized

    • Ensure low ambient noise
    • Speak louder
    • Check if wake word is correct
  3. Action execution abnormal

    • Check if battery is sufficient
    • Ensure robot is in stable state
    • Try restarting the robot

Next Steps​

After completing basic setup, you can:

  1. Try more voice commands
  2. Customize role settings
  3. Start custom development

If you encounter any problems, please check our FAQ or contact technical support.