三次元点群処理ライブラリPCLと 統合ロボットシステム研究での...

77
三次元点群処理ライブラリPCLと 統合ロボットシステム研究での 利用例の紹介 @第25回コンピュータビジョン勉強会 植田亮平

description

三次元点群処理ライブラリPCLと 統合ロボットシステム研究での 利用例の紹介

Transcript of 三次元点群処理ライブラリPCLと 統合ロボットシステム研究での...

Page 1: 三次元点群処理ライブラリPCLと 統合ロボットシステム研究での 利用例の紹介

三次元点群処理ライブラリPCLと統合ロボットシステム研究での

利用例の紹介@第25回コンピュータビジョン勉強会

植田亮平

Page 2: 三次元点群処理ライブラリPCLと 統合ロボットシステム研究での 利用例の紹介

自己紹介

● 名前– 植田亮平 a.k.a. がらえもん

– @garaemon_coder

● 所属– 東京大学情報理工学系研究科・創造情報学専攻

– JSK/情報システム工学研究室

● 専門– ロボットシステム

● 最近の興味– Shared Autonomy, Supervised Teleoperation

Page 3: 三次元点群処理ライブラリPCLと 統合ロボットシステム研究での 利用例の紹介

略歴

2011.8 WillowGarageインターン

2014.4 大学復帰

2012.4 大学休学/スタートアップに参加

現在

2010.4 博士課程スタート

Page 4: 三次元点群処理ライブラリPCLと 統合ロボットシステム研究での 利用例の紹介

アジェンダ

1. 前置き– ロボット屋さんにとっての3次元点群

2. pcl::tracking– PCLにおけるトラッキングライブラリの紹介

3. ロボットシステムの中の点群処理– tabletop manipulationを例にとって

Page 5: 三次元点群処理ライブラリPCLと 統合ロボットシステム研究での 利用例の紹介

ロボット屋さんにとっての3次元点群

Page 6: 三次元点群処理ライブラリPCLと 統合ロボットシステム研究での 利用例の紹介

ロボットって何??

PR2 [willowgarage]

Page 7: 三次元点群処理ライブラリPCLと 統合ロボットシステム研究での 利用例の紹介

ロボットって何??

センサ アクチュエータ

計算機

Page 8: 三次元点群処理ライブラリPCLと 統合ロボットシステム研究での 利用例の紹介

ロボットって何??

= 計算機 + センサ + アクチュエータ

Page 9: 三次元点群処理ライブラリPCLと 統合ロボットシステム研究での 利用例の紹介

ロボット屋さんからみた3次元点群

● 実環境でアクチュエートするには3次元の情報が必須– 自分がどこにいるのか?

– 対象物はどこにあるのか?

– どういう経路で動けばいいか?

全部3次元の情報

Page 10: 三次元点群処理ライブラリPCLと 統合ロボットシステム研究での 利用例の紹介

様々なセンサ – kinectだけじゃないよ!

Page 11: 三次元点群処理ライブラリPCLと 統合ロボットシステム研究での 利用例の紹介

レーザレンジファインダ

hokuyo

SICK

Page 12: 三次元点群処理ライブラリPCLと 統合ロボットシステム研究での 利用例の紹介

レーザ + 回転

PR2 hokuyo-tilt

multisense SL/hokuyo-spindle

Page 13: 三次元点群処理ライブラリPCLと 統合ロボットシステム研究での 利用例の紹介

ToFカメラ

swissranger sr4000

softkinetic DepthSense 311

sr4000 + stereo coloring

Page 14: 三次元点群処理ライブラリPCLと 統合ロボットシステム研究での 利用例の紹介

ステレオカメラ

PS4 camera [SCE]

multisense s7 [Carnegie Robotics]

Page 15: 三次元点群処理ライブラリPCLと 統合ロボットシステム研究での 利用例の紹介

PCLの登場(とその背景) 1/2

● ロボットに3次元点群は大事● でも良いライブラリってないね(2009)

– WillowGarageはPR2で2つの良い点群センサを持っていた

1. チルトレーザ

2. プロジェクタ付きステレオ

– 画像処理ではOpenCVがあった

Page 16: 三次元点群処理ライブラリPCLと 統合ロボットシステム研究での 利用例の紹介

PCLの登場(とその背景) 2/2

● TUMのRadu RusuがWGにjoin– RaduはもともとWG intern出身

● ROS (Robot Operating System)の一部としてPCL(PointCloud Library)を公開– OpenCVの姉妹プロジェクト

– PCLは後にROSから独立したライブラリとして発展

Page 17: 三次元点群処理ライブラリPCLと 統合ロボットシステム研究での 利用例の紹介

kinectの登場

kinectすげーこんなに綺麗な点群とれるのか

