מדריך ההתקנה של BrainCo Revo II

הגדרה שלב אחר שלב עבור היד הביונית BrainCo Revo II - מחיבור USB או BLE דרך כיול, בקרת תנוחות ושילוב פלטפורמה.

1

חיבור 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
שיעור באוד ה-Revo II מתקשר בדיוק 115200 באוד. כל קצב אחר יפיק פלט בלתי קריא. הפקודות הן מחרוזות UTF-8 JSON שהסתיימו בשורה חדשה.
2

חיבור 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())
3

פקודות תנוחה ראשונה (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 ורצפי הקש לפסנתר ללא כל מכשיר פיזי.
4

רצף גלי כיול

הכיול קובע מגבלות נסיעה לכל אצבע בקושחה. הפעל זאת לאחר החיבור הראשון ולאחר כל התאמה מכנית.

רצף כיול (אוטומטי)

  1. כל האצבעות נפתחות לסגירה של 0%.
  2. המתן 300 אלפיות השנייה להתיישבות מכנית
  3. עבור כל אצבע (אגודל → מדד → אמצעי → טבעת → זרת):
    • קרוב ל-90% סגירה - המתן 120 אלפיות השנייה
    • פתוח לסגירה של 0% - המתן 120 אלפיות השנייה
  4. כל האצבעות מתייצבות במצב ריחוף (15% סגירה)
  5. לִשְׁלוֹחַ {"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())
5

אינטגרציה של פלטפורמת טלאופ

ה 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())
← חזרה לסקירה כללית מפרט מלא ←

צריך עזרה בהתקנה?

בקר בפורום הקהילה או צור קשר עם תמיכת SVRC.