ページ

2017年4月2日日曜日

ロボットの世界大会、MBZIRC2017のドローン自律制御部門に出場してきました

ロボットの世界大会、MBZIRC2017のドローン自律制御部門に、社会人サークルProject C.G.Sとして出場してきました。


思い返せば、かれこれ1年半ほどこの大会に向けて開発を続けてきました。チームとしてもUAVの自動制御は初の試みだったのもあり、並みいる有名大学や企業に混じって何とか出場に漕ぎ着けるので精一杯で、チャレンジの結果は非常に悔いの残る結果になってしまいました。

技術的には突飛なものを使っているわけではなく、特筆するべきアルゴリズムもないので技術ブログしてはコンテンツ不足ではあるのですが、この1年半のけじめをつける意味でもここにまとめを残しておこうと思います。

もしこの記事がこれからドローンの自律飛行を始める方の助けになれば幸いです。

出場した大会について


MBZIRC 2017はMohamed Bin Zayed International Robotics Challengeの名の通り、UAEの首都Abu Dahbi首長国の皇太子が主催したロボット大会です。


大会はAbu DahbiのYas島にあるYas Marina Circuitにて行われました。
※正確にはサーキットの敷地内のCar Display Areaにネットで囲まれたアリーナが敷設され、そこでコンテストが行われました


各チームには電源、冷房完備のテントが割り当てられました。また、昼食や水の配布、ドラッグカーの余興付きのレセプションなど、参加費が無料なのにも関わらず非常に素晴らしい待遇を受けました。さすが石油王ですね!


大会は3つのチャレンジに分かれており、Project C.G.SはこのうちChallenge 1に出場しました。Challenge 1では、着陸ランドマークが描かれた鉄板を上に載せた自動車が8の字に走っており、その上にドローンを着陸させるまでの時間を競います。


大会としてはFPVなどを使った無線操縦も認められているのですが、我々のチームは得点の高い完全自律操縦にチャレンジしました。この場合、スタートの合図でロボットをスタートさせたあとは一切の手動オペレーションが認められず、ドローンは離陸、着陸ランドマークの探索、着陸アプローチ、着陸後にプロペラ停止までを全て自動で行います。

機体について


Project C.G.SではUAVの開発経験がなかったので、機体に関してはなるべく既製品を流用し、一般的な構成になるようにしました。

フレームBumblebee Carbon Fiber Quadcopter Frame 550mm
ランディングギア自作
フライトコントローラPixhawk (PX4 Flight Stack 1.4.4)
受信機Futaba R3008SB
ESCARRIS SIMONK 30A 2-6S OPTO
モーターSunnysky v2216 kv800
プロペラATG1238 (APC 12x3.8SF相当品)
高度センサLidarLite v3
GPSUblox Neo-M8N GPS with Compass
コンパニオンコンピュータOdroid (Ubuntu 16.04)
USBシリアル変換自作(PixhawkのTELEM2に接続)
USB無線LANELECCOM WDC-433DU2HBK
カメラoCam-1MGN-U
電磁石コントローラ自作(GPIOに接続)
電磁石ZYE1-P20/15
PDBPower Distribution Board with 2 x UBEC Output
DC-DCHobbyking HKU5 5V/5A UBEC
バッテリー x2Multistar LiHV 5200mAh 3S 10C x2 (2並列)

この構成で20分ぐらい飛びます。ただslowflyの大きいプロペラを小さめのモーターで使っているのもあって、機体の動きは緩慢であまり応答性はよくありません。また位置制御のゲインも小さめにしていて、風のある環境では結構ふらふらしていました。

我々のソフトウェアはすべてROS上のノードとして構成されており、OdroidのCPU上で動作します。さすがに画像関係の処理はOdroidにとってかなり辛いようで、1280x960のカメラ画像を320x240にbinningしてrectify、HOG識別器でターゲットを認識する処理を5 Hzで動かすので精一杯でした。

また、これらの機能が最初から全てあったわけではなく、すべての機能が搭載されたのはかなりギリギリになってからでした。
特にカメラについては紆余曲折があり、アブダビ出発の2日前にカメラを載せ替え、出発の日に3DプリンタでNDフィルタのマウントを刷ったりとかなり直前まで開発をしていました。

