Skip to content
View robotmem's full-sized avatar

Block or report robotmem

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Maximum 250 characters. Please don’t include any personal information such as legal names or email addresses. Markdown is supported. This note will only be visible to you.
Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse
robotmem/README.md

中文版

robotmem — Let Robots Learn from Experience

Your robot ran 1000 experiments, starting from scratch every time. robotmem stores episode experiences — parameters, trajectories, outcomes — and retrieves the most relevant ones to guide future decisions.

FetchPush experiment: +25% success rate improvement (42% → 67%), CPU-only, reproducible in 5 minutes.

robotmem 30s demo: save → restart → recall

Quick Start

pip install robotmem
fromrobotmemimportlearn, recall, save_perception, start_session, end_session# Start an episodesession=start_session(context='{"robot_id": "arm-01", "task": "push"}')
# Record experiencelearn(
insight="grip_force=12.5N yields highest grasp success rate",
context='{"params": {"grip_force": {"value": 12.5, "unit": "N"}}, "task": {"success": true}}'
)
# Retrieve experiences (structured filtering + spatial nearest-neighbor)memories=recall(
query="grip force parameters",
context_filter='{"task.success": true}',
spatial_sort='{"field": "spatial.position", "target": [1.3, 0.7, 0.42]}'
)
# Store perception datasave_perception(
description="Grasp trajectory: 30 steps, success",
perception_type="procedural",
data='{"sampled_actions": [[0.1, -0.3, 0.05, 0.8], ...]}'
)
# End episode (auto-consolidation + proactive recall)end_session(session_id=session["session_id"])

7 APIs

APIPurpose
learnRecord physical experiences (parameters / strategies / lessons)
recallRetrieve experiences — BM25 + vector hybrid search with context_filter and spatial_sort
save_perceptionStore perception / trajectory / force data (visual / tactile / proprioceptive / auditory / procedural)
forgetDelete incorrect memories
updateCorrect memory content
start_sessionBegin an episode
end_sessionEnd an episode (auto-consolidation + proactive recall)

Key Features

Structured Experience Retrieval

Not just vector search — robotmem understands the structure of robot experiences:

# Retrieve only successful experiencesrecall(query="push to target", context_filter='{"task.success": true}')
# Find spatially nearest scenariosrecall(query="grasp object", spatial_sort='{"field": "spatial.object_position", "target": [1.3, 0.7, 0.42]}')
# Combine: success + distance < 0.05mrecall(
query="push",
context_filter='{"task.success": true, "params.final_distance.value": {"$lt": 0.05}}'
)

Context JSON — 4 Sections

{
"params": {"grip_force": {"value": 12.5, "unit": "N", "type": "scalar"}},
"spatial": {"object_position": [1.3, 0.7, 0.42], "target_position": [1.25, 0.6, 0.42]},
"robot": {"id": "fetch-001", "type": "Fetch", "dof": 7},
"task": {"name": "push_to_target", "success": true, "steps": 38}
}

Each recalled memory automatically extracts params / spatial / robot / task as top-level fields.

Memory Consolidation + Proactive Recall

end_session automatically triggers:

  • Consolidation: Merges similar memories with Jaccard similarity > 0.50 (protects constraint / postmortem / high-confidence entries)
  • Proactive Recall: Returns historically relevant memories for the next episode

FetchPush Demo

cd examples/fetch_push
pip install gymnasium-robotics
PYTHONPATH=../../src python demo.py # 90 episodes, ~2 min

Three-phase experiment: baseline → memory writing → memory utilization. Expected Phase C success rate 10-20% higher than Phase A.

Architecture

SQLite + FTS5 + vec0
├── BM25 full-text search (jieba CJK tokenizer)
├── Vector search (FastEmbed ONNX, CPU-only)
├── RRF fusion ranking
├── Structured filtering (context_filter)
└── Spatial nearest-neighbor sorting (spatial_sort)
  • CPU-only, no GPU required
  • Single-file database ~/.robotmem/memory.db
  • MCP Server (7 tools) or direct Python import
  • Web management UI: robotmem web

Comparison

FeatureMemoryVLA (Academic)Mem0 (Product)robotmem
Target usersSpecific VLA modelsText AIRobotic AI
Memory formatVectors (opaque)TextNatural language + perception + parameters
Structured filteringNoNoYes (context_filter)
Spatial retrievalNoNoYes (spatial_sort)
Physical parametersNoNoYes (params section)
InstallationCompile from paper codepip installpip install
DatabaseEmbeddedCloudLocal SQLite

License

Apache-2.0

Popular repositories Loading

  1. robotmem robotmemPublic

    Robot Memory - Persistent memory system for AI robots. MCP Server + hybrid search + spatial retrieval.

    Python 28 3

  2. rosdistro rosdistroPublic

    Forked from ros/rosdistro

    This repo maintains a lists of repositories for each ROS distribution

    Python

  3. robotmem_ros robotmem_rosPublic

    ROS 2 node for robotmem — robot experience memory system

    Python

  4. robotmem_ros-release robotmem_ros-releasePublic

    Bloom release repo for robotmem_ros (ROS 2 packages)

  5. awesome-mcp-servers awesome-mcp-serversPublic

    Forked from appcypher/awesome-mcp-servers

    Awesome MCP Servers - A curated list of Model Context Protocol servers

  6. fda-comment-FDA-2026-D-1256 fda-comment-FDA-2026-D-1256Public

    FDA-2026-D-1256 docket comment — Plausible Mechanism Framework for Individualized Therapies (v0.5, tracking mod-xns0-69oq)

    HTML