מדריך ההתקנה של BrainCo Revo II
הגדרה שלב אחר שלב עבור היד הביונית BrainCo Revo II - מחיבור USB או BLE דרך כיול, בקרת תנוחות ושילוב פלטפורמה.
חיבור USB-CDC
התקן תלות של Python
pip install pyserial websockets
חבר וזיהוי היציאה
חבר את ה-Revo II באמצעות USB. בלינוקס המכשיר מונה כ /dev/ttyACM0 (או ttyACM1 אם קיימים התקני ACM אחרים). ב-Windows, בדוק את מנהל ההתקנים עבור יציאת ה-COM.
ls /dev/ttyACM* # Linux — find the device # Windows: check Device Manager → Ports (COM & LPT)
תקן הרשאות ב-Linux
אם אתה מקבל שגיאת הרשאה נדחתה, הוסף את המשתמש שלך ל- dialout קבוצה, ולאחר מכן צא והיכנס חזרה:
sudo usermod -aG dialout $USER
# Log out and back in for the change to take effect
חיבור Bluetooth Low Energy (BLE).
אותו פרוטוקול פקודה JSON עובד על BLE GATT. השתמש בנתיב זה עבור פריסות אלחוטיות.
התקן את ספריית BLE
pip install bleak
סרוק את ה-Revo II
import asyncio
from bleak import BleakScanner
async def scan():
devices = await BleakScanner.discover(timeout=5.0)
for d in devices:
print(d.address, d.name)
asyncio.run(scan())
# Look for a device named "BrainCo" or similar — note its address
BLE GATT UUIDs
- שֵׁרוּת:
0000ffe0-0000-1000-8000-00805f9b34fb - כתוב מאפיין:
0000ffe1-0000-1000-8000-00805f9b34fb - מאפיין הודעה:
0000ffe2-0000-1000-8000-00805f9b34fb
התחבר ושלח פקודה באמצעות BLE
import asyncio, json from bleak import BleakClient WRITE_CHAR = "0000ffe1-0000-1000-8000-00805f9b34fb" ADDRESS = "AA:BB:CC:DD:EE:FF" # replace with your device address async def main(): async with BleakClient(ADDRESS) as client: # Close all fingers to 50% cmd = json.dumps({"cmd": "set_pose", "positions": [50,50,50,50,50]}) await client.write_gatt_char(WRITE_CHAR, cmd.encode("utf-8"), response=False) await asyncio.sleep(1.0) # Open all fingers cmd2 = json.dumps({"cmd": "set_pose", "positions": [0,0,0,0,0]}) await client.write_gatt_char(WRITE_CHAR, cmd2.encode("utf-8"), response=False) asyncio.run(main())
פקודות תנוחה ראשונה (USB)
ערכי המיקום בפרוטוקול JSON הם מספרים שלמים 0-100 (אחוז סגירה). ה- Python SDK משתמש ב-floats מנורמל 0.0–1.0 וממיר באופן פנימי.
פקודות סדרתיות גולמיות
import serial, json, time
port = serial.Serial("/dev/ttyACM0", baudrate=115200, timeout=1.0)
def set_pose(positions):
pcts = [int(p * 100) for p in positions]
cmd = json.dumps({"cmd": "set_pose", "positions": pcts}) + "\n"
port.write(cmd.encode("utf-8"))
# Open all fingers
set_pose([0.0, 0.0, 0.0, 0.0, 0.0])
time.sleep(1.0)
# Point with thumb extended, close others
set_pose([0.0, 0.8, 0.8, 0.8, 0.8])
time.sleep(1.0)
# Fist
set_pose([1.0, 1.0, 1.0, 1.0, 1.0])
time.sleep(1.0)
# Open again
set_pose([0.0] * 5)
port.close()
מיפוי אינדקס אצבע
- 0 — אגודל (2 DOF: כיפוף + סיבוב = כפיפה × 0.4)
- 1 - אינדקס (כיפוף DOF אחד)
- 2 - אמצעי (כיפוף DOF אחד)
- 3 - טבעת (כיפוף DOF אחד)
- 4 - פינקי (כיפוף DOF אחד)
קבע אצבע אחת
# Set index finger to 75% closure
cmd = json.dumps({"cmd": "set_finger", "finger": 1, "position": 75}) + "\n"
port.write(cmd.encode("utf-8"))
python brainco_revo_agent.py --mock --session test --self-test לממש את כל שיטות ה-API ורצפי הקש לפסנתר ללא כל מכשיר פיזי.
רצף גלי כיול
הכיול קובע מגבלות נסיעה לכל אצבע בקושחה. הפעל זאת לאחר החיבור הראשון ולאחר כל התאמה מכנית.
רצף כיול (אוטומטי)
- כל האצבעות נפתחות לסגירה של 0%.
- המתן 300 אלפיות השנייה להתיישבות מכנית
- עבור כל אצבע (אגודל → מדד → אמצעי → טבעת → זרת):
- קרוב ל-90% סגירה - המתן 120 אלפיות השנייה
- פתוח לסגירה של 0% - המתן 120 אלפיות השנייה
- כל האצבעות מתייצבות במצב ריחוף (15% סגירה)
- לִשְׁלוֹחַ
{"cmd": "calibrate"}לנעול מגבלות קושחה
הפעל כיול באמצעות SDK
import asyncio
from brainco_revo_agent import BrainCoReVoController
async def calibrate():
ctrl = BrainCoReVoController(mock=False)
await ctrl.connect("/dev/ttyACM0")
await ctrl.calibrate() # runs full wave then sends calibrate cmd
print("Calibration complete")
await ctrl.disconnect()
asyncio.run(calibrate())
אינטגרציה של פלטפורמת טלאופ
ה brainco_revo_agent.py מגשר בין ה-Revo II לפלטפורמת RoboticsCenter באמצעות WebSocket, ומאפשר הפעלה מרחוק, ניטור מיקום האצבעות ואיסוף נתוני הדגמה מדפדפן.
הפעל את הסוכן
# Real hardware (USB) python brainco_revo_agent.py \ --backend wss://your-backend.run.app \ --session YOUR_SESSION_ID \ --device /dev/ttyACM0 # Real hardware (BLE) python brainco_revo_agent.py \ --backend wss://your-backend.run.app \ --session YOUR_SESSION_ID \ --ble AA:BB:CC:DD:EE:FF # Mock mode — no hardware required python brainco_revo_agent.py \ --backend ws://localhost:8000 \ --session test-session \ --mock
מצב פסנתר באמצעות פלטפורמה
הפעל לחיצות על מקש פסנתר מלוח הטלאופ של הדפדפן. כל לחיצה מבצעת את הרצף בן 4 השלבים: הארכה (20 אלפיות השנייה) ← כונן (30 אלפיות השנייה) ← החזקה → חזרה (20 אלפיות השנייה). לחיצות אצבע במקביל נתמכות.
API של SDK ברמה גבוהה
import asyncio
from brainco_revo_agent import BrainCoReVoController
async def main():
ctrl = BrainCoReVoController(mock=False)
await ctrl.connect("/dev/ttyACM0")
# Set all fingers to 60% closure
await ctrl.set_hand_pose([0.6, 0.6, 0.6, 0.6, 0.6])
await asyncio.sleep(0.5)
# Read current state
snap = await ctrl.snapshot()
print(snap["positions_dict"]) # {"thumb":0.6, "index":0.6, ...}
await ctrl.disconnect()
asyncio.run(main())