Skip to content

Strands Spot: Boston Dynamics Robot Control 🤖

GitHub

Control Boston Dynamics Spot robots through natural language with Strands Agents.

Call Spot SDK services and methods directly without writing boilerplate connection code.

Installation

pip install strands-spot
pip install bosdyn-client bosdyn-api bosdyn-core  # Required

Setup

export SPOT_HOSTNAME="192.168.80.3"
export SPOT_USERNAME="admin"
export SPOT_PASSWORD="password"

Quick Start

from strands import Agent
from strands_spot import use_spot

agent = Agent(tools=[use_spot])

# Natural language control
agent("Make Spot stand up and take a picture")

How It Works

You specify which Spot SDK service and method to call:

use_spot(
    service="robot_command",    # Which SDK service
    method="stand",             # Which method to call
    params={}                   # Method parameters
)

Available Services

Service Methods Description
robot_command stand, sit, velocity_command, self_right Motion control
robot_state get_robot_state, get_robot_metrics Query status
power power_on, power_off, power_cycle_robot Power management
image list_image_sources, get_image_from_sources Camera capture
graph_nav navigate_to, upload_graph, set_localization Navigation
manipulation manipulation_api_command, grasp_override Arm control
docking docking_command, get_docking_config Charging
lease acquire, release, list_leases Resource management
estop register, deregister, set_status Emergency stop
choreography execute_choreography, list_all_moves Dance routines

Examples

Stand and Sit

use_spot(service="robot_command", method="stand")
use_spot(service="robot_command", method="sit")

Capture Image

use_spot(
    service="image",
    method="get_image_from_sources",
    params={"image_sources": ["frontleft_fisheye_image"]}
)

Power Control

use_spot(service="power", method="power_on")
use_spot(service="power", method="power_off")
use_spot(
    service="graph_nav",
    method="navigate_to",
    params={"waypoint_id": "kitchen"}
)

Control Spot with words, not code. 🤖