Skip to content

setting

Daisuke Sato edited this page Oct 5, 2021 · 1 revision

設定 SettingViewController

  • 基本設定以外の詳細な設定。開発用、デモ用オプション含む

    • Log Replay、ログに記録したデータを使って動作を再現
    • Issue Report、記録したログ、画面キャプチャなどまとめて送信する仕組み
    • ナビゲーション、位置推定エンジンの詳細パラメータ設定
  • 読み上げ速度 (0.55)

    • iOS標準の速度に準拠。
  • プレビュー速度 (1)

    • 秒速0.2m x プレビュー速度で進む
    • TODO: デフォルトだと遅すぎる
  • 振ってプレビュー (NO)

    • NO: 自動で進む
    • YES: iPhoneを振って加速度を与えている間だけ進む
  • Ignore facility info (NO)

    • 施設情報のPOIを読み上げない
  • 振動で通知 (YES)

  • 効果音で通知 (YES)

  • 骨伝導ヘッドフォン用の効果音 (NO)

    • 通常の効果音が骨伝導ヘッドフォンで聞こえにくかったため、音を変更する
  • 距離の単位 (メートル

    • メートルとフィートが選べるが、処理はメートル系で、しゃべる時に変換する
    • 残り距離を読む間隔が15mなのはフィートとメートルできりの良い数字にするため
    • 距離が長い場合は丸める
      • 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 15, 20, 25, 30, 35, 40, 45, 50, 60, 70, 80, ...
  • 練習を始める

    • 練習コースでNavCogの使い方を練習する
    • プレビュー速度は自動的に10にする
    • 練習コースはサーバー上ではなくメインバンドルにデータが入っている
      • model/exercise-data.json
  • Documentsディレクトリにdev.keyfileを配置すると詳細メニューが有効化(AuthManager)

    • dev.keyfileのテキストをハッシュ化して、mainバンドルのdev.hashfileの内容と一致すれば認証
    • NavCogToolの-kオプションにテキストを渡すとハッシュキーを作れるようになっている
  • Report Issue(Record Logsがオンである必要がある)

    1. 送信するログファイルを選択する
    2. Issueの詳細をテキストで記述
    3. メール送信画面が開くので、送信する
    4. zipファイルが大きくなるので、差出人はiCloudのメールアドレスにしてMail Drop(添付ファイルをiCloudに保存する仕組み)を使うと良い。ファイルサイズが大きいとgmailにはねられる。
  • Record logs (NO)

    • ログをファイルに記録する。ログファイルはアプリがフォアグラウンドになった時刻の名前で新しく作られる
    • Loggingクラス
      • startLogを呼ぶとファイルを開いて、stderrとして開き直す。
      • stopLogで保存していた元のstderrと差し替え
  • Record screenshots (NO)

    • スクリーンショットを毎秒記録する。最大600秒。ScreenshotHelperクラス
  • Setting Preset

    • Save Settingを選択し、設定を保存する名前を決める
    • Choose Settingから設定を選んで、保存した設定を呼び出す
    • Documentsディレクトリに保存されるので、iTunesから取り出すことも可能
  • Choose map

    • blelocppに渡すモデルデータを選択する。Documentsディレクトリの.jsonファイルを列挙
  • Log Replay

    • ログに記録したデータを使って動作を再現するための仕組み。下記オプションを指定して、再生するログを選択する。Documentsディレクトリにある*.logファイルをリストする。iTunesで必要なファイルをコピーする。
    • Replay in realtime (NO)
      • YES: 実時間で再生。記録されたタイムスタンプを見て、適宜waitを入れる。
      • NO: ベストエフォートで再生
    • Use sensor log (NO)
      • YES: センサーの生データを利用する。位置推定エンジンをテストする場合に使う。
      • NO: 計算済みの位置を利用する。ナビゲーションのテストをする場合に使う。
    • Show sensor log (NO)
      • Use sensor logYESの時にセンサーの値をstderrに書き込むか。Record logsYESだとリプレイのログがファイルに書かれてしまうので注意
    • Use reset in sensor log (YES)
      • ログに記録された位置のリセットを利用するかしないか
    • User navigation log (YES)
      • ログに記録されたルート検索を実行するかしないか。ナビゲーションのテストの時に使う
  • Developer Mode (NO)

    • 開発者モードのオンオフ
    • 地図を動かすと、地図の中心位置をナビゲーションに反映する。
      • 開発者モードでない場合は、一定時間操作しなかった場合に現在地に戻す。
      • 視覚障害者モード:ユーザの位置・方向を擬似的に動かすためのボタンが表示される。地図を動かしても位置が反映される。
        • Left: 左に回転
        • Go: 前に進む
        • Right: 右に回転
        • Down: 下の階に移動
        • Up: 上の階に移動
        • Restart: 位置推定エンジンをリスタート
        • Marker: マーカーログを追加
        • Note: ノートログを追加(テキスト編集ダイアログ)
        • Reset: 位置推定エンジンを地図の真ん中にリセット
        • Auto: プレビューのように自動で位置を移動する機能のオン・オフ
      • 一般モード:地図を動かしてユーザの位置をシミュレーションできる
    • TODO: 視覚障害者モードの開発者用のボタンが他のコントロールとかぶっている(優先度低い
    • TODO: 回転すると表示がおかしい(ユーザの位置だけでなく、地図も回転するようにした影響と思われる)
  • P2P Debug (詳細

    • ユーザ実験の時に被験者の端末の表示や音声(ヘッドホンをしているので、何が起きているのかわからない)を手元の端末にP2Pで再現する仕組み。
    • 近くにあるNavCogと接続する。別のNavCogでもP2P Debugを選択するとリストに表示される。MultiConnectivityの仕組みを使っていて、adhocのBluetoothもしくはWiFiでの接続になる。Bluetoothだと通信速度が遅いので、WiFi接続になるように子端末ではBluetoothをオフにしておくと良い。
  • P2P Debug Follower (NO)

    • P2Pデバッグ機能の子端末かどうかを決める。被験者端末以外はFollowerにする。複数親がある場合の動作は不定。
    • Followerの端末の地図画面の上には-NavCog-と表示される。通常はNavCog
  • Adjust blelocpp

    • 位置推定エンジンのパラメーター変更
  • Adjust blind navi

  • Cache clear for next launch (NO)

    • YESにすると、次回の起動時にキャッシュをクリアして、設定をNOに戻す
  • Use HTTPS (YES)

    • サーバーとの通信にHTTPSを使うかどうか。AppStore版はATSを有効にしないと審査が通らないので、基本的にはHTTPSを使う。ローカルのサーバーでテストする場合などはNOにするが、ATSを無効化する設定をいれないとエラーが起こる。
  • Server (List)

    • 接続先のサーバーを追加・変更する
  • Context (Text)

    • 接続先のコンテキストルートを指定する(サーバーに記述しても良い)
  • 設定方法
  • P2PデバッグはMultipeerConnectivity.frameworkのP2P通信機能を使って、被験者の端末に表示されている位置や、提示された音声などをリモートの端末で確認するための機能。
    • Tips、位置や方向が大量に送られるので、Bluetooth経由の接続だと間に合わない。そのためデータを受ける側の端末ではBluetoothをオフにしておくと良い。そうするとWiFiのadhocで接続される。
    • NavDebugHelperがNSNotificationをP2P通信経由で送ることで実現している
      • 親端末(被験者)から子端末(実験者)
        • NAV_LOCATION_CHANGED_NOTIFICATION
          • 位置情報
        • REQUEST_PROCESS_SHOW_ROUTE
          • 子端末側でもナビに必要なデータを持っておく必要があるので、ROUTE_CHANGED_NOTIFICATIONではなく、検索実行の通知を送る
        • SPEAK_TEXT_QUEUEING
          • TTS読み上げのテキスト
        • ROUTE_CLEARED_NOTIFICATION
          • ルート消去
        • PLAY_SYSTEM_SOUND
          • システムサウンド
      • 子端末(実験者)から親端末(被験者)
        • REQUEST_LOCATION_HEADING_RESET
          • 方向のリセット(おそらく使われなかった)
  • Use compass (NO)

    • コンパスの方位・精度を使ってLocalizerの粒子の状態を初期化する。
  • Reset as start location (NO)

    • ルート検索してナビゲーションが開始される時に、ルート検索結果の最初の位置に現在位置を強制的にリセットする。スタート地点を固定する場合は使える。
    • 最初のノードがリーフになっていてかつ、最初のリンクがIGNORE_FIRST_LINK_LENGTH_THRESHOLD(3)より短い場合は2番目のノードがスタート地点
  • Reset as start heading (NO)

    • ルート検索してナビゲーションが開始される時に、ルート検索結果の最初のリンクの方向に現在の方向を強制的にリセットする。スタートにおける立つ方向を固定する場合は使える。
    • 最初のノードがリーフになっていてかつ、最初のリンクがIGNORE_FIRST_LINK_LENGTH_THRESHOLD(3)より短い場合は2番目のノードがスタート地点して方向を決定する。
  • Reset std dev (1.0)

    • 上記リセットでの位置のばらつき
  • Reset at elevator (NO)

    • エレベーターが目的階に到着した時にエレベータの位置に現在位置をリセットする
  • Reset at elevator continuously (NO)

    • エレベーターに乗ったと判定されて以降エレベータを降りるまで一定間隔(1.9秒)ごとに現在位置をエレベータの位置にリセットする
  • Stabilize localize on elevator (NO)

    • エレベーターに乗っている間、ビーコンの観測によって位置推定状態がUnknownにならないようにする。ビーコンが見えなくなるエレベーターでは問題が起きないが、ビーコンの電波が漏れてくるエレベータだと、推定結果が信頼できないとして位置の再推定が走る場合があるので、それを防ぐ。(Double Tree Hotel、CMUで利用)
  • Hide "Current Location" (NO)

    • ルート検索画面のスタート地点に現在位置を表示しない
  • Hide "Facility" (NO)

    • ルート検索画面の目的地に施設(トイレなど)を表示しない
  • Accuracy For Demo (NO)

    • NO: 誤差を最小5メートルで表示
    • YES: 誤差を最小0.5メートルで表示
  • Bearing For Demo (NO)

    • "少し左/右"の案内をする閾値の計算を変える
    • YES: 現在位置から最も近いリンク上の点から目的ノード(リンクの終端)の方向と現在の方向の差分
    • NO: 現在位置から目的ノード(リンク終端)の方向と現在の方向の差分
  • Send beacon data (NO), Server

    • 不使用
Clone this wiki locally