TOKYO FAB GIRL- TECH MEMO

全くもって知識のないnanajuが、試行錯誤でやったものを忘れないように書いておくメモです。メインブログは、http://tokyofabgirl.blogspot.jp です。

Spatial Mapping in Unity 日本語訳

原文 Spatial mapping in Unity

11/14時点で途中です

Spatial mapping in Unity

Namespace : UnityEngine.VR.WSA.SurfaceObserver

このトピックは、どのようにSpatical Mapping があなたのunity projectの中で使うのかを説明します。 モノを置いたり、閉鎖したり(?)、室内の解析などをするために、ホロレンズ周辺の表面の三角メッシュを生成します。

Unityは、Spatial Mappingに関してフルサポートしています。開発者に、次のように提供されています

  1. Spatial Mapping コンポーネントはMixedReality Toolkit に存在します。これは、簡単で、すぐにSpatical Mappingを始めることができます
  2. 低レベルSpatial mapping API はすべての制御と、洗練されたアプリの特定のカスタマイズができます

Spatial Mapping をあなたのアプリの中で使用する場合、Spaial Perception(空間知覚) 能力は、AppxManifestをセットすることが必要です

Spatial Perception の設定

Spatical mapping データを使えるようにするために、Spatical mapping capability を有効にします

  1. unity エディタから、Player settingを開きます。
  2. windows Store タブをクリックします
  3. Publishing Setting を開きます。Capabilities の中のSpatialPerception をチェックします

注意:もしあなたがすでにVisual studio solutionにUnity Project をエキスポートしていたら、新しいフォルダにエキスポートするか、Visual Studio で、AppxManifestをセットしてください

Spatial mapping は、MaxVersionTested のleast 10.0.10586.0を必要とします

  1. Visual Studioにて、ソリューションエクスプローラpackage.appxmanifest を右クリックし、ViewCodeをクリックする
  2. TargetDeviceFamilyを見つけて、MaxVersionTested = "10.0.10240" を、10.0.10586にする
  3. Package.appxmanifest を保存する

ユニティのビルドインSpatical mapping コンポーネントを使う

Unity は2つの簡単にSpatial Mapping をアプリに実装できるコンポーネントを提供しています。Spatial Mapping Renderer と、Spatial Mapping Colider です

Spatial Mapping Renderer

Spatial Mapping Rendererは、Spatial Mapping メッシュを可視化します

Spatial Mapping Colider

ホログラフィックコンテンツ(もしくはキャラクター)とのインタラクション、例えば物理をSpacial Mapping と使えます

ビルドインSpacial Mapping component を使う

おそらくあなたは、ビジュアライズと表面との物理的なインタラクションを行うために、二つともアプリに追加するでしょう。Unityアプリの中で、二つのコンポーネントを使うために: ‘ 1. あなたがspacial surface meshes を見つけたい場所の中央のgameObject を選ぶ 2. インスペクターviewで、Add Component > AR > Spacial Mapping Colider or Spacial Mapping Renderer を選ぶ

Unity documentation site にて、さらに詳しく、どのようにこれらのコンポーネントを使うのかを紹介しています

ビルドインSpatical Mapping コンポーネントを超える

これらのコンポーネントは、ドラッグアンドドロップで簡単にSpacial Mappingを使うことができます。もしもっと先に行きたいとすると、2つの代表的な方法があります

  • あなたの自己レベルメッシュ処理をして、Low level Spatial Mapping Script APIを見る
  • Higher level mesh analysisをする。Mixed RealityToolKitの、SpacialUnderstangin library を見る

高レベルメッシュ解析 SpacialUnderstanding

Mixed RealityToolKit は、Unity APIsの上にビルドされた、ホログラムの開発に便利な設定コード集です

Spacial Understanding

ホログラムオブジェクトを実空間に置いたときに、しばしばそれはSpacial mappingのメッシュとサーフェスを越えることが望ましい。手続き的に置く動作をした時に、高レベルの環境把握が望ましい。これは、一般的に何が床であるのか、天井か、壁かを決めるときに必要です。さらに、この性能は、ホログラムを置くときに、一番望ましい実空間はどこなのかを決める事に対して最適化されます。