Progress Report 1


MBZIRC 2017では、エントリーから大会本番までに2回、中間審査がありました。Progress Report 1では小型の機体を作って自動制御のテストしました。


この時点では機体が小さいのでコンパニオンコンピュータを載せることができず、機体とノートPCをWifiで接続してノートPC側のROSからリモートで自動制御していました。GPSを載せずに室内環境で自己位置推定するのが難しく、px4flowをちゃんと動かすためにレジャーシートの上でしか飛行できませんでした…

機体はフレームからオリジナルで設計したものです。Wifiモジュールは日本の技適を通っているESP-WROOM-02にmavesp8266のファームを書き込んでノートPCと通信していました。

Progress Report 2


2回目のProgress Reportでは、本番と同じ機体フレームで機体を組み立て、自律飛行のテストをしました。


この時点では自動離陸、探索、自動着陸まで一通り自動で動作しています。

現地リハーサル


現地に入ってから大会本番まで、各チームには2回のリハーサルのチャンスが与えられました。1日あたり40分の時間が割り当てられ、時間が来たらテントからアリーナまでバギーで移動する形です。


現地に入ってからも開発に追われ、足りない機能の追加や改良など、なんだかんだギリギリまでコードを書いていました…
そのかいもあり、2回目のリハーサルの最後では着陸ターゲットにアプローチ、もう少しで着陸できるところまで行きました。この時点ではあわよくば賞金ゲットもありえるという空気がチーム内にありました。

ですが、現実はそう甘くなかったです…

大会本番


本番はリハーサルの2日間とはうってかわって曇り空、風速も5m/s程度あり、あまり良いコンディションではない中での開催となりました。

リハーサルではフィールドに出てテストをしていたのですが、本番はこのようなテントの中からロボットを見て操作します。


Project C.G.Sの機体は1回目のチャレンジで、着陸ターゲットを認識後に高度制御が不安定になり、機体高度が異常に上昇しました。
※後の調査で、機体の状態によっては高度制御が働かない(垂直方向速度を0にする制御のみで外乱による高度変化を打ち消さない)ケースがあり、上昇気流によって機体が大きく持ち上げられてしまった可能性が高いことがわかりました

またテントの中から機体を目視できなくなってからの対応が遅れ、POSCTLに切り替えてテントの外に出たときには既に機体高度は100mを超えていました。この後も上空の強風の影響でPOSCTLで高度を下げることができず、やむを得ずマニュアル飛行に切り替えて着陸を試みました。しかし、高高度の機体制御経験に乏しかったのもあり操縦がうまくできず、最終的に機体は南に大きく流された後に水路に墜落してロストしました。

1日目のチャレンジで機体がロストしてしまったので、2日目のチャレンジは棄権し、Project C.G.Sのスコアは0となりました。チャレンジの全スコアボードはここから参照できます。

他のチームも含めた大会全体のライブストリーミングはYoutube見ることができます。今回入賞したチームはどこも10秒以内での着陸をキメており、技術力の高さを伺わせました。


これからについて


チャレンジ結果は予想の遙か上を行く最悪の結果でしたが、人的被害がなかったのが不幸中の幸いでした。これは我々の空モノの制御に関する知識不足と操縦技術に関する慢心が招いた結果で、この結果を真摯に受け止め今後の改善に努めていきたいと思います。



ただ一方で、他のチームと比較しても我々のチームの技術力はそこまで劣っているわけではないようにも感じました。次大会までの2年間で経験をつみ最新の技術動向を積極的に取り入れていくことで入賞を目指したいです。個人的にはシミュレータの調査と、FPGAベースの画像処理あたりを開拓していきたいですかね…

あと忘れがちですが、ドローンの自動制御をやるには、マニュアルでドローンを安定して飛ばせる技術をもった人が必要です。自動制御プログラムが動作している最中には、バグなどでドローンが予期せぬ挙動をすることが往々にして起こります。また、自作の機体では製品の機体と比べてギリギリの構成で動作することも多く、FCU側のパラメータも調整不足なためPOSCTLがうまく働かないこともあります。その時に瞬時にマニュアル飛行に切り替え、安定してドローンを着陸させる人は絶対に必要です。

