(実施の形態1)
以下、図面を参照して本発明の実施の形態について説明する。説明の明確化のため、以下の記載及び図面は、適宜、省略、及び簡略化がなされている。また、各図面において、同一の要素には同一の符号が付されており、必要に応じて重複説明は省略されている。
図1は、実施の形態1にかかる軌道生成システム1のハードウェア構成を示す図である。ここで、軌道生成システム1は、移動オブジェクトの軌道を生成する。移動オブジェクトは、環境内を移動する。移動オブジェクトは、実空間に対応する環境を移動するものであってもよいし、仮想空間に対応する環境を移動するものであってもよい。移動オブジェクトが実空間を移動する場合、移動オブジェクトは物理的に存在する実機であり得る。また、移動オブジェクトが仮想空間を移動する場合、移動オブジェクトは、シミュレーションによって実現される仮想空間に存在する仮想上のオブジェクトであり得る。また、移動オブジェクトは、例えば、ロボット等の移動体であってもよいし、移動体に設けられた把持部(ロボットハンド等)であってもよい。また、把持部である移動オブジェクトは、例えば産業用ロボット等のロボットアーム(マニピュレータ)であってもよい。また、移動体は、車両であってもよいし、空間を飛翔する飛行体であってもよい。
また、軌道生成システム1は、1つ又は複数のコンピュータによって実現され得る。軌道生成システム1は、クラウドシステムによって実現されてもよい。また、移動オブジェクトが実空間を移動する場合、軌道生成システム1は、移動オブジェクトに搭載されたコンピュータによって実現されてもよい。また、移動オブジェクトが仮想空間を移動する場合、軌道生成システム1は、仮想空間を実現するコンピュータによって実現されてもよい。
また、軌道は、移動オブジェクトが環境内を移動可能な経路(軌跡)であり得る。また、軌道は、移動オブジェクトの開始状態から目標状態までの、移動オブジェクトの状態の軌跡(変化)であり得る。ここで、開始状態は、移動オブジェクトの軌道のスタートの状態を示す。また、目標状態は、移動オブジェクトの軌道のゴールの状態を示す。ここで、移動オブジェクトの状態を表す要素の数は、移動オブジェクトの特徴量の数(次元数)となり得る。なお、移動オブジェクトの特徴量の数(次元数)は、移動オブジェクトの自由度に対応する。そして、移動オブジェクトの状態の特徴の次元数(移動オブジェクトの自由度)をmとすると、移動オブジェクトの状態は、m次元空間における(特徴量ベクトルで表される)点で示される。そして、移動オブジェクトの軌道は、m次元空間における、特徴量ベクトルで示される点の軌跡とみなされ得る。
ここで、移動オブジェクトが移動体である場合、軌道は、移動体の位置の軌跡であってもよい。また、移動オブジェクトが把持部である場合、軌道は、把持部の先端の位置の軌跡であってもよい。これらの場合、移動オブジェクトの「状態」は、移動オブジェクトの位置に対応する。また、これらの場合、軌道は、移動オブジェクトの開始位置(開始状態)から目標位置(目標状態)までの、移動オブジェクトの位置の軌跡であり得る。なお、これらの場合、移動オブジェクトの位置(状態)は、位置(状態)の要素である位置座標で示され得る。例えば、位置座標が3次元空間における位置座標(x,y,z)で示される場合、移動オブジェクトの位置(状態)の特徴量の数(次元数)は、3となる。また、この位置座標(x,y,z)は、3次元空間における特徴量ベクトルで表される点を示し得る。
また、移動オブジェクトが把持部であって、軌道のゴールが把持部のある姿勢である場合、軌道は、把持部の姿勢の軌跡であってもよい。この場合、移動オブジェクトの「状態」は、移動オブジェクトの姿勢に対応する。また、この場合、軌道は、移動オブジェクトの開始姿勢(開始状態)から目標姿勢(目標状態)までの、移動オブジェクトの姿勢の軌跡であり得る。ここで、把持部は、複数の関節を有する。この場合、移動オブジェクトの姿勢(状態)は、姿勢(状態)の要素である関節角度の組で示され得る。例えば、把持部の関節が2つであり、それぞれの関節角度がφ1及びφ2で示される場合、移動オブジェクトの姿勢(状態)は、特徴量ベクトル(φ1,φ2)で示され、その特徴量の数(次元数)は、2となる。また、この姿勢(φ1,φ2)は、2次元空間における特徴量ベクトルで表される点を示し得る。
また、移動オブジェクトが把持部を有する移動体であって、軌道のゴールが移動体の移動先における把持部のある姿勢である場合、軌道は、移動体の位置姿勢及び把持部の姿勢の軌跡であってもよい。この場合、移動オブジェクトの「状態」は、移動オブジェクトの位置及び姿勢に対応する。また、この場合、軌道は、移動オブジェクトの開始位置姿勢(開始状態)から目標位置姿勢(目標状態)までの、移動オブジェクトの位置姿勢の軌跡であり得る。なお、この場合、移動オブジェクトの位置姿勢(状態)は、移動体の位置座標、移動体の旋回角度(移動体の向き)及び把持部の関節の関節角度の組で示され得る。例えば、移動体の位置座標を(x,y)、移動体の旋回角度をθ、把持部の3つの関節の関節角度を(φ1,φ2,φ3)と表すと、移動オブジェクトの位置姿勢(状態)は、特徴量ベクトル(x,y,θ,φ1,φ2,φ3)で示され、その特徴量の数(次元数)は、6となる。また、この移動オブジェクトの状態(x,y,θ,φ1,φ2,φ3)は、6次元空間における特徴量ベクトルで表される点を示し得る。
軌道生成システム1は、主要なハードウェア構成として、CPU(Central Processing Unit)12と、ROM(Read Only Memory)14と、RAM(Random Access Memory)16と、インタフェース部(IF;Interface)18とを有する。CPU12、ROM14、RAM16及びインタフェース部18は、データバスなどを介して相互に接続されている。なお、軌道生成システム1は、ハードウェア構成として、GPU(Graphics Processing Unit)を有してもよい。
CPU12は、制御処理及び演算処理等を行う演算装置(処理デバイスまたはプロセッサ)としての機能を有する。なお、演算装置は、GPUによって実現されてもよい。ROM14は、CPU12(GPU)によって実行される制御プログラム及び演算プログラム等を記憶するストレージとしての機能を有する。RAM16は、処理データ等を一時的に記憶するメモリとしての機能を有する。インタフェース部18は、有線又は無線を介して外部と信号の入出力を行う。また、インタフェース部18は、ユーザによるデータの入力の操作を受け付け、ユーザに対して情報を表示するための処理を行う。例えば、インタフェース部18は、生成された軌道を表示してもよい。
図2は、実施の形態1にかかる軌道生成システム1の構成を示す機能ブロック図である。軌道生成システム1は、学習装置100と、軌道生成装置200とを有する。なお、学習装置100及び軌道生成装置200は、物理的に一体の装置で構成されてもよい。あるいは、学習装置100及び軌道生成装置200は、物理的に別個の装置で構成されてもよい。その場合、学習装置100及び軌道生成装置200のそれぞれが、図1に示したハードウェア構成を有し得る。例えば、移動オブジェクトが実機で実現される場合、軌道生成装置200は移動オブジェクトに搭載されたコンピュータによって実現されてもよく、学習装置100は移動オブジェクトとは別個のコンピュータ(例えばパーソナルコンピュータ)によって実現されてもよい。
学習装置100は、オートエンコーダ及び軌道生成モデルの学習処理を行う。ここで、オートエンコーダは、例えばニューラルネットワークによって実現され得る。オートエンコーダは、移動オブジェクトが存在する環境内の各オブジェクトである環境オブジェクト(移動オブジェクト以外のオブジェクト)を示す3次元点群(点群データ)から、環境の特徴を示す環境特徴情報を生成(抽出)するために用いられる。詳しくは後述する。なお、移動オブジェクトの軌道を生成する場合、環境特徴情報は、移動オブジェクトが回避すべき障害物の特徴を示す障害物情報に対応する。
また、3次元点群は、移動オブジェクトが存在する環境内の各物体の各点の位置座標を示す。3次元点群は、環境内のある視点から環境内の物体表面の各点までの距離及びその視点から各点までの方向によって、生成され得る。3次元点群は、例えば、移動オブジェクトに搭載されたカメラ(RGB-Dカメラ、LiDAR(Light Detection and Ranging)等)又はセンサ(以後、「カメラ等」又は単に「カメラ」と称する)によって得られる。
また、軌道生成モデルは、例えばニューラルネットワーク等の機械学習アルゴリズムで実現され得る。軌道生成モデルは、環境内を移動オブジェクトが移動可能な軌道を生成するために用いられる。軌道生成モデルに開始状態と目標状態と環境特徴情報を入力することによって、軌道が生成され得る。詳しくは後述する。
軌道生成装置200は、学習装置100によって学習されたオートエンコーダ及び軌道生成モデルを用いて、移動オブジェクトの軌道を生成する。ここで、本実施の形態では、軌道生成装置200は、1つの開始状態及び1つの目標状態について、複数の軌道を生成するように構成されている。具体的には、本実施の形態にかかる軌道生成装置200(軌道生成システム1)は、軌道生成モデル(学習済みモデル)に設定される変更可能なパラメータ(第1のパラメータ)の異なる複数の値それぞれについて、軌道生成モデルを用いて軌道を生成する。これによって、本実施の形態にかかる軌道生成装置200(軌道生成システム1)は、複数の軌道を生成する。詳しくは後述する。
学習装置100は、教師データ取得部110と、オートエンコーダ学習部120と、軌道生成モデル学習部130とを有する。また、軌道生成装置200は、学習済みモデル格納部212と、点群取得部214と、環境特徴情報取得部216と、条件設定部218と、パラメータ設定部220と、軌道生成部230と、軌道出力部240と、軌道決定部250とを有する。これらの構成要素は、例えば、CPU12がROM14に記憶されたプログラムを実行することによって実現可能である。また、各構成要素は、必要なプログラムを任意の不揮発性記録媒体に記録しておき、必要に応じてインストールするようにして、実現されるようにしてもよい。なお、各構成要素は、上記のようにソフトウェアによって実現されることに限定されず、何らかの回路素子等のハードウェアによって実現されてもよい。また、上記構成要素の1つ以上は、物理的に別個のハードウェアによってそれぞれ実現されてもよい。
<学習処理>
学習処理(学習段階)について説明する。学習装置100において、教師データ取得部110は、オートエンコーダ及び軌道生成モデルの学習に必要な多数の教師データを取得する。教師データは、例えば、教師環境と、その教師環境内を通る教師軌道とを示す。また、教師データは、教師環境におけるある視点から得られた3次元点群データを含んでもよい。なお、教師環境は、実空間の環境であってもよいし、仮想空間の環境であってもよい。また、例えば、教師環境には、床面その他の複数の環境オブジェクトが存在する。例えば、教師環境を示すデータ(教師環境データ)は、床面及びその他の環境オブジェクトの位置座標を示してもよい。また、教師軌道を示すデータ(教師軌道データ)は、教師環境における、移動オブジェクトの開始状態から目標状態までの、移動オブジェクトの状態の軌跡を示してもよい。
ここで、教師軌道は、障害物等の環境オブジェクトに衝突しないように生成されている。つまり、教師軌道は、環境内のどこに環境オブジェクトが存在するかが認識された条件下で生成され得る。また、教師軌道は、機械学習によらない手法で生成されることが好ましい。
オートエンコーダ学習部120は、教師データに含まれる3次元点群データを用いて、オートエンコーダの学習処理を行う。具体的には、オートエンコーダ学習部120は、オートエンコーダについて、教師データにおける3次元点群を入力とし、その3次元点群が出力となるように、学習処理を行う。つまり、オートエンコーダ学習部120は、3次元点群を入力データとし、その3次元点群を正解ラベルとして、オートエンコーダの学習処理を行うようにしてもよい。
ここで、学習済みのオートエンコーダは、エンコードの段階において、3次元点群の次元を圧縮(削減)する。これにより、学習済みのオートエンコーダは、ある環境における3次元点群データが入力されると、圧縮された次元の特徴量を抽出することによって、その環境の特徴を示す環境特徴情報を出力するように構成される。したがって、環境特徴情報の次元は、3次元点群の次元よりも小さくなる。つまり、オートエンコーダは、環境の特徴の次元を3次元点群の次元よりも小さくする。オートエンコーダは、3次元点群データを圧縮することによって、環境特徴情報を出力するように構成されてもよい。また、オートエンコーダは、3次元点群の特徴量から、環境特徴情報に対応する特徴量を抽出するように構成されてもよい。
このように、3次元点群の特徴の次元よりも小さい次元の環境特徴情報を用いて後述する軌道生成モデルの学習処理を行うことによって、学習処理を効率的に行うことができる。なお、オートエンコーダを用いて3次元点群の次元を圧縮することは、必須の構成ではない。オートエンコーダを用いない場合、後述する学習処理において、オートエンコーダを用いて生成される環境特徴情報の代わりに、3次元点群データが、環境特徴情報として、軌道生成モデルに入力され得る。
軌道生成モデル学習部130は、教師データに含まれる教師軌道データと、その教師軌道データが生成されたときの教師環境を示す教師環境データと、学習済みのオートエンコーダとを用いて、軌道生成モデルの学習処理を行う。ここで、上述したように、軌道生成モデルは、例えばニューラルネットワーク等の機械学習アルゴリズムによって実現可能である。以下の説明では、軌道生成モデルがニューラルネットワークによって実現される例について説明する。軌道生成モデル学習部130の具体的な処理については後述する。
なお、本実施の形態では、軌道生成モデルは、環境特徴情報、移動オブジェクトの目標状態、及び、移動オブジェクトのある状態(現在の状態Snとする)を入力として、現在の状態Snの次の状態Sn+1を出力する。具体的には、軌道生成モデルは、現在状態Sn及び目標状態SNの特徴量ベクトルと環境特徴情報とを入力として、Snの次の状態Sn+1の特徴量ベクトルを出力する。なお、Nは、目標状態を示すインデックスである。nは、生成される軌道における、開始状態からの状態の順序を示すインデックスであり、0からNまでの整数である。
そして、移動オブジェクトの現在の状態及び目標状態と、環境特徴情報とを学習済みの軌道生成モデルに入力して、現在の状態の次の状態が出力されるといった処理を繰り返すことで、状態の軌跡に対応する軌道が生成され得る。つまり、初期段階では、開始状態を現在の状態として、開始状態(現在の状態)及び目標状態と、環境特徴情報とを学習済みの軌道生成モデルに入力して、現在の状態の次の状態が出力される。そして、出力された次の状態を現在の状態として、同様の処理を行うことで、さらに次の状態が出力される。このような処理を繰り返すことで、開始状態から目標状態までの軌道が生成される。
図3は、実施の形態1にかかる学習装置100によって実行される学習方法を示すフローチャートである。図3は、学習装置100によって実行される学習処理の流れを示す。教師データ取得部110は、上述したように、オートエンコーダ及び軌道生成モデルの学習に必要な教師データを取得する(ステップS102)。オートエンコーダ学習部120は、上述したように、教師データに含まれる3次元点群データを用いて、オートエンコーダの学習を行う(ステップS104)。軌道生成モデル学習部130は、軌道生成モデルの学習を行う(ステップS110)。なお、軌道生成モデル学習部130は、複数の教師軌道それぞれについて、S110の処理を実行する。好ましくは、軌道生成モデル学習部130は、取得された教師軌道の全てについて、S110の処理を実行する。これにより、精度のよい、つまり環境中の障害物に衝突することが良好に抑制できる軌道を生成可能な、軌道生成モデルを生成することができる。
図4は、実施の形態1にかかる軌道生成モデル学習部130によって実行される軌道生成モデル学習処理(S110)を示すフローチャートである。軌道生成モデル学習部130は、教師軌道を一定の長さで分割する(ステップS112)。なお、教師軌道の分割数をN個とする。なお、ここで言う「長さ」とは、教師軌道に関する移動オブジェクトの状態の特徴の次元数をmとした場合に、m次元空間における特徴量ベクトルで示される点と点との間の距離に対応し得る。なお、本実施の形態では教師軌道を一定の長さで分割するとしたが、教師軌道を分割する際の分割された教師軌道の長さは、一定であることに限定されない。例えば、教師軌道は、所定の範囲内の任意の長さで分割されてもよい。
図5は、実施の形態1にかかる、教師軌道の分割処理(S112)を説明するための図である。図5は、教師軌道30を例示している。ここで、教師軌道に関する移動オブジェクトの状態の特徴の次元数がmである場合、図5は、m次元空間における教師軌道30を示している。
教師軌道30を分割したときの分割した点である分割点をPnとする。ここで、nは、教師軌道30の開始状態からの分割点の順序を示すインデックスである。また、nは0からNまでの整数である。なお、分割点P0は開始状態の特徴量ベクトルに対応し、分割点PNは目標状態の特徴量ベクトルに対応し得る。したがって、教師軌道30上には、分割点P0,P1,P2,・・・,Pn-1,Pn,Pn+1,・・・,PN-1,PNが配置されることとなる。ここで、Pnは、開始状態からn番目の分割点の状態の特徴量ベクトルに対応する。
図4のフローチャートの説明に戻る。軌道生成モデル学習部130は、n=0として(ステップS114)、分割した教師軌道の(n点目,n+1点目,最終点)の状態の組を抽出して、(現在状態,次の状態,目標状態)の状態の組を生成する(ステップS116)。そして、n+1=Nでない場合(ステップS118のNO)、nを1だけインクリメントして(ステップS120)、S116の処理を行う。そして、n+1=Nとなった場合に(S118のYES)、S116の処理を終了し、以降の処理を行う。
このように、S116の処理を繰り返すことで、n=0~N-1のそれぞれについて、(現在状態,次の状態,目標状態)の状態の組として、(n点目,n+1点目,最終点)の状態の組が生成される。例えば、n=0について、(現在状態,次の状態,目標状態)の状態の組として、(0点目P0,1点目P1,最終点PN)の状態の組が生成される。また、例えば、n=1について、(現在状態,次の状態,目標状態)の状態の組として、(1点目P1,2点目P2,最終点PN)の状態の組が生成される。
軌道生成モデル学習部130は、教師軌道に対応する3次元点群から、学習済みのオートエンコーダを用いて環境特徴情報を抽出する(ステップS122)。具体的には、軌道生成モデル学習部130は、教師軌道を作成した際にその教師軌道が通った教師環境において得られた3次元点群を、S104の処理で学習されたオートエンコーダに入力する。これによりオートエンコーダから環境特徴情報が出力されるので、軌道生成モデル学習部130は、教師軌道に対応する環境特徴情報を抽出することができる。S116の処理及びS122の処理によって、後述するように、軌道生成モデルの入力データ及びそれに対応する出力データ(正解ラベル)が得られる。
軌道生成モデル学習部130は、「環境特徴情報、現在状態及び目標状態」を入力、「次の状態」を正解ラベルとして、軌道生成モデルの学習処理を行う(ステップS124)。具体的には、軌道生成モデル学習部130は、学習前の軌道生成モデルに、S122で抽出された環境特徴情報と、ある状態の組の「現在状態」及び「目標状態」とを入力する。そして、軌道生成モデル学習部130は、その状態の組の「次の状態」と、軌道生成モデルからの出力との差分(誤差)が小さくなるように、軌道生成モデルの各種パラメータ(重み及びバイアス等)を最適化する。
例えば、図5の例において、軌道生成モデル学習部130は、学習前の軌道生成モデルに、抽出された環境特徴情報と、n=0に対応する状態の組の「0点目P0」及び「最終点PN」に対応する特徴量ベクトルとを入力する。そして、軌道生成モデル学習部130は、n=0に対応する状態の組の「1点目P1」に対応する特徴量ベクトルと、軌道生成モデルから出力された特徴量ベクトルとの差分(誤差)が小さくなるように、軌道生成モデルの各種パラメータを最適化する。同様に、軌道生成モデル学習部130は、学習前の軌道生成モデルに、抽出された環境特徴情報と、n=1に対応する状態の組の「1点目P1」及び「最終点PN」に対応する特徴量ベクトルとを入力する。そして、軌道生成モデル学習部130は、n=1に対応する状態の組の「2点目P2」に対応する特徴量ベクトルと、軌道生成モデルから出力された特徴量ベクトルとの差分(誤差)が小さくなるように、軌道生成モデルの各種パラメータを最適化する。軌道生成モデル学習部130は、以下同様にして、全ての状態の組について、学習処理を行う。つまり、軌道生成モデル学習部130は、軌道生成モデルに、環境特徴情報と、ある点Pn及び最終点PNに対応する特徴量ベクトルとを入力する。そして、軌道生成モデル学習部130は、点Pnの次の点Pn+1に対応する特徴量ベクトルと、軌道生成モデルから出力された特徴量ベクトルとの差分(誤差)が小さくなるように、軌道生成モデルの各種パラメータを最適化する。
本実施の形態において、軌道生成モデル学習部130は、学習前の軌道生成モデルに環境特徴情報を入力することによって、軌道生成モデルの学習を行うように構成されている。ここで、環境特徴情報は、環境において移動オブジェクトの移動を妨げる障害物となり得るような環境オブジェクトを示し得る。したがって、軌道生成モデル学習部130は、移動オブジェクトが障害物に衝突することが抑制された軌道を生成するような軌道生成モデルを、学習処理によって生成することが可能となる。
図6は、実施の形態1にかかる軌道生成モデル20を概略的に例示する図である。上述したように、軌道生成モデル20は、例えばニューラルネットワークによって構築され得る。上述したように、軌道生成モデル20は、環境特徴情報と、現在状態と、目標状態とが入力されると、次の状態を出力する。
例えば、軌道生成モデル20は、1つの入力層22と、複数の全結合層24-1~24-K(Kは2以上の整数)とで構成されている。ここで、全結合層24には、ドロップアウト層が設けられている。全結合層24がドロップアウト層を含んでもよい。ドロップアウト層においてドロップアウト率を設定することによって、対応する全結合層24のニューロン(ノード)及びその結合が、設定されたドロップアウト率に応じた割合でランダムに無効化される。これにより、軌道生成モデル20の学習段階では、過学習が抑制される。なお、学習段階で設定されるドロップアウト率は、任意の値であってもよい。また、軌道生成モデル20の全結合層24にドロップアウト層が設けられているので、後述する軌道生成処理で使用される学習済みの軌道生成モデル(学習済みモデル)には、ドロップアウト層が設けられている。
環境特徴情報の特徴の次元数をjとし、状態の特徴の次元数をmとする。この場合、入力層22の次元数(ノードの数)はj+m+mとなる。そして、全結合層24-1の次元数は、j+m+mよりも大きくてもよい。そして、全結合層24の次元数は、後段の全結合層24になるにつれて、小さくなるようにしてもよい。そして、最終段の全結合層24-Kの次元数は、次の状態の特徴の次元数mと同じmとなる。
<軌道生成処理>
次に、軌道生成処理(推論処理)について説明する。軌道生成処理によって、移動オブジェクトの軌道が生成される。軌道生成装置200において、学習済みモデル格納部212は、学習装置100によって学習された学習済みモデルを格納する。具体的には、学習済みモデル格納部212は、オートエンコーダ学習部120によって学習されたオートエンコーダを格納する。また、学習済みモデル格納部212は、軌道生成モデル学習部130によって学習された軌道生成モデルを格納する。
点群取得部214は、移動オブジェクトの周囲の環境に対応する3次元点群を取得する。具体的には、点群取得部214は、軌道生成の対象となる移動オブジェクトが存在し軌道を生成する対象である環境(対象環境)における3次元点群を取得する。例えば、点群取得部214は、開始状態にある移動オブジェクトからの視点からの3次元点群を取得してもよい。この場合、点群取得部214は、開始状態にある移動オブジェクトに搭載されたカメラ等によって、3次元点群を取得してもよい。なお、点群取得部214は、移動オブジェクトに搭載されたカメラ等から3次元点群を取得することに限られない。点群取得部214は、移動オブジェクトとは物理的に離れた位置にあるカメラ等によって、3次元点群を取得してもよい。例えば、点群取得部214は、対象環境に設置されたインフラセンサによって、3次元点群を取得してもよい。
環境特徴情報取得部216は、3次元点群を用いて、移動オブジェクトの周囲の環境の特徴を示す環境特徴情報を取得する。具体的には、環境特徴情報取得部216は、取得された3次元点群と、学習済みモデル格納部212に格納された学習済みのオートエンコーダとを用いて、環境特徴情報を取得する。さらに具体的には、環境特徴情報取得部216は、取得された3次元点群を学習済みのオートエンコーダに入力することによって、環境特徴情報を取得する。これにより、3次元点群から環境特徴情報が抽出される。
ここで、上述したように、オートエンコーダは、3次元点群の次元を圧縮(削減)することによって、圧縮された次元の特徴を示す環境特徴情報を出力するように構成される。したがって、環境特徴情報の特徴の次元数は、3次元点群の次元数よりも小さい。
なお、上述したように、オートエンコーダを用いて3次元点群の次元を圧縮することは、必須の構成ではない。オートエンコーダを用いない場合、後述する軌道生成処理において、環境特徴情報の代わりに3次元点群データが、軌道生成モデルに入力され得る。また、この場合、3次元点群が、移動オブジェクトの周囲の環境の特徴を示す環境特徴情報として機能する。したがって、点群取得部214が、環境特徴情報取得部として機能する。
条件設定部218は、生成しようとする軌道における制約条件を設定する。設定される制約条件は、例えば、軌道の両端の状態である開始状態及び目標状態である。なお、移動オブジェクトの現在の状態を開始状態とし、その状態からの軌道を生成する場合、条件設定部218は、現在の状態を、開始状態として設定する。以下、目標状態を設定する場合について説明するが、開始状態を設定する場合についても同様である。
移動オブジェクトが移動体であって、軌道が移動体の位置の軌跡で表される場合、条件設定部218は、目標状態として、移動オブジェクトの目標位置を設定してもよい。この場合、条件設定部218は、目標位置として、3次元空間における位置座標を設定してもよい。
また、移動オブジェクトが把持部である場合、条件設定部218は、目標状態として、把持部の目標姿勢を設定してもよい。この場合、条件設定部218は、目標姿勢として、把持部の各関節の関節角度を設定してもよい。例えば、把持部が環境内の物体(環境オブジェクト)を把持するタスクを実行しようとする場合、条件設定部218が目標姿勢を設定することで、どの環境オブジェクトをどの方向から把持するか(横から把持する又は上から把持する等)を、設定することができる。
また、移動オブジェクトが把持部を有する移動体である場合、条件設定部218は、目標状態として、移動体の目標位置及び把持部の目標姿勢を設定してもよい。この場合、条件設定部218は、目標状態として、移動体の位置座標、移動体の旋回角度(向き)及び把持部の各関節の関節角度を設定してもよい。
パラメータ設定部220は、学習済みの軌道生成モデル(学習済みモデル)の変更可能なパラメータ(第1のパラメータ;可変パラメータ)の値を、学習済みの軌道生成モデルに設定する。ここで、パラメータ設定部220は、学習済みの軌道生成モデルの可変パラメータ(第1のパラメータ)の互いに異なる複数の値をそれぞれ学習済みの軌道生成モデルに設定可能である。このような構成により、学習済みの軌道生成モデル(学習済みモデル)の可変パラメータ(第1のパラメータ)を容易に変更することが可能となる。
ここで、本実施の形態における「可変パラメータ(第1のパラメータ)」は、この可変パラメータの値を変更すると、同じ入力値を学習済みの軌道生成モデルに入力したとしても、出力値が異なり得るようなパラメータである。さらに、この「可変パラメータ(第1のパラメータ)」は、この可変パラメータの値の変化に伴って、同じ入力値を学習済みの軌道生成モデルに入力した場合の軌道生成モデルの出力値のばらつきが変化するようなパラメータである。
例えば、「可変パラメータ(第1のパラメータ)」は、この可変パラメータの値が大きいほど、同じ入力値を学習済みの軌道生成モデルに入力した場合の軌道生成モデルの出力値のばらつきが大きくなるようなパラメータである。すなわち、ある同じ入力値Xを軌道生成モデルに入力するとする。この場合、可変パラメータの値が最小(例えば0)である場合は、何度、推論処理を行っても、入力値Xを入力したときの軌道生成モデルの出力値は、同じとなる。一方、可変パラメータの値を大きくすると、入力値Xを入力したときの軌道生成モデルの出力値は、推論処理を行うたびに異なり得る。そして、可変パラメータの値が大きくなるほど、その出力値のばらつきが大きくなる、つまり、複数の出力値の間の差分が大きくなる。
「可変パラメータ(第1のパラメータ)」は、例えばニューラルネットワークにおけるドロップアウト率であるが、これに限られない。以下の本実施の形態の説明では、「可変パラメータ(第1のパラメータ)」がドロップアウト率であるとする。通常、ドロップアウト率は、過学習の抑制等のため、軌道生成モデルの学習段階で設定される。これに対し、本実施の形態にかかる軌道生成装置200は、推論段階でも、学習済みの軌道生成モデルのドロップアウト率を有効にして、ドロップアウト率を変更するように構成されている。
パラメータ設定部220は、例えば、軌道生成モデルを示すプログラムを、インタフェース部18に表示させるようにしてもよい。これにより、ユーザは、インタフェース部18を操作して、プログラム中のドロップアウト率を指定する値を設定(変更)することができる。また、パラメータ設定部220は、軌道生成モデルを示すプログラムにおいてドロップアウト率を指定する変数を呼び出すようなインタフェースを実現してもよい。これにより、パラメータ設定部220は、インタフェース部18により、その変数の値を設定(変更)することができる。なお、ドロップアウト率の複数の値それぞれは、予め、ユーザによって、適宜準備されてもよい。例えば、軌道生成モデルに設定されるドロップアウト率は、0%、5%、10%、15%、20%、25%であってもよい。なお、設定される複数のドロップアウト率は、ユーザの操作に応じて、条件設定部218によって予め準備されてもよい。また、パラメータ設定部220によって設定されるドロップアウト率の値は、学習段階で設定されたものとは異なり得る。
軌道生成部230は、開始状態から目標状態までの軌道を生成する。ここで、本実施の形態では、軌道生成部230は、移動オブジェクトの開始状態及び目標状態と環境特徴情報とを学習済みの軌道生成モデル(学習済みモデル)に入力し、ドロップアウト率(可変パラメータ)の互いに異なる複数の値それぞれについて学習済みモデルを用いて軌道を生成する。これにより、軌道生成部230は、開始状態から目標状態までの複数の軌道を生成する。つまり、軌道生成部230は、条件設定部218によって設定されたある制約条件(開始状態及び目標状態)及び環境特徴情報取得部216によって取得されたある環境特徴情報について、複数の軌道を生成する。
図7は、実施の形態1にかかる軌道生成部230の軌道生成処理を説明するための図である。なお、移動オブジェクトの状態の特徴量ベクトルがm次元であるとすると、図7は、m次元空間を模擬的に示している。
軌道生成部230は、ドロップアウト率D1が設定された軌道生成モデル(学習済みモデル)に、開始状態S0及び目標状態SNの特徴量ベクトルと環境特徴情報とを入力する。これにより、軌道生成部230は、軌道生成モデルの出力として開始状態S0の次の状態S1の特徴量ベクトルを取得する。そして、軌道生成部230は、次の状態S1の特徴量ベクトルを開始状態の特徴量ベクトルとして、上述した目標状態SNの特徴量ベクトル及び環境特徴情報とともに軌道生成モデルに入力してもよい。これにより、軌道生成部230は、軌道生成モデルの出力として、状態S1の次の状態S2の特徴量ベクトルを取得する。
軌道生成部230は、このような処理を繰り返すことで、開始状態S0から目標状態SNまでの状態を取得する。ここで、開始状態S0から目標状態SNまでの状態の軌跡が、軌道に対応する。このようにして、軌道生成部230は、ドロップアウト率D1について、開始状態S0及び目標状態SNと環境特徴情報とに対応する軌道T1を生成する。軌道T1は、図7に実線で示されている。なお、上述したように、軌道生成モデルは環境特徴情報を入力して学習されたので、軌道生成モデルを用いて生成された軌道は、障害物に衝突することが抑制されていることが期待される。
なお、軌道生成部230は、上述したように開始状態から目標状態に向かって移動オブジェクトの状態を順次生成していくのではなく、目標状態から開始状態に遡って移動オブジェクトの状態を順次生成してもよい。この場合、軌道生成部230は、軌道生成モデルに対して、設定された目標状態SNの特徴量ベクトルを開始状態として入力し、設定された開始状態S0の特徴量ベクトルを目標状態として入力する。これにより、軌道生成部230は、軌道生成モデルの出力である「次の状態」として、状態SNの前の状態SN-1の特徴量ベクトルを取得する。
あるいは、軌道生成部230は、開始状態から目標状態に向かって移動オブジェクトの状態を生成し、目標状態から開始状態に向かって移動オブジェクトの状態を生成することを、交互に行ってもよい。つまり、軌道生成部230は、開始状態の側と目標状態の側の両方から、移動オブジェクトの状態を順次生成してもよい。この場合の処理については、図9を用いて後述する。
ここで、軌道生成部230は、D1とは異なるドロップアウト率D2について、上述した処理と同様の処理を行う。これにより、軌道生成部230は、ドロップアウト率D2について、開始状態S0及び目標状態SNと環境特徴情報とに対応する軌道T2を生成する。軌道T2は、図7に破線で示されている。軌道生成部230は、さらに異なるドロップアウト率D3について、上述した処理と同様の処理を行う。これにより、軌道生成部230は、ドロップアウト率D3について、開始状態S0及び目標状態SNと環境特徴情報とに対応する軌道T3を生成する。軌道T3は、図7に一点鎖線で示されている。
ここで、ドロップアウト率を変更すると、軌道生成モデルにおいて無効化されるノード(ニューロン)の割合が変化する。例えば、ドロップアウト率が5%であれば、軌道生成モデルにおいて無効化されるノード(ニューロン)の割合は5%である。一方、ドロップアウト率が0%であれば、軌道生成モデルにおいて無効化されるノード(ニューロン)の割合は0%である(つまり無効化されるノードはない)。そして、ドロップアウト率を変更すると、軌道生成モデルの無効化されるノードが変わるので、軌道生成モデルの構成が変わることとなる。したがって、軌道生成モデルに同じ入力値を入力したとしても、ドロップアウト率が異なれば、軌道生成モデルの出力は異なり得る。
例えば、図7に示すように、ドロップアウト率D1(軌道T1)について出力された状態S1と、ドロップアウト率D2(軌道T2)について出力された状態S1と、ドロップアウト率D3(軌道T3)について出力された状態S1とは、互いに異なり得る。そして、他の状態(但し開始状態及び目標状態以外の状態)でも、同様の結果となり得る。したがって、軌道T1、軌道T2及び軌道T3は、互いに異なり得る。
よって、軌道生成部230は、異なるドロップアウト率について、異なる軌道を生成し得る。したがって、軌道生成部230は、異なるドロップアウト率について軌道を生成することにより、互いに異なる複数の(多数の)軌道を生成することができる。
さらに、軌道生成部230は、あるドロップアウト率について、開始状態S0及び目標状態SNの特徴量ベクトルと環境特徴情報とに対応する軌道を生成する処理を、複数回行ってもよい。この場合、軌道生成部230は、大きなドロップアウト率が軌道生成モデルに設定されている場合ほど、そのドロップアウト率で上述の軌道を生成する処理を行う回数を多くしてもよい。つまり、軌道生成部230は、学習済みモデルの出力のばらつきがより大きくなるような可変パラメータの値が学習済みモデルに設定されている場合に、同じ開始状態及び目標状態と環境特徴情報とを学習済みモデルに入力して軌道を生成する回数を多くしてもよい。
軌道生成モデルのノードは、設定されたドロップアウト率に応じた割合でランダムに無効化される。言い換えると、推論処理ごとに無効化されるノードが、ドロップアウト率に応じて、ランダムに選択される。これにより、例えば状態SNと状態Snとから状態Sn+1を推論する処理を考えたとき、この処理を複数回行うと、毎回異なる状態Sn+1が推論され得る。つまり、同じドロップアウト率を設定したとしても、1回目の処理で生成された軌道と、2回目の処理で生成された軌道とは、互いに異なり得る。したがって、ドロップアウト率が0でない場合は、ドロップアウト率の変更処理を行わなくとも、複数回の推論処理について、毎回異なる軌道が生成され得る。そして、ドロップアウト率が大きいほど、ランダムに無効化されるノードの組み合わせの数が大きくなる。したがって、ドロップアウト率が大きいほど、軌道生成モデルの出力のばらつきが大きくなる。したがって、ドロップアウト率が大きい場合、そのドロップアウト率で繰り返し軌道生成処理を行うと、処理を行うごとに異なる軌道が生成される可能性が高くなる。逆に、ドロップアウト率が小さい場合、そのドロップアウト率で繰り返し軌道生成処理を行っても、同じ軌道が生成される可能性が高くなるので、軌道生成処理を何度も行うことが無駄となる可能性が高い。したがって、大きなドロップアウト率が軌道生成モデルに設定されている場合ほど、そのドロップアウト率で上述の軌道を生成する処理を行う回数を多くすることにより、効率的に多くの軌道を生成することができる。
軌道出力部240は、軌道生成部230によって生成された軌道を出力する。軌道出力部240は、生成された軌道をインタフェース部18に表示させてもよい。あるいは、軌道出力部240は、生成された軌道を記憶するため、ROM14又はRAM16に生成された軌道を出力してもよい。また、軌道出力部240は、他の装置に軌道を出力(送信)してもよい。
軌道決定部250は、生成された複数の軌道に対して、予め定められた基準で、質の高い軌道を決定する。言い換えると、軌道決定部250は、生成された複数の軌道から、予め定められた基準で、質の高い軌道を選択する。例えば、基準において、長さが短く且つ障害物(環境オブジェクト)に衝突しない軌道が、質の高い軌道であると定められているとする。この場合、軌道決定部250は、長さが短い順で軌道を並べる。そして、軌道決定部250は、短い軌道から順に、その軌道が障害物に衝突していないかをチェックする。これにより、短く、障害物に衝突しない軌道が決定(選択)される。なお、軌道の長さは、その軌道の状態の次元数をmとした場合のm次元空間において、状態を示す特徴量ベクトルに対応する点の軌跡の長さに対応する。また、軌道が障害物に衝突していないかをチェックする方法は、例えば、シミュレーションによって、その軌道で移動オブジェクトを移動させた場合に移動オブジェクトが環境オブジェクトに衝突しないかをチェックしてもよい。
図8は、実施の形態1にかかる軌道生成装置200によって実行される軌道生成方法を示すフローチャートである。図8は、軌道生成装置200によって実行される軌道生成処理の流れを示す。条件設定部218は、上述したように、生成しようとする軌道における制約条件を設定する(ステップS202)。これにより、生成しようとする軌道の開始状態及び目標状態が設定される。また、この処理において、軌道生成モデルに設定されるべきドロップアウト率の複数の値が、パラメータ設定部220に設定されてもよい。
点群取得部214は、上述したように、軌道生成の対象の移動オブジェクトの周囲の環境(対象環境)に対応する3次元点群を取得する(ステップS204)。環境特徴情報取得部216は、上述したように、3次元点群から、学習済みのオートエンコーダを用いて、移動オブジェクトの周囲の環境の特徴を示す環境特徴情報を取得する(ステップS206)。
パラメータ設定部220は、上述したように、学習済みの軌道生成モデル(学習済みモデル)のドロップアウト率の値を設定する(ステップS208)。軌道生成部230は、上述したように、S208で設定されたドロップアウト率の値で、軌道を生成する(ステップS210)。具体的には、軌道生成部230は、ドロップアウト率をS208で設定された値に設定された軌道生成モデル(学習済みモデル)に、S202で設定された開始状態及び目標状態の特徴量ベクトルと、S206で取得された環境特徴情報とを入力する。これにより、軌道が生成される。S210の処理の詳細については、図9を用いて後述する。
なお、上述したように、軌道生成部230は、ドロップアウト率の値の大きさに応じた回数だけ、そのドロップアウト率の値でS210の処理を繰り返してもよい。これにより、ドロップアウト率の値が大きいほど、多くの軌道が生成される。
軌道出力部240は、上述したように、S210の処理で生成された軌道を出力する(ステップS240)。軌道生成装置200(例えば軌道生成部230)は、予め準備された複数のドロップアウト率の値の全てについて、軌道生成処理が行われたか否かを判定する(ステップS242)。複数のドロップアウト率の値の全てについて軌道生成処理が行われていない場合(S242のNO)、処理フローはS208に進む。そして、パラメータ設定部220は、軌道生成処理が行われていないドロップアウト率の値を、軌道生成モデルに設定する(S208)。そして、軌道生成部230は、設定されたドロップアウト率の値で、軌道を生成する(S210)。
一方、複数のドロップアウト率の値の全てについて軌道生成処理が行われた場合(S242のYES)、軌道決定部250は、上述したように、生成された複数の軌道に対して、予め定められた基準で、質の高い軌道を決定する(ステップS244)。すなわち、軌道決定部250は、生成された複数の軌道の質を評価して、質の高い軌道を選択する。
図9は、実施の形態1にかかる軌道生成部230によって実行される軌道生成処理(S210)を示すフローチャートである。ここで、S202の処理で設定された開始状態を状態S0とし、S202の処理で設定された目標状態を状態SNとする。また、状態の特徴量ベクトルをm次元とする。
軌道生成部230は、状態S0を現在状態、状態SNを目標状態として、学習済みの軌道生成モデルを用いて状態S1を取得する(ステップS212)。具体的には、軌道生成部230は、現在状態(開始状態)S0及び目標状態SNの特徴量ベクトルと環境特徴情報とを学習済みの軌道生成モデルに入力する。軌道生成部230は、軌道生成モデルから出力された、状態S0の次の状態S1の特徴量ベクトルを取得する。
軌道生成部230は、状態S1と状態SNとが接続可能であるか否かを判定する(ステップS214)。具体的には、軌道生成部230は、状態S1と状態SNとを結ぶ(m次元空間における)直線上の状態において、移動オブジェクトが障害物(環境オブジェクト)と衝突する状態がないか否かを判定する(判定#1)。さらに具体的には、軌道生成部230は、m次元空間において状態S1と状態SNとを最短距離で結んだ際の状態S1と状態SNとの間の各状態において、移動オブジェクトが環境オブジェクトと衝突(干渉)していないかを判定する。なお、衝突の判定は、その状態における移動オブジェクトが存在する空間の位置座標と、環境特徴情報において環境オブジェクトを示す特徴量とを用いて行われ得る。なお、ある状態における移動オブジェクトが存在する空間の位置座標は、移動オブジェクトの状態の特徴量が定まれば、一意に定まる。
また、軌道生成部230は、状態S1と状態SNとの距離が、予め定められた閾値よりも小さいか否かを判定する(判定#2)。なお、状態S1と状態SNとの距離は、m次元空間における状態S1及び状態SNそれぞれの特徴量ベクトルで示される点と点との間の距離に対応し得る。軌道生成部230は、判定#1と判定#2とを満たす場合に、状態S1と状態SNとが接続可能であると判定する。
状態S1と状態SNとが接続可能であると判定された場合(S214のYES)、軌道生成が完了する。したがって、処理フローはS240に進む。一方、状態S1と状態SNとが接続可能でないと判定された場合(S214のNO)、軌道生成部230は、目標状態の側から遡って状態を生成する。すなわち、軌道生成部230は、状態SNを現在状態、S212で生成された状態S1を目標状態として、学習済みの軌道生成モデルを用いて、状態SN-1を取得する(ステップS216)。
具体的には、軌道生成部230は、現在状態SN及び目標状態S1の特徴量ベクトルと環境特徴情報とを学習済みの軌道生成モデルに入力する。軌道生成部230は、軌道生成モデルから出力された、状態SNの次の状態SN-1の特徴量ベクトルを取得する。ここで、生成される軌道上では、状態SN-1は状態SNの1つ前の状態である。しかしながら、この場合の軌道生成モデルの入出力としては、入力される目標状態S1が、現在状態SNよりも開始状態の側の状態であるため、状態SN-1は状態SNの「次の状態」として出力される。
軌道生成部230は、状態SN-1と状態S1とが接続可能であるか否かを判定する(ステップS218)。接続可能であるか否かの判定方法は、S214の処理における方法と実質的に同様であるので、説明を省略する。状態SN-1と状態S1とが接続可能であると判定された場合(S218のYES)、軌道生成が完了する。したがって、処理フローはS240に進む。
一方、状態SN-1と状態S1とが接続可能でないと判定された場合(S218のNO)、軌道生成部230は、状態S1を現在状態、状態SN-1を目標状態として、学習済みの軌道生成モデルを用いて状態S2を取得する(ステップS220)。具体的には、軌道生成部230は、現在状態S1及び目標状態SN-1の特徴量ベクトルと環境特徴情報とを学習済みの軌道生成モデルに入力する。軌道生成部230は、軌道生成モデルから出力された、状態S1の次の状態S2の特徴量ベクトルを取得する。
そして、軌道生成部230は、S214~S220と同様の処理を、両側の状態が接続可能となるまで繰り返す(ステップS222)。つまり、軌道生成部230は、S214~S220と同様の処理を、軌道生成モデルから出力された次の状態と軌道生成モデルに入力された目標状態とが接続可能となるまで繰り返す。したがって、この場合、S214と同様にして、軌道生成部230は、状態S2と状態SN-1とが接続可能であるか否かを判定し、接続可能であれば軌道生成が完了する。一方、接続可能でない場合、S216と同様にして、軌道生成部230は、状態SN-1を現在状態、状態S2を目標状態として、学習済みの軌道生成モデルを用いて、状態SN-2を取得する。そして、S218と同様にして、軌道生成部230は、状態SN-2と状態S2とが接続可能であるか否かを判定する。つまり、軌道生成部230は、前のステップで生成された状態を目標状態とし、さらにその前のステップで生成された状態を開始状態として、開始状態とした状態の、目標状態の側に1つ隣の状態を生成する。
このように処理を繰り返すことで、状態Sn-1を現在状態、状態Sn+1を目標状態として、軌道生成モデルから状態Snが出力された場合(S220)に、状態Sn+1と状態Snとが接続可能となる(S214のYES)。あるいは、状態Sn+1を現在状態、状態Sn-1を目標状態として、軌道生成モデルから状態Snが出力された場合(S216)に、状態Sn-1と状態Snとが接続可能となる(S218のYES)。したがって、開始状態から目標状態まで状態が連なった軌道が生成される。
図10~図12は、実施の形態1にかかる軌道生成部230が複数の軌道を生成することを説明するための図である。なお、図10~12は、移動オブジェクトの状態の特徴量ベクトルがm次元である場合の、m次元空間における状態を示す点を、模擬的に示している。図10は、軌道生成モデルに設定されたドロップアウト率Dが0である場合に、図9に示した方法で生成される軌道を示している。
軌道生成モデルに設定されたドロップアウト率Dが0である場合、軌道生成モデルを構成するノード(ノードの結合)は、全て有効である。したがって、軌道生成モデルの入力が一定であれは、その出力も一定である。したがって、状態S0を現在状態、状態SNを目標状態として軌道生成モデルから出力される状態S1は、一意に決まる。さらに、状態SNを現在状態、状態S1を目標状態として軌道生成モデルから出力される状態SN-1は、一意に決まる。このように、軌道生成モデルに設定されたドロップアウト率Dが0である場合、各状態が一意に決まるので、生成される軌道も一意に決まる。なお、軌道生成モデルに設定されたドロップアウト率Dが0である場合に生成される軌道は、学習済みの軌道生成モデルにおいて学習された通りのアルゴリズムで出力されたものである。したがって、軌道生成モデルに設定されたドロップアウト率Dが0である場合に生成される軌道は、この学習済みの軌道生成モデルの学習の結果に対してという意味では、最適な軌道となる。
図11は、軌道生成モデルに設定されたドロップアウト率Dが0ではない小さな値D1(≠0)である場合に、図9に示した方法で生成される軌道を示している。軌道生成モデルに設定されたドロップアウト率Dが0でない場合、軌道生成モデルを構成するノード(ノードの結合)は、そのドロップアウト率に応じてランダムに無効となる。したがって、軌道生成モデルの入力が一定であっても、軌道生成処理を複数回行うと、その出力が異なり得る。
したがって、状態S0を現在状態、状態SNを目標状態として軌道生成モデルから出力される状態S1は、一意に決まらない。ここで、軌道生成モデルに設定されたドロップアウト率D1が小さな値であれば、その出力のばらつきは小さい。したがって、軌道生成モデルから出力される状態S1は、一意に決まらないものの、そのばらつきは小さい。図11の例では、状態S0を現在状態、状態SNを目標状態として軌道生成モデルから出力される状態S1は、ドロップアウト率D1に対応するばらつきを示す領域R11内の状態S1
a1又は状態S1
b1となり得る。ここで、ドロップアウト率DがD1(≠0)である場合の軌道生成モデルのアルゴリズムは、ドロップアウト率Dが0の場合と異なり得る。したがって、D=D1(図11)の場合の状態S1
a1及び状態S1
b1は、D=0(図10)の場合の状態S1とは異なり得る。
また、同様に、状態SNを現在状態、状態S1を目標状態として軌道生成モデルから出力される状態SN-1は、一意に決まらないものの、そのばらつきは小さい。図11の例では、状態SNを現在状態、状態S1を目標状態として軌道生成モデルから出力される状態SN-1は、ドロップアウト率D1に対応するばらつきを示す領域R12内の状態SN-1
a1又は状態SN-1
b1となり得る。そして、D=D1(図11)の場合の状態SN-1
a1及び状態SN-1
b1は、D=0(図10)の場合の状態SN-1とは異なり得る。
このように、軌道生成モデルに設定されたドロップアウト率が0でない場合、軌道生成モデルから出力される状態が一意に決まらず、ドロップアウト率が0である場合に軌道生成モデルから出力される状態とは異なり得る。そして、その出力された状態を現在状態又は目標状態として軌道生成モデルに入力すると、出力される状態はさらにばらつく。したがって、ドロップアウト率が0でない場合に生成される軌道は、一意に決まらない。したがって、軌道生成処理を複数回行うと、異なる軌道が生成されることとなり得る。なお、ドロップアウト率が比較的小さな値D1である場合、生成される複数の軌道のばらつきは、比較的小さい。
図12は、軌道生成モデルに設定されたドロップアウト率DがD1よりも大きな値D2である場合に、図9に示した方法で生成される軌道を示している。ここで、D2は0ではない。したがって、状態S0を現在状態、状態SNを目標状態として軌道生成モデルから出力される状態S1は、一意に決まらない。そして、軌道生成モデルに設定されたドロップアウト率D2がD1よりも大きな値であるので、その出力のばらつきは、図11の場合よりも大きくなる。したがって、軌道生成モデルから出力される状態S1は、一意に決まらず、そのばらつきも、図11の場合よりも大きい。
図12の例では、状態S0を現在状態、状態SNを目標状態として軌道生成モデルから出力される状態S1は、ドロップアウト率D2に対応するばらつきを示す領域R21内の状態S1
a2、状態S1
b2又は状態S1
c2となり得る。ここで、ドロップアウト率DがD2(≠0)である場合の軌道生成モデルのアルゴリズムは、ドロップアウト率Dが0及びD1の場合と異なり得る。したがって、D=D2(図12)の場合の状態S1
a2、状態S1
b2及び状態S1
c2は、いずれも、状態S1、状態S1
a1及び状態S1
b1とは異なり得る。
また、状態SNを現在状態、状態S1を目標状態として軌道生成モデルから出力される状態SN-1は、一意に決まらず、そのばらつきも、図11の場合よりも大きい。図12の例では、状態SNを現在状態、状態S1を目標状態として軌道生成モデルから出力される状態SN-1は、ドロップアウト率D2に対応するばらつきを示す領域R22内の状態SN-1
a2、状態SN-1
b2又は状態SN-1
c2となり得る。そして、D=D2(図12)の場合の状態SN-1
a2、状態SN-1
b2及び状態SN-1
c2は、いずれも、状態SN-1、状態SN-1
a1及び状態SN-1
b1とは異なり得る。
このように、軌道生成モデルに設定されたドロップアウト率が0でない場合、軌道生成モデルから出力される状態は、一意に決まらず、ドロップアウト率が0である場合に軌道生成モデルから出力される状態とは異なり得る。したがって、ドロップアウト率が0でない場合に生成される軌道は一意に決まらないので、軌道生成処理を複数回行うと、異なる軌道が生成されることとなり得る。ここで、ドロップアウト率がD1よりも大きな値D2である場合、生成される複数の軌道のばらつきは、ドロップアウト率がD1である場合よりも大きくなる。したがって、軌道生成モデルのドロップアウト率が大きいと、軌道生成処理を複数回行うことにより、多くの軌道を生成することができる。また、ドロップアウト率の互いに異なる値ごとに軌道生成処理を行うことによって、異なる軌道が生成され得る。したがって、ドロップアウト率の互いに異なる値ごとに軌道生成処理を行うことによって、複数の異なる多様な軌道を生成することが可能となる。
なお、学習済みの軌道生成モデル(ドロップアウト率=0)を用いて軌道を生成すれば、最適な軌道生成が行われるので、複数の軌道を生成する必要はないとも考えられる。しかしながら、学習済みの軌道生成モデルを用いて軌道を生成しても、必ず、軌道決定の基準に照らして最適な軌道が生成されるとは限らない。軌道を決定(選択)する際の基準は、ユーザによって任意に定められ得るので、軌道生成モデルのアルゴリズムに対応しているとは限らない。また、軌道生成モデルの学習段階で、完全に最適な軌道を生成できるように学習が行うことは、容易ではない。さらに、推論段階(軌道生成処理)において3次元点群を取得する際に、全ての環境オブジェクトの特徴を捉えることができない可能性がある。3次元点群を取得する際の視点から陰になる障害物については、3次元点群に示されない可能性があるからである。その場合は、学習済みの軌道生成モデル(ドロップアウト率=0)を用いると、特徴を捉えられなかった環境オブジェクトに衝突する軌道が生成される可能性がある。したがって、複数の軌道を生成することの意義は大きい。
また、上述した実施の形態1では、ドロップアウト層が設けられている軌道生成モデル(学習済みモデル)におけるドロップアウト率の値を変更して、変更されたドロップアウト率ごとに軌道生成モデルを用いて軌道を生成するように構成されている。これにより、実施の形態1では、複数の軌道が生成される。また、軌道生成モデルに設定されるドロップアウト率が小さいと、生成される軌道のばらつきが小さいので、学習されたアルゴリズムに対応した軌道に似た軌道が生成される。一方、ドロップアウト率が大きいと、生成される軌道のばらつきが大きくなるので、学習されたアルゴリズムに対応した軌道とは比較的異なる軌道も生成され得る。したがって、実施の形態1にかかる構成により、多種多様な軌道を生成することが可能となる。また、このように、ニューラルネットワークにおいて既存の可変パラメータであるドロップアウト率を変更するように構成されていることによって、比較的容易に、複数の軌道を生成することが可能となる。
また、上述した実施の形態1にかかる軌道生成システム1は、学習済みの軌道生成モデル(学習済みモデル)に、移動オブジェクトの開始状態及び目標状態と環境特徴情報とを入力することによって、軌道を生成するように構成されている。これにより、環境特徴情報に示される障害物との衝突が抑制され、開始状態から目標状態に到達する軌道を生成することができる。さらに、上述した実施の形態1にかかる軌道生成システム1は、変更可能な可変パラメータ(第1のパラメータ)の異なる複数の値それぞれについて、学習済みの軌道生成モデルを用いて軌道を生成するように構成されている。これにより、上述した実施の形態1にかかる軌道生成システム1は、複数の軌道を生成することができる。したがって、上述した実施の形態1にかかる軌道生成システム1は、生成された複数の軌道から、質の高い軌道を決定することを可能とすることができる。
また、上述した実施の形態1では、学習処理及び推論処理において、環境特徴情報を軌道生成モデルに入力するように構成されている。これにより、推論処理(軌道生成処理)においてドロップアウト率の値を変更しても、移動オブジェクトが障害物に衝突することが抑制されている軌道が生成される可能性が高くなる。これにより、軌道決定処理(図8のS244)において、質の高い軌道を決定する処理が容易となる。なお、この軌道決定処理をコンピュータによって行う場合、移動オブジェクトが障害物に衝突していない軌道が生成されていれば、障害物に衝突していないかをチェックする処理の計算コストを低減することができる。
また、上述した実施の形態1において、可変パラメータ(第1のパラメータ)は、当該第1のパラメータの値の変化に伴って、学習済みモデル(学習済みの軌道生成モデル)に入力される同じ入力値に対する学習済みモデルの出力のばらつきが変化するようなパラメータである。このような構成により、上述したドロップアウト率の例のように、多種多様な軌道を生成することが可能となる。
また、上述した実施の形態1にかかる軌道生成システム1は、学習済みモデル(学習済みの軌道生成モデル)の出力のばらつきがより大きくなるような可変パラメータ(第1のパラメータ)の値が学習済みモデルに設定されている場合に、同じ開始状態及び目標状態と環境特徴情報とを学習済みモデルに入力して軌道を生成する回数を多くするように構成されている。これにより、上述したドロップアウト率の例のように、効率的に多くの軌道を生成することが可能となる。
(実装例)
次に、実施の形態1にかかる軌道生成システム1の実装例について説明する。
図13は、実装例にかかる環境40を例示する図である。実装例にかかる環境40は、実空間を模擬した仮想空間で実現され得る。なお、以下の説明では、仮想空間で実現される構成について説明するが、仮想空間によって実現される構成は、全て、実空間においても実現され得る。
環境40は、例えば、Gazeboシミュレータ等のシミュレータによって、仮想空間上に生成され得る。環境40には、仮想的に設定されたXYZ座標系(3次元座標系)が設定され得る。これにより、環境40に存在する物体(環境オブジェクト)の位置を示すことができる。なお、以下の説明で、Z軸正方向を上方とし、Z軸負方向を下方とする。また、環境40を示す環境データは、環境40に設定された3次元座標系において、どの位置座標に環境オブジェクトが存在し、どの位置座標に環境オブジェクトが存在しないかを示してもよい。言い換えると、環境40を示す環境データは、環境40に設定された3次元座標系の各3次元座標それぞれについて、環境オブジェクトが存在するか否かを示してもよい。
図13に例示した環境40には、環境オブジェクトとして、床面42と、テーブル44と、把持オブジェクト46A~46Eとが存在する。床面42にテーブル44が置かれており、テーブル44の上方に把持オブジェクト46が置かれている。なお、図13に示した環境40は、あくまでも、軌道生成システム1の実装に関する環境の例示であることに留意されたい。環境に存在する環境オブジェクトは、図13に例示したものに限定されない。
把持オブジェクト46は、図14を用いて後述する移動体の把持部によって把持され得る。なお、ある把持オブジェクト46を把持する場合、他の把持オブジェクト46は、移動体の移動に対する障害物となり得る。例えば、移動体が把持オブジェクト46Dを把持する場合、他の把持オブジェクト46A,46B,46C,46Eは、障害物となり得る。
図14は、実装例にかかる移動体50を例示する図である。実装例にかかる移動体50は、実空間を模擬した仮想空間で実現され得る。実装例にかかる移動体50は、仮想空間で実現される環境40内を移動する、仮想的な物体である。移動体50は、例えば、Gazeboシミュレータ等のシミュレータによって、仮想空間上に生成され得る。移動体50は、例えば、ロボット又は台車である。
移動体50は、本体部52と、駆動部54と、カメラ56と、アーム部60とを有する。アーム部60は、把持部62と、関節64とを有する。本体部52は、移動体50の胴体を構成する。本体部52の側面には、アーム部60が設けられている。本体部52の下方には、駆動部54が設けられている。本体部52の上方には、カメラ56が設けられている。
駆動部54は、本体部52を移動させる。駆動部54は、本体部52を前後左右に移動させ、及び、本体部52を旋回させる。カメラ56は、例えばRGB-Dカメラである。カメラ56は、移動体50の周囲の環境40を撮影して、環境40内の環境オブジェクト(床面42及び把持オブジェクト46等)を示す3次元点群を取得する。なお、カメラ56の画角は可変であってもよい。
把持部62は、例えばロボットハンドである。把持部62は、把持オブジェクト46を把持することが可能である。アーム部60には、例えば5個の関節64が設けられている。関節64が回転することによって、本体部52に対する把持部62の位置及び姿勢を制御することができる。
ここで、環境40における本体部52の位置座標を(x,y)とする。また、環境40における本体部52の向き(旋回角度)をθとする。また、アーム部60の5個の関節64それぞれの関節角度を(φ1,φ2,φ3,φ4,φ5)とする。この場合、把持部62の位置及び姿勢は、(x,y,θ,φ1,φ2,φ3,φ4,φ5)で表され得る。つまり、移動オブジェクトである把持部62の状態は、(x,y,θ,φ1,φ2,φ3,φ4,φ5)の8次元の特徴量ベクトルで特定され得る。そして、環境40内を移動体50が移動して把持部62が把持オブジェクト46を把持することを目標状態とする場合、移動体50の把持部62の軌道は、(x,y,θ,φ1,φ2,φ3,φ4,φ5)の軌跡(変化)で表され得る。つまり、把持部62の軌道は、8次元空間における特徴量ベクトル(x,y,θ,φ1,φ2,φ3,φ4,φ5)で示される点の軌跡に対応し得る。
実装例における学習処理について説明する。実装例において、教師データ取得部110は、環境40のような、仮想空間で実現された教師環境を示す教師環境データを、多数取得する。教師データ取得部110は、例えば、互いに異なる約3万パターンの教師環境を取得する。教師環境は、環境40と同様に、Gazeboシミュレータ等のシミュレータによって、3次元空間の仮想空間上に生成され得る。
また、教師データ取得部110は、各教師環境において、その教師環境に存在する移動体50のカメラ56からの視点で取得された3次元点群を取得する。なお、以降の処理では、データ処理の効率化のため、得られた3次元点群における全ての点を使用しなくてもよく、任意の割合で間引かれた点を使用してもよい。例えば、得られた3次元点群が640×480点である場合に、64×48点を使用するようにしてもよい。
また、教師データ取得部110は、得られた教師環境における移動体50の軌道である教師軌道を取得する。ここで、実装例では、環境40のような教師環境において、移動体50の把持部62が、テーブル44に置かれた把持オブジェクト46の1つを把持するケースを想定する。したがって、教師軌道において、目標状態は、把持されるべき把持オブジェクト46を把持部62が把持したときの移動体50(把持部62)の位置及び姿勢に対応する。目標状態は、そのときの把持部62の特徴量ベクトル(x,y,θ,φ1,φ2,φ3,φ4,φ5)で表され得る。目標状態は、教師環境における把持オブジェクト46ごとに、複数個(例えば5~16個)、設定されてもよい。また、開始状態は、教師環境においてランダムに設定されてもよい。例えば、開始状態は、移動体50がテーブル44から十分離れた位置にあるときの状態であってもよい。そして、教師軌道は、開始状態から目標状態までの移動体50(把持部62)の状態を示す特徴量ベクトル(x,y,θ,φ1,φ2,φ3,φ4,φ5)の軌跡に対応する。
ここで、教師軌道は、機械学習によらない方法で生成され得る。例えば、教師軌道は、CBiRRT2(Constrained Bidirectional RRT)のようなRRT(Rapidly-Exploring Random Tree)アルゴリズムによって、生成されてもよい。また、上述したように、教師環境において、把持すべき把持オブジェクト46以外の把持オブジェクト46は、移動体50の移動に対する障害物となり得る。したがって、教師軌道は、教師環境において、開始状態から目標状態までの間で、把持すべき把持オブジェクト46以外の把持オブジェクト46に移動体50の構成要素(アーム部60等)が衝突しないように、生成され得る。
また、実装例において、オートエンコーダ学習部120は、教師データ取得部110によって取得された3次元点群を用いて、オートエンコーダの学習処理を行う。ここで、オートエンコーダ学習部120は、上述した約3万パターンの教師環境における3次元点群を用いて、オートエンコーダの学習処理を行う。実装例において、オートエンコーダは、入力された3次元点群の次元(例えば9216次元)を、例えば256次元まで圧縮する。したがって、実装例にかかるオートエンコーダを用いて、256次元の環境特徴情報が取得(抽出)される。
また、実装例において、軌道生成モデル学習部130は、教師データ取得部110によって取得された教師軌道を用いて、上述した方法によって軌道生成モデルの学習処理を行う。実装例において、軌道生成モデルは、ニューラルネットワークによって実現される。なお、実装例において、図5に示した分割点Pnは、開始状態からn番目の分割点の状態の特徴量ベクトル(x,y,θ,φ1,φ2,φ3,φ4,φ5)に対応する。
また、実装例において、図6に例示した軌道生成モデル20は、1つの入力層22と、10個の全結合層24-1~24-10とで構成されている。また、実装例において、j=256、m=8であるから、入力層22の次元数(ノードの数)は272となる。また、実装例において、全結合層24-1~24-10の次元数は、それぞれ、1280,1024,896,768,512,384,256,128,64,8である。
実装例における軌道生成処理(推論処理)について説明する。実装例において、移動体50の目標位置及び把持部62の目標姿勢を設定する。条件設定部218は、把持すべき把持オブジェクト46を設定する。そして、条件設定部218は、その把持オブジェクト46を把持部62が把持したときの把持部62の姿勢を、目標状態として設定する。そして、条件設定部218は、目標状態に対応する特徴量ベクトル(x,y,θ,φ1,φ2,φ3,φ4,φ5)を設定する。また、条件設定部218は、開始状態に対応する把持部62の特徴量ベクトル(x,y,θ,φ1,φ2,φ3,φ4,φ5)を設定する。例えば、条件設定部218は、環境における移動体50(把持部62)の現在の状態(位置及び姿勢)を、開始状態として設定する。
また、実装例において、点群取得部214は、軌道生成の対象となる移動体50(把持部62)の周囲の、環境40等の仮想空間で実現された環境に対応する3次元点群を取得する。このとき、点群取得部214は、開始状態にある移動体50のカメラ56によって、9216次元の3次元点群を取得してもよい。また、環境特徴情報取得部216は、学習済みをオートエンコーダを用いて、256次元の環境特徴情報を抽出する。
また、実装例において、パラメータ設定部220は、軌道生成モデルを示すプログラムをインタフェース部18に表示させることによって、軌道生成モデルのドロップアウト率の値を設定する。また、実装例において、軌道生成部230は、上述した方法によって、開始状態(開始姿勢)から目標状態(目標姿勢)までの、移動体50(把持部62)の軌道を生成する。また、上述したように、軌道生成モデルのドロップアウト率の値を変更して軌道を生成することによって、1つの制約条件(開始状態及び目標状態)について、多種多様な軌道が生成される。
(変形例)
なお、本発明は上記実施の形態に限られたものではなく、趣旨を逸脱しない範囲で適宜変更することが可能である。例えば、上述したフローチャートの複数のステップの順序は、適宜、変更可能である。また、上述したフローチャートの1つ以上のステップは、適宜、省略可能である。
例えば、図4に示したフローチャートにおいて、S122の処理は、S112の処理の前に実行されてもよい。また、図8に示したフローチャートにおいて、S202の処理は、S206の処理の後に実行されてもよい。また、図8に示したフローチャートにおいて、S244の処理は、省略されてもよい。
また、軌道生成装置200において、軌道決定部250は、なくてもよい。この場合、軌道決定部250の処理は、ユーザの手によって行われてもよい。つまり、ユーザが、生成された複数の軌道から、最適な軌道を決定(選択)してもよい。
また、上述した実施の形態において、軌道生成モデル学習部130は、図4のS124の処理において、軌道生成モデルに、環境特徴情報と、ある点Pn及び最終点PNに対応する特徴量ベクトルとを入力して、Pn+1に対応する特徴量ベクトルと、軌道生成モデルから出力された特徴量ベクトルとの差分が小さくなるように、軌道生成モデルの各種パラメータを最適化するとした。しかしながら、本実施の形態は、このような構成に限られない。軌道生成モデル学習部130は、軌道生成モデルに、環境特徴情報と、ある点Pn及び開始点P0に対応する特徴量ベクトルとを入力して、Pn-1に対応する特徴量ベクトルと、軌道生成モデルから出力された特徴量ベクトルとの差分が小さくなるように、軌道生成モデルの各種パラメータを最適化するようにしてもよい。あるいは、軌道生成モデル学習部130は、軌道生成モデルに、ある点Pn及び最終点PNに対応する特徴量ベクトルを入力する処理と、ある点Pn及び開始点P0に対応する特徴量ベクトルを入力する処理とを、交互に行ってもよい。
また、上述の例において、プログラムは、様々なタイプの非一時的なコンピュータ可読媒体(non-transitory computer readable medium)を用いて格納され、コンピュータに供給することができる。非一時的なコンピュータ可読媒体は、様々なタイプの実体のある記録媒体(tangible storage medium)を含む。非一時的なコンピュータ可読媒体の例は、磁気記録媒体(例えばフレキシブルディスク、磁気テープ、ハードディスクドライブ)、光磁気記録媒体(例えば光磁気ディスク)、CD-ROM、CD-R、CD-R/W、半導体メモリ(例えば、マスクROM、PROM(Programmable ROM)、EPROM(Erasable PROM)、フラッシュROM、RAM)を含む。また、プログラムは、様々なタイプの一時的なコンピュータ可読媒体(transitory computer readable medium)によってコンピュータに供給されてもよい。一時的なコンピュータ可読媒体の例は、電気信号、光信号、及び電磁波を含む。一時的なコンピュータ可読媒体は、電線及び光ファイバ等の有線通信路、又は無線通信路を介して、プログラムをコンピュータに供給できる。