30fpsでるなら点群で6自由度の物体追跡できそうじゃないか

Page 18: 三次元点群処理ライブラリPCLと 統合ロボットシステム研究での 利用例の紹介

pcl::tracking

Ryohei Ueda (Radu Rusu – Mentor)

Univ. of Tokyo

14/10/04

Page 19: 三次元点群処理ライブラリPCLと 統合ロボットシステム研究での 利用例の紹介

1mm downsampled

Page 20: 三次元点群処理ライブラリPCLと 統合ロボットシステム研究での 利用例の紹介

agenda

►イントロダクション►パーティクルフィルタ►尤度関数►並列化による高速化►さらなる高速化のためのチューニング►実装►実験

Page 21: 三次元点群処理ライブラリPCLと 統合ロボットシステム研究での 利用例の紹介

イントロダクション

なぜトラッキング?

1mm downsampled

►安価で30fpsとれるデプスセンサの登場►リアルタイムで物体認識をするのに役立つ

Page 22: 三次元点群処理ライブラリPCLと 統合ロボットシステム研究での 利用例の紹介

パーティクルフィルタ

►トラッキングアルゴリズムはいろいろあるが、、、►パーティクルフィルタによるトラッキングを採用

●尤度関数を自由に設計できる● 処理が重たい場合は並列化による最適化

● 近年CPUコア数は増えてる

Page 23: 三次元点群処理ライブラリPCLと 統合ロボットシステム研究での 利用例の紹介

パーティクルフィルタ

[T.Higuchi, Particle Filter, ‘05]

prediction weighting resampling

Page 24: 三次元点群処理ライブラリPCLと 統合ロボットシステム研究での 利用例の紹介

パーティクルフィルタ

[T.Higuchi, Particle Filter, ‘05]

prediction weighting resampling対象の位置+姿勢 (6自由度)

センサからの点群尤度関数

Page 25: 三次元点群処理ライブラリPCLと 統合ロボットシステム研究での 利用例の紹介

尤度関数

Page 26: 三次元点群処理ライブラリPCLと 統合ロボットシステム研究での 利用例の紹介

尤度関数

仮説=位置+姿勢

もしも仮説の場所にモデルがあったとしたら、尤度 – センサデータとの一致度はどのくらいか?

Page 27: 三次元点群処理ライブラリPCLと 統合ロボットシステム研究での 利用例の紹介

尤度関数

モデル

Page 28: 三次元点群処理ライブラリPCLと 統合ロボットシステム研究での 利用例の紹介

尤度関数

モデル

モデル点群を仮説の位置に移動する

Page 29: 三次元点群処理ライブラリPCLと 統合ロボットシステム研究での 利用例の紹介

尤度関数

移動したモデル点群の一点 から最も近いセンサ点群を探索する

Page 30: 三次元点群処理ライブラリPCLと 統合ロボットシステム研究での 利用例の紹介

尤度関数

と のデータ(位置、色etc)から尤度を計算する

Page 31: 三次元点群処理ライブラリPCLと 統合ロボットシステム研究での 利用例の紹介

尤度関数

モデル点群の一点 を全ての点、もしくはサンプリングして和をとり尤度とする

Page 32: 三次元点群処理ライブラリPCLと 統合ロボットシステム研究での 利用例の紹介

尤度関数

モデル点群の一点 を全ての点、もしくはサンプリングして和をとり尤度とする

Page 33: 三次元点群処理ライブラリPCLと 統合ロボットシステム研究での 利用例の紹介

尤度関数

モデル点群の一点 を全ての点、もしくはサンプリングして和をとり尤度とする

Page 34: 三次元点群処理ライブラリPCLと 統合ロボットシステム研究での 利用例の紹介

並列化

►各パーティクルの計算は独立►容易に並列化可能(OpenMPを利用)

パーティクルフィルタを採用した利点

8 cores (hyperthreaded)single core

2~6x faster1mm downsampled

Page 35: 三次元点群処理ライブラリPCLと 統合ロボットシステム研究での 利用例の紹介

モデル点群のサイズ

パーティクルの数

センサ点群の数

高速化

計算量

Page 36: 三次元点群処理ライブラリPCLと 統合ロボットシステム研究での 利用例の紹介

モデル点群のサイズ

パーティクルの数

センサ点群の数

高速化

計算量最近傍探索(kdtree)のコスト

Page 37: 三次元点群処理ライブラリPCLと 統合ロボットシステム研究での 利用例の紹介

高速化/Downsampling

►サンプリングしちゃおう!

1mm毎のサンプリング 2mm毎のサンプリング

4~5x faster

Page 38: 三次元点群処理ライブラリPCLと 統合ロボットシステム研究での 利用例の紹介

高速化/Adaptive Particle Filter

