Menlo

Overview

menlo-sdk: drive Asimov 1 from Python.

menlo-sdk is the Python client for Asimov 1. The package is menlo; the robot is the menlo.asimov subpackage.

from menlo.asimov import Robot, Mode

with Robot().connect() as robot:                 # the robot you logged in to
    if robot.state.mode is Mode.DAMP:            # STAND is the wake-up verb only
        robot.stand()
        robot.wait_for(Mode.STAND, timeout=15.0)
    robot.set_velocity(vx=0.25, duration=4.0, wait=True)   # walk at 0.25 m/s for 4 s
    robot.wait_for(Mode.MOVE)
    # Ends in MOVE at zero velocity, still balancing. Don't ask for STAND here.

One Robot, one API, and the lane is chosen at connect(): udp on the LAN with no server, hybrid for UDP control plus camera and audio over the robot's LiveKit room, or livekit for everything over the room when the robot is not on your network. Same verbs, same waits, same errors on all three.

Pre-release software

menlo-sdk is pre-1.0. Use it on a commissioned robot with version-matched software and an independent hardware emergency stop. damp() is a software state, not an emergency stop.

Only one thing drives the robot at a time. If your commands are ignored but state still arrives, something else has it. Read Safety before you let go of the robot.

Start Here

Guides

Look Something Up

The SDK and the Asimov API

The Asimov API is the wire itself: protobuf messages over UDP or a LiveKit room. The SDK speaks that wire for you and adds the keepalive, the waits, the clamps and the error model. Use the API directly from a non-Python client or when you want the raw bytes.

How is this guide?

On this page