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.