自動制御と操縦技術、少しずつではありますが両方とも精進していきたいと思います。

2015年12月23日水曜日

日曜溶接DIYにチャレンジしてみた


近頃、パルスロケットエンジンを自作して自転車に積んでみたりだとか、強力な電磁石を内蔵した靴で天井を歩いてみたりする動画がYoutubeに上がっています。

そんな頭のネジが何本か外れたMakerたちの動画を見ていて、

俺はそういうものづくりをやってみたいんだ!

という思いが強くなりました。

そういう人たちは得てして人が乗ったりとか、乗らないにしても迫力のある大きなモノをつくっているわけなのですが、そういった大物を作るにあたっては溶接の工程が必ずといって動画の中に含まれていました。

そこで、頭のおかしいMakerを目指すべく、溶接にチャレンジしてみようと思ったわけです。
※純粋に興味もあったのでとりあえずやってみたかった、という面もあります。

--

いろいろとググってみたところ、溶接機には家庭溶接機というジャンルがあるようで、一般の100Vコンセントと低電流溶接棒を使えば一般家庭でも溶接ができるようです。

家庭用溶接機のジャンルでは大きく分けて

交流アーク溶接機
+ とても安価
- アークスタート、維持が難しい

直流半自動溶接器
+ トリガーを引くだけで使えるので簡単
- 交流アーク溶接機と比べると少し高価

が広く普及しているようですが、100V電源で一般家庭用の15Aだと低電流用の細い溶接棒しか使えず、板厚3mm程度の溶接しかできないために、大きな構造物を作るには今ひとつ力不足感が否めませんでした。

そこで、もう一つのタイプの溶接機

バッテリー溶接機
+ 電源によらず大電流を出力できる
- 非常に高価

の入手を検討しました。

※もし万が一このページをご覧の方で、ご家庭での溶接に興味のある方がいらっしゃいましたら、溶接人さんのページを参考にされると良いと思います
※大物を作る気がないのなら直流半自動溶接機が最適だと思います

--

流石に30万円もするバッテリー溶接機をホイホイ購入するわけにはいかないので、ヤフオクを巡回して手頃な出品を漁っていました。ヤフオクでは様々なタイプの溶接機が出回っているようで、家庭用低電流のものからエンジン溶接機まで一通り出品されています。

一般的な溶接機でしたら、購入にあたっては

- 見た目の綺麗さ
- 動作品かどうか

あたりを気にすれば大丈夫だと思うのですが、
バッテリー溶接機の落札ではさらに、

- バッテリーが生きているかどうか

についても気にかける必要があります。溶接機に内蔵されているバッテリーが意外と高価で、せっかく溶接機を安く落札出来てもバッテリー代が高くなってしまっては悲しいですからね。

--

で、つい手が滑って落札しちゃいました。
※送料込みで2万2,000円でした、多分破格だと思います



マイトアーク社の少し古いモデルで、一般的な自動車用12Vバッテリーサイズ(55B24R)を3直列で使うタイプです。充電は100V15Aで、出力電流は150Aほど取れるようです。もちろん電源のない場所でも使うことができます。ただし、バッテリーを内蔵している関係で重量が90kgあるので、取り回しが少し大変です。

購入当初は汚れが酷く、電圧計も壊れていたのですが、




分解してケースのサビを取って内面をゴム塗料で塗装し、
※プラスティディップは正義



バッテリーケーブルを作りなおして、
※ホルダーを買った時の余りのキャブタイヤケーブルで作りました



回路部のホコリ(ヒューム?)を除去し、



電圧計の中身を汎用品から移植して、
※中に入っている抵抗器だけ元の電圧計のものを使うことで、元の目盛りに合わせて針が動くようになりました



不自由なく使える状態になりました。
バッテリーも生きていたようで、特に交換はしていません。

また、溶接を始めるにあたって、溶接機以外にも