►Adaptive Particle Filterを利用しよう► KLD Sampling [D. Fox, IJRR03]

Page 39: 三次元点群処理ライブラリPCLと 統合ロボットシステム研究での 利用例の紹介

高速化/Adaptive Particle Filter

►Adaptive Particle Filterを利用しよう► KLD Sampling [D. Fox, IJRR03]

簡単に言うと、パーティクルの尤度分布に従ってパーティクルの数を変更する分布のピークが明らかな場合、パーティクルの数は少なくて良い分布のピークが明らかでない場合、パーティクルの数を増やす

Page 40: 三次元点群処理ライブラリPCLと 統合ロボットシステム研究での 利用例の紹介

高速化/点群のサイズ削減

センサ点群の数をどうやって減らす?

Page 41: 三次元点群処理ライブラリPCLと 統合ロボットシステム研究での 利用例の紹介

高速化/点群のサイズ削減

Page 42: 三次元点群処理ライブラリPCLと 統合ロボットシステム研究での 利用例の紹介

高速化/点群のサイズ削減

Page 43: 三次元点群処理ライブラリPCLと 統合ロボットシステム研究での 利用例の紹介

高速化/点群のサイズ削減

Page 44: 三次元点群処理ライブラリPCLと 統合ロボットシステム研究での 利用例の紹介

高速化/点群のサイズ削減

Page 45: 三次元点群処理ライブラリPCLと 統合ロボットシステム研究での 利用例の紹介

高速化/点群のサイズ削減

Page 46: 三次元点群処理ライブラリPCLと 統合ロボットシステム研究での 利用例の紹介

高速化/点群のサイズ削減

Page 47: 三次元点群処理ライブラリPCLと 統合ロボットシステム研究での 利用例の紹介

高速化/点群のサイズ削減

Page 48: 三次元点群処理ライブラリPCLと 統合ロボットシステム研究での 利用例の紹介

高速化/点群のサイズ削減

Page 49: 三次元点群処理ライブラリPCLと 統合ロボットシステム研究での 利用例の紹介

高速化/点群のサイズ削減

OctreeKdtree

Page 50: 三次元点群処理ライブラリPCLと 統合ロボットシステム研究での 利用例の紹介

fps

* かなりチューンしています

Page 51: 三次元点群処理ライブラリPCLと 統合ロボットシステム研究での 利用例の紹介

実装

Tracker

ParticleFilterTracker

KLDAdaptiveParticleFilterTracker

KLDAdaptiveParticleFilterOMPTracker

ParticleFilterOMPTracker

PointCloudCoherence

PointCoherence

DistanceCoherence

HSVColorCoherence

NormalCoherence

NearestPairPointCloudCoherence

ApproxNearestPairPointCloudCoherence

Page 52: 三次元点群処理ライブラリPCLと 統合ロボットシステム研究での 利用例の紹介

実験

movie movie

movie

Page 53: 三次元点群処理ライブラリPCLと 統合ロボットシステム研究での 利用例の紹介

実験

Page 54: 三次元点群処理ライブラリPCLと 統合ロボットシステム研究での 利用例の紹介

実験

Page 55: 三次元点群処理ライブラリPCLと 統合ロボットシステム研究での 利用例の紹介

まとめ

►点群ベースなトラッキングライブラリpcl::tracking►パーティクルフィルタに基づくアプローチ

►位置・姿勢の6自由度のトラッキング► リアルタイム処理に向けた最適化

Page 56: 三次元点群処理ライブラリPCLと 統合ロボットシステム研究での 利用例の紹介

実際のロボットでは3次元点群どうやって使われ

てるの?

Page 57: 三次元点群処理ライブラリPCLと 統合ロボットシステム研究での 利用例の紹介

こんな環境を考えよういわゆる ”tabletop”

Page 58: 三次元点群処理ライブラリPCLと 統合ロボットシステム研究での 利用例の紹介

こんなふうにものを掴みたい

Page 59: 三次元点群処理ライブラリPCLと 統合ロボットシステム研究での 利用例の紹介

処理の流れを考えてみる

● テーブルの位置を検出する● テーブルの上の物体をクラスタリングする● 掴めそうな方向を推定する● つかむ

Page 60: 三次元点群処理ライブラリPCLと 統合ロボットシステム研究での 利用例の紹介

自己位置推定

● その前に、部屋の中でロボットが何処にいるか?

● 水平に設置されたレーザレンジファインダの値と予め作った地図とをマッチング(パーティクルフィルタ/ICP)

Page 61: 三次元点群処理ライブラリPCLと 統合ロボットシステム研究での 利用例の紹介

移動のためのコストマップ

● 床面にチルトレーザのデータを射影して移動時の障害物回避に利用