若いトチの実と破片を開発しているとき、Asobo studio は、この目的のための部屋の解析手法について、問題にぶつかりました。 各ゲームそれぞれのニーズがあると。でも、それらはSpacial Mapping technologyのコアの部分を共有していると。 HolotoolKit.SpacialUnderstanding library は、この技術をカプセル化しました。あなたが簡単に、壁の空のスペースを判定し、モノを天井に置く。そして、キャラクタが座るべき場所であるのかを無数の質問に対して判定する。

全てのソースコードがふくまれていて、あなたのニーズによってカスタマイズすることができ、コミュニティとともに改善していけます。C++をする人のコードは、UWP dllにラップされており、MixedRealityToolKitの中に含まれているプレファブをUnity に展開できます。

Understanding Modules

3つの基本的なインターフェースが、モジュール(シンプルなサーフェスや、空間クエリの地形、オブジェクトの形、制限ベースのオブジェクトを置くこと)によって示される。それぞれについては、下で説明します。さらに、3つの基本的なインターフェースである、レイキャスティングインタフェースはタグ付けされたサーフェスタイプや、すきのないプレイスペースのメッシュを回収するときに使われ、コピーできます。

MixedRealityToolKitforUnity wiki - 和訳

自分の勉強のために和訳します

原文

github.com

MixedRealitytoolkit-Unity wikiにようこそ!

  • 現在の推奨するUnity ⇒ 2017.1.2f1
  • 最小限必要なunity -> 5.6.3p4
  • 最新のMixedReality Tool Kit -> 2017.1.1

開発者が簡単に作れるように、ウィキを使おう

  1. コンセプト: ホロレンズと、HoloToolKitのコンセプトをほかの読み物と一緒に理解しよう
  2. シナリオ:HoloToolKitコンポーネントがあなたの開発を助けるシナリオを列挙します
  3. デザイン:HoloToolKitコンポーネントに関連するデザインをシェアします

HoloToolKit Menu

HoloToolKitは簡単に様々な設定を行える、埋め込まれたメニューをunityに提供します


設定する

設定のサブメニューはホロレンズの開発における一般的なプロジェクトとシーンにおける変更を一括で行う機能を提供するものです 変更の詳細については、Unity Development Overviewを参照してください

  • Hololens Scene Settingを適用する

このオプションは、一般的なシーンの調整、すなわち、メインカメラの位置、flagsを空にする、背景色などです

  • Hololens Project Settings

このオプションは、一般的なプロジェクトのセッティング、すなわち、ビルドプラットフォームをD3Dにする、クオリティのデフォルト値をfastistにする、そして、Virtual Reality support for Hololensを有効にします。

  • ShowHelp

Unity Development Overview を、あなたのデフォルトブラウザで表示します

  • sharing Service

shating serviceを実行する機能を提供します

  • Launch Sharing Service

この実行ファイルは、あなたのプロジェクトルートフォルダにあります。これは、Sharing Service Serverがローカルモードのときに立ち上がります

  • Launch Session Manager

簡単に新しいセッションを作り、現在のセッションを見ることができます

  • Launch Profiler

あなたがライブで見ているsharing service plofilerを立ち上げます

  • UAudioTools

このサブメニューは、UAudioToolのための、全てのメニューを含みます

  • Profiler

UAudio objectsにプロファイルを使います

Input

Hololens は、ユーザの視線、ジェスチャー、声、クリックを認識します


視線、カーソル、照準

基本的なことを理解するために、Gazedocumentation と、 Gaze in Unity を読んでください

私たちが実世界の様々な場所を見るように、人、床、もの、ライト、などたくさんの情報を処理します。Mixed reality scenario と、hologramをそこに追加した時に、私たちは、私たちの世界に更に情報を追加したことになります。したがって、大切なモノの情報をユーザーにフィードバックしたり、もしかすると必要に応じてハイライトさせることが非常に重要なです。

Holograms 210 Gaze academy tutorial はさらに詳しくこのコンセプトを紹介します

