PyCharmを使ってRaspberry Pi2上で快適リモートGPIOプログラミング

概要

せっかくRaspberry pi2も出て、モノノインターネットだとかフィジカルコンピューティングだとかユビキタス(これは死語?)も流行っているので、GPIO経由でセンサやサーボを使うプログラムを書きたいな、と思いました。
その際にPythonを使い、開発環境としてJetBrains社のPython IDEであるPyCharmを使って、普段使っているPCからリモート開発環境を作ってみました。
CUIモードのRaspberry pi2上で素のviで書くのもカッコイイとは思うのですが、入力補完等が親切な方が個人的には嬉しいです。
このエントリはその備忘録です。

多少覚えることはありますが、初心者がいきなりPythonをRaspberry pi上で書き始める、と言うのであればPyCharmは親切な環境であると思います。
他にもCPUが非力なLinuxが載る組み込み系ボード(BBB,Odroid)でも、同様に使えてIDEの恩恵を受けられるので、リモートは便利です!

続きを読む

OVRSDK0.4.4+Unityでのジャダーを防ぐビルド設定調査結果

概要

OculusRift DK2+UnityでOVRSDK0.4.4を使う時に、ビルド及び実行条件次第でジャダー(首を振った時に絵がガクガクする、凄く酔います)が起きる事がknown issueとなっています。

https://forums.oculus.com/viewtopic.php?f=37&t=18363

しかし、OVRSDK0.4.4+OculusRuntime0.4.4は現状では最もVRパフォーマンスが出る組み合わせでもあります(FPSが稼ぎやすい、遅延が短い)

よってこのエントリでは、VRコンテンツ製作者が上記環境で作る時に、どんなオプションでビルドすれば良いか、僕の調査結果を書きます。

先に結論

UnityEditorはDX9モードでもDX11モードでも良いので、BuildSettings→PlayerSettings→Other Settings→Use Direct3D11のチェックを必ず入れる事を推奨します。

f:id:izm_11:20150109005855p:plain

また、0.4.4環境では-force-d3dx9オプションは不要です。

検証環境

ソフトウェア

  • Unity4.5.5p5
  • Tuscany Demo
  • OVRSDK0.4.4
  • OculusRuntime 0.4.4

PC1(デスクトップ)

PC2(ラップトップ)

  • G-TUNE i420
  • Windows7pro(x64)
  • GeforceGTX860M+Intel HDGraphics4600(Optimusです)

制作環境

  • UnityDX11モード + DX11ビルド
  • UnityDX9モード + DX11ビルド
  • UnityDX9モード + DX9ビルド

検証手法

制作環境の3環境においてビルドしたexeを、PC1,PC2それぞれについて

  • -force-d3d9
  • -force-d3d11

オプションを付けて実行して「ジャダーの有無」「その他不具合」を目視確認。
また、いずれのPCでもTuscanyDemoが75FPS以上の速度で動くスペックです。

検証結果

緑のセルは問題なく動いた組み合わせです。赤いセルは問題があった組み合わせです。

f:id:izm_11:20150109010827p:plain

考察

  • DX9モードでビルドする意味は殆どない
  • 遥か昔はExtendModeだとUnityで作られたデモを遊ぶとき -force-d3dx9オプションを指定する必要があったが最新環境では不要。むしろ0.4.4環境ではジャダーを引き起こす可能性もある

Mastering the Oculus SDK日本語解説

このエントリはOculus Rift Advent Calendar 2014の12/14のエントリです。

Oculus Rift Advent Calendar 2014 - Qiita

明日12/15は @xxxxMakoto さんです!

概要

去る2014/9 にOculusVR社の主導で行われたOculusConnectと言うイベントで、いくつかの講演がありました。

その中でも、OculusSDKが何を目指して、何を実装して、将来はどんな機能を追加していくかと言う、一番ヘビーな(個人的には重要そうな)Mastering the Oculus SDKと言うプレゼンテーションがありました。

http://static.oculus.com/connect/slides/OculusConnect_Mastering_the_SDK.pdf

このエントリでは、上記講演の公開されているプレゼン資料について、和訳を書き、僕自身の感想や知見を加えた物を公開します。

ざっと80ページくらい+pdf(15MB)での公開です。内容は随時アップデートしていきたいと思っています。

資料の配布

こちらからDLください。[pdf] https://copy.com/trXEDBGAwcu9Kj6r

//本当はhtmlとか電子書籍的なフォーマットにしたかった…

また、googledocの生データが以下にあります。コメントを入れられるので分かりにくい点などあったら書いて頂くか

izm (@izm) | Twitter までお気軽にメンションくださいませ。

