arutema47's blog

書いたり書かなかったり。

距離センサ入門(ステレオカメラ、プロジェクション、LiDAR)

Qiitaからのお引越し記事です。

目標

通常のカメラは物体の明るさ、色を抽出するのに対し、距離センサは物体までの距離をセンシングします。そのため3DカメラやDepth Sensorなどと呼ばれたりします。

距離を知ることは多様なアプリケーションにおいて重要であり、例えば自動運転では前方車両までの正確な距離を知ることは必須です。またゲームなどのアプリケーションでは人の動作などを距離センサで抽出するKinectが遊びの幅を広げました。またDaVinciといった手術ロボットでも患部の正確な距離を知るためにも距離センサは重要です。

身近なアプリケーションですと例えば部屋の3Dマッピングなどに使用できます。

部屋の寸法、距離感覚は写真や間取り図にするとイメージが湧きづらいのですが、3Dマッピングしてしまえば部屋そのものを感じることができます。 image.png

このようなマッピングは新型iPhone Proで簡単にPolycamなどのアプリを使ってできるのでもしデバイスを持っていたら試してみて下さい!

この記事では世の中に大きくどのような距離カメラがあるのか、それらの概要や特徴、使用されている製品をリストします。

例えば研究開発プロジェクトに使用する距離センサが選べるようにするのが目標です。

私はLiDARの専門家なのでカメラベースの手法にはあまり詳しくないのですが、使用頻度の高い距離センサであるステレオカメラやプロジェクションカメラについても記述しました。

また点群ディープラーニングについてはこちらをどうぞ。

aru47.hatenablog.com

ステレオカメラ

概要

スバルアイサイトなどに搭載されている市場に多く出回る距離センサです。

https://www.subaru.jp/eyesightowner/about/

アイサイトのしくみ

またこちらのWhitePaperも参考になります。

Obtaining Depth Information from Stereo Images

https://www.zmp.co.jp/knowledge/adas_dev/adas_sensor/adas_camera/adas_stereo

png.png

原理は人間がものを立体的にみるのと同じ原理です。

目を左右交互につむり、モニタを見ると左右にずれるのがわかりますか?

脳はこのずれが大きい物体ほど近くにあり、ずれが小さいほど遠くにあると認識してくれます。これがステレオカメラの原理であり、人間が使っている距離センサもステレオカメラがベースになっているといえます

ステレオカメラではピクセルがどれくらいずれた事から、物体までの距離を測ることができます。この際カメラ同士が離れれば離れているほど物体に対してピクセルずれは大きくなるため、正確な距離が図りやすいです。一方でカメラ同士が近いとほとんどピクセルズレが起こらないため、距離を測るのは難しくなります。画素数を向上させれば原理的には測距距離は長くなりますが、信号処理量が指数関数的に増加してしまうのが欠点です。

またステレオカメラ最大のチャレンジは、2つのカメラが同一の物体を見ているかどうかを判定することです。これには高度な画像処理テクニックが必要で、遠くの物体が本当に同一かどうかを当てるのはとても難しくなります。

image.png

Reference: Obtaining Depth Information from Stereo Images

またステレオビジョンを適応するには左右の画像間で高低差があってはいけません。 そのため前処理でカメラ歪除去と高低差除去のキャリブレーション(rectify)が必要です。

特徴

他の距離センサは専用部品(レーザなど)が必要な一方で、ステレオカメラは普通の市販カメラを2つ使うだけで実現できるため、コストが安いのが最大のメリットです。

ただ距離を測るために左右のカメラで同一の物体の同じ場所を見る(認識する)必要があり、遠くのものの距離を測るのは難しい。数式などは省略するが、アイサイトのようにカメラを離れて設置しないと遠くのものでは視差が生まれないため、遠くまで見たい場合は筐体が大型化してしまうのが欠点です。

使用製品

市販製品ではIntelのRealSenseがソフトウェア(SDK)もついてきて試しやすいです。

RealsenseD435ならアマゾンで24000円なのでお手軽に購入できます。

https://amzn.to/3tgO9zGamzn.to

RealsenseD435の出力例です。

  • 近距離(1-3m)ならば高い精度が取れる
  • カメラベースのため、解像度が高い
  • CPUでもリアルタイム(30FPS)で動作

のが特徴です。ホビー用途の距離センサならば一番の選択肢だと思います。

RealsenseD400系にはパターンプロジェクションも付いていますが、距離推定に用いているのはほぼステレオカメラです(プロジェクションを切ってもほぼ絵が変わらないためあくまで補助機能ぽいですね。)