あなたはホログラムのカーソルを作り、そのカーソルを表示させる方法を知っています。このように、アプリケーションの文脈とユーザーの意図とをつなげます。例えば、もしあなたがホログラムショッピングアプリを作るとしたら、ユーザが商品を見たときに、おそらく”$”マークと値段を表示させるでしょう。そして、違う色もあることを表示させるでしょう。なぜなら、ユーザはその商品を見ているので、おそらく興味があるからです。開発者とデザイナーは、良いカーソルを作って、同様に機能もよくすることができます。

Cursor documentation で、デザインガイドライン と、ユーザーにフィードバックを与える方法を紹介します

ダーツで遊ぶとき、私たちは、小さなターゲットは当てるのに難しいと知っています。同じ理論がホログラムの視線について当てはまります。 ユーザは好ましくない頭の振れが自然に起こり、意図されない周辺環境の動きがあります。 あなたはユーザーのターゲット合わせを、いくつかのターゲット合わせテクニックを調べることができます。 HoloToolKitの中にある、GazeStabilizerは、その中の一つです。

詳細は、Gaze targeting セクションを読んで下さい

ジェスチャー

Gesture Design, Gestures, Gestures & Motion Controllers in Unity を、基本的なコンセプトを理解するために読んでください

HoloToolKit は、あなたにすぐに、基本的な GestureManager スクリプトを提供しています。これは、air -tapジェスチャーをセットアップします

Holograms 211 Gesture academy tutorial は、さらに詳細な、手の検知やフィードバックなどのコンセプトを紹介します。

Voice Design , Voice Input, Voice in Unity を、基本的なコンセプトを理解するために読んでください

HoloToolKitは、KeywordManagerを提供しています。これは、コードブロックが付随する簡単なボイスコマンドです

Holograms 212 Voice academy tutorial は、詳細なコンセプト、声のコンテキストの認知度、音声入力について説明しています

OpenCV2.4.9 を Mac にインストールしてテストする。 Xcode5,HomeBrew

 

 

こんにちは nanaju です。忘備録なのでかなり雑です。

先輩がごりごりopenCVをつかっていて、できたら便利そうだなぁと思い、導入してみました。

ちなみにプログラミングは初心者です。

先人の方のブログを見つつやったのですが、ところどころ違った方法でないと正しくいかなかったので、そこらへんをメモします。

 

お世話になったサイトさま


【OpenCV】OpenCV2.4.7をMacにインストールしてサンプルを動かしてみる - キリンを召還するブログ。


Homebrew でOpenCVをインストールする方法 - Qiita

MacOSX - パッケージ管理システム Homebrew - Qiita

 

Homebrew をインストールする

もう最初から、Homebrewってなんぞや!!って感じだったのですが、3つ目のリンクさまで詳しく書いてあって助かりました。

まずはこの通りにインストールしませう!

書いてある通りに!

 

最後に、

$brew doctor 

を忘れずに。

私はXcodeの規約に同意してなかったので、warningされました。

 

OpenCVをインストールする

Homebrew でOpenCVをインストールする方法 - Qiita

 

この方に従ってみてください!

 

サンプルプログラム

【OpenCV】OpenCV2.4.7をMacにインストールしてサンプルを動かしてみる - キリンを召還するブログ。

このかたの記事の途中からのサンプルプログラムというところからやってみてください!

ですが、私はいろいろと引っかかりました....

 

1 Header Serch Pass どこだよ

Xcodeを初めて使ったので、わからず。 左上、デフォルトではbasicになってますがこれをallにしたら見つかります。

 

/opt/local/include、/opt/local/lib  が有効じゃない

これはちょっとハマりポイントだったのですが、 

Finder で指定して移動しようとしても出てこない... え、もしかしてOpenCVインストールできてない??と思い HomeBrewで確認したら、ちゃんと入ってる。

そこで、このちょっと後にでてくる、ライブラリ名をそのまま ターミナルで検索してみました。

f:id:nanaju:20141007001557p:plain

そしたら、あった。確かにちょっとlib ディレクトリがある場所が違いますね。

