今回はLiDARとARKit3.5でどれくらいARKitの精度が上がったのかを調査してみました。
LiDAR
iPadProの新型が発売されましたね。

iPad Pro
https://www.apple.com/jp/ipad-pro/
個人的な目玉はなんと言ってもLiDARスキャナの搭載です。
LiDARは「Light Detection and Ranging」の略で、約5m先に赤外線を照射し、反射して戻るまでの時間から距離や物質の性質を分析するセンシング技術のことです。
元々は車の自動運転などで使われている技術みたいですね。
ARKit3.5
LiDAR搭載の発表は衝撃的でしたが、それと同時期にARKit3.5のリリースも発表されています。

Introducing ARKit 3.5
https://developer.apple.com/augmented-reality/arkit/
冒頭の文章からARKit3.5はLiDARを生かすためのフレームワークだということが分かります。
ARKit3.5の特徴としては以下の3つが挙げられています。
1. Scene Geometry
2. Instant AR
3. Improved Motion Capture and People Occlusion
1. Scene Geometry
空間を計測したときに 床、壁、天井 といったよう具合で平面が空間で何の役割を果たしているのかを識別することができるようになりました。
この機能だけはLiDARスキャナ非搭載の端末でも利用できるようです。
2. Instant AR
LiDARスキャナのおかげで平面を高速で検出できるようになりました。
これまでは平面検出をしようと思ったら、まず端末で周りを見渡して空間の情報を与えてあげる必要がありましたが、その必要がほぼほぼなくなりました。
3. Improved Motion Capture and People Occlusion
LiDARスキャナのおかげでARKit3から出来るようになったモーションキャプチャとオクルージョンの精度が上がりました。
計測
LiDAR + ARKit3.5によってiOSのARがどれくらい良くなったのかを調べてみます。
1. 空間認識(平面・垂直面、凹凸の認識)
2. オクルージョン
3. 人の姿勢推定
今回は「iPadPro2020」の比較対象として「iPhone11Pro」を用意しました。OSはどちらも13.4としています。
空間認識
部屋の状態をどれくらい上手く測定できるかを調べます。
平面・垂直面の認識
こちらのサンプルを利用します。
Tracking and Visualizing Planes
https://developer.apple.com/documentation/arkit/world_tracking/tracking_and_visualizing_planes
iPadPro2020 (LiDAR)
iPhone11Pro
比較結果
iPadProの平面認識、ものすごく早いですね!
特に「Instant AR」がすごいです。どちらも最初 「Move the device around to detect horizontal and vertical surfaces」 と表示されますが、iPadProはそれが一瞬で終わってます。
認識精度についてもiPadProが椅子や天井を認識できているのに対し、iPhoneではそれができてないので大きな差があると感じました。
凸凹の認識
以下のコードを利用します。
import UIKit
import ARKit
import RealityKit
class ViewController: UIViewController {
@IBOutlet var arView: ARView!
override func viewDidLoad() {
super.viewDidLoad()
let configuration = ARWorldTrackingConfiguration()
configuration.sceneReconstruction = .meshWithClassification
arView.debugOptions.insert(.showSceneUnderstanding)
arView.session.run(configuration)
}
}
iPadPro2020 (LiDAR)
iPhone11Pro
iPhoneだと動きませんでした。メッシュ化はLiDARがないとダメみたいです。
比較結果
空間のメッシュ化はLiDAR搭載端末だけでできるみたいです。
LiDARのメッシュ化は見渡したらすぐ完了するのと精度も凸凹な細かいところまでとれていてすごく高いです。
オクルージョン
ARKit3から3Dオブジェクトを人物の前後に出せるようになりました。
こちらのサンプルを利用します。
Occluding Virtual Content with People
https://developer.apple.com/documentation/arkit/occluding_virtual_content_with_people
iPadPro2020 (LiDAR)
iPhone11Pro
比較結果
iPadProは距離感がかなり正確だと思いました。iPhoneも悪くないのですが、花瓶よりだいぶ手前で手が裏に行ったりすることがありました。
また、iPhoneはたまに判定をすり抜けて、花瓶がチラつくことがあったのですが、iPadProではそれが起きませんでした。
モーションキャプチャー
ARKit3から人物の姿勢を取れるようになりました。
こちらのサンプルを利用します。
Capturing Body Motion in 3D
ttps://developer.apple.com/documentation/arkit/capturing_body_motion_in_3d
iPadPro2020 (LiDAR)
iPhone11Pro
比較結果
これに関してはiPadPro、iPhoneどちらもいいですね。ちゃんと体の動きをとれています。
ただiPadProの方が大きなブレはなかった気はします。
最初は検証を物が多い部屋で行っていたのですが、そのときはiPadPro,iPhoneともに体の動きが上手く撮れず、アバターの関節が変な風に曲がることが多かったです。
モーションキャプチャーを行いたい場合は、障害物の少ない部屋でやった方がよいようです。また、カメラの死角になる部分は当然キャプチャーので、カメラに対して垂直に体を向けるのはできるだけ避けた方がいいです。
おまけ
空間認識について面白いサンプルがあったのでこちらも載せます。
Visualizing and Interacting with a Reconstructed Scene
https://developer.apple.com/documentation/arkit/world_tracking/visualizing_and_interacting_with_a_reconstructed_scene
現状iPadPro2020でしか動きませんが、なんとメッシュ化した空間をタップすると、その部分を以下の種類に分類して表示してくれます。
・ 天井
・ ドア
・ 床
・ 椅子
・ テーブル
・ 壁
・ 窓
・ その他
ARKit最強ですね!
まとめ
LiDARスキャナの性能はとても高く、これまでのARではできなかったことを可能にしてくれる感じました。
今後はiPhoneにもLiDARが搭載され、ARによって実現される素晴らしい世界がもっと広がっていけばいいなと思います。