Oculus GoでスタンドアロンVR作業環境を作った

Oculus GoでスタンドアロンVR作業環境を作った

概要

まずはこちらをご覧いただきたい.

…… おわかりいただけただろうか.

わからないと思うので説明すると, この様子はOculus Go上のDebianに映るターミナルを眺めながらテキストエディタで作業をしているところです. 写真の人はわたしの後輩で, Oculus Goの上でDebianを走らせて, VR対応なVNCクライアントを自作して接続することで, バーチャルな空間上での作業を可能にしたパイオニアです. 見た目はさながらlainの中盤に出てきて川に突っ込んで死んだやばい人(うろ覚え)のようです.

この取り組みのおもしろいポイントは, Oculus Go(とキーボード)だけですべてが完結するということです. ふつう, こういったヘッドマウントディスプレイはPCへの接続が前提ですが, Oculus Goは単体でゲームに必要な演算やコンテンツの再生ができます. 要は実質レンズ付きAndroid端末みたいなものなので, アプリの開発さえできれば何でもありなのです.

これにめちゃくちゃ感銘を受けたので, 完全にアイディア丸パクりなのですが[1], なるべくセットアップが簡単になるようにわたしもチャレンジしてみました. 最終的にはこんな感じになりました:

構成としては, 以下のようなものを使用しています.

  • Oculus Go
    • UserLAnd
    • ovrvnc
  • Bluetoothキーボード

Oculus Goは通常のHMDとは異なりケーブルがいらず, 中で処理もできるため, いつでもどこでも作業できることがとても良いポイントですね. もちろん, PC上のVNCサーバに接続すれば, より重い処理をさせたり, 動画を見ながらの作業なんかもできたりします.

セットアップ方法等の詳細な記事については, 以下をご覧ください(準備中です).

  1. Bluetoothキーボードの接続とUserLAndのセットアップ(執筆中)
  2. VNCサーバのセットアップとovrvncでの接続(執筆中)
  3. キーボード入力に対応する(執筆中)

やったまま放置してしまっていたので, 今回はひとまず紹介だけ…


  1. 記事を書くことは了承してもらってます

Share Comments

Dual Quaternionで剛体運動を表現する

Dual Quaternionで剛体運動を表現する

概要

クォータニオンを拡張した概念として, Dual Quaternionというものがあります. これを使うと, クォータニオンで考えられる3次元の回転に加えて, 3次元の並進まで1つの枠組みで考えることができるというすぐれもので, ロボティクスやCGの分野でほそぼそと使われています.

今回はDual Quaternionの基礎と, 3次元の位置・姿勢のDual Quaternion表現, そして剛体の運動をDual Quaternionで記述する方法について書きます.

若干偏った事前知識が必要かもしれません. 誤り等があればまさかりを投げてください.

Read More

Share Comments

SPRESENSE SDKのセットアップでPermission denied (publickey)が出る場合の対処法

SPRESENSE SDKのセットアップでPermission denied (publickey)が出る場合の対処法

概要

(この記事は2018/8/17時点での内容です)

これは公式ドキュメンテーションが悪いです.以下のように書き換えて対処してください.

解決法

SPRESENSE SDKチュートリアルの手順の中で

$ git clone --recursive git@github.com:sonydevworld/spresense.git

と書かれている項目を,

$ git clone --recursive https://github.com/sonydevworld/spresense.git

に置き換えて実行しますす.

問題なくクローンできるはずです.

なぜこのようなことが起こるか

OS側に鍵を用意していない/自分のGitHubアカウントに公開鍵を置いていない場合にこうなります.

SONYさん,結構たくさんのお客さんが困っているみたいなので,修正してください.

Share Comments

SPRESENSEのNuttXに起動スクリプトを設定する

SPRESENSEのNuttXに起動スクリプトを設定する

概要

Arduino IDEで作成したプログラムは,電源投入時に自動実行されるようになっていますが,SPRESENSE SDKを使用して直接NuttX上に実装したコマンドは,デフォルトではnshを使って手動で実行する必要があります. 実はnshには起動スクリプト(init.dのようなもの)の機能があり,適切に設定を行えば,プログラムの起動や環境変数の設定などを自動で行うことができます.

この記事では,SPRESENSEのNuttXの設定を変更し,起動スクリプトを有効化する方法を紹介します.

Read More

Share Comments

NuttShell(nsh)のボーレートを変える

NuttShell(nsh)のボーレートを変える

概要

NuttXに付属しているシェルであるNuttShellにアプリケーションの実行ログを垂れ流すと,転送速度が足りず,バッファが詰まって処理が遅くなることがあります. これはNuttXのカーネルの設定で転送速度(ボーレート)を変更することで解決できます.

この記事では,SPRESENSEのNuttXを例に設定方法を紹介します.ほかのプラットフォームでも同様に変更が可能なはずです.

SPRESENSEでの手順例

設定を保存するまでの動画を用意したので,こちらをご確認ください. menuconfigでは,矢印キーで選択,Enterで下の階層に入り,Escを2回押して上の階層に戻れます.

  1. ターミナルでSPRESENSE SDKのディレクトリに移動し,カーネルのmenuconfigを実行します.
$ make menuconfigkernel
  1. “Device Drivers” -> “Serial Driver Support” -> “Serial Console” から,ペリフェラルの名前(UART1等)を確認します.
  2. 確認した名前に対応する設定("UART1 Configuration"等)を開き,“BAUD rate” を変更します.
  3. 設定を保存して終了します.
  4. カーネルとアプリケーションをビルドし直します.
$ make cleankernel
$ make buildkernel
$ make clean
$ make

注意事項

  • SPRESENSEでは,実用上921600bpsが限界なようです.これよりも大きい値を指定すると正常な動作が期待できなくなります.
  • tools/flash.py を使用した書き込みでは,2Mbpsでも可能です.
Share Comments