ソフトウェアのセットアップ

SDK のインストール、ネットワーク接続、ROS2 と MoveIt2 デュアルアーム プランニング、ブラウザ テレオペ パネル、VLA モデルの統合、およびワンクリック データ パイプライン。 ネットワークの検出から自律的な操作までのすべて。

セクションにジャンプします:

ステップ 1 — SDK のインストール

SDKのインストール

VLAI L1 は、 roboticscenter Python SDK。高レベルのタスク API と低レベルの共同制御の両方を提供します。 ホスト PC にインストールします。

仮想環境を作成する

python -m venv ~/.venvs/vlai
source ~/.venvs/vlai/bin/activate

SDKをインストールする

pip install roboticscenter[l1]

インストールの確認

python -c "from roboticscenter import L1; print('SDK OK')"
rc --version   # command-line tool
ステップ 2 — ネットワーク接続

L1に接続する

L1 は独自のオンボード ROS2 スタックを実行し、ローカル ネットワーク上で gRPC 制御 API を公開します。 ホスト PC は WiFi またはイーサネット経由で通信します。

ネットワークの初期設定

# Power on the L1 — it will connect to the configured WiFi automatically
# Then discover it on your network:
rc discover
# Output: L1-XXXX found at 192.168.1.45 (port 8888)

接続して確認する

rc connect --device l1 --host 192.168.1.45
# Output: Connected to VLAI L1 (firmware v2.1.4, battery: 87%)

# Or use the Python SDK:
from roboticscenter import L1

robot = L1(host="192.168.1.45")
robot.connect()
print(robot.get_status())
# {'battery': 87, 'arm_left': 'ready', 'arm_right': 'ready', 'base': 'ready'}
robot.disconnect()

静的 IP を設定します (ラボでの使用を推奨)

rc config set network.static_ip 192.168.1.100
rc config set network.gateway 192.168.1.1
rc config apply   # reboots the L1 network stack
ステップ 3 — ROS2 + MoveIt2

MoveIt2 デュアルアーム コントロールを備えた ROS2

L1 は、ROS2 Humble がオンボードで実行された状態で出荷されます。 ホスト PC は、同じネットワーク上で ROS2 ノードとして接続します。 ホストには ROS2 Humble が必要です。

ROS2 Humble をホストにインストールする (Ubuntu 22.04)

sudo apt update && sudo apt install ros-humble-desktop \
  ros-humble-moveit ros-humble-ros2-control \
  ros-humble-ros2-controllers -y

L1 ROS2 ブリッジを起動します。

# On the L1 (via SSH or the onboard terminal):
ros2 launch vlai_l1_ros2 l1_bringup.launch.py

# On your host PC:
source /opt/ros/humble/setup.bash
export ROS_DOMAIN_ID=42   # must match the L1's domain ID
ros2 topic list   # should show /l1/left_arm/joint_states, etc.

デュアルアーム MoveIt2 計画

source /opt/ros/humble/setup.bash
ros2 launch vlai_l1_moveit l1_moveit.launch.py

# In another terminal — plan and execute a bimanual task:
ros2 run vlai_l1_moveit bimanual_demo
# Executes: left arm picks object, right arm receives and places

Python による個別のアーム制御

from roboticscenter import L1
import numpy as np

robot = L1(host="192.168.1.45")
robot.connect()

# Move left arm to Cartesian pose (position + quaternion)
pose = {
    "position": [0.4, 0.1, 0.35],    # x, y, z in meters from base
    "orientation": [0, 0, 0, 1]      # quaternion xyzw
}
robot.left_arm.move_to_pose(pose, speed=0.3)

# Read current joint state
state = robot.left_arm.get_joint_state()
print("Left arm joints:", state.positions)  # 8 values in radians

robot.disconnect()

移動基地制御

