Unityで点群を可視化したアプリをAndroidスマートフォン用に書き出し表示します。
■UnityからAndroid用アプリに書き出し
以前の記事で紹介いたしました「Unityで点群データを可視化」データを使用してAndroid用アプリに書き出しを行いスマートフォンで点群を表示します。
手順としては
・Unityでコンテンツを制作
・AndroidSDKをインストール(インストール時にJavaが入っていない場合はインストール)
・UnityのBuildを行いAndroid用のアプリに書き出し
・Android用アプリデータ(apk)をスマホに入れる
・スマホでインストール
と以上の手順で行っていきます。
■UnityコンテンツをAndroidアプリとしてBuild
<1>AndroidSDKとJavaをインストールしUnityに設定
前回の記事で作成した点群を表示するコンテンツを使用します。
今回はAndroidアプリに書き出すことが目的のためコンテンツ内容は適当なものを使用します。
![](http://www.pointcloud.jp/wp-content/uploads/2018/03/blog_n31_img02.jpg)
AndroidSDK、JDKを設定していきます。
Unityのメニュー/Edit/Preferences…からPreferenceウィンドウを開きます。
![](http://www.pointcloud.jp/wp-content/uploads/2018/03/blog_n31_img03.jpg)
External Toolsを選択するとAndroidの設定画面が表示されます。
SDK、JDKのところにある「Download」ボタンを押すとそれぞれダウンロードページがブラウザで開きますので環境に合わせたデータをダウンロード、インストールします。
![](http://www.pointcloud.jp/wp-content/uploads/2018/03/blog_n31_img04.jpg)
インストール完了後に再度PreferenceウィンドウからAndroidのSDK、JDKを設定します。
<2>UnityでAndroidアプリにビルド
UnityのBuild Settingsでビルド前の設定を行っていきます。
Build SettingsのPlatformから「Android」を選択します。
次にウィンドウ下部にある「Player Settings…」ボタンを押してInspectorを表示させます。
![](http://www.pointcloud.jp/wp-content/uploads/2018/03/blog_n31_img05.jpg)
InspectorのCompany Name、Product Nameに任意の名前をつけます。
Inspector下部のAndroidマークを選択してOther Settingsタブを開きます。
Other Settingsタブ内にIdentification項目のPackage Nameの記述を先に設定したCompany Name、Product Nameに書き換えます。
書き方は「com.CompanyName.ProductName」と記述します。
![](http://www.pointcloud.jp/wp-content/uploads/2018/03/blog_n31_img06.jpg)
後はAndroidのバージョンを設定して基本的な設定は以上でOKです。
他にアイコンの設定やスマホの回転への対応などの設定ができますので任意に設定します。
すべて設定が完了しましたらBuild Settingsウィンドウの「Build」ボタンを押して書き出します。
エラーなく書き出しが完了すると指定場所に「.apk」ファイルが作成されます。
■Androidスマホにソフトをインストール
作成した「.apk」ファイルをスマホに移します。
スマホへの移動方法はiPhoneと違い簡単です。メール添付で送っても良いですし、サーバにアップしてダウンロードでも良いですし、PCにUSBをつなげて直接ストレージに入れてもOKです。
とにかくスマホ内に「.apk」ファイルを入れます。
アプリをインストールする前に設定のセキュリティから「提供元不明のアプリ」をONにします。
Playストアなどから正規にインストールするわけではありませんのでこちらをONにしなければインストールできません。(自己責任でお願いします)
設定が完了するとさほどストレージ内に入れた「.apk」ファイルをタップしてインストールを行います。
![](http://www.pointcloud.jp/wp-content/uploads/2018/03/blog_n31_img07.jpg)
特に問題がでなければ上記のようにUnityで制作したまま表示させることができるかと思います。
※注意事項
・Point Cloud Free ViewerをそのままだとAndroid側で表示できませんでした。
Point Cloud Free Viewerで一度Playすると「Resources」を生成しそのなかに点群をPrefab化してくれるのでそれをHierarchyに入れてオブジェクトとすると表示されます。
・Player Settings Inspectorの「Company Name」と「Product Name」の文言は数値や記号で始まる文言はエラーになる。
■まとめ
Unityで制作したアプリを実際にAndroidスマホに実装してみてマルチプラットフォームの素晴らしさを実感しました。
同時にそれぞれのプラットフォームへの書き出しにはそれなりの設定などが必要となりそこまで気軽にはできないというのも感じました。
コンテンツ開発の環境としてはこういったマルチプラットフォーム対応アプリが主流になっていくのではないかと思われます。
引き続きUnityでどのようなことができるのか可能性の検証を行っていきたいと思います。
有限会社マグネットインダストリー
西内伸太郎
林です。Point Cloud Libraryの全体像の紹介記事の2回目です。
- Point Cloud Library について その①「PCLの登場の経緯」
- Point Cloud Library について その②「PCLの概要」
- Point Cloud Library について その③「PCLでの点群データの取り扱い」
この記事(②)ではPoint Cloud Libraryの概要として「どのような機能が搭載されていて、それらを用いてどういったことが実現できるか」について紹介します。
■Point Cloud Libraryの概要
Point Cloud Libraryは、(OpenCVと同じように)数々の処理モジュールから構成されている、C++言語による大規模点群処理ライブラリです。ロボットビジョン(ロボットが自立的に作業するための眼として使うアプリケーション)、および(ロボットではないが、デプスセンサーと計算機で点群を処理する)3Dコンピュータビジョンや、その他3D処理目的に使用できる
3D点群処理が数多く格納されたライブラリです。リアルタイム処理性(計算スピード)と、マルチプラットフォーム対応を目的として、C++言語が採用されており、Windows, Mac OSX, LinuxのそれぞれのOSにおいて、C++言語によってPCLに用意されている数多くのクラスを使用することができます。
以下のPCLの公式サイトの「about(英語)」に、概要が説明されています。
Point Cloud Libaryついての説明(about)
このaboutの真ん中程にも書かれているように、PCLはトヨタ社やTrimble社など、3D点群を測量やマシンビジョンで活用している会社を中心に、多くの企業から支援を受けながら開発されています。
PCLのライセンスは「3-clause BSD license」 であり、商用にも研究用にも無料で使用できます。また、安価なKinect/Intel RealSenseなどのデプスセンサーだけでなく、高価な商用のLIDARセンサー等とも連携しており(※ PCLの点群データ形式でこれらのセンサーから簡単にデータを取得可能)、建築、医療、自動車、などの少し効果な起業向けの点群処理用途にも全て対応しています。
2014年9月末現在、PCL1.7.2が最新版であるPCLでは、モジュールごとに点群処理に必要な様々な処理が網羅的に収録されています。中心となるモジュール群で網羅されている点群処理に必要な基本機能、「点群の入出力処理」「フィルタリング」「レジストレーション(位置合わせ)」「近傍探索」「キーポイントと特徴量の計算」「点群の3D可視化」などに加えて、ここ最近では「物体認識」「人物追跡と人物姿勢推定」「トラッキング(物体追跡)」などの発展的な機能もオプションモジュールとして追加されてきています(以下のaboutページから引用の画像が、モジュール間の関係性を表示)。
■Point Cloud Libraryを用いた、単純なアプリケーション例
以下の動画は、Kinectからリアルタイムに取得した点群を、PCLのVisualizationモデルに搭載されているCloud Viewerで表示しているデモ動画です
Point Cloud LibraryではKinectなどのデプスセンサーから取得したデータを、次回紹介を行うPCL専用の点群データ構造であるPointCloudオブジェクトとして変換された状態で取得し、この動画のようにそれを(簡単に)3D可視化することが可能です。Primisense社のセンサーの場合は、「OpenNIGrabber」というPCLのクラスで、デプスセンサーからのRGBD点群のリアルタイム取得が可能です。
■デプスセンサーのSDKとの比較:PCLは基本的な点群処理が全部入り
PCLは既に説明したように「主な点群処理」が広く網羅的に収録されたライブラリです。この記事の読者には、PCLは使用してはいないものの、Kinect SDKやOpenNI 2などのライブラリは既に使用されているエンジニアの方も多いと思います。そこで、それらのライブラリとPCLの違いを、整理しておきたいと思います。
例えばKinect for Windows SDKでは、3D投影はされていない距離画像の状態で毎フレームの3Dデータが取得されますが、先程のKinectからのリアルタイム点群取得の動画の例では、PCLのクラス(OpenNIGrabber)が、「距離画像+RGB画像からのPointCloudへの変換処理」をブラックボックス化し、担当してくれています。
すなわちPCLを用いれば、Kinectから毎フレームのデータは既に3D点群に変換された状態で取得できるので、その毎フレームの点群データを用いた点群処理にのみ集中することが可能です。ここには、「点群取得以降の点群処理が主目的であり、それ以外の煩わしさをなるべく除いておきたい」という、PCLの設計志向を感じることができます。事実、最新のPCL1.7.2では、Intel社のReal Senseデプスセンサーや、自律走行車などの研究で使われているVelodyne社のセンサーなどからも、リアルタイムに毎フレームのPCL形式の点群を簡単に取得することができます。(参考:Velodyne社のセンサーから点群取得ができる、
HDL Grabberクラスのチュートリアル)。また、PCL専用の点群データ形式である.pcd形式での入出力に加え、例えば旧来から使われている「.ply形式」での保存もPCLではできるので、点群を処理したあと.ply形式で保存して、点群処理・メッシュ処理のアプリケーションからその点群を読み込んで編集・加工することも可能です(例:
先日PCCでも紹介したMeshlabなど)。
また、例えば、先程のデプスセンサーからの点群取得・可視化のプログラムに、毎フレームで取得した点群をフィルタリングで処理するといったことも、既にPCLに用意されているクラスを用いると、たった数行のコードの追加のみで実現できます(例:バイラテラルフィルタでノイズ除去をしながら滑らかな点群にする)。
点群ファイルを1つ(もしくは複数)読み込み、それ(ら)に対して、レジストレーション、セグメンテーション、特徴点の計算とマッチングなどを行う際も同様で、それぞれ「registarion」「segmentation」「features」などのPCLの各モジュールに、多くの基本的な点群処理が用意されているので、それらを用いて(良い意味で誰でも)点群処理プログラムを作成することが可能となっています。(※ もちろん、OpenNIなどと同時にPCLを使用すれば、リアルタイムで取得する人間のポーズ情報と、点群処理を組み合わせたアプリケーションを作成することも可能です)。
以上のように、Kinect SDKなどが「モーションキャプチャ」や「ナチュラルインターフェース」が主な目的であるのに対して、PCLの目的は「3D点群や距離画像そのものに対する処理」が、幅広く収録されており、点群自体を処理・解析することが目的であることが、今後の記事を通してもわかっていただければ幸いです。
ここまでKinectを入力センサーを用いた話ばかり例示していたので、勘違いを防ぐために最後に強調していましたが、PCLは
汎用的な点群データ全てを入力とできるライブラリです。専用データ形式以外の.pcdデータ以外の3Dデータでも、内容を読み込んで、PCLのPointCloud<PointT>にさえ格納してしまえば、後は豊富なPCLの点群処理クラスを全て活用できるからです。従って、この記事の序盤にも話した、「昔から存在するレーザー測量などによる高価で高精度な3Dスキャナー」を用いて取得した点群データも、Point Cloud Libraryで処理することは当然ながら可能です。更に言うと、CG的に生成したデータでも、Point Cloud Libraryのデータ形式に変換すれば処理することが当然ながら可能です。別途、そういった記事も書くかもしれませんが、3Dプリンターで出力するための綺麗な穴がないデータに加工するようなアプリケーションも、Point Cloud Libraryを用いれば作ることも可能です。
以上のように、Kinect SDKなどはデプスセンサーの生データ取得とモーションキャプチャデータへのアクセスが主な機能であるのに対して、PCLは点群データの処理が広く全部入っている大規模ライブラリです。
■まとめ
以上、今回の前編では「PCLの概要」について紹介しました。あらゆる点群データ全てに対して使用可能であるPoint Cloud Libraryは、ライブラリの規模も大きくてすぐには使いこなせないかもしれませんが、3D点群を活用する皆様の武器になると思います。ぜひ注目しててみてください(次回の③に続きます)。
林 昌希
林です。本記事では、Point Cloudコンソーシアムと関連が非常に深い、無料でオープンソースの「3D点群処理」のための大規模ソフトウェアライブラリである
Point Cloud Library(PCL)の概要について紹介します。
Point Cloud Libraryのサイト
Point Cloud Libraryは、本コンソーシアムと非常に深く関連するソフトウェアであり、3D点群データの処理を行う場合には、Point Cloud Libraryは現状唯一の選択となる場合が多いです。私は以下のブログの記事にて、PCL登場初期の頃から、日本語では当時は情報がほとどん存在しなかったPCLのチュートリアル記事を、先行的に発信してきました。
DERiVEコンピュータビジョンブログのシリーズ記事まとめページ
以下の③回の記事を通して、「
Point Cloud Libraryを用いるとどういった点群処理が使用可能で、それらの搭載された処理を用いるとどういったことが実現できるのか」について紹介し、PCLの全体像についてまずは皆様に掴んで頂こうと思います。
- Point Cloud Library について その①「PCLの登場の経緯」
- Point Cloud Library について その②「PCLの概要」
- Point Cloud Library について その③「PCLでの点群データの取り扱い」
この記事①では「PCLの登場の経緯」と「なぜPCLに注目すべきなのか」をまず説明します。次回の記事②ではPoint Cloud Libraryの概要として「どのような機能が搭載されていて、それらを用いてどういったことが実現できるか」について紹介します。最後の記事③では、「点群とはどういうものか?」という事を押さえたのちに、その(一般的な)点群データ形式をPCLではどのように取り扱かうかの概要を述べる予定です。
■PCL登場の経緯
PCLは、かつて存在していた米国のロボットのベンチャー起業「willow garage」が2011年に開発を始めた、3D点群処理向けの大規模、C++言語によるオープンソースのソフトウェアライブラリです。同じくwillow garageが開発に大きく関わっている「
OpenCV (Open Computer Vision)」の、3D点群版のようなものとも考える事ができます。RGB画像を入力としたコンピュータビジョン向けの大規模オープンソースライブラリにはこれまでOpenCVが存在していましたが、2010年の
Microsoft Kinectの登場と同時期に、点群データを入力とする際の3Dロボットビジョン向けに登場したのがPCLです。
(※ ロボットビジョン: 画像系のデータを入力として実世界を解析する処理一般をコンピュータビジョンと呼びますが、(動く実体のある)ロボット向けのコンピュータビジョン的な処理のことを「ロボットビジョン」と呼び分けることが多いです。)
以前は高価な(精密な計測を行う測量目的の)3Dセンサーしか市場には存在しませんでしたので、3D点群処理のニーズは、建築土木などでの測量や、工場用機械・ロボットでのマシンビジョン、また医療用の3Dスキャン(MRIやCT)などにしか存在しませんでした。もちろん、そういった3Dデータをアプリケーションする需要が高価なスキャナーとセットでしか存在しませんでしたので、そういったセンサーを売る会社にしか、3D点群データを解析したり可視化するソフトウェアを開発できる人材も居ませんでした。当然ながら、計測器が高価ですので、規模の大きい企業で無い限りは数百万以上もする3D計測器は購入ができないので、そもそも需要は限られていました。
一方、自動車の安全運転向けに、「ステレオカメラ」で撮影した前方デプス映像から、歩行者や障害物をビジョン技術により検知する製品は存在します。ただ、ステレオカメラで得られる距離画像はノイズや欠損も多く正確性に欠くので、高価な3D計測器のような綺麗な3D点群は得られません。(参考になる記事:
コンピュータビジョンのセカイ 第21回:前方衝突防止システム – 「平行等位ステレオ」による3次元形状復元)
■Kinect登場とPoint Cloud Library
それが2010年のMicrosoft Kinect発売以降、安価なデプスセンサーで(動画による)3D点群撮影が、手軽に実現できるようになりました。これに伴い、PCLのような**3D点群処理をまとめたオープンソースライブラリ**の必要性も出てきました。以前から高価な3D測量の業界にも、商用の点群処理ライブラリやSDK類は存在していたものの、(今風の)無料でかつオープンソースである点群処理ライブラリの登場は嘱望されていました。また、ロボット業界としても、これまでのステレオカメラやレーザー測量ベースのものがKinectなどの安価なデプスセンサーに差し代わっていくので、ロボット向けの3Dビジョン処理がまとまっていて、かつKinectなどと簡単に接続できるライブラリを用意することで、ロボットの研究開発を(便利なライブラリを用いて)より加速度を上げて発展させたいモチベーションがありました。そこで、登場したのがPoint Cloud Libraryです。
PCLは、お手伝いロボットの米ベンチャー企業「Willow Garage」社が先導して開発していたのもあり、ロボット系の研究コミュニティの最新成果が非常に数多く収録される傾向のあるライブラリです。特にロボット系のエンジニアがデプスセンサーを用いてビジョン系の研究開発をするには、PCL以外にライブラリや開発環境の選択肢(競合)が少なく、ほとんどのロボット研究者はPCLを使っている状況であるのもこの傾向を加速させています。PCLはトヨタ社やTrimble社(レーザー測量の会社)などが投資していることもあり、自動車系の工場や、建築とプラントでの測量などの目的の処理も、優先的に追加される傾向があります(後述)。
とはいえ、次回②の「PCLの概要」で説明するように、PCLは特定の分野の処理だけが収録されているものではなく、
様々な用途で応用が利く普遍的な点群処理がバランス良く、網羅的に収録されている大規模ライブラリです。そして、Kinect for Windowsで取得できる点群データにも、Point Cloud Libraryの各処理は全て適用できるので、
あなたが点群処理を使いこなせるようになれば、Kinectを用いて点群処理が今からでも始められます。PCLは、コンピュータビジョンに強くないと使いこなせないのもあり、まだまだ研究開発者中心の使用のみで、広く普及しているライブラリではありませんが、今後数年でデプスセンサーのモバイルへの普及に伴って、使用する機会が増えていくことが用意に予想できます。
■まとめ
以上、今回の前編では「PCLの登場の経緯」について紹介しました。点群処理は昔から高価な3D計測器を用いる分野では存在していたのが、Kinectの登場で、みなさんが誰でも行えるようにはなった、でもまだ一般には普及していない、という状況が知って頂けたと思います。(次回の②に続きます)。
林 昌希
こんにちは。林です。
前回の私の記事では、本コンソーシアム「PCC(Point Cloud Consortium)」を始めるにあたっての概観として、以下の2つに分けて書かせて頂くうちの前半(1)を記事として書かせて頂きました。
(1)「コンソーシアムの目的や活動方針」(今回の記事)
(2)「デプスセンサーやPoint Cloud処理の近未来」(次回の記事)
本記事では、(2)について紹介していきます。
今回の(2)では、まずKinectなどの安価なRGB-Dデプスセンサーの登場以前と以後で、3Dセンサーの状況がどう変わったかという「3Dセンサーの過去、現在」について整理します。
その後、この事前知識をふまえ、「安価なデプスセンサー」はどのような産業分野でどういった応用により役に立ちやすくなっているのかを整理します(例:医療、美容・健康、インターフェース、工場用ロボット、ファッションなど)。そして、現状でのこれらのアイデアの普及具合を俯瞰することで、これらは「実現はできるもののまだ普及に至ってない」というところが見えてきます。
そして最後に、今後の近未来での展開について論じようと思います。(モバイルでの爆発的センサーの普及の可能性や、最近のVRでの動きなど)。
Kinect以前の3D画像計測
ミライの話をする前に、まずは2011年にMicrosoftのKinectが市場に登場する以前の「3D画像計測」について考えておきましょう。
Microsoft社のKinectはXBox360向けのゲームコントローラーとして、史上初の「安価なデプスセンサーで動画で撮影できる」製品として市場に登場し、セカイ中で数千万台が売れるという超ヒット商品になり、世界中のリビングルームにTVとXboxの前に配置されているのがKinectです。それが、その後商用の(ゲーム以外の)ビジネスアプリケーションの作成が可能になったKinect for Windows(とSDK)が登場したことで、産業応用も増えています。
Kinectが登場する前にはKinectのような「2万円程度の安価な3Dデプスセンサーが購入できる時代」を想像できている人は少なく、「品質の高い3D点群データの計測を行うには、数百万円以上のセンサーの購入が必要」というのが常識でした。
例えば建築やプラントなどで、広範囲3D撮影するレーザー測距系のセンサーですとか、映画業界で品質の高い人物の3Dデータを撮影するためのカメラ-プロジェクター製品など、多くは数百万円を下らないものが主流です。これは裏返すと、高額の3Dセンサーを購入しても、それによってデータ計測ができて、かつそのデータから解析ができることで利益の出る(少し規模の大きな)会社でしか、そういった高額の3Dセンサーは用いられていなかったことを意味しており、また、これらの多くがKinectと違って「静止撮影の3Dデータ」しか計測できないことも違いです。B2C系のビジネスにしか触れたことの無い方には経験したことのない話なので、こういった高額計測器の世界を想像できないかもしれませんが、私の前職のような計測器業界では、そもそも3Dセンサーに限らず「非常に高精度な計測器は高価なモノが中心」というのが常識でした。Kinectがない時代には、3Dセンサーも高額な計測器しか存在しなかったわけです。
一方、中規模程度の3Dセンサーも存在はしていましたが、Kinectほどに「安価で、正確に、3D動画撮影」できるものが存在していませんでした。例えば,自動車の前方動画を3D撮影する際に用いられるステレオカメラなどはその例です。ただ、ステレオカメラは2つのカメラ間でのパターンマッチングの精度に依存しておりノイズが出やすいのもあって、Kinectのような能動計測(プロジェクターで既知のパターンを投影してそれを元に三角測量を行う3D撮影方式)を行うことで、初めて高品質の3D点群を撮影できる対象が多いです。
また、静止画でしか点群が撮影できないとすると、CG用の制したモデルを作成するための元データとしては使えるものの、Kinectでできるようになったリアルタイムでの動画像処理的な話は以前は実現できなかったのです。Kinect登場以降は、デプスセンサーは監視カメラ的にリアルタイムの処理として実セカイをセンシングできるようになり、他にもこのあと紹介するような「仮想試着」や「ジェスチャー操作」など、リアルタイム処理でインタラクティブな経験が要求されるアプリケーションの構築が可能となったのです。
RGB-Dセンサーで新たに役つ産業分野
それでは、ここから本題の「安価なデプスセンサーが登場したことで、どういったところに点群データそのものやデプスセンサーによるセンシングが役に立つか」について書いて行きます。
まずは元々のMicrosoft Kinectの目的であった「自然なユーザーインターフェース(Natural User Interface:NUI)」としての使い方が、安価なデプスセンサーの応用方法の基本です。Kinectは人の姿勢(ボーン)を推定してくれるので、そのボーン情報を用いたアプリケーションを作ることができます。また、本コンソーシアムで焦点をあてる「点群」そのものも、いろいろな解析や認識を行う対象として使用できます。姿勢情報はKinectのSDKなどが我々に与えてくれるので使用のハードルが低いのに対して、点群そのものを使いこむのはコンピュータビジョンに詳しい方でないと少しハードルは高いですが(だからこそ本コンソーシアムが発足したわけですが)、それでも簡単なアイデアでRGB-Dデータを少し処理するだけでも良いアイデアになることも多く、様々な消費者と直接関わるような産業分野でも、応用が考えつきやすいのが安価なデプスセンサーであるとは思います。
以前、私のマイナビニュースの連載「コンピュータビジョンのセカイ – 今そこにあるミライ」の記事(
第58回: Kinectの登場がもたらしたコンピュータビジョン革命”)でも取り上げました、以下の「Kinect Effect」というプロモーション動画が、Kinectを使うことで実現できそうなアプリケーション群をよく網羅しています。
この動画はKinectのSDKが登場する前の状況でしたので、まだどれも実現されていないアプリケーションだったわけですが、現在ではKinectによるバーチャルミラー操作(仮想着せ替え)や、手術中の外科医による非接触ディスプレイ操作などは既に製品例が存在します。
例えば仮想試着では、以下の記事で紹介されている東芝ITソリューションの製品があります
(
日本経済新聞 BPニュースセレクト:タブレットで洋服選び、東芝がバーチャル試着システム)
手術室でのジェスチャー操作にはカナダのGestSure社の製品が存在します。
(
GestSure社のホームページ)
これら2つの実例に限らず、Kinectは非常に産業応用の幅が広い製品です。(私のマイナビニュースの連載がまさに安価なデプスセンサー処理編を書いていいますので、詳しく知りたい方は拙連載も読んでいただければと思います)。
ただ、個人的に大事な点だと思うのは、これらの典型的なデプスセンサーを用いたアプリケーションのアイデアが、
まだまだ全ては実現されておらず 、更には
大きな産業規模にもなっていないという点です。もちろん新しいことだらけ話で、エンジニアの数も全然足らない上にビジネスアイデアを出せる人材も少ないというのはありますが、「絶対に便利になるはず」と思ったデプスセンサーを用いたアイデアが、まだまだ世の中に浸透していないという印象があります。
以前から3Dレンジセンサーが使われている産業分野
今度は、Kinectなどが登場する以前から、少し高価なセンサーを用いて3D形状を計ることが役立っている分野についてお話します。
まずは、冒頭の話でもあった、建築やプラント分野で広範囲を3D撮影するレーザー測距系のセンサーがあげられます。例えば、この目的でよく使われている
Faroの3Dセンサーでは、屋外で広範囲を3D計測して3次元点群化することができます。建築業界では、CADモデルとして設計した「設計図」と、建築中もしくは完成後の「実際の建物やプラント」との整合性を確認したいというニーズがあるのですが、このような広範囲撮影可能な3Dセンサーを用いて直接対象の建築物を3D化すれば、あとは設計図との3Dレジストレーション(位置合わせ)さえソフトウェアで行うことができれば、設計図との整合性がコンピュータだけで自動判定できるわけです。近年登場した安価なRGB-Dセンサーは、屋外を苦手としていたり1台の撮影範囲も狭いのでこの「広範囲3D化」という用途には使えません(当コンソーシアムのエス計画は、こういった仕事も行っています)。建築系の仕事をされている方は、
建築ITワールドというサイトも見て頂くと、このあたりの情報が得られる思います(CAD系や3Dモデル構築の話が主なサイトではありますが)。
高級自動車等にオプションで収録される「危険感知システム」にも、3Dセンサーが用いられています。自動車会社のプリクラッシュセーフティ(追突自動防止)システムには、LIDARセンサーやステレオカメラによって車の前方映像がセンシングされており、そのセンシングした前方の3Dデータから、障害物を検知すると自動車が自動的に止まるというシステムが搭載されています(※各社とも時速30~50kmくらいまでの低速走行時のみ、障害物への衝突を自動回避ができるものが主流です)。3Dで車の前方を常に撮影しておくと、車検出や人検出などの処理も品質や計算速度も上がることもあり、自動車業界ではステレオカメラベースでの車載前方動画の処理が数多く研究されており、実用化もされてきているという流れがあります。
次に、工場等での外観検査系のマシンビジョンでも、3Dセンサーの用途は多いです。例えば、以下の記事をご覧下さい。
Robonable; (2011.10.11):三菱電機、ランダム・ビン・ピッキングを可能にしたロボットシステム開発
これはいわゆるバラ積みの部品をロボットアームが自動で掴むという製品ですが、こういったロボットはカメラやデプスセンサーをロボットの眼として用いています。この製品でも3Dの距離センサが使われていると記事中に書いてありますが、3Dセンサーがロボットアームに装着されていると「1.(画像で撮影した時と比較して)掴みたい物体を3Dの形状で捉えられるので、物体の位置やその物体のうち掴みたい場所を判定できる」というメリットがあり、一方で「2.アーム自身の現在の位置を知りやすい」というメリットが生まれます。
また、例えばベルトコンベア上に置いてある製品をカメラで撮影し、画像処理で欠陥品を検出するという古くから使われている欠陥検査システムにおいても3Dセンサーは活躍できます。以前は、このような欠陥検査システムでは「カメラで撮影した対象の移っている画像」と、先に撮影しておいた「欠陥のない対象のテンプレート画像」との間で、2次元のパターンマッチングを行うことにより欠陥があるかどうかを判定することが主流でした。ただ、3Dセンサーが普及して以降は、対象の3次元の形状が取得できるので、3D形状同士のパターンマッチングで行うことで、2Dマッチングではできなかったことが可能になってきています。これ以上の詳しい話は、私もお知り合いである三菱電機の堂前氏による、以下の記事などが参考になると思います。
画像センシング展2013:ロボットが目で見たものを掴むまで 3次元ビジョンセンサー,認識アルゴリズム,認識と動作のキャリブレーションを組み合わせる
これらの以前から計測系の各種業界で存在していた3Dセンシング応用は、さきほどの節で紹介したB2B寄りのKinect登場以降新たに実現可能になった話と比べると、各システムは以前から存在しており、それを実現するためのエンジニア層も十分あるという違いがあります。ただ、今後はコンシューマ向けデプスセンサー登場に伴う価格下落と、Point Cloud Libraryの登場によってソフトウェア構築の敷居が下がったことなどから、更に3D処理の応用が加速するのではないかと、個人的には思っております。
ここ最近の動き
この記事の最後にとして、最近のデプスセンサー関連の新しい動きを紹介しましょう。
ハンディ型スキャナーによる手軽な3Dスキャニング。今後のモバイルへの普及
Kinectでは「Kinect Fusion」という技術でKinectを動かしていきながらリアルタイムにひとつのまとまった形状に合成した3Dデータを撮影していくことができます。しかし、KinectはPCとUSB接続して使用するデバイスなので、本当のモバイルといった感じではなく、ノートPCに接続しながらKinectを動かす必要があるので、ハンディータイプのスキャナーとして使うには制限がありました。これに対して、最近は、PCを必要としないモバイルデバイスのみでデプスセンサーを使用できるようになる製品が登場し始めています。
アメリカで発売された「
Structure Sensor」という製品は、iPadに専用の小型デプスセンサーを装着することで、タブレットのみで3Dデプス撮影が可能になる製品です。以下、私の連載でStructure Sensorを取り上げた記事です。
3Dデプスセンサーを用いた注目の新ベンチャー企業;前編
また、こちらは皆様もニュース等でご存知と思いますが、Google社がモバイル(Android)にデプスセンサーを装着する「Tango」というプロジェクトを開始しています。
–
TechCrunch:Googleが野心的AIプロジェクト、タンゴを発表―3Dカメラとセンサーでスマートフォンが空間を認識する
–
TechCrunch:次に出るTangoデバイス(三次元視覚能力のあるAndroid機)はタブレット–早くも来月に
Tangoはスマートフォン向けもタブレット向けも登場するようです。こうしたモバイル向けのデプスセンサーが登場して、一般ユーザー向けに普及すれば、先程のStructure Sensorのプロモーション動画で提案されているような「一般ユーザーによる家具やモノなどの3D撮影とWeb共有」や、Tangoのプロモーション動画で提案されている「屋内の3D地図構築によるロボット的な使い方」などが、非常に一般化・普及していく可能性があります。
インタラクション技術を介したVRとの連携
最近話題になっているOcculus Riftも、デプスセンサーとの連携がしやすいデバイスです。Occulus Riftは仮想空間を閉じたゴーグル内で見る没入型デバイスでありますが、デプスセンサーと連携すれば、外界の様子や、自分の手の動きなどをOcculus Riftの中の仮想空間で利用することができます。先程紹介したStructure Sensorのプロモーション動画などでも、OcculustとStruture Sensorの連携が提案されていますが、VRもユーザーが視るセカイは仮想的でも、ユーザー自身は実セカイに居て身体動作も今までのままなので、そこで、実セカイ側をセンシングする手段として、デプスセンサーやコンピュータビジョン系の技術が連携することになります。
またKinect Fusionでも既に実現可能だったのが「デプスデータによるAR」です。RGBカメラを入力とした旧来のARですと、画像処理的に捉えられる空間情報(例:ARマーカーと地続きの平面など)しか使えず、結局はは地面もしくはテーブル平面上や壁平面上にしかCGを重ねて表示することができないという面がありませんでした。例えば初めてリアルタイムの特徴点追跡によりマーカレスでARをできるようになったPTAMというシステムがありますが、これも「2次元平面」が見つけられるだけで、3次元的な周辺環境の細かい形状は捉えられません。
Parallel Tracking and Mapping for Small AR Workspaces (PTAM)
しかしKinect FusionやStrcuture Sensorでは直接3次元世界の形状をセンシングできるので、その形状(3次元空間そのもの!)を用いれば、たとえば平面でない凹凸の激しい形状があっても、その形に沿うようにCGを合成することができます。
私個人はインタラクションやVR・ARが専門ではないのですが、本コンソーシアム等を通して皆様が点群処理に強くなれば、今まではできなかったインターフェースや仮想体験を新しく構築できるようになると確信しています。
まとめ
以上、今回は以下の3つの観点から「デプスセンサーやPoint Cloud処理の近未来」をまとめました。
- – Kinect登場以前からある3Dセンサー応用
- – Kinect登場後の3Dセンサー応用
- – 最近の展開(センサーのモバイル化、VRとの連携など)
今回紹介したように、非常に広範囲の分野でコンピュータビジョンベースの点群処理はキーとなっていくことと思います。本コンソーシアムでは、そういった中で「点群」のみを共通項として多業種多様な皆様に集まっていただき、各自が発展をとげることができるような場を提供していきたいと思います。セミナー等を来月から開催致しますので、皆様と共に成長できることを楽しみにしています。
また、デプスセンサーを使ったビジネス応用でお困りのことがあれば、我々はコンサルティングも行うことが可能です。ご相談ごとがあれば、コンソーシアムまでご連絡ください。
林昌希
初めまして。本コンソーシアム「ポイントクラウドコンソーシアム(PCC:Point Cloud Consortium)」
の林昌希と申します。
私の初めてのブログ投稿となる本記事では、まず本コンソーシアム全体の紹介として、以下の2つの記事に分けて書かせて頂きます。
(1)「コンソーシアムの目的と活動方針」(今回の記事)
(2)「デプスセンサーやPoint Cloud処理の近未来」(次回の記事)
本記事では、まず(1)について書かせていただき、次の記事で(2)について紹介する予定です。
それではさっそく(1)について紹介していきます。
Point Cloud コンソーシアムの目的と活動方針
我々「Point Cloud コンソーシアム」は、Microsoft社のKinectをはじめとした「コンシューマ向けのデプスセンサー」の登場により、その取得が容易になった「実世界から計測した色付きの
点群データ(RBG-Dデータ)」のビジネス活用を推進していくことを目的にした組織です。また、安価なデプスセンサーに限らず、「実セカイから取得した点群の活用全般」に焦点をあてて行きます。
この目的のもとで、まずは以下のような活動を行っていく予定です。
- ・Webサイトを通しての、技術情報の発信。(Point Cloud Libraryによる点群処理、3Dデータの可視化など)
- ・コンソーシアムに参加している各組織の実績のご紹介(「実績情報」)
- ・初心者~中級者のエンジニア向けの3D点群技術セミナー
- ・3D点群処理に詳しい方をお招きしての講演会(および懇親会を通しての企業間交流)
- ・3D点群処理に関するコンサルティング
日本の点群データの活用の全体レベルをひき上げていきたいというモチベーションのもとで、まずはこうした活動から始めていきたいと考えています。
安価なデプスセンサーでは「Kinect for Windows SDK等で取得できる人物の情報(リアルタイムの姿勢や顔の特徴点)」だけではなくて、物体や部屋の環境や建物をデプスセンサーで3D撮影できているので、これらをコンピュータビジョン的に解析したり、それを3Dグラフィックス的に可視化で加工したりAR的な表示もできます。しかし、これまではモーションコントローラーとしての側面にしかあまり焦点が当たっていない面がありました。
例えば、バーチャル着せ替えミラーや、倉庫の在庫管理、見守りロボットなど、デプスセンサーで実現できる技術的に深いアプリケーションは非常にたくさんあります(※次回(2)で、どういった例が考えつくかについて整理して、研究レベルのモノも含めて実例を多く紹介します)。しかし、点群処理に詳しくなかった会社が、いざ「点群そのものについて深く処理をしたい」という場合に、なかなか相談する先がなかったと思います。
そうした現状から、我々は
業界全体の底上げが最終的に我々の利益にもなっていずれ返ってくるというスタンスのもと、冒頭で挙げた目的と活動方針で本コンソーシアムを展開していくことにしました。
とりわけ点群処理の技術面については、私がその活用にも詳しい「Point Cloud Library」について、本コンソーシアムでは焦点を当てて行く予定です。
OpeCVの姉妹ライブラリであるPoint Cloud Libraryは、(OpenCVが画像を対象とした場合同じ役割を担っているように)3D点群のコンピュータビジョン的な処理の活用を便利にしてくれる大規模ライブラリです。また次回の(2)で、非常に幅の広いデプスセンサーの活用先についてまとめる予定ですが、今後のデプスセンサーのモバイルへの進出(GoogleのTangoやiPadのStructure Sensor)に伴いARやWeb可視化などの需要も広くなっていくという我々の予測から、「3Dデータの可視化」技術についても焦点を当てて行く予定です。
私たちもまだまだ半人前で小さなチームですので今後成長していく必要はありますが、
日本の点群データの活用の全体レベルをひき上げていきたいという我々の意志に賛同して頂けるようであれば、我々が提供する環境や情報を大いに活用していただければ幸いです。
以降、これまでの我々の経緯を紹介して、なぜ、こういったコンソーシアムを立ち上げることになったのかについて述べていきます。その経緯を通して、今述べた目的と活動方針の狙いがご理解いただけると思います。
これまでの経緯
本コンソーシアムは、共に東京にオフィスを構える
マグネットインダストリーと
エス計画の2社が、技術的な面での補佐役である私を仲間に加えた構成で、この2014年4月に設立しました。元々仕事上の関係で仲の良かった2社ですが、2社はKinectの登場とPoint Cloud Libaray(PCL)の存在に注目していました。RGB-Dデプスセンサーを活用した独自のビジネスを創っていきたいと考えた彼らは、インターネット経由でデプスセンサーやPCLに詳しい私を発掘(?)して仲間に加えたところから、このコンソーシアム設立に至るまでの話が始まりました。
私と出会って以降、エス計画は多少OpenNI系のデプスセンサーの開発の仕事は行っていたものの、2社とも3Dコンピュータビジョンに強いエンジニアを自前で揃えられるほどの会社ではありません。そこで、まずは準備として私が、PCLやコンピュータビジョンで実現できることを彼らに伝授していきました。現在では2社ともアイデアを自力でつくれるだけの3次元点群処理における豊富な知識を持つところまでは来てはおります。
こうして我々のチームの2社も、デプスセンサーや点群処理を活用したビジネスアイデアを少しずつ独自に出せるようにはなってきたのですが、そのアイデアを実行するためのエンジニアを揃えられていません(2社とも小さな会社です)。そもそも現状の日本では「3Dポイントクラウドの処理に強い人材」はまだまだ
散在している程度で、そこに秀でたエンジニアや経営者はそう簡単には見つからない、というのが我々の理解している現状です。大手企業ならさておき、我々のような中小企業ではすぐによい人材を見つけることも確保することも難しいのが現状です。
私もまだ半人前ではあるものの、ご縁もあってPCLの活用についての技術セミナーの講師を担当させて頂く機会が増えてきているのですが、そこに参加されていた中規模〜大会社の技術部長レベルの皆様でも、現時点では「PCLの導入を検討している」という方がほとんどで、点群の処理に強いエンジニアはまだまだ数が少ないというのが日本の現状だと思います。ましてや、マネジメントレベルの人間で点群の活用に明るい方は少ないと思います。
創りたいのは「賑わい」と「つながり」
このような経緯・背景から、前半でも述べたとおり、我々は「3D点群処理を通して、皆がお互いを高めて行けるオープンな場をつくりたい」という発想になり、本コンソーシアムを立ち上げました。みんなで集まって「賑わい」が作ることができれば、そのテーマに関連する産業分野は活性化していくはずです。
当然我々は現状では小さなチームですので、3D点群処理に関連する話を今後どのくらいまで盛り上げていくことができるかは大きなチャレンジではあります。大企業の方も、中小企業の方も、大学の方でも、フリーランスのエンジニアの方でも、「
(実セカイの)3D点群」や「
(安価な)デプスセンサーの応用」をキーワードに集まって頂く「
場」を創ることを狙っております。(※ 当然、安価でないデプスセンサーを使ってらっしゃる点群処理の方も是非お集まり頂きたいです)
我々以外でもKinectなどのデプスセンサーを活用したビジネスを展開されている会社はありますが、我々のチームの強さは「
(Point Cloud Librayを使いこなせるレベルで)点群そのものの処理に強い」というところにあります。以前から私が個人的に思っていたのは「Kinectでは色付きで3D点群が計測できているのに、Kinectの姿勢推定データしか活用できていない人が多く非常に勿体ない」という視点です。一方で、私個人としても、人間を対象とした認識につよい研究室に所属していますので、Kinect SDK等で取得できる人物のボーン情報や顔特徴点の追跡情報を用いた応用にも当然ながら明るいです。もちろん、高度なことまでしなくとも、安価なデプスセンサーから対象物体や対象環境の綺麗で閉じた全周囲的な点群をまず撮影するという計測的なところでも、まだ詳しい人は多くは居ないと思います(※ 高価な計測器を用いるものであれば、当然そういった品質の高い点群を計測できる会社は既に数多く存在することにはご注意を)。
「点群まで使いこなさないと勿体ない」と感じるのは、もちろん私が普段はコンピュータビジョンの研究者コミュニティに居ることもあります。私の周りには(本当は難易度が高いのに)いとも簡単にそういった3D点群処理まで活用して面白い事を実現している方も多いわけです。ただ、そういった少しハイレベルなエンジニアも当然日本にも「存在して居る」わけで、3D点群処理が新しい技術であると性質上、まだ皆様が接点が得られる場所が少なかっただけだと思います。
大企業の場合はそういった人材をR&D部門に雇えていれば事足りますが、中小企業の場合にはなかなかそうはいきませんし、そういった人材を見つけるのがまず難しいと思います。当然、そうした価値の高い人材とつながるためにはそのスキルに見合った報酬がない力を借りることはできません。ただ、人は雇えなくとも、皆様自身が出来る範囲で点群の活用に勉強していくことは可能なはずです。これまでは点群処理についても学ぶ環境が大学くらいにしかなかったのを、本コンソーシアムで少しずつ変えていければ嬉しいとも考えております。
また、「点群」を目的としたコンソーシアムに皆様が参加することにより、似たような目的の仲間で高め合うことによる「モチベーション向上」の効果も狙っております。
3D点群の活用は、まだまだ新しい技術分野でありますので、周りに同じようなモチベーションの人が居る中で仕事を続けるのと、そうした人たちとの会話がないまま孤立して仕事を続けるのでは、前者の方が大きく仕事の質が上がってくるのは明らかだと思います。私たちはそうした「人と人のつながり」を重要視した、コンソーシアムの運営を考えていきたいと思っております
当然ながら我々のチーム自体でも、点群を活用した新規のビジネスを立ち上げて行く予定です。今後、披露していく我々の新しいアイデアに共感していただけた方は、我々のチームにも是非参加を検討していただければ幸いです(企業レベルのでコラボレートも当然ながら歓迎いたします)。
まとめ
以上、今回は、本コンソーシアムの一番最初の紹介として、私の方から「目的と活動方針」と、それらの目的・活動指針に至った「背景」について述べさせていただきました。
我々は、今後たくさんの色々なジャンルの業界の皆様とお会いしていくなかで、お互いに高めていけるようになるミライを楽しみにしております。また、皆様の会社がお互いにコラボレートしていくことで、これまでの世の中にはなかったような製品やサービスを構築していくきっかけを作り出す事ができる「場」を形成していきたいです。(私は「皆様の点群処理を通しての発展」をお手伝いできる人となれるように頑張っていきます)
点群の活用に興味がある皆様は、ぜひ本コンソーシアムを応援・参加していただければ幸いです。
次回の私の記事では (2)「デプスセンサーやPoint Cloud処理の近未来」をテーマとして、今回の記事ではまだ論じることができていなかった「どういった分野の方々が点群やデプスセンサーの活用に関わってくるか」について書かせて頂く予定です。
林昌希