explain_Mastering_Oculus_SDK - Google ドキュメント

対象とした読者

VRに興味がある情報系の学部4年程度があれば問題なく読めると思います。

飛ばし飛ばしで読むか、じっくり読むかで変わりますが、後者だと概ね1時間程度の時間が掛かるかと思います。

なんでこんな物を書いたのか

OculusVR社というか、Palmarさんから日本はDK2の優先的な出荷先として認定されていて、日本の開発者に掛かる期待は大きいように思います。

なので、ちゃんとした資料を、英語が苦手な人でも読めるように整備出来たら、うれしいなあと思い、今回こんな感じに公開しました。

//Twitterに断片情報だけ書いていくと、どんどん有益な知見が流れてしまって勿体ないので、他の人も知見をドンドンまとめてほしいです!

著作権

本エントリで配布しているpdfの著作権全てOculusVR社に帰属します。

また、OculusVR社の公開しているpdfを勝手に使用している為、怒られたらごめんなさいをします。

Ovrvision+OculusRiftDK2のマーカレストラッキングもどきを実現する(仮)

概要

OvrvisionSDK2.1が公開され、OculusRift DK2が高視野角ビデオシースルーHMDとして使えるようになりました。

OvrvisionSDKにはAR機能があり、Arucoのマーカを用いたマーカARが実装されています。
しかし、マーカ無しでARを使えたら、ちょっと楽しいかもと思い、大急ぎで試しに作ってみました。
まだやりたい事が実現できていないので、また進捗があったら別の記事を書こうと思います。

作り方

OvrvisionSDK+OVRSDKを組み合わせます。以下のような処理を行います。

  • OvrvisionSDKのAR関係を無効化する
  • 現実の絵をOvrvisionSDKで持ってくる
  • OVRSDKのOVRCameraRigのポジトラを有効にして、CG座標系上のある絶対座標にCGを置く

つまり、普通のOculusRift DK2のコンテンツの作り方にして、背景だけをOvrvisionカメラの現実に差し替えます。

すると、まるでマーカ無しでSLAM等を使ってトラッキングをしているかのように、うまい感じにCGが現実に重なるはず、という企みです。ポジトラ用カメラがあるって素晴らしいです!

Gyazo - f0a7d9ed2db8c73ea3207a49cb9c95b7.gif

結果

マーカーとか無しで自分の部屋にキャラクターを呼べます

YouTube

本当はこうしたかった

OVRManager.tracker.GetPose()というAPIがあり、これを使うとDK2のカメラ座標に対する位置姿勢の絶対値座標と姿勢が取得できます。

DK2のポジトラカメラの高さを測って、この値に合わせてOvrCameraRigを動かしてやれば、 体験会やデモなどで綺麗にモデルを床に立たせる事が出来るはずです。

しかし、OVRSDK0.4.3.1時点では、このAPIがバグで動いていないので、

DK2座標については「rキーでリセット」

床の高さについては「uキーで上昇」「dキーで下降」

と言う原始的なユーザが見た目で合わせこむ形式になっています。 つらい…

原理的にこんなことも出来るはず

  • 好きなMMDモデル+モーションに差し替えて、自分の嫁を自分の部屋に呼べる
  • 自分の部屋のベッドで好きなMMDモデルと添い寝
  • 自分の部屋で好きなMMDモデルに壁ドン(これは簡易な手検出を行うと良いかも)

などなど、応用範囲は広そうです。

とりあえず試してみたい方へ

実はこの冒頭のクエリちゃんのデモ、コードは10行くらいしか書いていません。 一応冒頭のクエリちゃんデモのプロジェクト一式をソースコード込みで以下に置きます。

Unity4.5.5Pro+OculusRuntime0.4.3+OvrvisionSDK2.1+OVRSDK0.4.3.1の組み合わせです。 また、モデルにはクリエイティブコモンズライセンスで公開されているクエリちゃんを使用しています。 近くに寄っても破綻しない高解像度なテクスチャを含み、表情も豊かでアニメーションも比較的多く含む(mecanimセットアップ済みのモデルもある)ので、お勧めです。

http://www.query-chan.com/product.html

クエリちゃん【デジタル・インタラクティブ・アイドル】OFFICIAL WEBSITE

f:id:izm_11:20141202013629p:plain

プロジェクト一式+実行ファイル

https://copy.com/Mj2YR2OJRhIZ2YCG

解凍したbinフォルダのtest_Direct.exeをダブルクリックすると冒頭のデモが試せます。