- ホルダー、アースケーブル
- 溶接面
- スズキッド手棒溶接セット(エプロン、手袋など)
- 2.0mmの溶接棒
- 作業台兼アース用の鉄板
- スパッタシート
- 自作の衝立

を用意しました。
※通算は溶接機込で6万円ほどですかね… ホルダー、アースケーブルが予想以上に高かったです



残念ながら家には庭がないのでベランダで溶接作業をしたのですが、音や煙などはそれほど近所迷惑にならない印象でした。例えるなら、ちょっと花火をするぐらいの感じです。むしろケースのサビ取り時にディスクグラインダーを使った時のほうがよっぽど近所迷惑でしたね…
※ただ、強力な紫外線がでるので、それについては配慮が必要だと思います。

実際に溶接機を使って、キット付属の練習用端材を溶接してみました。


…これはひどい

初めてにしてももう少しなんとかならなかったのか。

溶接機のパワーは充分あるのですが、アークスタートも維持も安定せずまだまだ練習が必要ですね。これからも隙を見てチャレンジしていきたいです。

--

今回初めて溶接にチャレンジしてみたのですが、鉄が溶けてくっつくのを間近で体験するのはとても新鮮で、ものづくりの幅が広がった気がしました。

まだまだDIYの中でも敷居が高く思える溶接ですが、実際やってみると意外と簡単にできちゃう感じです。この投稿が、これから日曜溶接DIYにチャレンジされる方の後押しになればと思います。

2015年7月18日土曜日

mbedを使って女子高生に囲まれた話

高校で教師をしている大学同期の繋がりで、先日とある女子校で講演をする機会をいただきました。

テーマは「ものづくりの面白さ」で、「女子校生ウケする話をしてくれ」という振りに答えるべく、職場の先輩たちと3人で講義に行き、授業時間2コマの間、生徒さんたちと向き合ってきました。


 

※このスライドは講義で使用したものではなく、mbed祭り2015にてその様子をLTした時のものになります

また、その際に「ものづくりの講義をするからには何か作って持って行くべきだろう」と思い立ち、mbedを使ってミクが歌う楽器のような物を作っていきました。

手の高さで音程を取り、フットペダルとボタンでリズムを刻むとミクが歌ってくれます

このミクの楽器がなかなか好評で、休み時間には教卓の周りに人だかりができ、生まれて初めて女子高生に囲まれるという経験ができました。
※mbedを使えばモテるというのは本当だったみたいです

また、二コマ目はちょっとしたワークショップを開催し、生徒さんに実際に手を動かしてもらう機会を設けました。

作ってもらったのは「光るプリクラ」で、AgICペンと呼ばれる導電性インクのペンで回路を描き、シールのLEDを貼って写真を重ねて貼るといった構造になっています。USBモバイルバッテリーに刺すと写真が光ります
1人1枚好きな写真を持参してもらい、自分オリジナルの作品を作ってもらいました

実際に手を動かしてもらうことで、ものづくりの楽しさや、「なんかよくわかんないけどテクノロジーを学んだら面白いことができそうな気がする感」みたいなものは伝えられたんじゃないかなと思いました。

実際、授業のあとに採ったアンケートではほとんどの方が「またなにか物作りをしてみたい」と回答してくれたのは、素直にうれしかったです。

講義をしてみるまでは、「ウケなかったらどうしよう」と内心心配していたのですが、予想の300%ぐらい食いつきがよかったです。この年代の子たちにとって自分からMakerイベントやワークショップに参加しないと、なかなかモノつくりに触れる機会はないと思いますが、実際に見て触って手を動かしてみることで「あ、これなんか楽しい」って思ってもらえたんじゃないでしょうか。
今回お邪魔した学校に限らず、是非日本中の学校でこういった取り組みを続けて欲しいと思いますね。

最後に、私に話を持ちかけてくれた同期M氏、このような機会をいただけたお茶の水女子大学付属高校学校の先生方、講演を一緒に成功に導いてくれた先輩方、目を輝かせながら話を聞いてくれた生徒さんたちにお礼を申し上げます。

