Project North Star Update3 の作成

はじめに

1月に機構がアップデートされたProject North Star Update 3を作ってみました。 きっかけは今年の初めに参加した某ミートアップで結構多くの人が3Dプリンターを所持しているようで私も買わないとこのビッグウェーブに乗れないなと思い、6万ぐらいのプリンターを買いました。買ったプリンターを有効活用したいと思い色々考えて、Project North Starのことを思いつきました。 周りの人の話で、リフレクターを仕上げるのが難しいという話で大変そうだなとは思っていましたが、ちょうど参加したミートアップですでに出来上がったリフレクターが買えるという話を聞き、それなら結構簡単にできるのかもと思い製作を決意しました。

作成の結果感想としては、

  1. パーツのプリントに時間が結構かかる(私のプリンターで1週間ぐらい)。そしてプリントしてたものが歪んでてショックだったことも...
  2. 図面通りのネジ、部品が日本では入手困難なものがある。
  3. 部品が揃えば組み立て、アプリ立ち上げはそんなに大変じゃない。
  4. 自作ガジェット(とは言っても説明書通りに組み上げただけだが)を作った達成感を味わえる。

と言ったところです。

懸念として現在、私が購入したディスプレイのドライバーボード(https://www.smart-prototyping.com/Project-North-Star-Display-Driver-Board)が品切れのようで、すぐに入手できないと思われます。ドライバーボード、ディスプレイ基盤が入手できない場合はexiiiさんが公開されている簡易版(https://exiii.jp/2018/07/19/project_north_star_jp-2/)を製作すると良いと思います。 というか基盤系の入手難易度が理由だか、この記事のようにgithubのProjectNorthStarのレポジトリみて作るほうがマイナー? とりあえず可能な限り忠実にgithubのProjectNorthStarのレポジトリの指示通りに作成しましたが、結構お金かかるのでお気をつけください。 なおPCはWindows10、GTX1070 Max-Qのものを使用して動作確認しました。 また説明が結構適当でメモ書きみたいになっており申し訳ございませんが、不明点があれば質問願います。

材料費

  • 基盤: $80 (約9000円)
  • ディスプレイx2 :$65x2 (約14500円)
  • リフレクター: $40 (約4500円)
  • LeapMotion: 9900円
  • 3Dプリンターフィラメント代: 1000円ぐらい?
  • MiniDisplayPort-DisplayPortケーブル:2000円
  • USB2.0ケーブル:200円
  • ボルトナットスプリング類:計4000円?
  • ジャンパーワイヤー:500円程度?
  • (溶接ヘルメット 3000円)

概算で48700円ですね。もっともジャンパーワイヤーやLeapMotionなど過去に買っていたものを流用したので、実際は3万程度追加で使ったかなという印象です。

手順説明

設計図などのダウンロード

githubのレポジトリを一式ダウンロードします。特にMechanicalのなかの North Star Release 3 3D Files/3D Printing STL.zip にフレームの3Dデータ(.stl)が保存されているので、こちらを解凍します。 GitHub - leapmotion/ProjectNorthStar: The open-source files comprising Leap Motion's Project North Star AR Headset. こちらの部品を揃えていきます。

購入が必要なパーツ

  • LeapMotion: 私は前から持っていましたが、最近はどこで買うのがいいのでしょうか? とりあえずアマゾンでありそうだったので貼っておきます。

Amazon CAPTCHA

  • 基盤(ディスプレイ用のドライバーボード) 左右のディスプレイを接続できるようになっています。またminiDisplayPortを搭載しており、PC側DisplayPortで接続します。 $80かかります。 Project North Star Display Driver Board

  • ディスプレイ(1440x1600) x2
    リフレクタに投影する映像を表示します。こちらが二つ必要です。$65 x 2=$130かかります。 www.smart-prototyping.com

  • リフレクタ 反透過で現実空間を観れる一方、現実空間にディスプレイの映像が重ねられて表示され、AR体験ができます。 こちらは左右で1セットになっています。$40です。 Project North Star Lens

  • DisplayPort Mini - DisplayPort ケーブル 上述基盤とPCを接続します。Smart PrototypingのHPには1mのケーブルが良いということでしたが、2mのケーブルでもいけました。

https://www.yodobashi.com/product/100000001002134414/

  • 5V電圧供給用ケーブル: 基盤に+-のピンが取り付けられており、そこに5V電圧で電力供給する必要があります。お手頃なのは安いUSB2.0ケーブルを買ってきて、USB Aオス側を残して逆側を切断し、電源供給用の線2本をジャンパーワイヤーと接続してピンに取り付けるのが楽だと思います。(USB 2.0ケーブルはなんでも良いと思います。私は秋葉原で200円ぐらいのものを買ってきました)

配線4本のうち、5V電圧の+-となる赤黒のみを使用します(データ転送用の緑白は使いません) なお基盤の販売サイトにも注意書きとして書いてますが、基盤のピン二つの+(赤、MiniDisplayPort側)と-(黒、MiniDisplayPortからみて奥側)の順序を間違えないようにしてください。逆流防止のダイオードは組み込まれておらず、最悪基盤が破損するようです。

f:id:hygradme:20190413144209p:plain
USB 2.0説明

(参考)USB2.0の生贄ケーブルですが、アマゾンで調べたらこの辺りがヒットしました。 Amazon CAPTCHA

今なら単体のものも再入荷しているようです。 Amazon CAPTCHA

3Dプリントが必要なパーツ

3Dプリンターは初心者でいまいち適切な設定がまだわかっておりませんが、 普通にstlファイルをスライスソフトで読み込み、接地面が最大になりそうな方向に回転させ、65mm/s、積層ピッチ0.2mm、ラフトありで印刷しました。 以下がプリントが必要なパーツです。

メインフレーム

  • HMDメインフレーム(110-001) メインとなる部分。ディスプレイ、リフレクターを取り付けるフレームとなります。一番綺麗に印刷したほうがいいパーツだと思います。ちなみに私のプリンターなら分割なしで印刷できましたが、0.2mm積層ピッチで14時間ぐらいかかりました。

  • Facial インターフェース (115-001):おでこと接触するパーツ。

  • Leapmotion固定フレーム(120-001): Leapmotionを取り付けるフレームで、メインフレームの上側に来るパーツです。次に説明する基盤を取り付けるパーツ121-000がその上にきます。

  • 基盤固定フレーム(121-001): 基盤を取り付けるパーツです。 上記のLeapmotionを取り付けるフレームの上にくるパーツです。

  • 基盤固定パーツ(121-002): 基盤のMiniDisplayPort付近を固定するパーツです。ただこれをつけると基盤の5Vピンとぶつかってしまうのと、なくても一応なんとかなるので組み立て時は使用しませんでした。Release3.1バージョンではピンの部分がかけていて、ピンが通せるようになっているみたいです。

  • 上蓋(120-002): 上記の基盤を取り付けたパーツ121-001を上から蓋するパーツです。T265とかD435iとかStructure Coreで6DoF化したり、Mappingしたりする場合はここを差し替えるのだと思います。

  • Display固定パーツ(111-001:左 112-001:右 または 111-002:左 112-002:右) ディスプレイをはめ込み、メインフレームにディスプレイを固定させるためのパーツです。薄くてディスプレイとリフレクターへの距離が遠くなるバージョン(111-001、112-001)と 厚くて距離が近くなるバージョン(111-002、112-002)の選択になります。私は組み立ての部分で述べますが、薄いバージョン(111-001,111-002)を選びました。

頭部側面関連

  • メインフレーム接続パーツ 左右 (113-000,114-000) メインフレーム(110-001)とスライド式の側面パーツを繋げる部分です。スライド機構のレールとなるパーツ(900-005)をM2.5ボルトで固定します。

  • スライド機構用レール(900-005) x2 スライド部分(230-002,240-002)を通して、HMDを前後に調整できるようにするためのレール部分です。図面では6061のアルミニウム合金を使用するよう指定されていますが、加工が大変そうなので、こちらも3Dプリンターで作成しました。なお、レールの断面部分は少し小さめに(1mmぐらい)印刷しないとスライド部分をレールに通した時キツキツとなってしまい可動できなくなるので注意が必要です。

  • レール終端キャップ(110-002)x2 レールからスライド部分が抜け落ちないようにストッパーとなる部分です。

頭部上面固定関連

  • スライド部分(230-002,240-002) レールを通して、HMDを前後調節できるようにするパーツです。

  • スライダー取り付け部分(複合パーツ番号230-000,240-000)

    • 円形状パーツ(220-001) x2
    • 円形状パーツ(220-002)x2
    • S形状のパーツ(230-001,240-001) 左右
    • スライドブレーキ(230-003,240-003) 左右
    • ケーブル止めフック(230-004,240-004) 左右
  • 頭部上面メインパーツ(210-001) おでこ辺りの1/4ドーム形状のパーツです。

  • 頭部上部頭側パーツ(210-002) 上の1/4ドーム形状のパーツの内側に取り付けるパーツです。本来はウレタンフォームなどをここに挟んで頭へのクッションにするものと思われます。 なおこちらのパーツ印刷後にドーム形状のパーツに沿うように曲げないといけませんが、私はコンロで炙りながら少しづつ曲げました。

組み立て

基本は図面通りに組み立てていけば大丈夫です。 私は以下の順に組み立てました。(NorthStarの図面を転載)

  1. 左右のレール部分を組み立て

    f:id:hygradme:20190419213918p:plain
    sideframe

  2. メインフレームにディスプレイ、左右のレールを取り付け
    なお図面中の3番(690-001)の特殊なナット(加熱しながら部品の穴に入れると溶けて入り込む)が入手できなかったため、薄いバージョンを選び、4箇所の穴を少し広げ、ディスプレイ側からM2のナットを入れ、メインフレーム側からM2x8mmボルトで固定しました。なお図面でM2.5ボルトとM2.5の特殊ナットを使うペアが何箇所が出てきますが、ナットが手に入らないため全て無視しました。
    f:id:hygradme:20190419221221p:plain
    f:id:hygradme:20190419220242p:plain

  3. 基盤を基盤用の台に取り付け
    f:id:hygradme:20190419220301p:plain

  4. 基盤の台をLeapMotionを搭載する上側フレームに取り付け、上蓋で閉じる。上蓋で閉じる前に基盤へMiniDisplayportを繋いで、上蓋の溝にケーブルを合わせて閉じるとケーブルがすっぽり埋まって良い。
    f:id:hygradme:20190419220359p:plain

  5. 上側フレームをメインフレームに取り付け。
    f:id:hygradme:20190419220523p:plain

  6. レールに通すスライダーの作成(左右対称)
    f:id:hygradme:20190419220633p:plain

  7. 頭の上に乗るドーム部分の作成。なお3,4番はそのままつけるのではなく、6で作成したスライダーの穴に通してからつけるものと思われる。
    f:id:hygradme:20190419215037p:plain

  8. スライダー部分とメインフレーム部の結合
    f:id:hygradme:20190419220659p:plain

完成図 f:id:hygradme:20190419213145j:plain

なお図面の通りに組み立てて完成させても、頭に組み立てたNorthStar一式を固定することができず、ヘルメット形状の何らかの支えが必要になります。 他の方もよくやっているようですが、溶接ヘルメットの頭部固定部分を流用しました。 なお面の部分無しバージョンが配達に時間がかかるようで、一方面付きのバージョが3000円でしかもPrimeで買えるのでこちらを買いました。面はそのうち溶接したくなった時に有効活用します。

ディスプレイの接続確認

ディスプレイドライバーをMiniDisplayPort経由でPCに接続および電源をUSBなどで供給(PCなどのUSBポートですと電力供給不足でディスプレイがチカチカするだけで起動しないなどのことがあるので、USB電源アダプター経由で電源供給してください。なお私は当初5V-2.4Aのアダプタを使おうとしていましたが、電力供給が足りないらしく5V-3Aのものを追加購入しました。当初は5V-2AのアダプタとUSBケーブルを二つ用意し、並列でつなぎ電流をあげていましたが、試行錯誤しているうちにケーブルを買い換えたのもあるのか、5V-3A、USBケーブル1本で供給が十分になりました。

ディスプレイがしっかりと表示されたら、PCからNorthStarのディスプレイ2枚が1枚の追加ディスプレイとして認識されているはずです。ディスプレイ設定で「ディスプレイの拡張」を選択してください。 PC側ではNorthStarの2枚のディスプレイを1枚と認識しており、ここに真ん中で半分に分かれた映像を表示し、それが左右のリフレクターにそれぞれ投影され立体的に見えるという仕組みです。スマホVR・ARの仕組みに近いと思います。

アプリ起動

LeapMotionのドライバーのダウンロード

必ずLeapMotionのgithubのページのzipを解凍してexeを実行してインストールしてください。(公式サイトのものだと動かなかったです) 確認時点ではLeapDeveloperKit_4.0.0+52238_win.zipというファイル名でした。 UnityModules/Multidevice Service at feat-multi-device · leapmotion/UnityModules · GitHub

Unity2018.2 以降?のダウンロード

2018.2以降が必要であることが、Project North Starのレポジトリのページに記載されています。

LeapMotionのUnity Plugin(unitypackage)のダウンロード、プロジェクトへの読み込み。

githubのProjecrNorthstarページからpackageをダウンロード、Unityプロジェクトにインポートしてください。 github.com

サンプルシーンはAssets->Plugins->LeapMotion->North Star->Scenes->NorthStarです。

キャリブレーション

ヒエラルキーのAR CameraRigのwindow Offset ManagerのX Shiftの値を変更して、NorthStar実機のスクリーン上にゲームシーンが表示されるように調節してください。 値変化後にMove Game View to Headsetを押すことで画面を表示することができます。(押せば押すほどゲームビューが増殖するので、適宜Close all Game Viewsを押してゲームビューを消してください。

また、AR CameraRig->Head -> Leap Providerのxyzを変更することで、手の表示位置を調整することができます。

おまけ

とりあえず間も無く新しい時代がやってきますが、それを記念して元号の手話(平成、令和)を識別するジェスチャーを作ってみました。

Daily Routine Manager Privacy Policy

Privacy Policy

hygradme built the Daily Routine Manager app as a Free app. This SERVICE is provided by hygradme at no cost and is intended for use as is.

This page is used to inform visitors regarding my policies with the collection, use, and disclosure of Personal Information if anyone decided to use my Service.

If you choose to use my Service, then you agree to the collection and use of information in relation to this policy. The Personal Information that I collect is used for providing and improving the Service. I will not use or share your information with anyone except as described in this Privacy Policy.

The terms used in this Privacy Policy have the same meanings as in our Terms and Conditions, which is accessible at Daily Routine Manager unless otherwise defined in this Privacy Policy.

Information Collection and Use

For a better experience, while using our Service, I may require you to provide us with certain personally identifiable information, including but not limited to None. The information that I request will be retained on your device and is not collected by me in any way.

The app does use third party services that may collect information used to identify you.

Link to privacy policy of third party service providers used by the app

Log Data

I want to inform you that whenever you use my Service, in a case of an error in the app I collect data and information (through third party products) on your phone called Log Data. This Log Data may include information such as your device Internet Protocol (“IP”) address, device name, operating system version, the configuration of the app when utilizing my Service, the time and date of your use of the Service, and other statistics.

Cookies

Cookies are files with a small amount of data that are commonly used as anonymous unique identifiers. These are sent to your browser from the websites that you visit and are stored on your device's internal memory.

This Service does not use these “cookies” explicitly. However, the app may use third party code and libraries that use “cookies” to collect information and improve their services. You have the option to either accept or refuse these cookies and know when a cookie is being sent to your device. If you choose to refuse our cookies, you may not be able to use some portions of this Service.

Service Providers

I may employ third-party companies and individuals due to the following reasons:

  • To facilitate our Service;
  • To provide the Service on our behalf;
  • To perform Service-related services; or
  • To assist us in analyzing how our Service is used.

I want to inform users of this Service that these third parties have access to your Personal Information. The reason is to perform the tasks assigned to them on our behalf. However, they are obligated not to disclose or use the information for any other purpose.

Security

I value your trust in providing us your Personal Information, thus we are striving to use commercially acceptable means of protecting it. But remember that no method of transmission over the internet, or method of electronic storage is 100% secure and reliable, and I cannot guarantee its absolute security.

Links to Other Sites

This Service may contain links to other sites. If you click on a third-party link, you will be directed to that site. Note that these external sites are not operated by me. Therefore, I strongly advise you to review the Privacy Policy of these websites. I have no control over and assume no responsibility for the content, privacy policies, or practices of any third-party sites or services.

Children’s Privacy

These Services do not address anyone under the age of 13. I do not knowingly collect personally identifiable information from children under 13. In the case I discover that a child under 13 has provided me with personal information, I immediately delete this from our servers. If you are a parent or guardian and you are aware that your child has provided us with personal information, please contact me so that I will be able to do necessary actions.

Changes to This Privacy Policy

I may update our Privacy Policy from time to time. Thus, you are advised to review this page periodically for any changes. I will notify you of any changes by posting the new Privacy Policy on this page. These changes are effective immediately after they are posted on this page.

Contact Us

If you have any questions or suggestions about my Privacy Policy, do not hesitate to contact me.

This privacy policy page was created at privacypolicytemplate.net and modified/generated by App Privacy Policy Generator

今年のガジェット

2018年も終わろうとしていますが、今年購入したガジェット、よく使ったガジェットについて整理したいと思います。

新規購入ガジェット

1月

  • なし

2月

3月

4月

  • FirstVR

5月

6月

  • HTC Vive Tracker 2.0 x3
  • 指向性スピーカー
  • Intel RealSense D435

7月

  • HTC Vive Pro Fullset
  • Giiker

8月

9月

  • なし

10月

  • Vuzix Blade

11月

12月

  • Line Clova
  • Clova Friends Dock
  • WebCam
  • Tello
  • Wireless earphone
  • Realsense D435i

よく使用したガジェット

  • iPhoneX
    メインスマホ。2017年に購入。自身初のiOSスマホをメインに使用。Androidに比べてレスポンスの良さ、背面デュアルカメラによるポートレート撮影、TrueDepthによる顔認証、3Dスキャン、AirDropを始めとする他のMac製品との連携などは便利で良い。 一方、ウィジェットが自由に配置できない、PCとつないで自由にデータを出し入れしずらい、アプリ開発に制約がある(アプリがバックグラウンドになっているとき音・バイブレーションを自由に選べない、実機でアプリをテストするときにxcodeを経由しないといけないなど不便なところはある。 全体として、メインに使うには良いスマホである。当分メインで使用する予定。

  • Hololens
    2017年前半に購入するが、作りかけのアプリを3個ぐらい放置した状態で2017年は終わってしまう。2018年後半にHoloDartAssistantをとりあえず仕上げストアにリリース。おかげで知り合いが結構増えた。アウトプットの重要性を再認識する。

  • Mirage Solo
    2018年のGWあたりに購入。初のスタンドアロン6DoFのVRバイスで購入時感動し、コントローラーが3DoFにも関わらず卓球アプリTableTennis6DoFをDaydreamStoreにリリース。ダウンロード数は自分が出したアプリの中では最高記録を達成したが、UIUXの悪さ、非対応デバイスのインストールによる不満等もあり評価はかなり低くなってしまった。6DoFコントローラーが来年一般販売されたら改良してより使いやすくしたい。

  • Macbook Pro 13inch
    2017年後半に購入。開発のメインPC。選定理由はiOSアプリ開発Macが必須だったため。Hololensアプリ開発にも使用するためParallel DesktopでWindows Proを入れてWindowsとしても使用。持ち運び便利で不満はあまりない。あえて言うならVRバイス用のマシンとして使えない、ディープラーニングの学習を行う・フォトグラメトリするにはスペックが足りないぐらい。NvidiaGPU搭載版が出てくれたらな.... 一応外付けGPUも試したが、取り外しはシャットダウン時のみ、持ち運びでしづらい、Macのアップデートで使えなくなる等の問題があり実用性が低いと感じた。

  • 自作PC (with GTX 1080) Windows Pro とUbuntu
    2017年後半に購入。ディープラーニング用に購入したが、2018年前半はなぜかマイニングをひたすらさせ一ヶ月の電気代が4000円上昇すると言う事件が発生。仮想通貨の価格暴落によりマイニングは停止。2018年半ばからフォトグラメトリ用マシンに変わり、終盤はディープラーニング用に復帰。

  • Pixel3
    11月上旬に到着。基本は2枚目のsimカードで出先でのテザリング用。暗所での写真撮影が極めて綺麗。またAndroidなのでクラウド上のLinuxマシンにアプリから接続し機械学習の学習状態を確認できるのが良い。DaydreamもARCoreも対応なのも良い。

  • iPad Pro10.5と Apple Pencil
    2018前半に購入。iPad2を前に購入してサーフェイスに乗り換えてからずっと使っていなかったが、メイン機をMacbookに変えてからペンが使える文章閲覧端末が必要だと思って購入。 Apple Pencilの書きごごちはかなり良い。iPad2時代にペン先に透明のディスクがついているペンとか筆とかで頑張ってた時に比べ圧倒的に便利になった。一方後半に発表されたiPad Pro 11inchはFaceID、TypeC、ペンの充電方法改善などでさらに便利になっているようでそちらを待っても良かったかなとも思っている。

  • Structure Sensor
    2018中盤に購入。3Dスキャンに前から興味があったのでiPad Proで使用できる物を購入した。itseez3Dによって手軽に様々な物をスキャンできて便利。なおそのあとフォトグラメトリも着手し始め、GTX1080で計算に結構時間がかかってしまうが、意外と綺麗に3Dモデルを作成できることがわかり、状況によってどちらを使用するかの見極めを行う必要があると思っているところ。

  • Line Clova とClova Friends Dock
    去年Google Assistantをラズパイに入れてスマートスピーカー買う必要ないなと思っていたが、赤外線対応など実現できていない部分があったのでスマートスピーカーの既製品を購入。 キャンペーンでClovaが3000円程度で変えて、Dockも含めて7000円程度で揃えられた。部屋のエアコン、電気、目覚まし、外から家電の遠隔操作などができ急速にIoT化を進めることができた。

来年使用・購入予定のガジェット

  • Looking Glass
    今年は間に合わなかったが、年明けすぐに到着する予定。何に使えるかは要検証だがかなり気になっている。

  • Qrio Lock等スマートロック系
    Line Clovaが対応したら部屋の鍵をスマートロックにしたい。

  • Oculus Quest
    コントローラー6DoFはかなり魅力的。初のOculus製品の購入になりそう。

  • Hololens2?
    出たら必ず買う。端末で機械学習の推論が結構できるようになるとの噂があるので期待。

  • xArm
    Kickstarterで20万以上投入。予定通りなら2019年4月発送らしい。2019はロボット制御にも足を踏み入れたい。

  • Vuzix Blade
    流石に2019には技適通るだろうから、そしたら色々実験したい。

  • Magic Leap
    とりあえず試してみたい。

  • Tello PayPayに便乗して購入。プログラムによるドローン制御はやってみたい。

HoloDartAssistant Privacy Policy

Privacy Policy

hygradme built the HoloDartAssistant app as a Free app. This SERVICE is provided by hygradme at no cost and is intended for use as is.

This page is used to inform visitors regarding my policies with the collection, use, and disclosure of Personal Information if anyone decided to use my Service.

If you choose to use my Service, then you agree to the collection and use of information in relation to this policy. The Personal Information that I collect is used for providing and improving the Service. I will not use or share your information with anyone except as described in this Privacy Policy.

The terms used in this Privacy Policy have the same meanings as in our Terms and Conditions, which is accessible at HoloDartAssistant unless otherwise defined in this Privacy Policy.

Information Collection and Use

For a better experience, while using our Service, I may require you to provide us with certain personally identifiable information, including but not limited to None. The information that I request will be retained on your device and is not collected by me in any way.

The app does use third party services that may collect information used to identify you.

Link to privacy policy of third party service providers used by the app

Log Data

I want to inform you that whenever you use my Service, in a case of an error in the app I collect data and information (through third party products) on your phone called Log Data. This Log Data may include information such as your device Internet Protocol (“IP”) address, device name, operating system version, the configuration of the app when utilizing my Service, the time and date of your use of the Service, and other statistics.

Cookies

Cookies are files with a small amount of data that are commonly used as anonymous unique identifiers. These are sent to your browser from the websites that you visit and are stored on your device's internal memory.

This Service does not use these “cookies” explicitly. However, the app may use third party code and libraries that use “cookies” to collect information and improve their services. You have the option to either accept or refuse these cookies and know when a cookie is being sent to your device. If you choose to refuse our cookies, you may not be able to use some portions of this Service.

Service Providers

I may employ third-party companies and individuals due to the following reasons:

  • To facilitate our Service;
  • To provide the Service on our behalf;
  • To perform Service-related services; or
  • To assist us in analyzing how our Service is used.

I want to inform users of this Service that these third parties have access to your Personal Information. The reason is to perform the tasks assigned to them on our behalf. However, they are obligated not to disclose or use the information for any other purpose.

Security

I value your trust in providing us your Personal Information, thus we are striving to use commercially acceptable means of protecting it. But remember that no method of transmission over the internet, or method of electronic storage is 100% secure and reliable, and I cannot guarantee its absolute security.

Links to Other Sites

This Service may contain links to other sites. If you click on a third-party link, you will be directed to that site. Note that these external sites are not operated by me. Therefore, I strongly advise you to review the Privacy Policy of these websites. I have no control over and assume no responsibility for the content, privacy policies, or practices of any third-party sites or services.

Children’s Privacy

These Services do not address anyone under the age of 13. I do not knowingly collect personally identifiable information from children under 13. In the case I discover that a child under 13 has provided me with personal information, I immediately delete this from our servers. If you are a parent or guardian and you are aware that your child has provided us with personal information, please contact me so that I will be able to do necessary actions.

Changes to This Privacy Policy

I may update our Privacy Policy from time to time. Thus, you are advised to review this page periodically for any changes. I will notify you of any changes by posting the new Privacy Policy on this page. These changes are effective immediately after they are posted on this page.

Contact Us

If you have any questions or suggestions about my Privacy Policy, do not hesitate to contact me.

This privacy policy page was created at privacypolicytemplate.net and modified/generated by App Privacy Policy Generator

Mirage Solo 向けアプリを Daydreamで配信する

はじめに

Mirage Solo買った当初から「これからはスタンドアロン6DoFのVRの時代だ」と思い、もっと練習したいなと思っている卓球を題材にアプリを作りました。 コントローラーは3DoFで色々と不便なところはありますが、せっかく作ったのでとりあえずアプリ公開してみました。

Daydreamアプリの公開は経験がなく、日本語情報も(悲しいことにストアのコンテンツ数も...)少ないので何かと苦労するかと思い、雑ですが公開に当たってつまずいたことをまとめます。

環境

作成したアプリ:

https://play.google.com/store/apps/details?id=com.yhrscoding.TableTennisDaydream

www.youtube.com

アプリの申請方法

基本的には通常のAndroidアプリのようにgoogle play consoleでapkをアップロード、説明文、画像を入れて公開です。
しかし、通常のAndroidアプリと異なりDaydream向けの配信はgoogleの審査が必要です。審査基準は以下の公式サイトに乗っています(英語です)
https://developers.google.com/vr/distribute/daydream/publishing-requirements

ボタン等をHMDの向き等ではなく、コントローラーでクリックするとかDaydreamロゴを使わないといったことを除けば、Daydream向けアプリ固有で必要な設定はおおよそ以下になると思います。

1. Daydreamにアプリを配信することを示す
Google Play Console上で、ストアでの表示 -> 価格と配布 -> ユーザープログラム -> Daydream -> Daydreamにアプリを配信しますにチェック(ここにチェックが入れば更新のたびに審査に自動でかけられるようです)

2. 公開するアプリの頭の動きの激しさを示す(VR酔いの原因となるとされる実空間の動きとVR空間の動きの乖離が自分のアプリにどれだけあるかで回答が変わります)
Google Play Console上で、Daydream->動きの有無で公開予定のアプリの動きの激しさを3段階のどれかにする。なお頭の動きの激しさについては、審査基準のページに書いてありました。

Virtual motion is a major contributor to user discomfort in VR applications. Virtual motion is defined as changing the position or rotation of the user's virtual head position (and hence camera) without the user performing those movements using their own head at 1:1 scale. ...

とりあえず以下のような大まかなまとめです。コントローラーの動きの激しさは関係なく、要はユーザーに見える景色がユーザーの頭の移動以外でどれだけ変化するかでレーティングが変わります。

  • ユーザー自身が頭を動かしたことでVR空間上でも同距離だけ頭が移動する通常のmotionだけならランクは一番下の No Motion (0 degrees of freedom)
  • 平面上の移動をコントローラで行うようなアプリ(ユーザーの頭の動きではなく、コントローラー等の操作がVR表示の変化を起こす)かつ移動に急な加減速を含まないアプリはModerate Motion (2 degrees of translated virtual motion)  
  • 急な加減速、2自由度を超える動作を含むアプリはIntense Motion (2+ degrees of virtual motion)

    例として、今回の卓球のアプリのように、ユーザーの頭の位置がそのまま反映されるだけのアプリはNo Motion。エレベータのボタンを押すと昇降したり、ボタンを押せば前に進むようなアプリはModerate Motion。激しい加減速を含むジェットコースターや、アップダウンのあるコースを動くスキーのアプリなどはIntense Motion。という感じになるようです。

3. VRアイコンをアプリで設定する
Unity上でPlayer Settings -> XR Settings -> Virtual Reality SDKs -> Daydreamで「Foreground Icon」 と 「Background Icon」にそれぞれ画像を設定しなければいけません(Foreground Iconが背景透明な浮き出たせたいものの画像、Background Iconはその他の背景?のようです)

4. 全天球キャプチャー画像をアップロードする
Google Play Console上で、ストアでの表示 -> ストアでの掲載情報 -> 画像および映像 -> Daydreamの360度立体画像 に4096x4096の全天球画像(4096x2048の同じ画像を上下に配置して4096x4096でOK)をアップロードします。
なお全天球キャプチャーは以下のアセットを使いました。
https://assetstore.unity.com/packages/tools/camera/360-screenshot-capture-112864

使い方は以下のレポジトリのreadmeに書いてあるコードをほぼそのままスクリプトに貼り付け、ゲームオブジェクトにアタッチしてその関数を呼び出せば360画像が保存されます。(保存先はログに出てきます)
https://github.com/yasirkula/Unity360ScreenshotCapture

補足

全天球画像を上下に並べるのは以下のアプリ(mac)を使いました。(mac標準搭載の画像のビュアーの編集機能を使って並べることもできるようですが、微妙に上下の配置がおかしかったらしく、1回目のリジェクトの1項目になってしまったのでアプリで正確に並べました。)
https://itunes.apple.com/jp/app/hua-xiangno-dakisawo-jianete/id980577198?mt=12&ign-mpt=uo%3D4

1回目の審査結果

以下の4つの理由によりリジェクト

App eligibility issues:
  • Daydream app has a 360 Stereoscopic image The app must include one 360-degree stereo image to indicate it is a Daydream app. The majority of the image provided is not lined up properly causing double vision for the user. This issue is especially apparent when looking left, right, and down.
    -> 上述のストアの掲載情報の360度立体画像に関する指摘。上下が微妙にずれているよということらしい。上述のアプリでしっかりと揃えました。
APK Version(s) Eligibility Issue
  • The app does not use the Daydream controller properly The app makes use of head gaze when menu UI are present. For more information about controller guidelines, please see the Daydream App Quality Requirements.
    -> UIボタンをクリックする際にコントローラー+HMDの向きの両方が操作手段として入っているという指摘のようです(Canvas にGvrPointerGraphicRapycasterだけでなく、GraphicRaycasterもアタッチされたままだったため)。これを受けてGraphicRaycasterを無効にしました。
  • The app is missing a VR icon The app is missing a VR icon or the icon does not meet our requirements. The VR icon contains the Unity logo as a placeholder image. Guidelines and requirements for the assets can be found in the Daydream App Quality Requirements.
    -> VR iconが無い(Unityロゴが出てるぞ)との指摘。上述のForeground IconとBackground Iconを設定しないといけない。審査基準読んでいなかったために指摘された凡ミス。アプリのスクショを2つとってgimpで背景除去した物をForeground Iconにもう一つをBackground Iconに設定しました。
f:id:hygradme:20180804022610p:plainf:id:hygradme:20180804020539p:plainf:id:hygradme:20180804020430p:plain
  • Motion Intensity Rating You must correctly select one of three Motion Intensity levels for your app. For descriptions of the Motion Intensity levels, please see the Daydream App Quality Requirements.
    -> アプリの動きの激しさに関する自己申告を3段階中一番激しいものにしたがそんなに激しく無いという評価を受けたようだ。とりあえず一つ下のランクに変更した(ここで上の審査基準を読んでおけばよかった... 再度リジェクト食らう結果になった...)

2回目の審査結果

APK Version(s) Eligibility Issue
  • App does not maintain high performance with 6 degrees of freedom The app does not meet our performance standards for standalone devices. Make sure you are not enabling v-sync.
    ->アプリが6DoFでハイパフォーマンスを維持できないから、v-syncを無効化しろということらしい。とりあえず、Edit -> Project Settings -> Quality -> Others の「V sync Count」を「Every V Blank」から 「Don't sync」に変更しました。

  • Motion Intensity Rating App experience does not match with Motion Intensity needs to be set as No Motion. You must correctly select one of three Motion Intensity levels for your app. For descriptions of the Motion Intensity levels, please see the Daydream App Quality Requirements.
    -> アプリの動きの激しさに関する自己申告を3段階中真ん中のものにしたら、またもや間違えで今度は親切に「君のアプリはNo Motion」だと言われた。ここで審査基準をしっかりと読んでやっと理解した。

3回目の審査結果

Thanks for submitting your app for Daydream. We accepted TableTennis6DoF ...

無事審査を突破しアプリがDaydreamに配信されました。

Google Duplexのまとめ

Google Duplex

はじめに

ユーザーの代わりに電話予約を行ってくれるというGoogleのAIシステム(Google Duplex)が発表されました。 デモの動画を見て、これはすごそうだと思ってgoogleのブログを読んで見ました。要点をまとめます。

元サイト: ai.googleblog.com

概要(Duplexとは)

  • 電話上での現実世界のタスクを実行する技術。
  • 可能なかぎり自然に会話することで、人も機械に合わせることなく応答できる。
  • 閉じた環境(レストランの予約や散髪の予約等の特定のシチュエーションに絞って)で使用する。
  • ヘアーカットの予約・レストランの予約(デモ参照)
    • ヘアーカットの例: (Duplex) 3rd Mayに予約したい。
      (店員)何時に?
      (Duplex) 12PM
      (店員)12PMは無理。最速で1:50PMなら可能
      (Duplex)10AM-12PM はどう?
      (店員)サービスによるけど何をご希望?
      (Duplex)女性のヘアーカット
      (店員)10AMならOK
      (Duplex)じゃあ10AMでお願い。
      (店員)ファーストネームを教えてください。
      (Duplex)リサ
      (店員)確認のため予約内容を復唱...

Duplexの特徴

  • 理解、振る舞い、タイミング、発話の工夫でDuplexは自然に聞こえる。
  • RNNをベースにしている。TFX(TensorFlow Extend)でハイパーパラメータ最適化を行う。
  • 匿名化された電話の会話コーパスをトレーニングに使った。タスクごとに別々のモデルとして学習したが、タスク間でコーパスの共有は行った。
  • ASR(automatic speech recognition)を使用(音声、会話履歴、会話のパラメータに関して)

自然に聞こえる

  • TacotronとWaveNetを用い、イントネーションを制御するため、TTS(text to speech)と音声合成を行った。
  • 相槌(hmmとかuh)を入れて、自然に聞こえるようにした。(処理中であることを自然に伝えることができる)
  • 応答までの時間を人の期待に合わせることが重要。 簡単な返答を求められたとき(helloとか)は、高速で低信頼のモデル利用。難しい返答は応答までの時間を置くと より自然に聞こえる。

システムのオペレーション

  • 人の介入なしに完全自動で応答することができる。もし自動で応答できないと判断したときは(通常でない複雑なスケジューリングとか)、対応できる人間のオペレータにつなぐ。
  • システムを新たな領域で訓練するときは、リアルタイム教師あり学習 を実施した。
  • Duplexでは経験のあるオペレータが教師として訓練を行う。応答中都度必要があれば、オペレータがーシステムの振る舞いに干渉する。これを応答が十分なクオリティに達するまで続ける。

Duplex利用のメリット

  • 客に予定のリマインドをし、同時にキャンセルやリスケジューリングを簡単にさせることを可能にし、連絡なしキャンセルを防ぐことができる。
  • 非同期にビジネス者側とユーザーのコミュニケーションを行うことができるようになる。営業時間外や電話できない時でも予約リクエストを行い、 Duplexが代わりに予約を取ってくれる。耳の不自由な人や現地語を喋れない人でも電話予約が可能になる。

その他

  • この夏に「レストランの予約・ヘアサロンの予約・休日の問い合わせ」のタスクに関して、googleAssistantを使ってDuplex技術の実験を開始する。

まとめ

  • ヘアーカットやレストランの予約は人間がやってるんじゃないかと疑いたくなるクオリティの高さ。
  • 汎用的な応対ができるシステムではなさそう。特定のシチュエーションに特化することで自然な会話感を出している模様。
  • 質問の回答難易度でモデルを切り替えるというのは面白い発想。どうやって切り替えるのかの判定が難しそうではあるが...
  • リアルタイム教師あり学習のやり方が気になる。誤りをその都度訂正していくとのことだが、効率的にやるのは難しそう。
  • この夏はレストランに電話予約が殺到し、電話で散髪のための予約をする人がやたら増え、休日がいつかを問い合わせる電話が殺到しそうw

機械学習セミナー参加記録(某有名企業主催)

プレゼンテーションとポスターセッションがあった。

(一つ目) 発表者:大学の先生

出力種類が複数あるタスクの効率的な学習の進め方に関する研究。

重み付きヘテロジニアスマルチタスクラーニングという手法を提案。
Task-wise early stopping:条件を満たしたタスクの学習を停止
例えば目・鼻・口を検出する教師あり学習をする場合に、目の検出精度が高くなったが、鼻・口の精度が高まらないときに、目のネットワークの学習率を落とし(止めて)、鼻・口の学習を重点的にさせると言った工夫を行う。
またGAN+属性推定(男・女、笑っている、メガネかけているなど)を別の入力して投入するマルチタスクで、 生成する画像の特定の属性を操作することができるようになる。
例:男かつ笑っていない生成画像と笑っている生成画像をパラメータを一ついじり変化させることができる

参考論文:
http://personal.ie.cuhk.edu.hk/~ccloy/files/eccv_2014_deepfacealign.pdf
DSSD:複数の層から予測を行うマルチタスクな物体検出
https://arxiv.org/pdf/1701.06659.pdf

(二つ目)発表者:主催企業の従業員

アノテーション作業の負担軽減に関する研究

1、RNNを使ってアノテーションを半自動化する手法
矩形で物体を囲むとその物体の詳細な境界を自動で表示してくれる。しかも点群で囲まれるので、アノテーションが間違っている場合、手動でその点を動かしてより良いアノテーションに修正することができる。またアノテーターが複数人いる場合に必ず発生してしまう囲み具合の個人差を少なくすると言った作業平準化にも役立つ可能性あり。
->データの質向上にも
参考論文:
https://arxiv.org/pdf/1704.05548.pdf

2、様々センサーを組み合わせて教師データを自動作成する。 (センサー間の情報統合作業、すなわちキャリブレーションが難しいらしい)
参考論文:
https://arxiv.org/pdf/1610.01238.pdf
https://pdfs.semanticscholar.org/ed15/5d1a146e0cba6be98fd7128461439f88732a.pdf https://pdfs.semanticscholar.org/1f97/022c8c826c1eb51de9e810d3dd07620fc902.pdf

コメント:金ないとできない…

3、CGによる学習データ自動生成
UnityやUnrealEngineで教師データを作成する手法に関する研究。自動車に関しては、イノシシが飛び出してきた場合の検出や、人が飛び出してきた場合の検出等、実物ではなかなか実現できないシチュエーションを簡単に作成できるメリットがある。ただし、CGのクオリティによって作成された教師データの質が変化する模様。
参考論文:
http://refbase.cvc.uab.es/files/RSM2016.pdf
https://arxiv.org/pdf/1612.02401.pdf

4、GANで教師データを作成する方法
あまりよくわからなかったが、車をアノテーションする場合に、車の画像をGANで生成し、アノテーションに使う(セグメンテーションされた画像もペアとしてGANで生成?)
参考論文:
GANをSemantic segmentationに応用した方法:
https://arxiv.org/pdf/1703.09695.pdf
視線検出タスクにGANとCGを組み合わせた方法:
https://arxiv.org/pdf/1612.07828.pdf

ポスターセッション(内容のみ)

  • 半導体をAIで生成 (専門外でよくわからなかった)
  • 強化学習の事例紹介(印象に残ったのは多関節ロボットに強化学習でフリースローを学習させるというもの。何百回かトレーニングして、フリースロー成功率を100%にしたらしい)
  • seq2seqの出力を変えて、seq2move?のようなものを作成したというもの。(移動指示を文で入れるとロボットの動き(関節移動角など)が出力されるというもの)
  • AIの品質・法的責任?(専門外でよくわからなかった)

総評

主催企業のリクルーティング目的のセミナーだと思っていたが、発表の質は高い・無料・食事だったのでかなり有意義であった。 アノテーションを自動化するツールは試してみたい。フリースローの実演を見て見たい。