床の位置合わせ等は手動で行う事になるので、少々味気ないですが、クエリちゃんの代わりにお好みのモデルに差し替えて、自室に好きなモデルを召喚して遊ぶなどしていただけたら嬉しいです。 シーンファイルのAlwaysInWorld内以下にモデルを配置してビルドするだけで使えます。

大体1mくらいカメラから離れてrキーを押してリセットした後、uキーやdキーで部屋の床とキャラクタの立っている高さを合わせます。

スマフォスロットインHMDの視野角及び没入感を改善するハードウェアMOD

概要

スマフォスロットインHMDにおける問題点と、解決可能になりえる手法、試験的なMODを行った結果を書きます。

スマフォスロットイン系HMD Advent Calendar 2014 の 1 日目です。 このAdventCalender、完走出来るか非常に怪しいです><

スマフォスロットイン系HMD Advent Calendar 2014 - Qiita

スマフォスロットインHMDにおける問題点

「視野角が狭い」の一言に尽きます。 これは、

  • スマフォのサイズが一般にOculusRiftのパネルよりもサイズが小さい
  • Youtube等の既存立体視コンテンツを樽型歪みが起きにくい低倍率レンズを用いている

という2点が主な原因となります。

参考

OculusRift DK2の光学系の、特に視野角についての調査は以下スレッドが詳しいです

http://www.mtbs3d.com/phpbb/viewtopic.php?f=140&t=19834 http://frederic.lopez.free.fr/oculus%20rift/viewable%20zone/DK1-63.5mm-2mm.png

解決するための手法

樽型歪みが起きても、死んでしまう画素(つまり、HMDを覗いてても見えない画素)が増えても良いので、レンズ倍率を上げてしまう。

というのが手っ取り早い手段です。 ただ、一般にはレンズ倍率を上げると、焦点距離も変わるので、そうなると市販のスマフォスロットインHMDでは対処が・・・

ともかくやってみましょう。

MOD

元になるスマフォスロットインHMD

http://www.aliexpress.com/item/2014-New-ColorCross-Professional-Plastic-Edition-Head-Mount-3d-Vr-Virtual-Reality-Glasses-Oculus-Rift-Google/32214059791.html

(まあ、あれです。ハコスコDXです)(焦点距離などの緒元が記載されていて親切ですね。)

Amazon.co.jp: ハコスコDX(デラックス)黒: 家電・カメラ

これの良いところは

  • IPD(目の間の距離)を物理的に調節できる
  • レンズマウントを回すだけでディスプレイとレンズの調節が出来る(1cm程度ですが)
  • ↑の関連で、グリグリ回しているとレンズマウントだけを取り外せる

点です。

新しく使うレンズ

プラスチックルーペ20個で10ドル http://www.aliexpress.com/item/5X-35mm-Jewelry-Magnifier-portable-handheld-Mini-loupe-Phone-Strap-Magnifier/1580803656.html

他の物でも良かったですが、僕には丁度良い作りでした。

f:id:izm_11:20141201003946j:plain

レンズの加工

ルーペレンズの根元から切り、切断面をヤスリで整えます。レザーソーなどで簡単に切ることが出来ます。

f:id:izm_11:20141201004005j:plain

倍率を稼ぐために二枚重ねにして元のレンズ部分の奥にテープで留めます(元からあったレンズは外します)

f:id:izm_11:20141201004043j:plain

再組立てをします。

f:id:izm_11:20141201004058j:plain

結果と評価

4.7インチFullHDのスマートフォン(SH-06E)で見え方を確認しました。

ユニティちゃんライブステージCandy Rock StarをOculus Riftに対応してみた ‐ ニコニコ動画:GINZA

この動画を同一フレームで比較した結果が以下です。

  • 視野角は大きく広がった
  • この動画を見た時に樽型歪みが気になりにくい=OculusRift光学系に近い
  • しかし、レンズが遠くなったことで「すごい双眼鏡を覗いている」感じが出てしまう
  • これを解消するには、別の素材を使うしかない

個人的な感想

  • 多分このHMDの無改造品にGalaxyNote3買って普通に刺した方がちゃんと見える…

  • GoocleCardBoardのリファレンスはレンズ径25mmですが、小さすぎると思います。今回使ったものは35mmですが、それでも視界にレンズ周りのプラスチックが見えてテンションが下がる

  • ハコスコDXの白、白い周りのプラスチックが気になるので、没入感を求めるなら黒をお勧めします

以上で1日目の記事は終わりです。

2日目はたかしすきーさん( takashiski@GCB改造してる (@takashiski) | Twitter )にお願いします

スマフォスロットイン系HMD Advent Calendar 2014 は絶賛参加者募集中です。よろしくお願いします。

スマフォスロットイン系HMD Advent Calendar 2014 - Qiita