次に、本発明における実施形態について図面を参照して説明する。
なお、各図面は、本発明の実施形態を説明するためのものである。ただし、本発明は、各図面の記載に限られるわけではない。また、各図面の同様の構成には、同じ番号を付し、その繰り返しの説明を、省略する場合がある。また、以下の説明に用いる図面において、本発明の説明に関係しない部分の構成については、記載を省略し、図示しない場合もある。また、図面中の矢印の方向は、一例を示すものであり、ブロック間の信号の向きを限定するものではない。
本発明における実施形態の理解を容易にするため、図面を参照して、一般的なマニピュレータの構成について説明する。
図1は、一般的なマニピュレータ210の構成の一例を示す図である。
図1に示されているマニピュレータ210は、基台213と、一つ又は複数のリンク211と、一つ又は複数の関節部212と、エンドエフェクタ215とを含む。さらに、マニピュレータ210は、地図用センサ220を含む。
基台213は、マニピュレータ210を所定に位置に固定する。さらに、基台213は、後ほど説明する情報処理装置100及び地図生成部230を含んでもよい。
リンク211は、関節部212及びエンドエフェクタ215を固定的に結合する構成である。
関節部212は、リンク211を回転可動に接続する構成である。
なお、関節部212が、マニピュレータ210の動力源(例えば、モーター)を含んでもよい。あるいは、リンク211が動力源(例えば、油圧シリンダ)を含んでもよい。
エンドエフェクタ215は、実際の作業(例えば、物品の保持)を実行する構成である。詳細には、エンドエフェクタ215は、その構成として、リンク211及び関節部212に相当する構成を含み、所定の作業を実現している。
地図用センサ220は、地図情報に含まれる未観測領域の状態を観測するための検出器である。例えば、地図用センサ220は、ToF(Time of Flight)方式の深度センサ、又は、奥行き情報を取得できるステレオカメラである。
なお、マニピュレータ210は、3次元空間を動作してもよく、2次元平面を動作してもよい。
図1に示されているマニピュレータ210は、具体的には、操作装置30からの制御を基に動作する。
図2は、マニピュレータ210の操作状態を模式的に示した図である。
図2に示されているように、マニピュレータ210は、所定の通信を介して接続されている操作装置30からの指示を基に、対象物40における動作を実行する。
なお、図2において、基台213は、一例として、移動可能な台車上に取り付けられている。
<第1の実施形態>
次に、図面を参照して、本発明における第1の実施形態に係る情報処理装置100について説明する。以下の説明は、情報処理装置100の動作の理解の補助のため、適宜、第1の実施形態に係る情報処理装置100を含むマニピュレータ210を操作するための操作システム10を参照して説明する。
[構成の説明]
図3は、第1の実施形態に係る情報処理装置100を含む操作システム10の構成の一例を示すブロック図である。
図3に示されているように、操作システム10は、操作装置30と、マニピュレータ部20とを含む。
操作装置30は、入力装置310と、出力装置320とを含む。
入力装置310は、図示しない操作者の操作入力として、マニピュレータ210に含まれるエンドエフェクタ215の目標状態(例えば、目標となる位置及び姿勢)の入力を受け付ける。そして、入力装置310は、受け付けた目標状態をマニピュレータ部20に送信する。なお、図2に示されているように、入力装置310は、この送信に所定の通信路を使用する。
出力装置320は、マニピュレータ部20からマニピュレータ210の操作に関連する情報を受信し、図示しない操作者に対して確認可能な情報として出力する。確認可能な情報とは、操作者の視覚、聴覚、又は、触覚を介して取得される情報である。例えば、視覚の場合について説明すると、出力装置320は、受信した視覚情報を図示しない表示機器に画像として表示する。あるいは、操作装置30が操作用のレバーを含む場合、出力装置320は、レバーを操作する手などに対する反力として、情報を出力してもよい。
マニピュレータ210の操作に関連する情報は、詳細には、図3に示すように、地図情報と、マニピュレータ210の状態(例えば、位置及び姿勢)に関する情報とを含む。
なお、マニピュレータ210の状態は、取得した時点におけるマニピュレータ210の状態である。つまり、マニピュレータ210の状態は、その時点における「マニピュレータ210の現在状態」である。
マニピュレータ部20は、マニピュレータ210と、地図用センサ220と、地図生成部230と、第1の実施形態に係る情報処理装置100とを含む。
マニピュレータ210は、情報処理装置100からの制御に関する情報(以下、「制御入力」と呼ぶ)を基に、各部の位置及び姿勢を変更する。さらに、マニピュレータ210は、関節部212に関する情報(マニピュレータ関節情報)を情報処理装置100及び地図生成部230に送信する。
マニピュレータ関節情報とは、例えば、マニピュレータ210に含まれる関節部212の状態(例えば、回転角)に関する情報である。一般的に、マニピュレータ210の基台213及びリンク211は、外形が一定である。また、エンドエフェクタ215の外形は、作業に沿って、ある程度変化するが、所定の範囲に含まれる。そのため、情報処理装置100は、マニピュレータ210の関節部212の状態を基に、マニピュレータ210の各部の位置及び姿勢を算出できる。なお、情報処理装置100は、初期値として、又は、動作に先立つ処理における受信情報として、算出に必要は情報(例えば、リンク211、関節部212、及び、エンドエフェクタ215の外形)を保持している。
なお、第1の実施形態は、上記の情報を取得できるマニピュレータ210であれば、その構成などを制限されない。例えば、マニピュレータ210は、既に説明した一般的はマニピュレータ210でもよい。あるいは、マニピュレータ210は、リンク型に限らず、直行型のロボットでもよい。そのため、マニピュレータ210の詳細な説明を省略する。
地図用センサ220は、既に説明したように、地図情報の含まれる未観測領域の状態を観測するための検出器である。地図用センサ220は、検出した未観測領域の状態(以下、「センサデータ」と呼ぶ)を地図生成部230に送信する。なお、観測結果は、少なくとも「障害物がある」及び「障害物がない(フリースペース)」のいずれかを含む。
地図生成部230は、マニピュレータ210からのマニピュレータ関節情報と、地図用センサ220からのセンサデータとを基に、地図情報及びマニピュレータ210の現在状態を生成する。そして、地図生成部230は、地図情報及びマニピュレータ210の現在状態を、情報処理装置100及び操作装置30に送信する。
なお、地図生成部230は、予め、上記の情報以外の情報として、地図を作成するために必要となる情報を取得又は保持している。
さらに、地図生成部230は、地図の生成手法を制限されない。地図生成部230は、ICP(Iterative Closest Point)等のスキャンマッチング手法を用いてもよい。
また、地図生成部230が生成する地図情報の形式は、特に制限されない。例えば、地図生成部230は、生成する地図として、3次元占有格子地図(尤度付きボクセルマップ)を生成してもよい。
情報処理装置100は、操作装置30から目標状態を受信する。さらに、情報処理装置100は、マニピュレータ210からマニピュレータ関節情報を受信する。さらに、情報処理装置100は、地図生成部230から地図情報及びマニピュレータ210の現在状態を受信する。そして、情報処理装置100は、マニピュレータ210の動作を制御するための制御入力を作成し、マニピュレータ210に送信する。
次に、第1の実施形態に係る情報処理装置100を説明するための参考として、マニピュレータ210を操作するために一般的に用いられている情報処理装置900について説明する。情報処理装置900は、図3に示されている情報処理装置100と同様の位置において用いられる。
図4は、一般的な情報処理装置900の構成の一例を示す図である。
情報処理装置900は、経路生成部910と、制御入力演算部930とを含む。
経路生成部910は、目標状態と、地図情報と、マニピュレータ210の現在状態とを基に、所定の手法を用いて、障害物との衝突を回避した経路を生成する。
制御入力演算部930は、生成された経路に追従するための制御入力を算出し、マニピュレータ210に送信する。さらに、制御入力演算部930は、マニピュレータ210からのマニピュレータ関節情報を基に制御入力を修正し、マニピュレータ210に修正した制御入力を送信する。つまり、制御入力演算部930は、フィードバック制御を実現している。
このような一般的な情報処理装置900が、特許文献3に記載の方法(以下、「第1の一般的方法」と呼ぶ)を用いた場合、既に説明したように、未観測領域の観測に適した経路を出力できないという問題点があった。
また、未観測領域についての処理方法としては、特許文献3に記載の方法以外として、未観測領域を障害物と見立てる方法(以下、「第2の一般的方法」と呼ぶ)が想定可能である。情報処理装置900が、第2の一般的方法を用いた場合、情報処理装置900は、マニピュレータ210と潜在的な障害物との衝突を回避することできる。しかし、情報処理装置900が、第2の一般的方法を用いた場合、マニピュレータ210の動作範囲に不必要な制限が生じる。
この動作範囲のおける不必要な制限を低減するためには、新たな作業が必要となる。例えば、操作者が、操作装置30を操作して、情報処理装置900に対して、新たなマニピュレータ210の目標状態(例えば、位置及び姿勢)を設定する必要があった。しかし、操作者は、未観測領域の情報を持っていない。そのため、操作者は、新たに設定する目標状態が未観測領域の観測に適切である否か、及び、新たに設定する目標状態に到達可能であるか否かを判断できない。つまり、第2の一般的な方法は、第1の一般的な方法と同様に、未観測領域の観測に適した経路を出力でいないという問題点があった。
本発明における第1の実施形態に係る情報処理装置100は、上記の問題点を解決する。
図5は、本発明のおける第1の実施形態に係る情報処理装置100の構成の一例を示すブロック図である。
情報処理装置100は、経路生成部110と、未観測領域観測計画部120と、制御入力演算部130とを含む。
経路生成部110は、目標状態と、地図情報と、マニピュレータ210の現在状態とを基に、マニピュレータ210の経路を生成する。そして、経路生成部110は、生成した経路を未観測領域観測計画部120に送信する。
未観測領域観測計画部120は、経路生成部110から経路を受信する。さらに、未観測領域観測計画部120は、地図情報及びマニピュレータ210の現在状態を受信する。そして、未観測領域観測計画部120は、経路、地図情報、及び、マニピュレータ210の現在状態を基に、地図情報における未観測領域を抽出する。
「観測」とは、地図用センサ220を用いて地図情報の処理単位における状態を調べることである。地図情報の処理単位における状態とは、「障害物がない状態(フリースペース)」、又は、「障害物がある状態(障害物領域)」である。つまり、観測とは、地図情報における処理単位が、フリースペースであるか、障害物領域であるかを調べることである。そのため、未観測領域とは、フリースペースであるか、障害物領域であるかを観測していない領域である。
以下、処理単位を「ボクセル」と呼ぶ。ただし、これは、地図情報を3次元の情報に限定するものではない。地図情報は、2次元の情報でもよい。
そして、未観測領域観測計画部120は、地図情報における未観測領域と、経路生成部110が生成した目標状態に到達する経路とが衝突するか否かを予測する。
衝突が予測された場合、未観測領域観測計画部120は、衝突が予測された未観測領域における観測を実施するためのエンドエフェクタ215の状態(以下、「修正目標状態」と呼ぶ)を計画する。なお、受信した目標状態と修正目標状態との区別を明確にする場合、受信した目標状態を第1の目標状態と呼び、修正目標状態を第2の目標状態と呼ぶ。
ただし、未観測領域観測計画部120は、修正目標状態として、次の点を考慮して計画する。
(1)修正目標状態から目標状態へ移動が容易である。
(2)修正目標状態において、地図用センサ220における未観測領域を観測の有用性が高い。
そして、未観測領域観測計画部120は、計画した修正目標状態に移動でき、かつ、障害物領域及び未観測領域との衝突を回避する経路を計画する。そして、未観測領域観測計画部120は、計画した修正経路を制御入力演算部130に出力する。なお、経路生成部110が生成した経路と修正経路とを区別する場合、経路生成部110が生成した経路(W)を第1の経路と呼び、修正経路を第2の経路と呼ぶ。
衝突が予測されない場合、未観測領域観測計画部120は、制御入力演算部130に、経路生成部110から受信した経路(第1の経路)を送信する。
制御入力演算部130は、受信した経路に沿った制御入力を演算し、演算結果である制御入力をマニピュレータ210に送信してマニピュレータ210を制御する。この制御において、制御入力演算部130は、マニピュレータ210から受信したマニピュレータ関節情報を用いる。
つまり、制御入力演算部130は、第1の経路又は第2の経路を基にマニピュレータ210を制御する。
なお、制御入力演算部130は、制御入力の演算方法を制限されない。制御入力演算部130は、一般的な手法を用いればよい。そのため、制御入力演算部130の詳細な説明を省略する。
[動作の説明]
次に、図面を参照して、第1の実施形態に係る情報処理装置100の動作について説明する。
まず、図面を参照して、経路生成部110の動作について説明する。
図6は、第1の実施形態に係る経路生成部110の動作の一例を示すフローチャートである。
経路生成部110は、目標状態(P)を取得する(ステップS101)。目標状態(P)とは、目標となるマニピュレータ210のエンドエフェクタ215の状態(例えば、位置及び姿勢)である。ただし、目標状態(P)は、マニピュレータ210の他の構成の状態を含んでもよい。
経路生成部110は、取得した目標状態(P)にマニピュレータ210を移動させるための経路(W)を生成する(ステップS102)。つまり、経路生成部110は、マニピュレータ210の第1の目標状態と、地図情報と、マニピュレータ210の現在状態とを基に、第1の目標状態への第1の経路を生成する。
経路生成部110は、経路(W)として、エンドエフェクタ215に関する経路(W)に加え、マニピュレータ210の関節部212の状態(例えば、関節角)を含む経路(W)を生成する。ただし、経路生成部110は、経路(W)の生成において、未観測領域をフリースペースとして扱う。なお、経路生成部110が経路(W)の生成に用いる手法は、特に制限されない。例えば、経路生成部110は、経路(W)を生成する手法として、RRT(Rapidly-exploring random tree)などのサンプリングベースの経路生成手法を用いてもよい。
経路生成部110は、経路(W)が生成できたか否かを判定する(ステップS103)。
経路(W)を生成できなかった場合(ステップS103でNo)、経路生成部110は、動作を終了する。なお、経路生成部110は、終了する前に、操作装置30に対して、目標状態(P)に到達できないことを示す通知、又は、目標状態(P)の再入力を促すような通知を送信してもよい。
経路(W)が生成できた場合(ステップS103でYes)、経路生成部110は、生成した経路(W)を未観測領域観測計画部120に送信する。
そして、後ほど説明するように、未観測領域観測計画部120が、修正目標状態(P^)に対応した経路(W)を生成する場合、経路生成部110は、動作を終了する。
ここで、「P^」は、Pの上部に「^(以下、「ハット」と呼ぶ)」を付けた変数を示す。
一方、経路生成部110が、修正目標状態(P^)に対応した経路(W)を作成する場合、経路生成部110は、以下の動作を実行する。
経路(W)を送信後、経路生成部110は、マニピュレータ210(詳細には、エンドエフェクタ215)が目標状態(P)に到達したか否か確認する(ステップS105)。経路生成部110における到達の確認手法は、特に制限されない。例えば、経路生成部110は、制御入力演算部130から到達についての情報を取得してもよい。あるいは、経路生成部110は、マニピュレータ210の現在状態(pe)を基に、到達を確認してもよい。
エンドエフェクタ215が、目標状態(P)に到達した場合(ステップS105でYes)、経路生成部110は、動作を終了する。
目標状態(P)に達していない場合、経路生成部110は、未観測領域観測計画部120から経路(W)の生成(再生成)の依頼があるか否かを確認する(ステップS106)。
依頼がない場合(ステップS106でNo)、経路生成部110は、S105に戻る。
依頼がある場合(ステップS106でYes)、経路生成部110は、S102に戻る。つまり、経路生成部110は、その時点のマニピュレータ210の現状状態から目標状態(P)までの経路(W)を生成し、未観測領域観測計画部120に送信する。
なお、後ほど説明するように、未観測領域観測計画部120は、修正目標状態(P^)において、経路(W)の生成を依頼する。そのため、ここで生成される経路(W)を最初に生成された経路(W)(第1の経路)と区別する場合、第3の経路と呼ぶ。
次に、図面を参照して、未観測領域観測計画部120の動作について説明する。
未観測領域観測計画部120は、観測が必要な未観測領域とマニピュレータ210の構造とを基に、未観測領域を観測するための修正目標状態(P^)として、マニピュレータ210の現在状態(pe)から到達可能な修正目標状態(P^)を生成する。
ただし、未観測領域観測計画部120は、後ほど詳細に説明するように、修正目標状態(P^)の生成において、コストを用いる。このコストは、現在状態(pe)から修正目標状態(P^)への移動に関するコスト、及び、修正目標状態(P^)から目標状態(P)に移動するコストである。
図7は、第1の実施形態に係る未観測領域観測計画部120の全体動作の一例を示すフローチャートである。
図8は、第1の実施形態に係る未観測領域観測計画部120における修正目標状態(P^)を生成する動作の一例を示すフローチャートである。
図9ないし16は、マニピュレータ210を模式的に示す図である。図9ないし16において、各ブロックが、ボクセルに対応する。白いボクセルは、フリースペースである。黒いボクセルは、障害物領域である。斜線のボクセルは、未観測領域である。網掛けのボクセルは、修正目標状態(P^)の候補を生成するボクセルである。
なお、地図情報は、上記のようにボクセルに関する情報を含む場合、ボクセルマップと呼ばれる。
未観測領域観測計画部120は、経路(W)を取得する(ステップS201)。なお、既に説明したとおり、経路(W)は、エンドエフェクタ215の経路と、関節部212の状態(例えば、関節角)とを含む。なお、経路(W)は、目標状態(P)までの経路(W)のため、目標状態(P)を含む。
未観測領域観測計画部120は、地図情報及びマニピュレータ210の現在状態(pe)を取得する(ステップS202)。マニピュレータ210の現在状態(pe)は、少なくともエンドエフェクタ215の現在状態(pe)を含む。
未観測領域観測計画部120は、地図情報から、障害物領域のボクセルと、未観測領域のボクセルとを抽出する。そして、未観測領域観測計画部120は、障害物領域のボクセルの集合(障害物領域集合(OV))と、未観測領域のボクセルの集合(未観測領域集合(UV))とを生成する(ステップS203)。
なお、第1に実施形態に係る集合の形式は、特に制限されない。例えば、各ボクセルが識別子(ID:Identifier)を持つ場合、集合は、ボクセルのIDの集合でもよい。例えば、地図が3次元の場合、ボクセルのIDは、地図上のボクセルの座標(x座標、y座標、z座標)でもよい。さらに、ボクセルのIDとして3次元の座標を用いる場合、IDは、例えば、「(i,j,k):ただし、iはx座標、jはy座標、kはz座標である」の形式でもよい。ここで、IDが(i,j,k)であるボクセル(V)は、「V(i,j,k)」とすると、各集合は、例えば、次のように表すことができる。
障害物領域集合(OV):={V(i1,j1,k1)}:ただし、(i1,j1,k1)は、障害物領域のボクセルのIDである。
未観測領域集合(UV):={V(i2,j2,k2)}:ただし、(i2,j2,k2)は、未観測領域のボクセルのIDである。
なお、上記において、「:=」は定義を示し、「{}」は集合を示す。
そして、未観測領域観測計画部120は、経路(W)と衝突する未観測領域集合(UV)の集合を生成する(ステップS204)。以下、衝突が発生する未観測領域のボクセルの集合を、「衝突未観測領域集合(CUV)」と呼ぶ。
未観測領域観測計画部120における衝突計算方法は、特に制限はない。例えば、未観測領域観測計画部120は、衝突計算として、Bounding Box法を用いてもよい。Bounding Box法は、衝突を計算する構成をBounding Boxと呼ばれる直方体で覆い、覆ったBounding Box群と衝突を判定する領域との衝突を計算する方法である。つまり、未観測領域観測計画部120は、マニピュレータ210のリンク211、関節部212、及びエンドエフェクタ215を、それぞれBounding Boxで覆い、Bounding Box群と未観測領域のボクセルとの衝突を計算してもよい。
そして、未観測領域観測計画部120は、衝突が発生した未観測領域のボクセルの集合を抽出して、衝突未観測領域集合(CUV)を生成する。
ただし、未観測領域観測計画部120は、衝突未観測領域集合(CUV)の作成において、衝突が発生する時刻を含む集合とする。衝突未観測領域集合(CUV)は、例えば、次のように定義される。なお、衝突未観測領域集合(CUV)は、単に、衝突未観測領域とも呼ぶ。
衝突未観測領域集合(CUV):={(V(i3,j3,k3),t)}:ただし、(i3,j3,k3)は、衝突が発生する未観測領域のボクセルのIDであり、「t」は衝突の発生する時刻である。
つまり、衝突未観測領域集合(CUV)は、未観測領域集合(UV)からマニピュレータ210との衝突が発生する部分集合を抽出し、衝突が発生する時刻を付加した集合である。
図9は、現在状態(pe)と、未観測領域の衝突とを模式的に示す図である。
そして、未観測領域観測計画部120は、衝突未観測領域集合(CUV)を作成できたか否か、つまり、衝突が発生したか否かを判定する(ステップS205)。
衝突が発生しない(ステップS205でNo)、未観測領域観測計画部120は、経路(W)を制御入力演算部130に送信する(ステップS219)。そして、未観測領域観測計画部120は、処理を終了する。なお、この場合、衝突未観測領域集合(CUV)は、空集合(CUV=φ)となる。
衝突が発生する場合(ステップS205でYes)、未観測領域観測計画部120は、修正目標状態(P^)を生成する(ステップS220)。
図8を参照して、修正目標状態(P^)を生成する動作の詳細を説明する。
未観測領域観測計画部120は、入力空間を離散化した近似を用いて、数式1に示されている制約付き最適化問題の解として、修正目標状態(P^)を算出する。
なお、数式1の最適化問題は、情報処理装置100に予め与えられている問題である。情報処理装置100は、図示しない記憶部などに最適化問題を保持している。未観測領域観測計画部120は、保持されている最適化問題を用いて以下で説明する動作を実行する。
なお、数式1の第1式は、最適化問題における評価関数である。この最適化問題は、評価関数を最大化する修正目標状態(P^)を決定する問題である。
評価関数において、関数E(P^)は、エンドエフェクタ215が修正目標状態(P^)に移動した場合に、地図用センサ220が観測する未観測領域の観測数である。なお、観測が不確定性を含む場合、観測数は、期待値でもよい。つまり、観測期待値とは、地図用センサ220が観測できる未観測領域の領域(例えば、ボクセル)の数の期待値である。以下の説明は、期待値を用いる。
関数D1(pe,P^)は、現在状態(pe)から修正目標状態(P^)に移動する場合に必要となるコストを表す関数である。関数D2(P^,P)は、修正目標状態(P^)から目標状態(P)に移動する場合に必要となるコストを表す関数である。w1、w2、及びw3は、それぞれの関数に関する重みである。
評価関数は、「修正目標状態(P^)における未観測領域の観測期待値」から、「現在状態(pe)から修正目標状態(P^)への移動に必要なコスト」及び「修正目標状態(P^)から目標状態(P)への移動に必要なコスト」を引く関数である。評価関数は、観測できる未観測領域の期待値が高い修正目標状態(P^)、つまり、未観測領域を多く観測できる修正目標状態(P^)を高く評価する。さらに、評価関数は、「現在状態(pe)から修正目標状態(P^)への移動に必要なコスト」が低い修正目標状態(P^)、つまり、現在状態(pe)から容易に移動できる修正目標状態(P^)を高く評価する。同様に、評価関数は、「修正目標状態(P^)から目標状態(P)への移動に必要なコスト」が低い修正目標状態(P^)、つまり、目標状態(P)に容易に移動できる修正目標状態(P^)を高く評価する。まとめると、評価関数は、現在状態(pe)から修正目標状態(P^)、並びに、修正目標状態(P^)から目標状態(P)の移動が容易であり、かつ、未観測領域を多く観測できる修正目標状態(P^)を高く評価する。
ただし、評価関数は、上記の関数の一部を含む関数でもよい。
また、第2式以降の式は、最適化問題における制約条件である。
第1及び第2の制約条件における関数IK(P^)は、エンドエフェクタ215が修正目標状態(P^)を実現するために必要な関節部212の角度(関節角)を求める関数である。ただし、関数IK(P^)は、関節部212において実現可能な関節角を出力する。つまり、第2の制約条件は、マニピュレータ210が、修正目標条件(P^)に移動可能であるという制約である。
第1の制約条件における関数C(IK(P^),UV∪OV)は、エンドエフェクタ215が修正目標状態(P^)まで移動する経路において、マニピュレータ210と、障害物領域のボクセル及び未観測領域のボクセルとの干渉を計算する関数である。具体的には、関数C(IK(P^),UV∪OV)は、衝突が発生しない場合には「0」を、衝突が発生する場合には「0でない値(非0)」を出力する。つまり、第1の制約条件は、マニピュレータ210が、修正目標状態(P^)に移動する経路にいずれにおいても、障害物領域及び未観測領域との干渉しない(衝突が発生しない)という制約条件である。
第3の制約条件における関数T(pe,P^)は、エンドエフェクタ215の現在状態(pe)から修正目標状態(P^)に移動させる到達可能な経路を出力する。つまり、第3の制約条件は、マニピュレータ210が、現在状態(pe)から修正目標状態(P^)に移動する経路が存在するとの制約である。
このように、制約条件は、エンドエフェクタ215が、修正目標状態(P^)に対して、障害物領域及び未観測領域と干渉することなく実現できること、及び、現在状態(pe)から移動できることを課している。そのため、上記の最適化問題を解として得られた修正目標状態(P^)は、マニピュレータ210において実行可能な状態となる。
次に、上記の動作を詳細に説明する。
未観測領域観測計画部120は、衝突未観測領域集合(CUV)から部分集合(以下、早期衝突未観測領域集合(CUVS)を抽出する。
ここで、早期衝突未観測領域集合(CUVS)とは、衝突未観測領域集合(CUV)に含まれるボクセルの中から、衝突時刻(t)が早い方から順に所定数のボクセルを抽出した集合である。
つまり、未観測領域観測計画部120は、経路生成部110が生成した経路(第1の経路)と、地図情報と、マニピュレータ210の現在の状態とを基に、第1の経路における未観測領域を抽出する。
次に、未観測領域観測計画部120は、早期衝突未観測領域集合(CUVS)の近傍のフリースペースのボクセルの集合である近傍フリー集合(S)を生成する(ステップS206)。例えば、未観測領域観測計画部120は、早期衝突未観測領域集合(CUVS)に含まれるボクセルの所定の近傍範囲のボクセルの中から、フリースペースであるボクセルを抽出して近傍フリー集合(S)を作成してもよい。ここで近傍とは、例えば、3次元のボクセルの場合、直接接続する6個のボクセル(上下、左右、前後のボクセル)の範囲(6近傍)、又は、ボクセルを中心とした上下、左右、前後方向の27個のボクセルの範囲(26近傍)である。
図10は、近傍フリー集合(S)の一例を示す図である。図10において、網掛けされたボクセルが、近傍フリー集合(S)に含まれるボクセルである。なお、近傍フリー集合(S)は、「近傍フリー領域」又は「近傍領域」とも呼ばれる。
つまり、未観測領域観測計画部120は、フリースパース(障害物がない領域)から未観測領域の近傍フリー集合(近傍領域)を抽出する。
未観測領域観測計画部120は、近傍フリー集合(S)に含まれるフリースペースのいずれかのボクセルに含まれるように、エンドエフェクタ215を移動させる目標である修正目標状態候補(pm)を生成する(ステップS207)。未観測領域観測計画部120は、ランダム、又は、所定の算出手法を用いて、修正目標状態候補(pm)を生成する。
図11は、修正目標状態候補(pm)の一例を示す図である。図11は、参考として、3つの修正目標状態候補(pm)を示している。なお、図11において、各ボクセルは、一つの修正目標状態候補(pm)を含んでいるが、これは、例示である。未観測領域観測計画部120は、一つのボクセルに複数の修正目標状態候補(pm)を生成してもよい。さらに、修正目標状態候補(pm)が生成されないボクセルがあってもよい。
未観測領域観測計画部120は、エンドエフェクタ215が修正目標状態候補(pm)を実現するために必要なとなる関節部212の関節角を算出する(ステップS208)。つまり、未観測領域観測計画部120は、関数IK(pm)を算出する。これの動作は、第2の制約条件の確認動作でもある。
なお、関節部212の関節角などからエンドエフェクタ215の位置及び姿勢を求めることは、一般的に「運動学」と呼ばれている。その対応として、エンドエフェクタ215の状態から関節角などを求めることは、「逆運動学」と呼ばれている。未観測領域観測計画部120は、関数IK(pm)の算出において、一般的な逆運動学の手法を用いて関節角を算出できる。
未観測領域観測計画部120は、関節角を用いて修正目標状態候補(pm)を実現するために必要となるマニピュレータ210と、障害物領域及び未観測領域との衝突を計算する(ステップS209)。つまり、未観測領域観測計画部120は、第1の制約条件を確認する。ただし、未観測領域観測計画部120は、関数IK(P^)として、関数IK(pm)を用いる。また、未観測領域観測計画部120は、衝突の計算の手法として、ステップS204において用いた手法を用いればよい。
未観測領域観測計画部120は、衝突が発生するか否かを判定する(ステップS210)。
衝突が発生する場合(ステップS210でYes)、マニピュレータ210は、修正目標状態候補(pm)を実現できない。そのため、未観測領域観測計画部120は、修正目標状態候補(pm)を破棄する(ステップS213)。そして、未観測領域観測計画部120は、ステップS207に戻る。
衝突が発生しない場合(ステップS210でNo)、未観測領域観測計画部120は、現在状態(pe)から修正目標状態候補(pm)に到達する修正経路候補(Wm)を生成する(ステップS211)。つまり、未観測領域観測計画部120は、第3の制約条件を確認する。なお、未観測領域観測計画部120は、修正経路候補(Wm)の生成に用いる手法として、経路生成部110が用いている手法を用いればよい。ただし、未観測領域観測計画部120は、未観測領域を障害物とみなして修正経路候補(Wm)を生成する。つまり、未観測領域観測計画部120は、未観測領域に入らないように修正経路候補(Wm)を生成する。
図12は、修正経路候補(Wm)の一例を示す図である。図12は、参考として、波線を用いて、一つの修正目標状態候補(pm)におけるマニピュレータ210の状態を示している。
なお、経路生成部110が、修正経路候補(Wm)を生成してもよい。この場合、未観測領域観測計画部120は、修正目標状態候補(pm)を経路生成部110に送信する。そして、経路生成部110は、新たな経路として、修正経路候補(Wm)を生成し、生成した修正経路候補(Wm)を未観測領域観測計画部120に送信する。図5は、この場合の含むように、未観測領域観測計画部120と経路生成部110との間に修正目標状態候補(pm)を示している。ただし、図5は、未観測領域観測計画部120が経路を生成する場合を除外するものではない。
未観測領域観測計画部120は、修正経路候補(Wm)が生成できたか否かを判定する(ステップS212)。
修正経路候補(Wm)を生成できない場合(ステップSS212でNo)、マニピュレータ210は、現在状態(pe)から修正目標状態候補(pm)に移動できない。つまり、この場合は、第3の制約条件を満足できない場合である。そのため、未観測領域観測計画部120は、修正目標状態候補(pm)を破棄する(ステップS213)。そして、未観測領域観測計画部120は、ステップS207に戻る。
修正経路候補(Wm)が生成できた場合(ステップS212でYes)、未観測領域観測計画部120は、修正目標状態候補(pm)のスコア(以下、評価値(cm)とする)を算出する(ステップS214)。
なお、評価値(cm)は、評価関数と同型である。すなわち、未観測領域観測計画部120は、次に示す数式2を用いて、修正目標状態候補(pm)の評価値(cm)を算出する。
関数E(pm)は、修正目標状態候補(pm)において、未観測領域における観測可能な領域の数の期待値である。具体的には、この期待値は、修正目標状態候補(pm)において、未観測領域の含まれるボクセルの中で観測できるボクセルの数の期待値である。未観測領域観測計画部120は、期待値の算出手法を制限されない。例えば、未観測領域観測計画部120は、この期待値の計算として、地図用センサ220の性能(例えば、画角)を基に、Raycast法を用いて、修正目標状態候補(pm)から観測が期待される未観測領域のボクセル数を算出してもよい。なお、Raycast法とは、仮想的な線を利用して衝突検知を行う方法である。
関数D1(pe、pm)は、修正経路候補(Wm)に沿った現在状態(pe)から修正目標状態候補(pm)への移動に要するコストである。関数D2(pm、P)は、修正目標状態候補(pm)から目標状態(P)への移動に要するコストである。未観測領域観測計画部120は、これらのコストの算出として、一般的なコスト計算手法を用いてもよい。例えば、未観測領域観測計画部120は、関数D1(pe、pm)として、現在状態(pe)から修正目標状態候補(pm)への修正経路候補(Wm)の経路長を用いてもよい。あるいは、未観測領域観測計画部120は、関数D2(pm,P)として、2つの状態間のユークリッド距離を用いてもよい。
図13は、修正目標状態候補(pm)の評価値(cm)を算出する経路と、地図用センサ220のセンス範囲との一例を示す図である。
未観測領域観測計画部120は、所定数(n)まで、評価値(cm)を算出した修正目標状態候補(pm)の算出を繰り返す。
そのため、未観測領域観測計画部120は、評価値(cm)を算出した修正目標状態候補(pm)を所定数(n)まで生成したか否かを判定する(ステップS215)。
所定数の修正目標状態候補(pm)を生成していない場合(ステップS215でNo)、未観測領域観測計画部120は、ステップS207に戻る。
所定数の修正目標状態候補(pm)を生成した場合(ステップS215でYes)、未観測領域観測計画部120は、修正目標状態(P^)として、最も評価値(cm)が高い修正目標状態候補(pm)を選択する(ステップS216)。そして、未観測領域観測計画部120は、修正経路(W^)として、選択した修正目標状態候補(pm)の修正経路候補(Wm)を選択する。そして、未観測領域観測計画部120は、修正目標状態(P^)と修正経路(W^)とを制御入力演算部130に出力する。
数式を用いて、この場合の修正目標状態(P^)を表すと、次の数式3となる。
数式3において、「*」は、選択されたことを示す記号である。つまり、未観測領域観測計画部120は、修正目標状態(P^)として、評価値(cm)を最大とする修正目標状態候補(pm*)を選択する。そして、未観測領域観測計画部120は、修正目標状態(P^)に対応した修正経路(W^)として、選択した修正目標状態候補(pm*)の修正経路候補(Wm*)を選択する。
図14は、修正目標状態(P^)として選択された修正目標状態候補(pm*)を示す図である。
つまり、未観測領域観測計画部120は、近傍領域において未観測領域を観測させるための修正目標状態(P^)(第2の目標状態)を生成し、マニピュレータ210の現状状態からの第2の目標状態までの修正経路(W^)(第2の経路)を生成する。
ここまでの動作を用いて、未観測領域観測計画部120は、修正目標状態(P^)を生成する。
このように、未観測領域観測計画部120は、近傍フリー集合(S)(近傍領域)において、修正目標状態(P^)(第2の目標状態)の候補である複数の修正目標状態候補(pm)(以下、単に「目標状態候補」とも呼ぶ)を生成する。そして、未観測領域観測計画部120は、第2の目標状態として、目標状態候補の評価値(cm)を最適化する目標状態候補を選択する。
図7を用いた説明に戻る。
未観測領域観測計画部120は、マニピュレータ210のエンドエフェクタ215が、修正目標状態(P^)に到達したか否かを判定する(ステップS217)。
到達していない場合(ステップS217でNo)、未観測領域観測計画部120は、到達するまで、判定を繰り返す。つまり、未観測領域観測計画部120は、修正目標状態(P^)への到達を待つ。
図15は、エンドエフェクタ215が修正目標状態(P^)に到達した状態を示す図である。
エンドエフェクタ215が修正目標状態(P^)に到達した場合(ステップS217でYes)、未観測領域観測計画部120は、経路生成部110に経路(W)の生成(再生成)を依頼する(ステップS218)。
この状態では、エンドエフェクタ215は、修正目標状態(P^)に位置する。そのため、経路生成部110は、修正目標状態(P^)から目標状態(P)への経路(W)を生成する。なお、ここで生成された経路(W)、つまり、再生成された経路(W)を、既に説明したように第3の経路と呼ぶ。
そして、未観測領域観測計画部120は、ステップS210に戻る。
このように、未観測領域観測計画部120は、修正目標状態(P^)を新たな現在状態(pe)として、同様の処理を繰り返す。そのため、未観測領域観測計画部120は、修正目標状態(P^)と目標状態(P)との間に未観測領域が残っていても、目標状態(P)までの適切な経路(W)を出力することができる。
図16は、目標状態(P)に到達したマニピュレータ210を示す図である。
[効果の説明]
次に、第1の実施形態の効果について説明する。
第1の実施形態に係る情報処理装置100は、未観測領域の観測に適した経路を出力するとの効果を奏することができる。
その理由は、次のとおりである。
情報処理装置100の経路生成部110は、目標状態(P)を基に経路(W)を生成する。
未観測領域観測計画部120は、経路(W)と、地図情報と、マニピュレータ210の現在状態(pe)とを基に、経路(W)と衝突する未観測領域である衝突未観測領域集合(CUV)を抽出する。そして、未観測領域観測計画部120は、衝突未観測領域の近傍のフリースペースから近傍フリー集合(S)を抽出する。
そして、未観測領域観測計画部120は、近傍フリー集合(S)においてエンドエフェクタ215を移動させる目標である修正目標状態(P^)を生成する。そして、未観測領域観測計画部120は、現在状態(pe)から修正目標状態(P^)までの経路である修正経路(W^)を算出する。
そして、制御入力演算部130が、修正経路(W^)を基にマニピュレータ210を制御するためである。
さらに、未観測領域観測計画部120は、修正目標状態(P^)の候補として、複数の修正目標状態候補(pm)を生成する。そして、未観測領域観測計画部120は、修正目標状態(P^)として、修正目標状態候補(pm)の中から、未観測領域における観測数が多く、移動のコストが低い修正目標状態候補(pm)を選択する。
そのため、制御入力演算部130は、未観測領域を減らし、移動のコストが低いようにマニピュレータ210を制御できるためである。
さらに、第1の実施形態に係る情報処理装置100は、情報処理装置100を含む操作システム10の操作者に対して、障害物との衝突回避が必要な状況においても、容易にマニピュレータ210の操作できるとの効果を奏することができる。
その理由は、次のとおりである。
情報処理装置100は、操作者からの目標状態(P)を基に上記の動作を実行できる。そのため、情報処理装置100は、操作者に修正目標状態(P^)を意識させない。
さらに、情報処理装置100は、操作者の介入を必要としないで、マニピュレータ210と障害物との衝突を回避するためである。
さらに、情報処理装置100の未観測領域観測計画部120は、操作者の補助を必要としないで、観測が必要な未観測領域の抽出と観測位置である修正目標状態(P^)を算出するためである。
また、未観測領域観測計画部120は、近傍フリー集合(S)における候補について処理を実行する。そして、未観測領域観測計画部120は、制約条件を満足する候補について処理を実行する。そのため、情報処理装置100は、不必要な処理を低減できる。
<その他の実施形態>
次に、その他の実施形態について説明する。
未観測領域観測計画部120は、経路(W)と未観測領域との衝突を判定し、衝突が起きる場合に、修正目標状態(P^)を生成する。そのため、修正経路(W^)は、経路(W)に沿っていない場合がある。
しかし、未観測領域観測計画部120は、衝突の予測されるボクセルの手前まで修正経路(W^)として、経路生成部110が生成した経路(W)に用いてもよい。この場合、マニピュレータ210が、経路(W)に沿った移動において、未観測領域に到達すると、その時点で、マニピュレータ210のエンドエフェクタ215は、修正目標状態(P^)に移動したことになる。
あるいは、情報処理装置100は、操作装置30に含まれていてもよい。なお、地図生成部230が、操作装置30に含まれていてもよい。
あるいは、情報処理装置100に含まれる経路生成部110、未観測領域観測計画部120、及び、制御入力演算部130は、それぞれ、マニピュレータ部20及び/又は操作装置30に分けて配置されてもよい。
あるいは、情報処理装置100が、入力装置310及び/又は出力装置320を含んでもよい。
マニピュレータ210は、固定式に限らず、図2に示されているように移動可能な台車等に搭載されてもよい。この場合、情報処理装置100は、マニピュレータ210に加え、台車の動作を制御してもよい。
<変形例>
次に、第1の実施形態の変形例について説明する。
以上の説明した情報処理装置100は、次のように構成される。
例えば、情報処理装置100の各構成部は、ハードウェア回路で構成されてもよい。
また、情報処理装置100において、各構成部は、ネットワークを介して接続した複数の装置を用いて、構成されてもよい。
また、情報処理装置100において、複数の構成部は、1つのハードウェアで構成されてもよい。
また、情報処理装置100は、CPU(Central Processing Unit)と、ROM(Read Only Memory)と、RAM(Random Access Memory)とを含むコンピュータ装置として実現されてもよい。情報処理装置100は、上記構成に加え、さらに、内部インターフェース回路(IIC:Inner Interface Circuit)と、ネットワークインターフェース回路(NIC:Network Interface Circuit)とを含むコンピュータ装置として実現されてもよい。
図17は、本変形例に係る情報処理装置600の構成の一例を示すブロック図である。
情報処理装置600は、CPU610と、ROM620と、RAM630と、内部記憶装置640と、IIC650と、NIC660とを含み、コンピュータ装置を構成している。
CPU610は、ROM620からプログラムを読み込む。そして、CPU610は、読み込んだプログラムに基づいて、RAM630と、内部記憶装置640と、IIC650と、NIC660とを制御する。そして、CPU610を含むコンピュータは、これらの構成を制御し、図5に示されている、経路生成部110と、未観測領域観測計画部120と、制御入力演算部130としての各機能を実現する。
CPU610は、各機能を実現する際に、RAM630又は内部記憶装置640を、プログラムの一時記憶媒体として使用してもよい。
また、CPU610は、コンピュータで読み取り可能にプログラムを記憶した記憶媒体690が含むプログラムを、図示しない記憶媒体読み取り装置を用いて読み込んでもよい。あるいは、CPU610は、IIC650又はNIC660を介して、図示しない外部の装置からプログラムを受け取り、RAM630に保存して、保存したプログラムを基に動作してもよい。なお、記憶媒体690は、例えば、CD(Compact Disc)−ROM、又は、DVD(Digital Versatile Disc)−ROMである。
ROM620は、CPU610が実行するプログラム及び固定的なデータを記憶する。ROM620は、例えば、P−ROM(Programmable-ROM)又はフラッシュROMである。
RAM630は、CPU610が実行するプログラム及びデータを一時的に記憶する。RAM630は、例えば、D−RAM(Dynamic-RAM)である。
内部記憶装置640は、情報処理装置600が長期的に保存するデータ及びプログラムを記憶する。また、内部記憶装置640は、CPU610の一時記憶装置として動作してもよい。内部記憶装置640は、例えば、ハードディスク装置、光磁気ディスク装置、又は、SSD(Solid State Drive)である。
ここで、ROM620と内部記憶装置640は、不揮発性(non-transitory)の記憶媒体である。一方、RAM630は、揮発性(transitory)の記憶媒体である。そして、CPU610は、ROM620、内部記憶装置640、又は、RAM630に記憶されているプログラムを基に動作可能である。つまり、CPU610は、不揮発性記憶媒体又は揮発性記憶媒体を用いて動作可能である。
IIC650は、CPU610と、マニピュレータ部20に含まれる他の構成部(マニピュレータ210及び地図生成部230)とのデータを仲介する。IIC650は、例えば、PCI(Peripheral Component Interconnect)カード、USB(Universal Serial Bus)カード、又は、マニピュレータ210用の専用回路である。なお、IIC650は、有線に限らず、無線を用いてもよい。
NIC660は、所定の通信路を介して操作装置30とのデータのやり取りを中継する。NIC660は、例えば、無線LAN(Local Area Network)カードである。ただし、NIC660は、無線の通信路に限らず、有線の通信路を用いてもよい。
このように構成された情報処理装置600は、情報処理装置100と同様の効果を得ることができる。
その理由は、情報処理装置600のCPU610が、プログラムに基づいて情報処理装置100と同様の機能を実現できるためである。
以上、実施形態を参照して本願発明を説明したが、本願発明は上記実施形態に限定されるものではない。本願発明の構成及び詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。