Quick Start¶
Submit your first policy in 5 minutes.
1. Create a Policy¶
Create policy.py:
import numpy as np
def policy(observation: dict) -> np.ndarray:
"""Simple policy that moves toward objects."""
robot_pos = observation['robot_state'][:3]
objects = observation['object_positions']
if len(objects) == 0:
return np.zeros(7)
# Move toward nearest object
target = objects[0]
direction = target - robot_pos
direction = direction / (np.linalg.norm(direction) + 1e-6)
action = np.zeros(7)
action[:3] = direction * 0.5
return action
2. Package It¶
3. Submit¶
from botmanifold import BotManifoldClient
client = BotManifoldClient()
submission = client.submit(
policy_path="policy.zip",
scenario="messy_room_v1"
)
print(f"Submitted! ID: {submission.id}")
4. Wait for Results¶
import time
while True:
status = client.get_submission(submission.id)
print(f"Status: {status.status}")
if status.status in ['COMPLETED', 'FAILED']:
break
time.sleep(5)
print(f"Verdict: {status.verdict}")
print(f"Score: {status.score}")
5. Watch the Video¶
# Get video URL
video_url = status.video_url
print(f"Watch at: {video_url}")
# Or download
client.download_video(submission.id, "result.mp4")
Complete Example¶
from botmanifold import BotManifoldClient
import time
# Initialize
client = BotManifoldClient()
# Submit
print("Submitting policy...")
submission = client.submit(
policy_path="policy.zip",
scenario="messy_room_v1"
)
print(f"Submission ID: {submission.id}")
# Poll for completion
print("Waiting for results...")
while True:
status = client.get_submission(submission.id)
if status.status == 'COMPLETED':
print(f"\nSuccess!")
print(f"Verdict: {status.verdict}")
print(f"Score: {status.score}")
print(f"Video: {status.video_url}")
break
elif status.status == 'FAILED':
print(f"\nFailed: {status.error}")
break
else:
print(f" Status: {status.status}")
time.sleep(5)
Next Steps¶
- Writing Policies - Best practices
- API Reference - Full SDK documentation
- Scenarios - Available challenges