lib ディレクトリがあるなら include ディレクトリもあるでしょー

という訳で、ありまして、

この

Header Serch Pass で指定するディレクトリは、以下の画像のようになります。

f:id:nanaju:20141007000057p:plain

 

3ライブラリファイルが探せない!!!

次に

Liblary Search Pass で ライブラリを指定するのですが、リンク指定したい、

ibopencv_core.2.4.9.dylib
libopencv_highgui.2.4.9.dylib
libopencv_imgproc.2.4.9.dylib

が+ボタンを押したリストにはまずブログ執筆者さまのように表示されないのですが、

Add other から直接ファイルを探しにいこうとしても、探せない...

ディレクトリを検索しても出ませんでした。

そこで、Add other から選択するのはあきらめて、

Finder からドラック&ドロップすることにしました。

Finder で、移動からフォルダへ移動を選択し、以下のようにパスを入力してそのまま

/lib に飛びます。

f:id:nanaju:20141007002557p:plain

そして、その中から

ibopencv_core.2.4.9.dylib
libopencv_highgui.2.4.9.dylib
libopencv_imgproc.2.4.9.dylib

を探しだして、ドラック&ドロップして完了です。

f:id:nanaju:20141007002701p:plain

 

これで、後は、

記事に書かれているサンプルプログラムを

main.cppに書いて Build するだけです! (再生マークね)

記事の中に、OS10.7用なので、Target 設定を変えてくださいとありますが、OS10.9では問題なく動作しました。

インカメか起動して自分の顔が映ります(笑)

 

はーやっとできた。

先輩方がやっているようなOpenCVを使った高度なアプリ作成までにはまだ時間がかかりそうですが、

どんどんやって行きたいと思います。

(ペンギンロボのAUV(自立制御型水中ロボット)化がしたい...)

 

KHR-3HVに 新しくサーボを追加して動かす方法

KHR-3HV という近藤科学のロボットが背中にしょっているマイコンで新しく付けるサーボモータをうごかします。

 

 

そもそも、何というコントローラをしょっているのか。

→RCB4というコントロールボードらしい。

 

pin配置はこんな感じ。

 

出典はhttp://robosavvy.com/forum/viewtopic.php?t=7862です。

 

rcb4リファレンスセット

http://kondo-robot.com/faq/rcb-4-reference-ver-2_0

こっちの方が最新

http://kondo-robot.com/faq/rcb-4-reference-ver-2_2

 

 

source/obj/release/RCB-4HV command Generator

 なぜか、RCB-4HV command Generator と RCB-4HV command GeneratorLEがあり、リファレンスには、RCB-4HV command GeneratorLEと表記があるが、エラーでexeファイルを開くことができない。

 RCB-4HV command Generatorwo

を開くと、ハンドルされていない例外があると表示される。

 

 

 

レジストリ値 [HKLM\Software\Microsoft\Fusion!EnableLog] (DWORD) を 1 に設定してください。と出てくる。

スタートでregedit.exeを見つけて、レジストリエディタをだす。

 

ここに、レジストリエディタの使い方があった。

http://esupport.trendmicro.com/solution/ja-jp/1309040.aspx

 

てか、そもそもレジストリって何?

http://www.lifehacker.jp/2010/03/100318registrywtf.html

良さそうなページがあったのですが、理解の範疇を越えました。

 

 

そしたら、実はこれはpcからコントロールする場合だったようで、

今回やりたいのはコントローラから制御だったので、

違う方法でできるとの事。

 

新しいサーボに新しくIDを振り分けて、使えるらしい。

ということで、付属のCDROMについてきたpdfを一通り読み漁ったけれども...!?

...無い。

無い...

 

そしたら実は近藤科学のHPにありました。><

 

KHR-3HVのサーボモータ交換方法を教えて下さい。

 

追記 2014/04

KHRには、デフォルトのサーボから+5軸追加できるようになっています。

そこで、+5軸のサーボを追加して、シリアルの線を伸ばすことで、Heart to Heart でKHRの好きな位置につけたサーボモータが動かせるようになります。