パターンプロジェクションカメラ

概要

工業用の高性能3DカメラやiPhoneのFaceIDで使われているのがパターンプロジェクションカメラです。

物体に既知のパターンを投影し(パターンプロジェクション)、その歪み方からカメラと物体までの距離を信号処理によって導出します。

説明を聞いてもよくわからないが、下記の図を見るとわかりやすいかと思います。ヘルメットのような物体があるところにしましまのパターンを投影すると、物体の高さによってしましまが歪むことがわかります。このような歪みを読み取り解析することで、ヘルメットの三次元形状を知ることができます。

pattern.png

また下記の動画はiPhoneのFaceIDの仕組みについて解説してます。赤外線で顔中にパターンを放射し、顔の正確な形状を読み取ることができる。凹凸をみているのでFaceIDを騙すのは難しく、セキュリティを強固なものにしていますね。

Using An Infrared Camera To Show How Face ID Works

https://www.youtube.com/watch?v=g4m6StzUcOw maxresdefault.jpg

  • LiDARに比べると部品がシンプルなため、価格が抑えられるのが特徴。

  • 室内使用であれば非常に高い精度が得られる(mm~um精度)。

  • 一方で外乱の多い屋外使用は厳しい。

またパターンプロジェクションとステレオビジョンを両方使うアプローチは多いです。

ピッキングロボットで頻繁に使用される高精度3DカメラEnsensoではパターンプロジェクションとステレオビジョン両方を備えます。 ステレオビジョンが苦手なマッチングが取りにくい物体(例えば平坦な壁など)でも綺麗に点群を得られるのがメリットです。

使用製品

iPhone

Image result for iphone face id

iPhoneの顔認証(FaceID)はアクティブプロジェクションカメラで実現されています。

FaceIDが使われるたびに、iPhoneは赤外線のパターンを放射してます。

実は元の技術はMicrosoft KinectV1を開発していた企業(PrimeSense)をAppleが買収し、発展したものです。 関係者の間ではMiniKinectなどと言われています。。笑

ゾゾスーツ

https://zozo.jp/zozosuit/ 1570948182773.png

ゾゾスーツもスーツのドットをカメラで撮影し、距離を測っているという意味で技術的には似ている。ただゾゾスーツはドットを投光していないのでパッシブプロジェクションと言えるかもしれない。人の大体のサイズ感が測れれば良いためか、FaceIDのカメラに比べると点数は少なめ。

工業製品(Ensenso, キーエンス)

工業用途のセンサ出力例はあまりネットに出回ってないのですが、mm精度が得られRealsenseなどとは精度自体は比べ物になりません(そんなのホビー用途ではオーバースペックなんですが)

一つ数百万円します笑

工場内の検品やロボット製品に使われることが多いです。産業系の展示会に行くとこいつが付けられていることが多いので探してみて下さい笑

一方でプロジェクションを正確に読み取れるのは数メートル範囲内のみであり野外の使用などは厳しいです。基本的には室内用ですね。

キーエンス 3Dカメラ

Ensenso X36

Time of Flight LiDAR

Time of Flightの原理

カメラベースの距離センサ(ステレオカメラ、プロジェクション)とLiDARは原理が根本的に異なる。

一方でLiDARはTime of Flight(光の飛行時間)をベースにして距離を測ります。

原理としては単純で、下記の図のようにレーザ光を筐体から放ち、そのレーザが物体に反射して返ってくるまでの時間を計測する。もしレーザ光が10秒後に返ってきて光速を単純のため1m/sとすると、物体までの距離は

(10秒 * 1m/秒)/2 = 5m

と5m先に物体があることがわかります。このように飛行時間をベースにして距離を導出する手法をTime of Flightと呼びます。

実際の光速は108m/sと非常に早いため、光が返ってくるまでの時間は数ピコ秒、ナノ秒のオーダーなので時間を計測する回路には高い精度が求められます。

このようなレーザパルスの帰還時間を直接測定するタイプのLiDARはdirect Time of Flight sensorとも呼ばれます。

https://tech.nikkeibp.co.jp/atcl/nxt/column/18/00001/02023/?ST=nnm image2.png

特徴

LiDARの最大の特徴は

  • 高精度
  • 遠距離
  • 外乱に強い(野外で使用可)
  • 値段が高い