P.S. Makerの方々、高校に作ったガジェットを持って行くと女子校生に囲まれることができるので、是非お試しあれ!

2015年1月18日日曜日

Kinect 360を使ってRTAB-mapで部屋を3Dスキャンしてみた

RTAB-mapという3次元スキャンアプリケーションが面白そうだったので、手元にインストールして動かしてみました。動作させた環境はWindows8 + Kinect 360です。

--

まず、公式チュートリアルのWin64 Binariesに従ってインストールを行います。

1) Open NIのインストール
2) PrimeSense Sensorをインストール
3) rtabmapをインストール

ところが、Windows 8を使っている場合、この状態でKinect 360を接続してrtabmapを起動してもSouceを選択する段階で、

  • OpenNI PCLを選ぶと強制終了
  • OpenNI CVを選ぶと、"Camera initialization failed..."とでて、ログには"CaptureRGBD: Failed to create a capture object!"と表示

で、失敗してしまいます。

これは、Kinect 360のドライバが正しくインストールされていない時に起こる問題のようです。
Windows 8 では署名されていないドライバがインストールできなくなってしまったので、
通常の方法ではPrimeSenseのKinect 360ドライバをインストールすることができません

なので、このページを参考に、

  1. テストモードへの移行 *1
  2. ドライバー著名の矯正を無効化 *2
  3. Windows Smart Screenの無効化

をする必要があります。

*1) これはやらなくても大丈夫なようです
*2) Win8.1では、[チャーム]>[設定]>[PCの設定変更]>[保守と管理]>[回復]>[今すぐ再起動する]>[トラブルシューティング]>[詳細オプション]>[スタートアップ設定]です


すべての手順を実行したら、C:\Program Files\OpenNI\Driverにあるドライバを実行すればRTAB-mapを実行する準備が整います。

--

インストールが完了したら、あとは公式チュートリアルに沿って実行すれば簡単に3Dスキャンが行えます。

まず、FileからNew databaseで新しいデータベースを作ります。
※最初にこれをしないと次以降の作業ができないので注意してください。

RTAB-mapはこのデータベースによって各スキャンの対応する特徴点をグラフで管理しているようです。特徴点ベースでループを見つけたら、グラフ全体を補正して整合性を保とうとします。これによって、スキャンの際に歪みが蓄積されないようになっています。

次に、Detection > Select Sourceから、Select Sourceを選びます
OpenNI PCLと、OpenNI CVが選べるのですが、PCLのほうだとたまに落ちることがあったので私はOpenNI CVを使っています。

この状態でStartすれば、部屋の3次元スキャンを行うことができます。

スキャンの際の留意点なのですが、SURFでの特徴量抽出を行って2枚の点群をマッチングしているので、素早く回転したり、特徴点が抽出しにくい(白い壁など)環境だと自己位置を見失ってしまします。

ただ、特徴点が多くサンプリングできるようなごちゃごちゃした環境( == 私の机の周り)ですと、ほとんどロストすることはありませんでした。




実行画面はこんな感じになります。左上が直前のシーンの特徴点情報、左下がループ検出結果、右側が各シーンを合成した3次元スキャン結果です。ビューワも軽いのでグリグリ動きます。



少し引いてみてみると、ループ検出のお陰で部屋がしっかり四角くスキャンされているのがわかります。

File > Exports 3D cloudsを選べば、*.ply, *.pcd形式で点群を出力することができます。
出力時のオプションでボクセル化やメッシュ化することもできるので、3Dソフトウェアで扱う際に重宝しそうです。



先ほどのスキャン点群をボクセル化 + メッシュ化するとこのような感じになります。

デフォルトの設定だとだいたい100万ポリゴンぐらいのデータになります。
ただ、ボクセルサイズを大きくすれば点群を間引くことができるので、Unityなどで使う場合にはエクスポートの設定をいじったほうが良いと思います。

公式ページの動画ではかなりきれいなマップが出来たのですが、手元で実行した限りだとループ検出がうまく働かない場合があるようでした。Kinectの最小検出距離もあるので、もう少し広い環境で試してみたらもっときれいなマップができるかもしれません。