Page 62: 三次元点群処理ライブラリPCLと 統合ロボットシステム研究での 利用例の紹介

点群処理の流れ

ロボット自身の点群除去

入力点群

平面検出

平面上の点群抽出

把持可能な方向の推定

把持

Page 63: 三次元点群処理ライブラリPCLと 統合ロボットシステム研究での 利用例の紹介

点群処理の流れ

ロボット自身の点群除去

入力点群

平面検出

平面上の点群抽出

把持可能な方向の推定

把持

こういうパイプライン処理がしやすいのが3次元点群処理の良い所!

Page 64: 三次元点群処理ライブラリPCLと 統合ロボットシステム研究での 利用例の紹介

ロボット自身の点群除去● ロボットの形状とカメラのキャリブレーションが必要

赤: センサからの全点群 色つき: フィルタ済み点群

Page 65: 三次元点群処理ライブラリPCLと 統合ロボットシステム研究での 利用例の紹介

平面検出

● ロボット的にはすごく重要!!● 3次元点群を利用すると最も嬉しいことの一つ

Page 66: 三次元点群処理ライブラリPCLと 統合ロボットシステム研究での 利用例の紹介

RANSACによる平面検出

● 最もオーソドックスなやり方● モデルとして平面の方程式を使えば良い

– pcl::SACSegmentation

● 欠点:– 一回で求まるのはひとつの平面

– 「領域」にクラスタリングされない

inlier

Page 67: 三次元点群処理ライブラリPCLと 統合ロボットシステム研究での 利用例の紹介

ラベリングによる平面検出 1/5

● Connected Component Labeling● 入力が画像の形をしていれば、デプス画像に対し

てラベリングすれば良い!● Kinectの点群はデプス画像から作っているのでこの

前提が成り立つ● PCLではこのような点群を”organized”と呼ぶ● pcl::OrganizedMultiPlaneSegmentation

Ef cient Organized Point Cloud Segmentation with fiConnected Components, Alexander J. B. et al. 3rd Workshop on Semantic Perception Mapping and Exploration, 2013

Page 68: 三次元点群処理ライブラリPCLと 統合ロボットシステム研究での 利用例の紹介

“Organized” PointCloud

● Organizedと呼ばれるデータ構造を利用する● 点群の並びを画素の順番にしてキープしておく● 近似最近某探索等が高速に実装できる

深さ画像

Page 69: 三次元点群処理ライブラリPCLと 統合ロボットシステム研究での 利用例の紹介

ラベリングによる平面検出 2/5

Page 70: 三次元点群処理ライブラリPCLと 統合ロボットシステム研究での 利用例の紹介

ラベリングによる平面検出 3/5

Page 71: 三次元点群処理ライブラリPCLと 統合ロボットシステム研究での 利用例の紹介

ラベリングによる平面検出 4/5

Page 72: 三次元点群処理ライブラリPCLと 統合ロボットシステム研究での 利用例の紹介

ラベリングによる平面検出 5/5

● 利点– 速い (法線推定とあわせてQVGAで30fpsでる)

– 複数の平面検出が容易

Page 73: 三次元点群処理ライブラリPCLと 統合ロボットシステム研究での 利用例の紹介

平面上の点群抽出

● 平面が出たらあとは簡単

● 平面上の点群を点同士の距離でクラスタリングするRadu Rusu [Semantic 3D Object Maps for Everyday Manipulation in Human Living Environments]

Page 74: 三次元点群処理ライブラリPCLと 統合ロボットシステム研究での 利用例の紹介

物体を把持する方向の推定

● 把持計画は奥が深い...が、今回は簡単に● 主成分分析で物体の方向を推定

2次元の主成分分析

Page 75: 三次元点群処理ライブラリPCLと 統合ロボットシステム研究での 利用例の紹介

動作生成

● いわゆる「モーションプランニング」と呼ばれる– もちろん奥が深い. 今回は真面目にやってない

Octomap Avoidance [Moveit!]

点群を利用すると障害物回避のための環境のモデル化が容易に

– Octomap

Armin Hornum et al. [OctoMap: An Efficient Probabilistic 3D Mapping Framework Based on Octrees]

Page 76: 三次元点群処理ライブラリPCLと 統合ロボットシステム研究での 利用例の紹介

実験

Page 77: 三次元点群処理ライブラリPCLと 統合ロボットシステム研究での 利用例の紹介

まとめ

● ロボット屋さんにとって3次元点群はとても重要● パーティクルフィルタベースなトラッキングライブラ

リ、pcl::trackingの紹介● ロボットPR2で3次元点群を利用したマニピュレー

ションの紹介– 3次元点群のおかげでtabletop manipulationはか

なり容易になった

– 少ない前提知識でのタスク実現