BrainCo Revo II セットアップガイド

USB または BLE 接続からキャリブレーション、姿勢制御、プラットフォーム統合まで、BrainCo Revo II バイオニック ハンドの段階的なセットアップ。

1

USB-CDC接続

Python の依存関係をインストールする

pip install pyserial websockets

ポートを接続して識別する

Revo II を USB 経由で接続します。 Linux では、デバイスは次のように列挙されます。 /dev/ttyACM0 (他の ACM デバイスが存在する場合は ttyACM1)。 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

GATT UUID でした

  • サービス: 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 は正規化された浮動小数点数 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 — インデックス (1 自由度の屈曲)
  • 2 — 中央 (1 自由度の屈曲)
  • 3 — リング (1 自由度の屈曲)
  • 4 — 小指 (1 自由度の屈曲)

1 本の指を設定します

# 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 WebSocket を介して Revo II を RoboticsCenter プラットフォームにブリッジし、ブラウザからのリモート操作、指の位置の監視、デモンストレーション データの収集を可能にします。

エージェントを起動する

# 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

プラットフォーム経由のピアノモード

ブラウザーのテロップ パネルからピアノ キーの押下をトリガーします。 押すたびに、伸長 (20 ミリ秒) → 駆動 (30 ミリ秒) → 保持 → 収縮 (20 ミリ秒) の 4 段階のシーケンスが実行されます。 指の同時押しがサポートされています。

高レベルの SDK API

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 サポートにお問い合わせください。