2014年9月30日火曜日

持ち運べる高性能GPUデスクトップを組んでみました

最近Oculus Riftでデモする際など、出先でハイスペックなPCが必要になる機会が増えてきました。

Alienware欲しいなぁ、でも高いしなぁ…なんてことを思いながら、ただ高いPCを買うだけなのもつまらないとPE-4CでeGPUに手を出したりしてみたのですが、PCIEx1の帯域がボトルネックになってUnityでのパフォーマンスがでず…
(eGPUについては後で別エントリにまとめるかもしれません、質問等あれば@でもどうぞ)

結局、持ち運べるぐらいの大きさのデスクトップPCを組みたてました。



CPUはHaswell Refreshのi5低消費電力版、マザボはmini ITX、メモリは8GB、ストレージはSSD+HDD(の、予定でした…)、GPUはeGPU用に用意したTDP 195WのPalit GTX760、電源はSFXのPlugin 500Wです。
です。
※今思えば、結局HDDも光学ドライブも積んでないのでCPUは通常版で問題なかったかもしれません

CPUIntel Core i5 4590S
マザーボードASUSTeK H97I-PLUS
メモリCFD Elixir DDR3-1600 4GBx2
ストレージSamusung SSD 128GB (前PCから引継)
グラフィックカードPalit GTX760 (eGPU用に購入したもの)
電源鎌力ゴールドSFXプラグイン 500W

ケースは手持ちのグラボがぎりぎり入るSilverstone SG-05 Liteをチョイスしてみました。このケースはハイエンドGPUを少ない容積に詰め込むことをコンセプトにしているようで、シャドウベイが少ない代わりにギリギリまでケースの大きさが詰められてます。



ただ、このケース、公式では10inchのグラボまでOKと書かれていますが、実際のところ240mmのPalit GTX760でギリギリです。ケースファンを外して、グラボを斜めにするとなんとか入れることができました。というか、プラスチックのハウジングがケースに干渉してるので若干無理に押し込んでます。



そしてグラボもなんとか取り付け終わってあとはストレージを取り付けるだけというところで、今回最大の問題が…


なんとプラグイン電源が干渉してシャドウベイが取り付けられません!!!



もうこの大きさは無理やり押し込むとかそういうレベルじゃないですね…

どうもこのケースは奥行き100mmのSilverstone純正電源に合わせて作られているようで、通常の奥行き130mm電源ではどう頑張ってもシャドウベイが干渉するようです。さらに私はプラグイン電源を選択したのでシャドウベイに細工したぐらいじゃどうにもならない状態に…

結局、アルミ板でSSDのマウンタを自作し、SSDはなんとか中に入れることが出来ました。



まぁHDDはUSB3.0のケースがありますし、ドライブも外付けで十分なので軽量化できたぶん結果オーライですかね?
※若干ケースの剛性が気になりますが…

持ち運びに関しては、当初はバックパネルの隣に取っ手をつけて、岡持ちみたいに持ち運べればいいかなぁと考えていたのですが…あまりにケースが華奢でぐにゃぐにゃ曲がるので不安になり、大型のカメラケースに入れて持ち運ぶことにしました。


ケンコーのaosta Frontana Lサイズです。こちらも超ギリギリのピッタリサイズ、というかギリギリアウトのサイズなので、ファスナーがぶっ壊れないように慎重かつ大胆に無理やり閉めないと入りません。
※このままだとその内ファスナーが壊れそうなので、もう一回り大きいものを購入されることをおすすめします…

これで今まで懸案事項だったデモの際のPCスペック不足も解決出来たので、どこでもデモにいけるようになりました!

2014年8月11日月曜日

VRで女の子に歯磨きするまでにやったこと

※この記事はUnityアセット真夏のアドベントカレンダー2014参加記事です

----------

長い人生の中で、誰しもが一度は

可愛い女の子に歯磨きしたい


という思いに駆られるんじゃないでしょうか

----------

ただ、リアルでそれを実現するのはなかなか難しいですよね……このご時世、下手なことしたら捕まっちゃいます。

