#author("2022-04-18T09:19:09+00:00","default:ail-wiki","ail-wiki")
#author("2022-04-18T09:19:39+00:00","default:ail-wiki","ail-wiki")
[[太田研 公開用Wiki]]

#contents
*はじめに [#v0fbad28]

**研究背景 [#i5bd2877]
近年、ロボット技術の向上に伴い、農場や工場では追従型ロボットが導入され
始めている。従来、人が運んでいたような農作物や道具を追従型ロボットに積載
し、人物に追従させることによって運搬作業の省人化や作業員の負担の削減につ
ながっており、作業員の重労働が減ることによって人間はロボットを監督するなど
の他の作業に集中することができる。農業の担い手の減少が深刻している中、農
作業の自動化は今後重視される課題である。
本研究では、これらの課題の達成を目標とした人物追従システムの開発を行った。

**研究目的 [#s3f7a595]
人物追従をするにあたってまず人物の検出を行う必要がある。
人物検出をするにあたって主にカメラ画像、ミリ波レーダー、3D-LiDAR を用
いた手法がある。カメラ画像は悪天候時に弱い。また、ミリ波レーダーは、発泡スチロールやダンボールを検出しづらいと
言った問題点がある。
そのため、本研究では 3D-LiDAR を用いて人物追従システムを開発した。

***ラベリングについて[#i2ac0620]
まず最初に本研究の提案手法のもとになったラベリング処理について述べる。
画像処理におけるラベリングとは、2値化処理された画像に対して白の画素が
連続している部分を画素の連結成分とみなし番号を振り分けることで連結領域単
位で独立して扱うための処理である。
この処理は通常、同じ番号ごとの面積や幅、高さなどの特徴量を求めることで
欠陥検査や分類処理などに用いられている。
ラベリング処理の流れを以下に示す。

1. 入力画像に対して2値化処理を行う

2. すべての画素のラベル番号を0で初期化

3. 2値化画像に対してラスタスキャンを行い、画素が白の位置を検索

4. 参照画素を検索し、その中で一番小さいものを、0の場合は最後
に振った番号+1のラベル番号を付与

5. 上までの処理を繰り返し、番号が被ったものや抜けたものを修正

ラベリング処理は2値化画像に対して白の部分の連結を判断する。そのため、こ
の処理をするためには閾値を決めて画素値を黒と白にしなければならない。しか
し、人物を検出するにあたって2値化処理をしてしまうと人が黒い服を着ている
状態など、ラベルを付与したい状況でもできない場合が予想される。そのため、ラ
ベリング手法をもとに提案手法の節で述べる距離画像のクラスタリング処理とい
うものを行う。
**提案手法 [#v691968b]
***点群の下処理 [#mbd99885]
3D-LiDAR からは点群と呼ばれるデータ形式でデータを取得することができる。
点群データにはレーザ光が反射した地点の3次元座標とその地点の反射強度情報
が格納されている。
本研究では得られた点群の三次元座標データを使用した。
ここでは得られたデータ内の三次元座標 (x,y,z) をユークリッド距離
に変換する処理を行った。
***距離画像の生成 [#uea0c256]
ここの処理では通常、図1のようにカメラ画像には画素値に色情報が入るが、画
素値に距離の情報を入れた画像を作成した。ここでは作成した画像のことを距離
画像と呼ぶことにする。
距離画像は本来2次元型の配列であり、画像として表示することはできないの
で作成した距離画像を人間が見やすいように疑似カラー表示したものの例を以下
の図2に示す。
CENTER:&ref(camera.png,center,80%); &ref(cameradist.png,center,80%);
CENTER:図1:カメラ画像, 図2:疑似カラー表示したカメラ画像

距離画像作成の流れを以下に示す。

1. 画像のサイズを指定

2. 点群の座標を極座標に変換

3. 変換した座標と対応する画素に距離情報を格納

4. 参照画素を検索し、その中で一番小さいものを、0の場合は最後
に振った番号+1のラベル番号を付与

5. 上までの処理を繰り返し、番号が被ったものや抜けたものを修正

次に処理の詳しい流れについて述べる。

まず、作成する画像の枠組みを作成する。本研究で使用した 3D-LiDAR は水平
分解能が 0.36、垂直分解能が 1.00 の物である。また本来、使用した 3D-LiDAR は
水平 360 °垂直 32 °の点群を取得する事ができるが、本研究では前方の人物を追従
することを想定しているため、前方の水平 120 度に限定して点群を取得した。こ
れらのことから作成する距離画像の大きさは縦 32、横 120/0.36 = 333.33 のサイ
ズとした。

ここでロボット座標と画像座標について述べる。ロボット座標系とは図3のよ
うに正面が x 軸、横が y 軸、縦が z 軸となっており、点群データはロボット座標系
で格納されている。またスクリーン座標系とは図4のように左上が原点であり、右
に x 軸、下に y 軸が伸びている座標系で画像処理の際などに使用される。

CENTER:&ref(robotcoodinate.png,center,20%); &ref(imgcoodinate.png,center,20%);
CENTER:図3:ロボット座標系, 図4:スクリーン座標系

距離画像は点群を取得した座標に対応する距離情報を入れていくことで作成す
る。そのためロボット座標系をスクリーン座標系に変換し、点群データを3次元座
標から奥行きを消去した2次元座標へ変換を行った。その後、得られた点群デー
タの距離情報を対応する画素に 1 つずつ入れる事によって距離画像を生成した。
***クラスタリング [#h07498b3]
クラスタリングとは、データ間の類似度に基づき、データをいくつかのグルー
プに分ける手法のことである。
本研究では前節で述べた画像処理のラベリング処理をもとに距離画像の画素内
の距離情報をもとに画素をグループ分けすることで物体の検出を行った。本研究で
はこの処理のことを距離画像のクラスタリングと呼ぶ。クラスタリング処理にお
いてもラベリング処理と同様に参照画素は注目画素の左、左上、上、右上とした。
手法の流れを以下に示す。

1. 距離画像のすべての画素に対して左上から右下へラスタスキャン
を行う

2. 注目画素と参照画素の差が、0.1m 以下の場合かつ参照画素にラベ
ルが付与されていた場合同じラベルを付与。また、参照画素にラ
ベルが付与されていなかった場合、前回付与したラベル+1のラ
ベルを付与。

3. 上までの処理を繰り返し、ラベリング処理のときと同様に番号が
被ったものや抜けたものを修正

以下の図5は距離画像の一部を拡大したものであり、図6は図5のクラスタリ
ング結果である。

CENTER:&ref(distpick.png,center,20%); &ref(clustaconclusion.png,center,20%);
CENTER:図5:距離画像の一部を拡大した図, 図6:図5のクラスタリング結果
***人物追従 [#n47651dc]
前小節では距離画像内のすべての物体を検出した。しかし、本研究の目的は人物
を追従することである人物の特徴としてある程度の大きさがあることと縦長であ
るという特徴がある。そのため、閾値より小さくクラスタリングされた物はノイ
ズとして消去した。その上で検出されたすべての物体を黒の矩形で表示した。ま
たその中で矩形の中心点の画素値内の距離が一番近いものを人物と判断し追従対
象とした。

以下の図7に作成した距離画像を擬似カラー表示したものに矩形を付与した例を示す。
人物以外のノイズを処理する閾値を決定する際に縦を長く、横を短くとったた
め壁などの縦長の物を多く検出している。ここで得られた追従対象の中心点の座
標をロボットに渡すことにより追従させた。

CENTER:#ref(distrect.png,center,45%)
CENTER:図7: 距離画像のクラスタリング結果

*評価実験 [#z03dce73]
本研究では群馬大学桐生キャンパス 6 号館前で人物がロボットの前を歩くこと
によって追従実験を行った。
**実験結果 [#l16f07a1]
実験結果を以下の図8、9、10に示す。前方の人物が右方向に進むとロボットも右方向に
進み、前方の人物が左方向に進むとロボットも左方向に進んでいる。
このことから追従実験は成功していることがわかる。

CENTER:&ref(following1.jpg,center,25%); 
CENTER:&ref(following2.jpg,center,25%); 
CENTER:&ref(following3.jpg,center,25%); 
CENTER:図8,9,10: 人物追従実験結果

*考察 [#c9ccbccd]

**誤検出例 [#t290e905]
研究開始時には常に前に人がいる状態を想定していたが、実環境下を考えた場
合に以下の 2 つの誤検出が発生してしまうことが考えられる。

***探索範囲に壁などが存在する場合 [#n705de45]
探索範囲に壁などの縦長の障害物が存在する場合、壁と追従対象との区別がつ
かず、壁の方向へ進んでしまった。

以下の図11、図12、図13 に誤検出の様子を
示す。

CENTER:&ref(wall1.jpg,center,25%); 
CENTER:&ref(wall2.jpg,center,25%); 
CENTER:&ref(wall3.jpg,center,25%); 
CENTER:図11,12,13: 誤検出例①

***ロボットと追従対象の間を人が横切った場合 [#s6d62d83]
ロボットと追従対象の間を人が横切った場合、追従対象の人物と横切った人物
との区別ができずに横切った人物の方を追従してしまった。

以下の図14、図15、図16 に誤検出の様子を示す。

CENTER:&ref(closs1.jpg,center,25%); 
CENTER:&ref(closs2.jpg,center,25%); 
CENTER:&ref(closs3.jpg,center,25%); 
CENTER:図14,15,16: 誤検出例②

*今後の展望[#v64a11db]
前節の誤検出で述べたとおり探索範囲に壁などが存在する場合、ロボットと追
従対象の間を人が横切った場合の2つの場面で誤検出が発生してしまった。これ
は、追従対象の人物と他の物の区別がつかずに別のものを追従してしまったのが
原因である。そのため、これらの誤検出を減らすためには追従対象の人物とそれ
以外との区別をつけられるような新しい条件を加える必要がある。

本研究では追従を行う際に 3D-LiDAR から得られた点群の距離情報から距離画
像を作成した。点群には3次元座標の他に反射強度情報が格納されている。その
ため、同じ 3D-LiDAR から得られる情報として反射強度に注目した。

以下の図17はロボットの前に上下異なる色や材質の服を着た人物が2人立っている状
態の点群データ取得時のカメラ画像である。また、図18 は距離画像と同様に対応
する座標に反射強度を入れていき、作成した反射強度画像を疑似カラー表示した
ものである。

CENTER:&ref(refcamera.jpg,center,15%); &ref(refimg.png,center,25%);
CENTER:&ref(refcamera.jpg,center,18%); &ref(refimg.png,center,25%);
CENTER:図17:カメラ画像, 図18:疑似カラー表示した反射強度画像

2つの画像から服の色や材質によって反射強度は異なることがわかる。
そのため、今後の展望として点群の反射強度情報を追従対象を区別する条件と
して加え、誤検出の減少を目指す。

*参考文献 [#n9ee06a4]
[1] “OpenCV.jp opencv samples and documents“,
http://opencv.jp

[2] 塚田 義典, 北川 悦司, 田中 成典, 安彦 智史, 福島 佑樹: “距離画像センサを用
いた3次元空間の構築に関する研究 “, 土木学会論文集 F3(土木情報学),Vol.68,
No.2, I 171-I 180, 2005.

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS