Meta Quest 3による動作確認(手順)

ここでは、備忘録として、Raspiからのカメラ映像をMeta Quest3ゴーグルで扱う手順について示します。PC上でのQuest3ミラー開発環境を立ち上げます。

ユーザ登録 → PCでQuest3画面のミラー表示(簡易フロー)


Meta開発者登録(1回だけ)

  1. ブラウザでアクセス
    👉 https://developers.meta.com/horizon
  2. 既存のMetaアカウントでログイン
  3. 組織(チーム)を1つ作成
    • 名前は任意(例:Personal XR Lab
    • 課金・公開なし

✅ これで「開発者フラグ」が有効化


Questスマホアプリ(Meta Horizon)設定

  1. スマホの Meta Horizon アプリ を起動
  2. デバイス → Meta Quest 3
  3. ヘッドセットの設定
  4. 開発者モード → ON
  5. Quest 3 を 再起動

✅ Questが「開発者としてPC接続可能」になる


PCに Meta Quest Developer Hub(MQDH)を入れる

  1. ダウンロード
    👉 https://developers.meta.com/horizon/downloads
  2. Meta Quest Developer Hub(Windows)をインストール
  3. 同じ Metaアカウントでログイン

Quest 3 をPCにUSB接続

  1. Quest 3 と PC を USB-Cで接続
  2. Quest内に表示されるダイアログ USBデバッグを許可しますか?
    • 「常にこのコンピューターから許可」にチェック
    • 許可

✅ MQDHでデバイスが Active 表示になる


MQDHで画面ミラー開始

  1. MQDH 左メニュー → Device Manager
  2. Meta Quest 3(Active) を選択
  3. 画面下部 Device Actions
  4. 👉 Cast device → Start casting

🎉 Quest 3で見ているMR/AR画面がPCに表示

  • Incorrect runtime 表示は無視してOK
  • Connect(Link) は使わない

この状態でできること

  • パススルー映像の確認
  • WebRTC(RasPiカメラ)映像の確認
  • AR合成結果の確認
  • 遅延・位置ズレ・追従方式の評価
  • Unityを使わずに事前検証

Wifi接続方法

  • Quest と PC が 同一LAN
  • MQDH で ADB over Wi-Fi を有効化
  • その後 Cast device
  • PC再起動後は再度USB接続をしてからwifi有効化が必要(仕様のようです)

動作確認(Raspiチャットボット+カメラ映像出力)

Raspi環境にて起動スクリプトを作成しました。
初期値をconfig.ymlで読み込みます。
各venv仮想環境でyamlを使えるようにしてください。(pip install pyyaml)

#config.yml
WS_URL: "ws://192.168.0.8:8765"
ARECORD_DEVICE: "hw:1,0"
ALSA_DEVICE: "plughw:1,0"

動作モード確認
ondemand => performance

cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
ondemand

echo "performance" | sudo tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor

PC側で、pc_ws_stt_wevrtcvad_ollama_tts_raspi.py を実行してください。
その後、Raspiにて、

start_robot.sh

を実行
以下は起動スクリプトのソースコードです。(start_robot.sh)
Raspiにて、SST, TTS, VideoCaptureを一発で起動します。

#!/bin/bash

BASE_DIR=~/Robot
VOICE_DIR=$BASE_DIR/VoiceChat
VIDEO_DIR=$BASE_DIR/VideoCapture

CONFIG_FILE=$VOICE_DIR/config.yml

echo "=============================="
echo " Robot Auto Startup Script"
echo "=============================="

#echo performance | sudo tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor

# ==============================
# 1. config.yml チェック
# ==============================

if [ -f "$CONFIG_FILE" ]; then
    echo "config.yml found."
    echo "Skipping configuration input."
    echo "Current config:"
    cat $CONFIG_FILE
else
    echo "config.yml not found. Creating new one..."

    # ==============================
    # 1. PC IP入力
    # ==============================
    read -p "Enter PC IP Address (example 192.168.0.7): " PC_IP

    WS_URL="ws://${PC_IP}:8765"

    # ==============================
    # 2. Audio Device 自動検出
    # ==============================

    echo ""
    echo "Detecting audio devices..."
    arecord -l
    echo ""
    read -p "Enter card number (example 0): " CARD
    read -p "Enter device number (example 0): " DEVICE

    ARECORD_DEVICE="hw:${CARD},${DEVICE}"
    ALSA_DEVICE="plughw:${CARD},${DEVICE}"

    # ==============================
    # 3. config.yml 作成
    # ==============================

    echo ""
    echo "Generating config.yml..."

    cat <<EOF > $CONFIG_FILE
WS_URL: "$WS_URL"
ARECORD_DEVICE: "$ARECORD_DEVICE"
ALSA_DEVICE: "$ALSA_DEVICE"
EOF

    echo "config.yml created:"
    cat $CONFIG_FILE
fi

echo ""
read -p "Continue to start SST? (y/n): " CONFIRM
if [ "$CONFIRM" != "y" ]; then
    exit 0
fi

# ==============================
# 4. SST 起動
# ==============================

echo "Starting SST..."
lxterminal -e bash -c "
source ~/venv_audio/bin/activate
cd $VOICE_DIR
python raspi_audio_sender_arecord2.py
exec bash
"

sleep 2

echo ""
read -p "Continue to start TTS? (y/n): " CONFIRM
if [ "$CONFIRM" != "y" ]; then
    exit 0
fi

# ==============================
# 5. TTS 起動
# ==============================

echo "Starting TTS..."
lxterminal -e bash -c "
source ~/venv_audio/bin/activate
cd $VOICE_DIR
uvicorn speak_server:app --host 0.0.0.0 --port 5005
exec bash
"

sleep 2

echo ""
read -p "Continue to start Video Capture? (y/n): " CONFIRM
if [ "$CONFIRM" != "y" ]; then
    exit 0
fi

# ==============================
# 6. Video Capture 起動
# ==============================

echo "Starting Video Capture..."
lxterminal -e bash -c "
source ~/webrtc-env/bin/activate
cd $VIDEO_DIR

echo \"-----------------------------------\"
echo \"Raspberry Pi IP Address:\"
hostname -I | awk '{print $1}' 
echo \"-----------------------------------\"


python server.py
exec bash
"

echo ""
echo "All systems started."

PC or Quest3ゴーグルで ブラウザーを開いて:

http://192.168.x.xx:8080
  1. 「接続開始」ボタンを押す
  2. 1〜2秒でカメラ映像が出るはずです
  3. ブラウザを 全画面表示 にして出力するとFPV表示になります。
  4. MQDHで画面ミラー開始

といった感じです。

タイトルとURLをコピーしました