でも安心してください!我々にはVRがあります!先日、触覚ハッカソン2014で、私たちのチーム『VRで女の子に歯磨きしたい』が皆さんの夢を叶えてきました。




頭 が ど う か し て ま す ね。本当にありがとうございます。

--

今回のデモ、VR歯磨きでは、以下のような機能を実装しました

  • ヘッドマウントディスプレイを被ると、目の前に女の子が座っています
  • VR空間の中の歯ブラシが手に持った歯ブラシと連動して動きます
  • 歯ブラシを差し出すとそれを女の子が咥えます
  • 歯磨きの擬似触覚が手に伝わります
  • 出し入れすると白い歯磨き粉が出てきます

※言葉で表現するとより猟奇的ですね… 最後の白い歯磨き粉は本当に必要だったのか…

擬似触覚を実現するにあたり、触覚ハッカソンではKMDの南澤先生からTECTILE toolkitという触覚デバイスをお借りしました。入力歯ブラシからサンプリングした振動を、体験者の持つ出力歯ブラシに伝えることで、体験者はあたかも実際に歯を磨いているかのような振動を感じることができます。




※TECHTILE toolkitは一般販売もされていますし、作り方がオープンソースで公開されているのでDIYすることも可能です!詳しくは別エントリにまとめましたので、こちらの記事をどうぞ

--

デモの全体構成はこのような感じになってます。



※Creative Gesture Cameraはデプスカメラとなっていて、物体までの距離を計測することができますが、今回は距離画像は利用せずにただのWebカメラとして利用しています。

私が主に開発したのは歯ブラシコントローラの部分です。ProcessingからUDPで送られてくる複数のマーカー位置を座標変換し、すべてのマーカーから計算した位置をごっちゃにして指数移動平均で平滑化しています。




※マルチマーカーで真面目にやるなら、凹みさんのフィルタ関数などをかけたほうがいいとは思いますが、時定数を大きく取れば問題なさそうなので上の方法で簡単に済ませています

--

VR歯磨きでは、主に2つのUnity Assetを利用させていただいきました。

Unityちゃん

みんな大好きUnityちゃんです。Unity Asset Storeからダウンロードすることができます。モーション、表情モーフ、声と、非常に多くのアセットが付属しています。version 1.0から1.1に上がったタイミングで、ポーズが19種類、ボイスが343種類()追加されています。初期バージョンしかDLしたことのない方は、ぜひDLしてみてください。

VR歯磨きではポーズ19の体育座りを利用しています。また、歯ブラシが近づくとangry2モーションで口を開き、歯ブラシを口に入れるとsapモーションで口をすぼめるようにしています。本当にいろんなポーズとモーションが含まれており、どれを利用するかについてはチーム内でも議論の対象になりました。

※ボイスに関してはチーム内でも議論になったのですが、あまりマニアックな声を設定しても一般受けしなくなってしまいそうなので、当り障りのないところに落ち着きました

Oculus Unity Integration 

Oculus Rift向けの画像変換や、アセットです。Oculus VR社のページからダウンロードすることができます。樽型に歪ませる処理にImageEffectが使用されており、Unity Proでないと実行することができないので注意です。

最近DK2の出荷に合わせて、version 0.0.4が出ました。Oculus Rift DK2はまだ購入していないのですが、是非とも機を見て購入したいですね。

--

NyAR Toolkit for Unity 3D

また、ハッカソンでは使わなかったのですが、NyAR ToolkitにはUnity用のパッケージも存在します。ハッカソンが終わったあと、このパッケージを用いてUnity上でARキューブを認識して歯ブラシを動かすところまで行うスクリプトを作ってみました!




サンプルプロジェクトを用意しましたので使ってみてください。このスクリプトを使って、自由な発想で歯に限らず色んなものを磨いて頂けたらと思います。

--

2日間という短い時間の中でプロトタイプを作るにあたって、Unityの表現力には本当に助けられました。ただ、モデルやエフェクトにこだわるあまり、デモにゲームとしての面白さがかけてしまっていたのが反省点です。今後はゲーム性も加えたデモ作りを目指していきたいですね。