と挙げられます。強いパルスレーザ光を照射し、その帰還時間から直接距離を導出するため誤差が混入しづらく信頼性が高いのが特徴です。これらの特徴はカメラベースで実現するのは難しいため、過酷な条件でも動作が義務付けられる自動運転ではLiDARが主に遠方の物体検出で使われることが期待されています。

一方でスキャン機構、レーザ出射機、レーザ受光部と多くの専門素子が必要になるためカメラ型に対してコストは数倍~数十倍高くなってしまうのはデメリットです。

最近はLivoxなど10万以下のLiDARが多くのプロトタイプで使用され始めているので値段が高いから敬遠される時代は終わりつつあるかも知れません。

この図のような長距離(100-200m)の精微な点群(Point Cloud)でスキャンできるのはLiDARの最大のメリットです。

野外で遠距離までバッチリ点群を取れる距離センサはLiDARだけです。なので自動運転などで熱い期待を持たれています。(TeslaなどLiDARいらないよ派もいますが。。)

スキャン型LiDAR

https://www.gizmocrazed.com/2019/03/gates-backed-lumotive-upends-lidar-conventions-using-metamaterials/ image.png

LiDARのの上記のTime of flightの原理で1画素あたりの距離を取得することはできます。それでは絵として距離情報を得るためにはどうしたら良いのでしょう?そのための工夫としてLiDARにはスキャンという概念があります。

一つのアプローチはミラーを使い、出射するレーザ光を走査(スキャン)する方法です。

https://commons.wikimedia.org/wiki/File:LIDAR-scanned-SICK-LMS-animation.gif image.png

上記のアニメーションはミラーを使ったLiDARのスキャンをわかりやすく表しています。ミラーを回転させることでレーザ光を360度走査し、周辺環境の全ての情報を得ることができます。

このとき1画素ずつ情報を得ながら二次元的にスキャンするのが2Dラスタースキャンという方式で、縦画素を一気に取得しながら横方向にスキャンする方式を1Dスキャンと呼びます。両者とも距離は出ますが、1Dスキャン法が距離画像を得るために必要な時間が短いため、高いFPSを達成しやすいです。

一方でミラーを使うと(一眼レフカメラのように)LiDARの筐体は大きくなってしまいます。そのためミラーを使わずにMEMSミラーを使ったり、光学的にスキャンするOptical Phased Array LiDARなども開発が活発に進められており、将来的にLiDARの小型化や低コスト化は進むと見られています。

フラッシュ型LiDAR

またスキャンをせずにカメラのイメージセンサのように二次元画素情報を一度に取得するようなLiDARも開発されています。イメージセンサ全体を覆うようなレーザ光を出射し、それを受光するだけなので構造的には非常に単純です。そのためスキャン型に比べ低コストで実現可能です。

一方で課題はいくつかあり、 - 1画素あたりのレーザパワーが少ないため距離が短い - 外乱に弱い - 干渉などに弱く、ノイズが発生しやすい というのが欠点のため自動運転には適さないが、室内のロボットなどには活かせるかもという感じです。

製品

Velodyne Series

最も有名なToF LiDARはVelodyneの製品でないでしょうか。LiDAR製品を初めて世に出したメーカーで現在も帝王として君臨しています。

彼らの製品は数十万~数百万と非常に高額ですがそのクオリティは一級品。Velodyneを使っていない自動運転車はTeslaとWaymoくらいだと思います(Waymoは独自LiDARを使用)。ロボットの研究開発の現場でも画素数や精度が高いため、Veloが使われることが多いイメージです。

www.argocorp.com

VLP-16_2.jpg

追記 Livox Horizon

DJIの子会社であるLivox社が10万円を切りつつも高精度を達成するLiDARを発売しており、こちらがロボ系プロジェクトでは主流になりつつあります。

アマゾンで買えます笑

amzn.to

www.livoxtech.com

クオリティは凄まじく、SDKなどgithubで公開してくれてるので開発もしやすいです。Velodyneから乗り換えている人多数ですね。

iPhone

image.png iPhoneのフロントには実は結構昔からToF LiDAR(1画素)が搭載されています。 スキャンなどはしないので低コストなのでしょう。

画像で言うProximity Sensorがそうです。 通話する時、iPhoneの画面を顔に近づけると画面は自動的に切れます。これは顔とiphoneとの距離をセンシングしているからだと思います。

追記:iPhone, iPad ProはdToF LiDARを搭載しました。 詳しくは:こちら記事参照

iToF LiDAR

Azure Kinectなどに搭載されている技術です。

amzn.to

技術や原理はこちらの記事参照。

aru47.hatenablog.com