LiDARセンサーを活用したiPhone ARアプリを開発しました
布村壮太
リクルートATL(アドバンスドテクノロジーラボ)の布村です。
ATLでは、iPhone搭載のLiDARセンサーを使用した部屋の模様替えARアプリ(※)を開発しました。
起動してカメラを向けるとLiDARセンサーによって部屋の床や壁を認識、それらの素材をフローリングやコンクリート等に張り替えてAR表示し、「自分の部屋で壁紙を変えたらどうなるか」をシミュレートすることができます。
※AppStoreで未配信ですのでご了承ください
イメージとしては、SFアニメの部屋でよくある「部屋内のデバイスを操作すると部屋がファンシー調・南国調に切り替わる」を目指しました。AR・VR領域は近年のSFにはつきもので、様々な技術・デバイスが提示されてきましたが、意外に実現されたものが少ないのです。そこで、一つひとつでもSFで描かれたような世界の実現に繋がればという思惑があります。
LiDARとは
LiDARとは「Light Detection And Ranging(光による検知と測距)」の略で、センサーからレーザー光を照射し、対象物で反射してセンサー部に返ってくるまでの時間から、対象物との距離が計測できるセンサーです。レーザー光を飛ばした各点の3次元位置が取得でき、その点の集合(点群データ)から3次元形状を計測することができます。この技術は巨大構造物や建造物の計測に利用されてきましたが、近年では自動車の自動運転のセンサーとしても用途が拡大されています。
このLiDARセンサーが、2020年発売のiPad ProおよびiPhone 12 Proからタブレット・スマホに搭載されるようになりました。かつては大型で高額な機械を長時間作動させなければならなかったのですが、手軽に誰でも3次元形状の計測ができるようになったのです。しかしながら、スマホ利用で想定されるスケールでのLiDAR活用は現時点で未開の状態です。そこでATLでは、LiDARセンサーが個人レベルに普及し、誰もが3次元形状データを持てる時代が来た時にどのような価値が提供できるかの検証を行っています。
アプリ概要
実際にアプリで行っているプロセスは下記のようになっています。
- 全体のスキャン結果をMesh化、オクルージョン用のマテリアルを設
- ARKitでMeshにWall/Floor等の属性を判別(カテゴリ別は自動)、壁・床属性の位置に洗濯したデザインの専用Meshを配置
- 平面認識は空間の上下関係を考慮していないためMeshの向きを修正
- 床Meshの当たり判定を利用してモデルを配置
オクルージョンとは、カメラから見て物体が重なっている際にその重なりを考慮し、例えば壁より手前に物体があった時に、その物体には壁紙のMeshを貼らないようにするというような技術です。iOSのARKitによって、各Meshが床なのか壁なのかといった判別を高精度で行うことができました。
LiDAR有無の比較
ARKit自体はLiDAR非搭載のiPhoneでも動作するのですが、精度と早さに大きな差が出てきます。これは比較の映像を見ていただくのが早いでしょう。
LiDARセンサーを使わない平面認識は、カメラの画像とジャイロセンサーから特徴点の空間座標を算出していると思われるため、そもそも認識に時間がかかる方法です。推定できた平面から別の平面を予測しているのか、並行面は一定の推定ができていますが、それ以外の水平面の推定に問題があります。
LiDARセンサーがあると各点の3次元座標を直接取得できるため、なにより早さと精度に優れます。またLiDARセンサーでないと面が平面でない物体が測定できず、物体の重なりを考慮・表現するオクルージョンが実現できません。あくまでLiDARなしのiPhoneでのARは「平面に何かを置く」ことを実現するためのものであり、近未来的な計測とARの融合は、LiDARセンサー等の3次元座標を直接取得できるセンサーによって実現されるものと言えます。
展望
今回、LiDARセンサーの技術検証としてARアプリを開発しました。
LiDAR搭載iOS端末は昨年リリースされましたが、未だLiDARならではのアプリは少ない状況です。せっかく最新のiPhoneを持っていてもその新機能を実際に使ってみる機会がないため、まだまだLiDARセンサーが一般化できていないように思えます。 まずは今回開発したようなアプリで、LiDARセンサーがあればこういうことができるんだと提案することが大事だと思っています。今後も引き続きLiDARセンサーの検証、そして事業化にチャレンジしていきます。