さて、本日のアドベントカレンダーは楽しんでいただけたでしょうか?アドベントレンダーに不慣れな上、さらにUnityアセットアドベントカレンダーと言いながらアセットあんまり関係ない記事で肩身が狭いです…

明日はK_U_さまより、「FXMakerことはじめ」です!
よろしくおねがいします!

>> Unityアセット真夏のアドベントカレンダー2014へ戻る

--

[追記] 20140813

触覚ハッカソン2014での様子が日経テクノロジーオンラインさんで記事になりました

2014年7月27日日曜日

TECTILE Toolkitを作ってみた

最近、Oculus Riftを皮切りにVR空間に没入するコンテンツが増えてきました。
ヘッドトラッキングと視界を覆い尽くす映像、そしてバイノーラル音源のリアルな音による没入体験ができるようになりました。

すると次に欲しくなるのは…そう、触覚ですよね!
※味覚や嗅覚にも非常に興味があるのですが、ちょっとまだ実現は難しそうですよね

個人的に触覚フィードバックには興味を持っていて、8/2、8/3に開催される触覚ハッカソンにも参加する予定です。
つい先日、その触覚ハッカソンの事前説明会にも参加してきまして、いろいろな触覚デバイスを触ってきました。

その中でも特に印象的だったのが、慶応義塾大学の南澤先生が持ってきていた、TECHTILE Toolkitというデバイスでした。さらになんと、TECHTILE Toolkitはオープンソースで開発されており、部品を集めれば自分で作ることも可能です!

このページに行けば作り方が丁寧に解説されていて、だれでもTECTILE Toolkitを作ることができます!
…と、言いたいところなのですが

ページ中で使用されている「任天堂DS振動カートリッジ」と、「ラステームのRSDA202というアンプ」はともにディスコンとなっており、手に入れるのが難しいのが現状です…

--

任天堂DS振動カートリッジの中には、アルプス電気のフォースリアクタというデバイスが用いられています。



※大小2種類のモデルが存在するのですが、DS振動カートリッジ、DS Lite振動カートリッジ共に大きい方のモデルが使用されています

フォースリアクタは振動モータではなく、中に入っている振動板をコイルで駆動する方式を採用しています。
そのため、高い周波数の振動を再現することができ、よりリアルな触覚フィードバックが得られる…というデバイスだそうです。
暦本先生のWISS2013の抄録にデータが載ってます

こればかりは無いと仕方がないので、Amazon駿河屋などで頑張って手に入れます
私はAmazonで同梱版のメトロイドプライムピンボールを中古3,000円で買いました。
※一時期極端な品薄になったことで、中古ゲーム業者が買い取りに積極的になったのか、今はお金を出せば手に入るようです

--

ラステームのアンプはちょっと手に入りそうになかったので、代わりに秋月のTA7252を使ったオーディオアンプキットを利用してみました。

組み立ててみた様子がこちらになります。
スピーカー端子から音声を出力し、それをオーディオアンプを通して増幅してフォースリアクタを駆動しています。



今回はコップを使った触覚フィードバックデモを再生するので、フォースリアクタはこのようにコップに貼り付けました。
※底面に密着して貼り付けられなかったので、側面に貼り付けています



作ってみて早速コップの中でビー玉が回転している触覚データを体験してみたのですが、実際に会場で体験した時と比べるとどうにもリアリティが少ない気がしました…
※映像に合わせてコップを動かすと十二分に触覚が感じられます、VRの中で真骨頂を発揮しそうな予感がします

会場での体験と比べて今一歩及ばなかったのは、やはりアンプが良くなかったのでしょうか?
ラステームのRSDA202はトライパスのTA2020というデジタルアンプICを利用しているそうなので、同じICを利用した安いアンプを買って試してみたいと思います。

--

[追記] 20140806

TA2020使ったオーディオアンプ、Lepai LP-2020+がAmazonにて2000円ほどで販売されていたので、例によってコップ音源を再生してみました。



秋月アンプよりだいぶ良い感じがして、本家のTECHTILE toolkitとだいぶ近い感じがしました。 簡易イコライザがついててローパスかけられるのもありがたいです。