Meta(Oculus)Quest で立体視しながら、コントローラーでロボットハンドの操作:プログラム前提条件・仕様

ソースを読み解く際の前提条件や仕様は以下のようになっています。

座標系の仕様

座標系を直している関係上、-z方向が前方になっているので注意してください。

使用モジュール

python : numpy, numpy-quaternion

Arduino : Adafruit_PWMServoDriver

unity: ROS TCP Connector, Oculus XR Plugin

PC-Arduino uno間のシリアル通信の仕様

PC-Arduino Unoシリアル通信は開始フラグ0xFFから終了フラグ0xFEで一つの通信ブロックとなります。角度データは、整数部、小数部(二桁)の順に入っています。2バイトで一組になります。

データサイズイメージ

データのサイズは0から253まで取れます。255, 254 は、開始フラグと終了フラグに使われているためです。開始フラグと終了フラグを含んだ大きさが符号なし1バイトで入ります。

チェックサム計算仕様

チェックサムは、終了フラグの前に入っています。開始フラグからチェックサムの直前までのデータを

  1. 0と開始フラグのxor演算
  2. 1の結果とデータサイズのxor演算
  3. 2の結果とデータの1番目のxor演算

と順番にxor演算を行った結果が入っています。

チェックサムに0xFF, 0xFE が入っていても問題なく処理されます。

頭の位置

頭の位置は小さなオブジェクトを作成し、そのオブジェクトを”CenterEyeAnchor”に入れて求めています。-0.15ほど後ろに下げています。”Cast Shadow” off で影も消しています。影ありにするとスクリーンにこのオブジェクトの影が落ちてしまいます。