roboticscenter インポート L1 から ロボット = L1(ホスト = "192.168.1.45") robot.connect() # 0.5 m/s で 1 メートル前進します robot.base.move(x=1.0、y=0.0、speed=0.5) # 時計回りに90度回転 robot.base.rotate(角度=-90、速度=0.3) # 度 # リフト高さ調整 (106 ~ 162 cm) robot.base.set_lift_height(130) # cm # 停止 robot.base.stop() robot.disconnect()
ステップ 4 — ブラウザー テレオペ

ブラウザ遠隔操作パネル

L1 にはブラウザー テレオペ パネルが組み込まれており、ソフトウェアのインストールは必要ありません。 ポート 8888 上の L1 の IP に移動します。

パネルにアクセスする

# Open in browser:
http://192.168.1.45:8888

# Or launch via CLI:
rc teleop --device l1

パネルは以下を提供します。

  • モバイルベース用のWASDキーボードコントロール
  • 左/右アーム デカルト ジョイスティック (3D ビューポートでクリックしてドラッグ)
  • グリッパー開閉ボタン
  • 搭載されているすべてのカメラからのカメラ フィード
  • ワンクリックでエピソードの録画を開始/停止
  • バッテリーとジョイントの状態ステータスパネル

VR テレオペ (Developer Pro および Max)

rc teleop --device l1 --mode vr
# Opens a WebXR session — put on Meta Quest and visit the displayed URL
ステップ 5 — VLA の統合

視覚、言語、行動モデルの統合

L1 Developer Pro 層と Max 層には、VLA 推論をローカルで実行できるオンボード コンピューティングが含まれています。 すべての層で、ホスト PC 上で VLA 推論を実行し、アクションをロボットにストリーミングできます。

ホスト PC 上で OpenVLA を実行する (任意の層)

pip install roboticscenter[vla] roboticscenter インポート L1 から roboticscenter.vla から OpenVLAClient をインポート ロボット = L1(ホスト = "192.168.1.45") robot.connect() vla = OpenVLAClient( モデル="openvla/openvla-7b", device="cuda" # 推論を遅くする場合は "cpu" ) # 観察を捕獲する obs = robot.capture_observation() # RGB 画像 + 関節状態を返す # VLA からアクションを取得 (テキスト条件付き) アクション = vla.predict( 画像=obs["画像"], 命令="青いブロックを持ち上げて、赤い皿の上に置きます" ) # アクション: アームジョイントデルタの辞書 + グリッパーコマンド # ロボット上でアクションを実行する robot.execute_action(アクション) robot.disconnect()

オンデバイス VLA 推論 (Developer Pro/Max)

rc deploy vla \
  --model openvla/openvla-7b \
  --quantize int4   # fits in 6GB VRAM on V3 compute (70 TOPS)

# Now VLA runs on the L1's onboard compute — no host PC needed:
rc run policy \
  --task "Pick up the blue block and place it on the red plate" \
  --max_steps 50
トラブルシューティング

よくある問題

エラー1 rc Discover でデバイスが見つからない

L1 は同じサブネット上にありません。 多くの場合、エンタープライズ WiFi ネットワークではクライアントが分離されています。IT 部門に確認するか、専用ルーターを使用してください。

# Try direct connection by IP if you know it:
rc connect --device l1 --host 192.168.1.45

# Or connect the L1 via Ethernet directly to your laptop:
# Set your laptop to 192.168.2.1/24, L1 will appear at 192.168.2.100
エラー2 MoveIt2 計画が失敗します: パスが見つかりません

ターゲット ポーズがアームの到達可能な作業スペースの外にあるか、ロボット本体と衝突しています。

# Check reachability first:
from roboticscenter import L1
robot = L1(host="192.168.1.45")
robot.connect()
reachable = robot.left_arm.check_pose_reachable(
    position=[0.4, 0.1, 0.35])
print("Reachable:", reachable)  # if False, adjust target pose
robot.disconnect()

ソフトウェアは動作していますか? データの収集を開始します。

アームが動くようになったら、次のステップは遠隔操作とデータセットの記録です。