<実施例1>
図1は、実施例1のロボットシステムの構成を示す図である。
実施例1のロボットシステムは、ロボット10aと、全体管理装置200とで構成される。
ロボット10aは、先端にグリッパ11を有するアーム12と、グリッパ11が保持する物品を認識する物品計測センサ18aとを有する。また、ロボット10aのベース部には、走行部13aと、周囲環境計測センサ17aと、演算部14と、吸引力発生部15と、電力供給部16とが設けられる。
アーム12は、ベース部上に起立する柱から横方向に延伸し、先端に設けられたグリッパ11で物品を保持する。また、アーム12は、複数の関節を有し、該関節においてアーム12を屈曲させ、アーム12を縮退及び延伸し、グリッパ11の位置を移動する。本実施例のアーム12は、3箇所の関節でグリッパ11を前後及び上下に移動させ、グリッパ11の向きを変えることができるが、より複雑な動きができるアーム(例えば、6軸アーム、横方向に移動可能な水平多関節アーム)でもよい。
グリッパ11は、アーム12の先端に設けられ、物品に密着して吸着することによって、アーム12が物品を保持する。グリッパ11は、吸着式グリッパではなく、複数の指を有する多指ハンドグリッパ、2爪単関節グリッパ、2爪平行グリッパなど様々な方式のグリッパを採用できる。
物品計測センサ18aは、アーム12の先端に設けられ、グリッパ11が保持する物品を認識するための距離画像カメラで構成される。物品計測センサ18aは、物品を撮影するグレー又はカラーのカメラ(撮像素子)や赤外線カメラなどでもよく、距離画像カメラとカメラとの組合せでもよい。本実施例では、物品計測センサ18aは、ロボット10aの一構成であるが、ロボット10aと別に構成してもよい。例えば、物品計測センサ18aを、格納棚100aに設けたり、格納棚100aが設置される倉庫内の複数箇所に固定的に設けてもよい。
ロボット10aのベース部に設けられる走行部13aは、回転するタイヤと、該タイヤを回転駆動するモータとで構成される。タイヤは対向して二つ設けられ、各タイヤの回転方向や回転数を制御することによって、ロボット10aが走行し、方向を転換し、その場で回転できる。ロボット10aのベース部の下部には、図示を省略する補助輪が設けられてもよい。
周囲環境計測センサ17aは、レーザ光照射部とレーザ光受光部とを有する二次元又は三次元のレーザスキャナで構成され、周囲にレーザ光を照射し、反射光を測定する。周囲環境計測センサ17aが測定したレーザ反射光によって、周囲の障害物(壁、格納棚など)までの距離を算出でき、該算出された距離を連結して周囲の障害物の位置及び大きさを算出できる。
演算部14は、プロセッサ(CPU)、メモリ、補助記憶装置及び通信インターフェースを有する計算機によって構成される。本実施例では、演算部14は、ロボット10aの一構成であるが、ロボット10aと別に設け、ロボット10aと通信可能に構成してもよい。
CPUは、メモリに格納されたプログラムを実行する。メモリは、不揮発性の記憶デバイスであるROM及び揮発性の記憶デバイスであるRAMを含む。ROMは、不変のプログラム(例えば、BIOS)などを格納する。RAMは、DRAM(Dynamic Random Access Memory)のような高速かつ揮発性の記憶デバイスであり、CPUが実行するプログラム及びプログラムの実行時に使用されるデータを一時的に格納する。
補助記憶装置は、例えば、磁気記憶装置(HDD)、フラッシュメモリ(SSD)等の大容量かつ不揮発性の記憶装置によって構成され、CPUが実行するプログラム及びプログラムの実行時に使用されるデータを格納する。すなわち、プログラムは、補助記憶装置から読み出されて、メモリにロードされて、CPUによって実行される。また、補助記憶装置は、格納棚100の形状データ、ロボット10の形状や機構(動作範囲)のデータ、物品101の形状や大きさ、位置姿勢のデータ、物品101を保持する際の物品101に対するグリッパ11の相対位置姿勢のデータ、ロボット10や格納棚100の位置姿勢のデータ、倉庫の形状や通路のデータを格納する。
通信インターフェースは、所定のプロトコルに従って、他の装置(例えば、全体管理装置200)との通信を制御するネットワークインターフェース装置である。
CPUが実行するプログラムは、リムーバブルメディア(フラッシュメモリ、CD−ROMなど)又はネットワークを介して演算部14に提供され、非一時的記憶媒体である不揮発性の補助記憶装置に格納される。このため、演算部14は、リムーバブルメディアからデータを読み込むインターフェース(例えば、USBポート)を有するとよい。なお、演算部14において、プログラムによって実装される機能ブロックの全部又は一部は、物理的な集積回路(例えば、Field-Programmable Gate Array)等によって構成されてもよい。
吸引力発生部15は、コンプレッサ(又は、ポンプ)で構成され、圧縮空気(又は、低圧空気)を生成して、グリッパ11に供給することによって、グリッパ11の吸引力や把持力を生成する。
電力供給部16は、電池であり、走行部13a、演算部14、周囲環境計測センサ17a、物品計測センサ18aなどのロボット10aの各部に電力を供給する。
全体管理装置200は、プロセッサ(CPU)、メモリ、補助記憶装置及び通信インターフェースを有する計算機によって構成される。全体管理装置200とロボット10aとは無線通信によって接続される。
CPUは、メモリに格納されたプログラムを実行する。メモリは、不揮発性の記憶デバイスであるROM及び揮発性の記憶デバイスであるRAMを含む。ROMは、不変のプログラム(例えば、BIOS)などを格納する。RAMは、DRAM(Dynamic Random Access Memory)のような高速かつ揮発性の記憶デバイスであり、CPUが実行するプログラム及びプログラムの実行時に使用されるデータを一時的に格納する。
補助記憶装置は、例えば、磁気記憶装置(HDD)、フラッシュメモリ(SSD)等の大容量かつ不揮発性の記憶装置によって構成され、CPUが実行するプログラム及びプログラムの実行時に使用されるデータを格納する。すなわち、プログラムは、補助記憶装置から読み出されて、メモリにロードされて、CPUによって実行される。また、補助記憶装置は、格納棚100の形状データ、ロボット10の形状や機構(動作範囲)のデータ、物品101の形状や大きさ、位置姿勢のデータ、物品101を保持する際の物品101に対するグリッパ11の相対位置姿勢のデータ、ロボット10や格納棚100の位置姿勢のデータ、倉庫の形状や通路のデータを格納してもよい。
CPUが実行するプログラムは、リムーバブルメディア(CD−ROM、フラッシュメモリなど)又はネットワークを介して全体管理装置200に提供され、非一時的記憶媒体である不揮発性の補助記憶装置に格納される。このため、全体管理装置200は、リムーバブルメディアからデータを読み込むインターフェースを有するとよい。
全体管理装置200は、物理的に一つの計算機上で、又は、論理的又は物理的に構成された複数の計算機上で構成される計算機システムであり、同一の計算機上で別個のスレッドで動作してもよく、複数の物理的計算機資源上に構築された仮想計算機上で動作してもよい。
また、全体管理装置200において、プログラムによって実装される機能ブロックの全部又は一部は、物理的な集積回路(例えば、Field-Programmable Gate Array)等によって構成されてもよい。
次に、図2及び図3を参照して、ロボット10aによる物品のピッキングを説明する。
図2は、格納棚内の物品をピッキングする実施例1のロボットシステムを示す図である。
図2に示すロボットシステムは、ロボット10a、格納棚100a及び全体管理装置200(図示省略)を含む。ロボット10aは、格納棚100aから取り出される物品101aの正面に移動し、当該物品101aの側面にグリッパ11を吸着して、アーム12の関節を曲げることによって、物品101aを格納棚100aから取り出す。
図3は、容器内の物品をピッキングする実施例1のロボットシステムを示す図である。
図3に示すロボットシステムは、ロボット10a、格納容器150a及び全体管理装置200(図示省略)を含む。ロボット10aは、格納容器150aから取り出される物品101aの正面に移動し、当該物品101aの上面にグリッパ11を吸着して、アーム12の関節を曲げることによって、物品101aを格納容器150aから取り出す。
なお、実施例1において物品が格納される格納手段として格納棚100a及び格納容器150aについて説明したが、物品を格納し保管できる物であれば、どの様な形態でもよい。
図4は、実施例1のロボット10aの動作を制御する処理のフローチャートである。図4に示す処理を行うプログラムは、ロボット10aの演算部14のCPUが実行する。
まず、ロボット10aは、格納棚100aから物品101aを取り出す指令を全体管理装置200から受信すると(1001)、格納棚100aの手前、すなわち格納棚100aに格納された物品101を計測できる位置まで自律的に移動する(1002)。なお、本明細書において、自律的に移動するとは、演算部14がロボット10aの位置姿勢(自己位置)を推定し、計画した経路と自己位置との位置関係からロボット10aが経路に沿って移動するように走行部13aを制御することを意味する。自己位置の推定は、周囲環境計測センサ17aで計測した周囲の障害物の位置及び大きさと、演算部14の補助記憶装置に格納された倉庫の形状データと照合することで行う。また、経路は、長距離経路と短距離経路に分けられ、1002の経路は長距離経路に該当する。長距離経路は、倉庫の通路データを用いて、ロボット10aの現在地から目的地(ここでは、格納棚100aに格納された物品101を計測できる位置)までを通路に沿って結ぶことによって計画され、ロボット10aの演算部14が計画しても、全体管理装置200が計画してロボット10aへの指令に含めてもよい。また、交差点など他のロボット10と接近する可能性が高い箇所に侵入する際には、全体管理装置200と通信し、交差点への侵入可否を問い合わせてもよい。一方、短距離経路は、ロボット10aの演算部14により、現在地から目的地までを単純に直線で結ぶことによって、あるいは干渉回避移動軌跡904として計画される。干渉回避移動軌跡904は後述する。
そして、ロボット10aは、物品計測センサ18aによって格納棚100aに格納された物品101を計測する(1003)。そして、演算部14は、物品計測センサ18aによる計測結果に対し、予め登録されている物品101の形状や大きさを用いて、格納棚100a内の各物品101の詳細な位置姿勢を算出する(1004)。例えば、物品計測センサ18aが物品101を含んだ距離画像を取得し、予め登録されている物品101の形状と大きさに合致する部分を距離画像の中から探索することによって、各物品101の詳細な位置姿勢を算出できる。なお、全体管理装置200から格納棚100a内の物品101の詳細な位置姿勢を取得できる場合、ステップ1003及び1004の処理を省略できる。
そして、演算部14は、物品101aを保持するためのロボット10aの停止位置姿勢900aを算出する(1005)。この算出は、例えば、演算部14によるシミュレーションによって実現される。まず、予め定められた物品101aを保持するための物品101aから見たグリッパ11の相対位置姿勢のデータと、1004で算出した物品101aの位置姿勢から、物品101aを保持するためのグリッパ11の絶対位置姿勢を算出する。続いて、シミュレーション内において、ロボット10aの仮の停止位置姿勢を設定し、ロボット10aの形状や機構のデータを用いて、その仮の停止位置姿勢において算出したグリッパ11の絶対位置姿勢をロボット10aが取ることが可能か不可能かを確認する。この確認は逆運動学問題を解くことによって実現できる。この確認の結果が可能である場合は、仮の停止位置姿勢を停止位置姿勢900aとして出力する。確認の結果が不可能である場合は、仮の停止位置姿勢の微小変更し、グリッパ11の絶対位置姿勢の実現可否の確認を再度実行する。これを、確認の結果が可能となるまで繰り返す。本実施例において、物品101aを保持するための物品101aから見たグリッパ11の相対位置姿勢は、物品101aの正面の中心で垂直な方向であることから、物品101aを取り出すためのロボット10aの停止位置は、物品101aの正面(ロボット10aに向いた面)に正対する位置となる。
その後、ロボット10aは、算出された停止位置姿勢900aへ自律的に移動する(1006)。このときの経路は短距離経路に該当し、ロボット10aは、現在地にて停止位置姿勢900aの位置に向かう方向へとその場で旋回し、停止位置姿勢900aの位置まで直線的に移動し、停止位置姿勢900aの位置でその場旋回することによって姿勢を合わせ、最終的にロボット10aは停止位置姿勢900aとなる。
物品101aを保持可能な位置姿勢へグリッパ11が移動するように、アーム12の関節の角度を目標関節角度901aに変更する(1007)。1005における逆運動学問題を解いた結果が、グリッパ11の絶対位置姿勢をロボット10aが取るためのアーム12の目標関節角度901aとなる。例えば、現在の関節角度から一定の角速度で目標関節角度901aへと関節角度を徐々に推移させていく方法がある。その結果、取り出すべき物品101aの正面に正対して、物品101aを吸着可能なように、グリッパ11が移動する。
次に、グリッパ11が物品101aを保持する(1008)。例えば、物品101aに面接触したグリッパ11を減圧し、グリッパ11に物品101aを吸着する。
そして、物品101aを保持したまま格納棚100aから引き出すように、アーム12の関節角度を終了関節角度902へ変更し、グリッパ11を移動する(1009)。例えば、グリッパ11の姿勢及び物品101aの姿勢を1008の状態のまま変更することなく、格納棚100aから物品101aが完全に離れる位置まで、格納棚100aの正面に対し垂直に移動させる。格納棚100aから物品101aが完全に離れたときのアーム12の関節角度が終了関節角度902となる。
その後、演算部14は、アーム12の関節角度が終了関節角度902へ変更されたことを確認し、全体管理装置200へ作業完了報告を送信する(1010)。
図5は、実施例1の物品101の位置姿勢に対応するロボット10aの停止位置姿勢900を示す図である。
前述したように、実施例1では、グリッパ11が物品101aを保持できる位置にロボット10aが停止する。すなわち、取り出すべき物品101の位置姿勢によってロボットが停止する位置姿勢が異なる。例えば、格納棚100aの下の間口の中列上段の物品101aを取り出す場合、ロボット10aは停止位置姿勢900aに停止する。また、格納棚100aの下の間口の左列上段の物品101eを取り出す場合、ロボット10aは停止位置姿勢900eに停止する。さらに、格納棚100aの下の間口の左列上段の物品101iを取り出す場合、ロボット10aは停止位置姿勢900iに停止する。
なお、停止位置姿勢900及び目標関節角度901は、グリッパ11の種類やアーム12に対する取り付け位置姿勢、物品101の形状や大きさによって異なる。このため、演算部14は、グリッパ11が物品101にアクセスする方向の情報を用いて、停止位置姿勢900及び目標関節角度901を算出する。
ここまで、実施例1において、図2に示す格納棚100a内に格納されている物品を取り出す場合について説明したが、図3に示す格納容器150aに格納された物品151aを取り出す場合も同様である。すなわち、グリッパ11が物品の上面に正対して、物品151aを吸着可能な位置に、ロボット10aが移動する。
以上に説明したように、実施例1では、物品101aを保持するためのロボット10aの停止位置姿勢900aを算出し、当該停止位置姿勢900aへ移動した後に、グリッパ11が物品101aを保持するので、グリッパ11が物品101aに正しく接触できる位置から物品101aにアクセスでき、違う物品101を取り出したり、物品101aを取りこぼしたりするミスが軽減できる。
<実施例2>
本実施例では、格納棚100の奥に置かれた物品101を取り出すことが可能な格納棚内物品ピッキングロボットシステムの例を説明する。
図6は、実施例2のロボットシステムの構成を示す図である。
実施例2のロボットシステムは、ロボット10a、格納棚100M及び全体管理装置200を含む。ロボット10aは、格納棚100Mから取り出される物品101Mの正面に移動し、当該物品101Mの側面にグリッパ11を吸着して、アーム12の関節を曲げることによって、物品101Mを格納棚100Mから取り出す。
実施例2では、格納棚100Mの奥に置かれている物品101Mをロボット10aが取り出す例を説明する。格納棚100Mの奥に置かれている物品101Mを取り出す場合、ロボット10aが格納棚100Mに近づいた状態で、物品101Mを吸着するためにアーム12を目標関節角度901Mへ変更すると、格納棚100Mの間口を区画する棚板に当接することがある。また、ロボット10aが物品101Mを保持した後、直ちにアーム12を終了関節角度902へ変更すると、格納棚100Mの間口を区画する棚板に当接することがある。このため、格納棚100Mの奥に置かれている物品101Mを取り出す場合には、特別の手順が必要となる。
図7は、実施例2の格納棚100Mの奥に置かれている物品101Mを取り出すためのロボット10aの停止位置姿勢900Mを示す図である。
前述したように、実施例2では、グリッパ11が物品101Mを保持できる位置にロボット10aが停止する。すなわち、取り出すべき物品101によってロボットの停止位置姿勢が異なる。例えば、格納棚100Mの下の間口の左列上段の物品101Mを取り出す場合、ロボット10aは停止位置姿勢900Mに停止する。停止位置姿勢900Mは、格納棚100Mの最前面の物品101を取り出すための停止位置姿勢900eより格納棚100Mに近い位置である。
次に、図8及び図9を参照して、実施例2のロボット10aが格納棚100Mの奥に置かれた物品101Mを取り出す動作を説明する。図8は、実施例2のロボット10aが物品101Mを保持するまでの動作を制御する処理のフローチャートである。図9は、実施例2のロボット10aが物品101Mを保持するまでの動作を示す図である。
まず、ロボット10aは、図4のステップ1001から1004を実行する(1101)。すなわち、ロボット10aは、格納棚100Mから物品101Mを取り出す指令を全体管理装置200より受信し(1001)、格納棚100Mに格納された物品101を計測できる位置まで自律的に移動し(1002)、物品計測センサ18aによって格納棚100Mに格納された物品101を計測し(1003)、格納棚100M内の各物品101の詳細な位置姿勢を算出する(1004)。この状態では、図9(a)に示すように、ロボット10aは、取り出すべき物品101Mや周囲の状況を見渡せる、格納棚100Mから離れた位置にいる。
そして、演算部14は、物品101Mを保持するためのロボット10aの停止位置姿勢900M及びアーム12の目標関節角度901Mを算出する(1102)。この算出は、例えば、演算部14によるシミュレーションによって実現される。まず、予め定められた物品101Mを保持するための物品101Mから見たグリッパ11の相対位置姿勢のデータと、1004で算出した物品101Mの位置姿勢から、物品101Mを保持するためのグリッパ11の絶対位置姿勢を算出する。続いて、シミュレーション内において、ロボット10aの仮の停止位置姿勢を設定し、その仮の停止位置姿勢において算出したグリッパ11の絶対位置姿勢をロボット10aが取ることが可能か不可能かを確認する。この確認は逆運動学問題を解くことで実現でき、その結果、アーム12の仮の目標関節角度を同時に得ることができる。この確認の結果が可能である場合は、さらに、ロボット10aの形状や機構のデータ、格納棚100の形状データ、1101中の1003で計測した距離画像を用いて、ロボット10aが仮の停止位置姿勢と仮の目標関節角度を取った際に、ロボット10aが格納棚100や他の物品と接触するか否かを確認する。接触しない場合は、仮の停止位置姿勢を停止位置姿勢900Mとして、仮の目標関節角度を目標関節角度901Mとしてそれぞれ出力する。確認の結果が不可能である場合、又は「接触する」である場合は、仮の停止位置姿勢の微小変更し、グリッパ11の絶対位置姿勢の実現可否の確認と、ロボット10aが接触するか否かの確認とを再度実行する。これらを、確認の結果が可能でかつ「接触しない」となるまで繰り返す。本実施例において、物品101Mを保持するための物品101Mから見たグリッパ11の相対位置姿勢は、物品101Mの正面の中心で垂直な方向であることから、物品101Mを取り出すためのロボット10aの停止位置は、物品101Mの正面(ロボット10aに向いた面)に正対する位置となる。また、グリッパ11が格納棚100Mの奥の物品101Mに届くようにアーム12を延伸した状態が目標関節角度901Mとなる(図9(b))。
次に、演算部14は、ロボット10aが停止位置姿勢900Mにいるときに、アーム12を現在の関節の角度から目標関節角度901Mへ推移可能かを判定する(1103)。例えば、格納棚100Mが設置された倉庫及び格納棚100Mの形状データ(例えば、倉庫の壁や柱の位置及び大きさ、格納棚100Mの形状及び位置を表すCADデータ)を参照し、アーム12の先端(グリッパ11)が移動可能な範囲の空間において、アーム12が障害物(格納棚100M、他のロボット10、倉庫の柱や壁など)と干渉することなく、現在の関節角度から目標関節角度901Mへと推移可能な軌跡を探索する。この探索は、例えば、演算部14によるシミュレーションによって実現される。まず、シミュレーションにおいて、停止位置姿勢900M、ロボット10aの形状や機構のデータ、格納棚100の形状データ、1101中の1003で計測した距離画像を用いて、多数のアーム12の関節角度に対し、ロボット10aが格納棚100Mや他の物品と接触するか否かを確認し、接触しない関節角度を記憶しておく。次に、記憶した関節角度を任意に二つ選出し、予め与えられた閾値を用いてそれらが近いか否かを判定し、近い関節角度同士を繋いだ関節角度推移グラフを作成する。その後、関節角度推移グラフを辿り、現在の関節角度から目標関節角度901Mへと到達する道筋を探索する。予め定められた時間内で道筋を発見できた場合、アーム12を現在の関節の角度から目標関節角度901Mへ推移可能と判定する。例えば、図9(c)に示すように、ロボット10aが停止位置姿勢900Mにおいて、アーム12を目標関節角度901Mに推移しようとすると必ず上の棚板と接触する場合、予め定められた時間内で道筋を発見できずに、推移不可能であると判定される。
その結果、アーム12が目標関節角度901Mに推移不可能であれば、ステップ1107に進む。一方、アーム12が目標関節角度901Mに推移可能であれば、演算部14は、ロボット10aが停止位置姿勢900Mにいるとき、アーム12を現在関節角度から目標関節角度901Mへ推移する干渉回避関節角度軌跡を決定する(1104)。具体的には、ステップ1103におけるシミュレーションの結果を用いて、現在の状態から目標関節角度901Mへ推移する最短の道筋(又は、所定の条件を満たす道筋)を探索し、干渉回避関節角度軌跡に決定する。
そして、ロボット10aは、停止位置姿勢900Mへ自律的に移動し(1105)、干渉回避関節角度軌跡に従ってアーム12を制御し、グリッパ11を移動する(1106)。1105の経路は短距離経路に該当する。その後、グリッパ11が物品101Mを保持する(1111)。例えば、物品101Mに面接触したグリッパ11を減圧し、グリッパ11に物品101Mを吸着する。
一方、ステップ1103において、アーム12が障害物と干渉するので目標関節角度901Mに推移不可能であると判定された場合、ステップ1107において、演算部14は、アーム12が目標関節角度901Mであるとき、ロボット10aを現在位置姿勢から停止位置姿勢900Mへ移動可能かを判定する。この判定は、例えば、演算部14によるシミュレーションによって実現される。まず、シミュレーションにおいて、目標関節角度901M、倉庫の形状データ、ロボット10aの形状や機構のデータ、格納棚100の形状データ、ステップ1101中のステップ1003で計測した距離画像を用いて、格納棚100Mの近傍における多数のロボット10aの位置姿勢において、ロボット10aが格納棚100や他の物品と接触するか否かを確認し、接触しない位置姿勢を記憶しておく。次に、記憶した位置姿勢を任意に二つ選出し、予め与えられた閾値を用いてそれらが近いか否かを判定し、近い位置姿勢同士を繋いだ移動グラフを作成する。その後、移動グラフを辿り、現在の位置姿勢から停止位置姿勢900Mへと到達する道筋を探索する。予め定められた時間内で道筋を発見できた場合、ロボット10aを現在の位置姿勢から停止位置姿勢900Mへ移動可能であると判定する。
その結果、ロボット10aが停止位置姿勢900Mまで移動不可能であれば、ステップ1102に戻り、停止位置姿勢900M及び目標関節角度901Mの別の組み合わせを算出する。このとき、停止位置姿勢900M及び目標関節角度901Mの一方が新たなものでもよく、停止位置姿勢900M及び目標関節角度901Mの両方が新たなものでもよい。
一方、ロボット10aが障害物と干渉せずに停止位置姿勢900Mまで移動可能であれば、演算部14は、アーム12が目標関節角度901Mとなっているときに、ロボット10aが現在位置姿勢からを停止位置姿勢900Mへ移動する干渉回避移動軌跡904Mを決定する(1108)。具体的には、ステップ1107におけるシミュレーションの結果を用いて、現在の位置姿勢から停止位置姿勢900Mへ移動する最短の道筋(又は、所定の条件を満たす道筋)を探索し、干渉回避移動軌跡904Mに決定する(図9(d))。
その後、アーム12が関節角度を目標関節角度901Mへ変更し(1109)、演算部14が干渉回避移動軌跡904Mに従って走行部13aを制御し、ロボット10aが移動する(1110、図9(e)参照)。その後、グリッパ11が物品101Mを保持する(1111、図9(f)参照)。
図10に示すように、実施例2のロボット10aは、格納棚100Mの奥に置かれている物品101Mを保持するために、アーム12の関節角度を目標関節角度901Mとした状態で(1109)、干渉回避移動軌跡904Mに従って格納棚100Mに近づく。
図11は、実施例2のロボット10aが物品101Mを保持した後の動作を制御する処理のフローチャートである。すなわち、図11に示す処理は、図8に示す処理の後に実行される。また、図12は、実施例2のロボット10aが物品101Mを保持した後の動作を示す図である。
まず、演算部14は、物品101Mを保持したまま格納棚100Mから引き出すための、ロボット10aの停止位置姿勢900Q及びアーム12の目標関節角度901Qを算出する(1112)。ここで算出される停止位置姿勢900Q及び目標関節角度901Qは、ロボット10aが格納棚100Mから離れ、ロボット10aが次の動作に移行できる位置姿勢及びアーム12の目標関節角度である(図12(b))。
次に、演算部14は、ロボット10aが現在位置姿勢にいるとき、アーム12を現在関節角度から目標関節角度901Qへ推移可能かを判定する(1113)。例えば、格納棚100Mが設置された倉庫及び格納棚100Mの形状データ(例えば、ステップ1103と同様に、倉庫の壁や柱の位置及び大きさ、格納棚100Mの形状及び位置を表すCADデータ)を参照し、アーム12の先端(グリッパ11)が移動可能な範囲の空間において、アーム12が障害物と干渉することなく、現在の関節角度から目標関節角度901Qへと推移可能な軌跡を探索する。この探索は、例えば、演算部14によるシミュレーションによって実現される。まず、シミュレーションにおいて、現在位置姿勢、ロボット10aの形状や機構のデータ、格納棚100の形状データ、ステップ1101中のステップ1003で計測した距離画像を用いて、多数のアーム12の関節角度に対し、ロボット10aが格納棚100や他の物品と接触するか否かを確認し、接触しない関節角度を記憶しておく。次に、記憶した関節角度を任意に二つ選出し、予め与えられた閾値を用いてそれらが近いか否かを判定し、近い関節角度同士を繋いだ関節角度推移グラフを作成する。その後、関節角度推移グラフを辿り、現在の関節角度から目標関節角度901Qへと到達する道筋を探索する。予め定められた時間内で道筋を発見できた場合、アーム12を現在の関節の角度から目標関節角度901Qへ推移可能として判定する。例えば、図12(c)に示すように、ロボット10aが現在位置姿勢において、アーム12を目標関節角度901Qに推移しようとすると必ず上の棚板と接触する場合、予め定められた時間内で道筋を発見できずに、推移不可能であると判定される。
その結果、アーム12が目標関節角度901Qに推移不可能であれば、ステップ1117に進む。一方、アーム12が目標関節角度901Qに推移可能であれば、演算部14は、ロボット10aが現在位置姿勢にいるとき、アーム12を現在関節角度から目標関節角度901Qへ推移する干渉回避関節角度軌跡を決定する(1114)。具体的には、ステップ1113におけるシミュレーションの結果を用いて、現在の状態から目標関節角度へ推移する最短の道筋(又は、所定の条件を満たす道筋)を探索し、干渉回避関節角度軌跡に決定する。
そして、ロボット10aは、干渉回避関節角度軌跡に従ってアーム12を制御し、グリッパ11を移動し(1115)、停止位置姿勢900Qへ自律的に移動する(1116)。1116の経路は短距離経路に該当する。その後、演算部14は、ロボット10aが停止位置姿勢900Qへ移動し、アーム12の関節角度が目標関節角度901Qへ変更されたことを確認した後、全体管理装置200へ作業完了報告を送信する(1121)。
一方、ステップ1113において、アーム12が障害物と干渉せずに目標関節角度901Qに変形不可能であると判定された場合、演算部14は、アーム12が現在の関節角度であるとき、ロボット10aを現在位置姿勢から停止位置姿勢900Qへ移動可能かを判定する(1117)。この判定は、例えば、演算部14によるシミュレーションによって実現される。まず、シミュレーションにおいて、アーム12の現在の関節角度、倉庫の形状データ、ロボット10aの形状や機構のデータ、格納棚100の形状データ、ステップ1101中のステップ1003で計測した距離画像を用いて、格納棚100Mの近傍における多数のロボット10aの位置姿勢に対し、ロボット10aが格納棚100や他の物品と接触するか否かを確認し、接触しない位置姿勢を記憶しておく。次に、記憶した位置姿勢を任意に二つ選出し、予め与えられた閾値を用いてそれらが近いか否かを判定し、近い位置姿勢同士を繋いだ移動グラフを作成する。その後、移動グラフを辿り、現在の位置姿勢から停止位置姿勢900Qへと到達する道筋を探索する。予め定められた時間内で道筋を発見できた場合、ロボット10aを現在の位置姿勢から停止位置姿勢900Qへ移動可能であると判定する(図12(d))。
その結果、ロボット10aが停止位置姿勢900Qまで移動不可能であれば、ステップ1112に戻り、停止位置姿勢900Q及び目標関節角度901Qの別の組み合わせを算出する。このとき、停止位置姿勢900Q及び目標関節角度901Qの一方が新たなものでもよく、停止位置姿勢900Q及び目標関節角度901Qの両方が新たなものでもよい。
一方、ロボット10aが障害物と干渉せずに停止位置姿勢900Qまで移動可能であれば、演算部14は、アーム12が目標関節角度901Qとなっているときに、ロボット10aが現在位置姿勢からを停止位置姿勢900Qへ移動する干渉回避移動軌跡904Qを決定する(1118)。具体的には、ステップ1107におけるシミュレーションの結果を用いて、現在の位置姿勢から停止位置姿勢900Qへ移動する最短の道筋(又は、所定の条件を満たす道筋)を探索し、干渉回避移動軌跡904Qに決定する。
その後、演算部14が干渉回避移動軌跡904Qに従って走行部13aを制御し、ロボット10aが移動し(1119、図12(e))、アーム12が関節角度を目標関節角度901Qへ変更する(1120、図12(f))。その後、演算部14は、ロボット10aが停止位置姿勢900Qへ移動し、アーム12の関節角度が目標関節角度901Qへ変更されたことを確認し、全体管理装置200へ作業完了報告を送信する(1121)。
ここまで、実施例2において、図6に示す格納棚100M内に格納されている物品を取り出す場合について説明したが、図3に示す格納容器150aに格納された物品151aを取り出す場合も同様である。すなわち、グリッパ11が物品の上面に正対して、物品151aを吸着可能な位置に、ロボット10aが移動する。
以上に説明したように、実施例2では、物品101Mを保持するためのロボット10aの停止位置姿勢900M及び目標関節角度901Mを算出し、アーム12が目標関節角度901Mの状態で、ロボット10aが停止位置姿勢900Mへ移動した後に、グリッパ11が物品101Mを保持する。また、物品101Mを格納棚100Mから取り出した状態での停止位置姿勢900Q及び目標関節角度901Qを算出し、アーム12が物品101Mを保持した関節角度(901M)の状態で、ロボット10aが停止位置姿勢900Qへ移動した後に、アーム12が目標関節角度901Qへと推移する。この一連の動作により、物品101Mが格納棚100Mの奥に格納されていても、ロボット10aが格納棚100Mや他の物品と接触することなく、グリッパ11が物品101Mに正しく接触できる位置から物品101Mにアクセスでき、違う物品101を取り出したり、物品101Mを取りこぼしたりするミスを軽減できる。
<実施例3>
図13は、実施例3のロボットシステムの構成を示す図である。
実施例3のロボットシステムは、ロボット10bと、搬送車90bと、全体管理装置200とで構成される。
ロボット10bは、先端にグリッパ11を有するアーム12と、グリッパ11が保持する物品を認識する物品計測センサ18bと、演算部14と、吸引力発生部15と、電力供給部16とを有する。実施例3のロボット10bは、実施例1のロボット10aと異なり、走行部と周囲環境計測センサとを有さない。アーム12、物品計測センサ18b、演算部14、吸引力発生部15及び電力供給部16の構成は、前述した実施例1のロボット10aと同じであるため、説明を省略する。
搬送車90bは、積載部91と、走行部13aと、周囲環境計測センサ17bとを有する。
積載部91は、搬送車90bの上部に設けられており、所定の位置姿勢になったとき又は全体管理装置200の指令信号に従って、上部を上昇及び下降する。例えば、図14に示すように、積載部91の上昇によって、搬送車90bが格納棚100bの下部と係合し、格納棚100bを持ち上げた状態で格納棚100bを搬送する。また、図15に示すように、積載部91に載置された格納容器150bを搬送する。
走行部13aは、回転するタイヤと、該タイヤを回転駆動するモータとで構成される。タイヤは対向して二つ設けられ、各タイヤの回転方向や回転数を制御することによって、搬送車90bが走行し、方向を転換し、その場で回転できる。搬送車90bの下部には、図示を省略する補助輪が設けられてもよい。
周囲環境計測センサ17bは、レーザ光照射部とレーザ光受光部とを有する二次元又は三次元のレーザスキャナで構成され、周囲にレーザ光を照射し、反射光を測定する。周囲環境計測センサ17bが測定したレーザ反射光によって、周囲の障害物(壁、格納棚など)までの距離を算出でき、該算出された距離を連結して周囲の障害物の位置及び大きさを算出できる。
全体管理装置200は、有線又は無線の通信によってロボット10bと接続され、無線通信によって搬送車90bと接続される。全体管理装置200の構成は、前述した実施例1と同じであるため説明を省略する。
本実施例では、演算部14は、ロボット10bの一構成であるが、ロボット10bと別に構成してもよい。例えば、搬送車90bが演算部14を有し、搬送車90bとロボット10aが通信可能に構成してもよい。
次に、図14及び図15を参照して、ロボット10bによる物品のピッキングを説明する。
図14は、格納棚内の物品をピッキングする実施例3のロボットシステムを示す図である。
図14に示すロボットシステムは、ロボット10b、搬送車90b、格納棚100b及び全体管理装置200(図示省略)を含む。格納棚100bから取り出される物品101bの正面にロボット10bが位置するように、格納棚100bを積載した搬送車90bが移動する。ロボット10bは、当該物品101bの側面にグリッパ11を吸着して、アーム12の関節を曲げることによって、物品101bを格納棚100bから取り出す。
図15は、容器内の物品をピッキングする実施例3のロボットシステムを示す図である。
図15に示すロボットシステムは、ロボット10b、搬送車90b、格納容器150b及び全体管理装置200(図示省略)を含む。格納容器150bから取り出される物品101bの正面にロボット10bが位置するように、格納容器150bを積載した搬送車90bが移動する。ロボット10bは、当該物品101bの上面にグリッパ11を吸着して、アーム12の関節を曲げることによって、物品101bを格納容器150bから取り出す。
なお、実施例3において物品が格納される格納手段として格納棚100b及び格納容器150bについて説明したが、物品を格納し保管できる物であれば、どの様な形態でもよい。
図16は、実施例3のロボット10bの動作を制御する処理のフローチャートである。図16に示す処理を行うプログラムは、ロボット10bの演算部14のCPUが実行する。
まず、ロボット10bは、格納棚100bから物品101bを取り出す指令を全体管理装置200から受信する。さらに、搬送車90bは、ロボット10bが格納棚100bから物品101bを取り出す指令を全体管理装置200から受信すると(2001)、格納棚100bを積載可能な位置まで自律的に移動し(2002)、格納棚100bを積載し(2003)、ロボット10bの手前、すなわち、ロボット10bが格納棚100bに格納された物品101を計測できる位置まで自律的に移動して、格納棚100bを搬送する(2004)。2002及び2004の経路は長距離経路に該当する。
そして、ロボット10bは、物品計測センサ18bによって格納棚100bに格納された物品101を計測する(2005)。そして、演算部14は、物品計測センサ18bによる計測結果に対し、予め登録されている物品101の形状や大きさを用いて、格納棚100b内の各物品101の詳細な位置姿勢を算出する(2006)。例えば、物品計測センサ18bが物品101を含んだ距離画像を取得し、予め登録されている物品101の形状と大きさに合致する部分を距離画像の中から探索することによって、各物品101の詳細な位置姿勢を算出できる。なお、全体管理装置200から格納棚100b内の物品101の詳細な位置姿勢を取得できる場合、ステップ2005及び2006の処理を省略できる。
そして、演算部14は、物品101bを保持するための格納棚100bの停止位置姿勢900bを算出する(2007)。この算出は、例えば、演算部14によるシミュレーションによって実現される。まず、予め定められた物品101bを保持するための物品101bから見たグリッパ11の相対位置姿勢のデータと、2006で算出した物品101bの位置姿勢から、物品101bを保持するためのグリッパ11の絶対位置姿勢を算出する。続いて、シミュレーション内において、格納棚100bの仮の停止位置姿勢を設定し、ロボット10bの形状や機構のデータを用いて、その仮の停止位置姿勢において算出したグリッパ11の絶対位置姿勢をロボット10bが取ることが可能か不可能かを確認する。この確認は逆運動学問題を解くことによって実現できる。この確認の結果が可能である場合は、仮の停止位置姿勢を停止位置姿勢900bとして出力する。確認の結果が不可能である場合は、仮の停止位置姿勢の微小変更し、グリッパ11の絶対位置姿勢の実現可否の確認を再度実行する。これを、確認の結果が可能となるまで繰り返す。本実施例において、物品101bを保持するための物品101bから見たグリッパ11の相対位置姿勢は、物品101bの正面の中心で垂直な方向であることから、物品101bを取り出すための格納棚100bの停止位置は、ロボット10bが物品101bの正面(ロボット10bに向いた面)に正対する位置となる。
その後、搬送車90bは、算出された停止位置姿勢900bへ自律的に移動し、格納棚100bを搬送する(2008)。このときの経路は短距離経路に該当し、搬送車90bは、現在地にて停止位置姿勢900bの位置に向かう方向へとその場で旋回し、停止位置姿勢900bの位置まで直線的に移動し、停止位置姿勢900bの位置でその場旋回することにょって姿勢を合わせ、最終的に格納棚100bは停止位置姿勢900bとなる。
物品101bを保持可能な位置姿勢へグリッパ11が移動するように、アーム12の関節の角度を目標関節角度901bに推移する(2009)。2007における逆運動学問題を解いた結果が、グリッパ11の絶対位置姿勢をロボット10aが取るためのアーム12の目標関節角度901bとなる。例えば、現在の関節角度から一定の角速度で目標関節角度901bへと関節角度を徐々に推移させていく方法がある。その結果、取り出すべき物品101bの正面に正対して、物品101bを吸着可能なように、グリッパ11が移動する。
次に、グリッパ11が物品101bを保持する(2010)。例えば、物品101bに面接触したグリッパ11を減圧し、グリッパ11に物品101bを吸着する。
そして、物品101bを保持したまま格納棚100bから引き出すように、アーム12の関節角度を終了関節角度902へ変更し、グリッパ11を移動する(2011)。例えば、グリッパ11の姿勢及び物品101bの姿勢を2010の状態のまま変更することなく、格納棚100bから物品101bが完全に離れる位置まで、格納棚100bの正面に対し垂直に移動させる。格納棚100bから物品101bが完全に離れたときのアーム12の関節角度が終了関節角度902となる。
その後、アーム12の関節角度が終了関節角度902へ変更された後、搬送車90bは、設置位置姿勢へ自律的に移動し、格納棚100bを搬送し(2012)、格納棚100bを定められた位置に設置する(2013)。その後、搬送車90bは、全体管理装置200へ作業完了報告を送信する(2014)。2012の経路は長距離経路に該当する。
図17は、実施例3の物品101の位置姿勢に対応する格納棚100bの停止位置姿勢900を示す図である。
前述したように、実施例3では、ロボット10bのグリッパ11が物品101bを保持できる位置に搬送車90b(格納棚100b)が停止する。すなわち、取り出すべき物品101の位置姿勢によって搬送車90bが停止する位置姿勢が異なる。
例えば、格納棚100bの下の間口の中列上段の物品101bを取り出す場合、搬送車90b(格納棚100b)は停止位置姿勢900bに停止する。また、格納棚100bの下の間口の左列上段の物品101fを取り出す場合、搬送車90b(格納棚100b)は停止位置姿勢900fに停止する。さらに、格納棚100bの下の間口の左列上段の物品101jを取り出す場合、搬送車90b(格納棚100b)は停止位置姿勢900jに停止する。
なお、停止位置姿勢900及び目標関節角度901は、グリッパ11の種類やアーム12に対する取り付け位置姿勢、物品101の形状や大きさによって異なる。このため、演算部14は、グリッパ11が物品101にアクセスする方向の情報を用いて、停止位置姿勢900及び目標関節角度901を算出する。
ここまで、実施例3おいて、図14に示す格納棚100b内に格納されている物品を取り出す場合について説明したが、図15に示す格納容器150bに格納された物品151bを取り出す場合も同様である。すなわち、グリッパ11が物品の上面に正対して、物品151bを吸着可能な位置に、ロボット10bが移動する。
以上に説明したように、実施例3では、ロボット10bが物品101bを保持するための搬送車90b(格納棚100b)の停止位置姿勢900bを算出し、当該停止位置姿勢900bへ格納棚100bを搬送した後に、グリッパ11が物品101bを保持するので、グリッパ11が物品101bに正しく接触できる位置から物品101bにアクセスでき、違う物品101を取り出したり、物品101bを取りこぼしたりするミスが軽減できる。
<実施例4>
本実施例では、格納棚100の奥に置かれた物品101を取り出すことが可能な格納棚内物品ピッキングロボットシステムの例を説明する。
図18は、実施例4のロボットシステムの構成を示す図である。
実施例4のロボットシステムは、ロボット10b、搬送車90b、格納棚100n及び全体管理装置200を含む。ロボット10bは、格納棚100nから取り出される物品101nの正面に移動し、当該物品101nの側面にグリッパ11を吸着して、アーム12の関節を曲げることによって、物品101nを格納棚100nから取り出す。
実施例4では、格納棚100nの奥に置かれている物品101nをロボット10bが取り出す例を説明する。格納棚100nの奥に置かれている物品101nを取り出す場合、格納棚100nがロボット10bに近づいた状態で、物品101nを吸着するためにアーム12を目標関節角度901nへ変更すると、格納棚100nの間口を区画する棚板に当接することがある。また、ロボット10bが物品101nを吸着した後、直ちにアーム12を終了関節角度902へ変更すると、格納棚100nの間口を区画する棚板に当接することがある。このため、格納棚100nの奥に置かれている物品101nを取り出す場合には、特別の手順が必要となる。
図19は、実施例4の格納棚100nの奥に置かれている物品101nを取り出すためのロボット10bの停止位置姿勢900nを示す図である。
前述したように、実施例4では、ロボット10bのグリッパ11が物品101nを保持できる位置に搬送車90b(格納棚100n)が停止する。すなわち、取り出すべき物品101によってロボットの停止位置姿勢が異なる。例えば、格納棚100nの下の間口の左列上段の物品101nを取り出す場合、搬送車90bは、ロボット10bの手前の位置まで格納棚100nを搬送した後、ロボット10bに近づき、停止位置姿勢900nに停止する。停止位置姿勢900nは、格納棚100nの最前面の物品101を取り出すための停止位置姿勢900fよりロボット10bに近い位置である。
次に、図20及び図21を参照して、実施例4のロボット10bが格納棚100nの奥に置かれた物品101nを取り出す動作を説明する。図20は、実施例4のロボット10bが物品101nを保持するまでの動作を制御する処理のフローチャートである。図21は、実施例4のロボット10bが物品101nを保持するまでの動作を示す図である。
まず、ロボット10bは、図16のステップ2001から2006を実行する(2101)。すなわち、搬送車90bは、ロボット10bが格納棚100nから物品101nを取り出す指令を全体管理装置200から受信し(2001)、格納棚100nを積載可能な位置まで自律的に移動し(2002)、格納棚100nを積載し(2003)、ロボット10bが格納棚100nに格納された物品101を計測できる位置まで自律的に移動する(2004)。また、ロボット10bは、格納棚100nから物品101nを取り出す指令を全体管理装置200から受信し(2001)、物品計測センサ18bによって格納棚100nに格納された物品101を計測し(2005)、格納棚100n内の各物品101の詳細な位置姿勢を算出する(2006)。この状態では、図21(a)に示すように、搬送車90bは、ロボット10bが取り出すべき物品101nや周囲の状況を見渡せる、ロボット10bから離れた位置にいる。
そして、演算部14は、物品101nを保持するための格納棚100nの停止位置姿勢900n及びアーム12の目標関節角度901nを算出する(2102)。この算出は、例えば、演算部14によるシミュレーションによって実現される。まず、予め定められた物品101nを保持するための物品101nから見たグリッパ11の相対位置姿勢のデータと、2006で算出した物品101nの位置姿勢から、物品101nを保持するためのグリッパ11の絶対位置姿勢を算出する。続いて、シミュレーション内において、格納棚100nの仮の停止位置姿勢を設定し、その仮の停止位置姿勢において算出したグリッパ11の絶対位置姿勢をロボット10bが取ることが可能か不可能かを確認する。この確認は逆運動学問題を解くことで実現でき、その結果、アーム12の仮の目標関節角度を同時に得ることができる。この確認の結果が可能である場合は、さらに、ロボット10bの形状や機構のデータ、格納棚100の形状データ、ステップ2101中のステップ2005で計測した距離画像を用いて、ロボット10aが仮の停止位置姿勢と仮の目標関節角度を取った際に、ロボット10aが格納棚100や他の物品と接触するか否かを確認する。接触しない場合は、仮の停止位置姿勢を停止位置姿勢900nとして、仮の目標関節角度を目標関節角度901nとしてそれぞれ出力する。確認の結果が不可能である場合、又は「接触する」である場合は、仮の停止位置姿勢の微小変更し、グリッパ11の絶対位置姿勢の実現可否の確認と、ロボット10bが接触するか否かの確認とを再度実行する。これらを、確認の結果が可能でかつ「接触しない」となるまで繰り返す。本実施例において、物品101nを保持するための物品101nから見たグリッパ11の相対位置姿勢は、物品101nの正面の中心で垂直な方向であることから、物品101nを取り出すための格納棚100n(及び搬送車90b)の停止位置は、ロボット10bが物品101nの正面(ロボット10bに向いた面)に正対する位置となる。また、グリッパ11が格納棚100nの奥の物品101nに届くようにアーム12を延伸した状態が目標関節角度901nである(図21(b))。
次に、演算部14は、格納棚100n(及び搬送車90b)が停止位置姿勢900nにいるときに、アーム12を現在の関節の角度から目標関節角度901nへ推移可能かを判定する(2103)。例えば、格納棚100nが設置された倉庫及び格納棚100nの形状データ(例えば、倉庫の壁や柱の位置及び大きさ、格納棚100nの形状及び位置を表すCADデータ)を参照し、アーム12の先端(グリッパ11)が移動可能な範囲の空間において、アーム12が障害物(格納棚100n、搬送車90b、他のロボット10、倉庫の柱や壁など)と干渉することなく、現在の関節角度から目標関節角度901nへと推移可能な軌跡を探索する。この探索は、例えば、演算部14によるシミュレーションによって実現される。まず、シミュレーションにおいて、停止位置姿勢900n、ロボット10bの形状や機構のデータ、格納棚100の形状データ、ステップ2101中のステップ2005で計測した距離画像を用いて、多数のアーム12の関節角度に対し、ロボット10bが格納棚100nや他の物品と接触するか否かを確認し、接触しない関節角度を記憶しておく。次に、記憶した関節角度を任意に二つ選出し、予め与えられた閾値を用いてそれらが近いか否かを判定し、近い関節角度同士を繋いだ関節角度推移グラフを作成する。その後、関節角度推移グラフを辿り、現在の関節角度から目標関節角度901nへと到達する道筋を探索する。予め定められた時間内で道筋を発見できた場合、アーム12を現在の関節の角度から目標関節角度901nへ推移可能と判定する。例えば、図21(c)に示すように、格納棚100n(及び搬送車90b)が停止位置姿勢900nにおいて、アーム12を目標関節角度901nに推移しようとすると必ず上の棚板と接触する場合、予め定められた時間内で道筋を発見できずに、推移不可能であると判定される。
その結果、アーム12が目標関節角度901nに推移不可能であれば、ステップ2107に進む。一方、アーム12が目標関節角度901nに推移可能であれば、演算部14は、格納棚100n(及び搬送車90b)が停止位置姿勢900nにいるとき、アーム12を現在関節角度から目標関節角度901nへ推移する干渉回避関節角度軌跡を決定する(2104)。具体的には、ステップ2103におけるシミュレーションの結果を用いて、現在の状態から目標関節角度901nへ推移する最短の道筋(又は、所定の条件を満たす道筋)を探索し、干渉回避関節角度軌跡に決定する。
そして、搬送車90bは、格納棚100nを停止位置姿勢900nへ自律的に搬送し(2105)、干渉回避関節角度軌跡に従ってアーム12を制御し、グリッパ11を移動する(2106)。2105の経路は短距離経路に該当する。その後、グリッパ11が物品101nを保持する(2111)。例えば、物品101nに面接触したグリッパ11を減圧し、グリッパ11に物品101nを吸着する。
一方、ステップ2103において、アーム12が障害物と干渉するので目標関節角度901nに推移不可能であると判定された場合、ステップ2107において、演算部14は、アーム12が目標関節角度901nであるとき、格納棚100n(搬送車90b)を現在位置姿勢から停止位置姿勢900nへ移動可能かを判定する。この判定は、例えば、演算部14によるシミュレーションによって実現される。まず、シミュレーション内において、アーム12の現在の関節角度、倉庫の形状データ、ロボット10bの形状や機構のデータ、格納棚100の形状データ、ステップ2101中のステップ2005で計測した距離画像を用いて、ロボット10bの近傍における多数の格納棚100nの位置姿勢において、格納棚100nとその内部の物品がロボット10bや他の倉庫内の機材と接触するか否かを確認し、接触しない位置姿勢を記憶しておく。次に、記憶した位置姿勢を任意に二つ選出し、予め与えられた閾値を用いてそれらが近いか否かを判定し、近い位置姿勢同士を繋いだ移動グラフを作成する。その後、移動グラフを辿り、現在の位置姿勢から停止位置姿勢900nへと到達する道筋を探索する。予め定められた時間内で道筋を発見できた場合、格納棚100n(搬送車90b)を現在の位置姿勢から停止位置姿勢900nへ移動可能であると判定する。
その結果、搬送車90bが停止位置姿勢900nまで移動不可能であれば、ステップ2102に戻り、停止位置姿勢900n及び目標関節角度901nの別の組み合わせを算出する。このとき、停止位置姿勢900n及び目標関節角度901nの一方が新たなものでもよく、停止位置姿勢900n及び目標関節角度901nの両方が新たなものでもよい。
一方、搬送車90bが障害物と干渉せずに停止位置姿勢900nまで移動可能であれば、演算部14は、アーム12が目標関節角度901nとなっているときに、搬送車90bが現在位置姿勢からを停止位置姿勢900nへ格納棚100nを搬送する干渉回避移動軌跡904nを決定する(2108)。具体的には、ステップ2107におけるシミュレーションの結果を用いて、現在の位置姿勢から停止位置姿勢900nへ移動する最短の道筋(又は、所定の条件を満たす道筋)を探索し、干渉回避移動軌跡904nに決定する(図21(d))。
その後、アーム12が関節角度を目標関節角度901nへ変更し(2109)、搬送車90bが干渉回避移動軌跡904nに従って自律的に移動して、格納棚100nを搬送する(2110、図21(e)参照)。その後、グリッパ11が物品101nを保持する(2111、図21(f)参照)。
図22に示すように、実施例4の搬送車90b(格納棚100n)は、ロボット10bが格納棚100nの奥に置かれている物品101nを保持するために、アーム12の関節角度を目標関節角度901nとした状態で(2109)、干渉回避移動軌跡904nに従ってロボット10bに近づく。
図23は、実施例4のロボット10bが物品101nを保持した後の動作を制御する処理のフローチャートである。図24は、実施例4のロボット10bが物品101nを保持した後の動作を示す図である。すなわち、図23に示す処理は、図20に示す処理の後に実行される。
まず、演算部14は、ロボット10bが物品101nを保持したまま格納棚100nから引き出すための、格納棚100n(搬送車90b)の停止位置姿勢900r及びアーム12の目標関節角度901rを算出する(2112)。ここで算出される停止位置姿勢900r及び目標関節角度901rは、格納棚100nがロボット10bから離れ、ロボット10bが次の動作に移行できる状態の、格納棚100n(搬送車90b)の位置姿勢及びアーム12の目標関節角度である(図24(b))。
次に、演算部14は、格納棚100n(搬送車90b)が現在位置姿勢にいるとき、アーム12を現在関節角度から目標関節角度901rへ推移可能かを判定する(2113)。例えば、格納棚100nが設置された倉庫及び格納棚100nの形状データ(例えば、ステップ2103と同様に、倉庫の壁や柱の位置及び大きさ、格納棚100nの形状及び位置を表すCADデータ)を参照し、アーム12の先端(グリッパ11)が移動可能な範囲の空間において、アーム12が障害物と干渉することなく、現在の関節角度から目標関節角度901rへと推移可能な軌跡を探索する。この探索は、例えば、演算部14によるシミュレーションによって実現される。まず、シミュレーションにおいて、現在位置姿勢、ロボット10bの形状や機構のデータ、格納棚100の形状データ、ステップ2101中のステップ2005で計測した距離画像を用いて、多数のアーム12の関節角度に対し、ロボット10bが格納棚100や他の物品と接触するか否かを確認し、接触しない関節角度を記憶しておく。次に、記憶した関節角度を任意に二つ選出し、予め与えられた閾値を用いてそれらが近いか否かを判定し、近い関節角度同士を繋いだ関節角度推移グラフを作成する。その後、関節角度推移グラフを辿り、現在の関節角度から目標関節角度901rへと到達する道筋を探索する。予め定められた時間内で道筋を発見できた場合、アーム12を現在の関節の角度から目標関節角度901rへ推移可能として判定する。例えば、図24(c)に示すように、格納棚100n(搬送車90b)が現在位置姿勢において、アーム12を目標関節角度901rに推移しようとすると必ず上の棚板と接触する場合、予め定められた時間内で道筋を発見できずに、推移不可能であると判定される。
その結果、アーム12が目標関節角度901rに推移不可能であれば、ステップ2117に進む。一方、アーム12が目標関節角度901rに推移可能であれば、演算部14は、搬送車90bが現在位置姿勢にいるとき、アーム12を現在関節角度から目標関節角度901rへ推移する干渉回避関節角度軌跡を決定する(2114)。具体的には、ステップ2113におけるシミュレーションの結果を用いて、現在の状態から目標関節角度へ推移する最短の道筋(又は、所定の条件を満たす道筋)を探索し、干渉回避関節角度軌跡に決定する。
そして、ロボット10bは、干渉回避関節角度軌跡に従ってアーム12を制御し、グリッパ11を移動し(2115)、搬送車90bが停止位置姿勢900rへ自律的に格納棚100nを搬送する(2116)。2116の経路は短距離経路に該当する。その後、ステップ2011から2014を実行する(2121)。すなわち、グリッパ11が物品101nを保持したまま、アーム12の関節角度を終了関節角度902へ変更し、物品101nを格納棚100nから引き出し(2011)、搬送車90bが設置位置姿勢へ自律的に格納棚100nを搬送し(2012)、格納棚100nを定められた位置に設置し(2013)、搬送車90bが全体管理装置200へ作業完了報告を送信する(2014)。
一方、ステップ2113において、アーム12が障害物と干渉せずに目標関節角度901rに推移不可能であると判定された場合、演算部14は、アーム12が現在の関節角度であるとき、格納棚100n(搬送車90b)を現在位置姿勢から停止位置姿勢900rへ移動可能かを判定する(2117)。この判定は、例えば、演算部14によるシミュレーションによって実現される。まず、シミュレーションにおいて、アーム12の現在の関節角度、倉庫の形状データ、ロボット10aの形状や機構のデータ、格納棚100の形状データ、ステップ2101中のステップ2005で計測した距離画像を用いて、ロボット10bの近傍における多数の格納棚100nの位置姿勢に対し、格納棚100nやその内部の物品がロボット10bや他の倉庫内の機材と接触するか否かを確認し、接触しない位置姿勢を記憶しておく。次に、記憶した位置姿勢を任意に二つ選出し、予め与えられた閾値を用いてそれらが近いか否かを判定し、近い位置姿勢同士を繋いだ移動グラフを作成する。その後、移動グラフを辿り、現在の位置姿勢から停止位置姿勢900rへと到達する道筋を探索する。予め定められた時間内で道筋を発見できた場合、格納棚100n(搬送車90b)を現在の位置姿勢から停止位置姿勢900rへ移動可能であると判定する(図24(d))。
その結果、格納棚100n(搬送車90b)が停止位置姿勢900rまで移動不可能であれば、ステップ2112に戻り、停止位置姿勢900r及び目標関節角度901rの別の組み合わせを算出する。このとき、停止位置姿勢900r及び目標関節角度901rの一方が新たなものでもよく、停止位置姿勢900r及び目標関節角度901rの両方が新たなものでもよい。
一方、格納棚100n(搬送車90b)が障害物と干渉せずに停止位置姿勢900rまで移動可能であれば、演算部14は、アーム12が目標関節角度901rとなっているときに、搬送車90bが現在位置姿勢からを停止位置姿勢900rへ格納棚100nを搬送する干渉回避移動軌跡904rを決定する(2118)。具体的には、ステップ2107におけるシミュレーションの結果を用いて、現在の位置姿勢から停止位置姿勢900rへ移動する最短の道筋(又は、所定の条件を満たす道筋)を探索し、干渉回避移動軌跡904rに決定する。
その後、搬送車90bは、干渉回避移動軌跡904rに従って走行して、格納棚100nを搬送し(2119、図24(e))、アーム12が関節角度を目標関節角度901rへ変更する(2120、図24(f))。その後、ステップ2011から2014を実行し(2121)、最終的に、搬送車90bが全体管理装置200へ作業完了報告を送信する。
ここまで、実施例4において、図18に示す格納棚100n内に格納されている物品を取り出す場合について説明したが、図15に示す格納容器150bに格納された物品151bを取り出す場合も同様である。すなわち、グリッパ11が物品の上面に正対して、物品151bを吸着可能な位置に、搬送車90bが格納容器150bを搬送する。
以上に説明したように、実施例4では、ロボット10bが物品101nを保持するための格納棚100n(搬送車90b)の停止位置姿勢900nとアーム12の目標関節角度901nを算出し、アーム12が目標関節角度901nの状態で、格納棚100nを当該停止位置姿勢900nへ搬送した後に、グリッパ11が物品101nを保持する。また、物品101nを格納棚100nから取り出した状態での停止位置姿勢900r及び目標関節角度901rを算出し、アーム12が物品101nを保持した関節角度(901n)の状態で、搬送車90bが格納棚100nを停止位置姿勢900rへ移動した後に、アーム12が目標関節角度901rへと推移する。この一連の動作により、物品101nが格納棚100nの奥に格納されていても、ロボット10aが格納棚100nや他の物品と接触することなく、グリッパ11が物品101nに正しく接触できる位置から物品101nにアクセスでき、違う物品101を取り出したり、物品101nを取りこぼしたりするミスを軽減できる。
以上に説明した実施例では、格納手段(格納棚100、格納容器150)から物品101を取り出す場合について説明したが、ロボット10が物品101を格納手段に格納する場合にも、本発明を適用できる。
以上に説明したように、本発明の実施例によると、演算部14が、格納棚100の形状と、ロボット10の形状と、取り出される対象物品101の形状と、格納棚100内の対象物品101の位置姿勢とに基づいて、ロボット10の停止位置姿勢900及びアーム12の目標関節角度901を算出し、ロボット10が、停止位置姿勢900へ移動し、アーム12の関節角度を目標関節角度901へ変更し、格納棚100から前記対象物品101を取り出すので、リーチが短く関節自由度が少ないアームを有するロボットでも、障害物(格納棚100、他の物品など)に接触せずに、格納棚100から物品101を取り出すことが可能となる。このため、ロボットのコストを低減でき、安価なロボットでの棚形状の制約を低くすることができる。
また、演算部14は、ロボット10が格納棚100に近づいた状態(格納棚100内の物品101にアクセス可能な状態)である第1の停止位置姿勢900M及び第1の目標関節角度901Mを実現するために、アーム12の関節角度を第1の目標関節角度901Mとした状態で、ロボット10が障害物と干渉せずに現在の位置姿勢から第1の停止位置姿勢900Mへ移動する経路904Mを算出して、算出された経路904Mに従ってロボット10が格納棚100に近づくので、格納棚100の奥に置かれている物品101を障害物と接触することなく保持することができる。
また、演算部14は、格納棚100内の対象物品101の位置姿勢に基づいて、ロボット10が障害物と干渉せずに対象物品101を保持する停止位置姿勢900と目標関節角度901との組み合わせを算出するので、格納棚100の奥に置かれている物品101を取り出すための一連の動作を適切に計画できる。
また、演算部14は、ロボット10が格納棚100から遠ざかった状態(ロボット10が格納棚100から離れ、他の場所に移動可能な状態)である第2の停止位置姿勢900Q及び第2の目標関節角度901Qを実現するために、アーム12の関節角度が現在の状態で、ロボット10が障害物と干渉せずに現在の位置姿勢から第2の停止位置姿勢900Qへ移動する経路904Qを算出して、算出された経路904Qに従ってロボット10が格納棚100から遠ざかるので、格納棚100の奥に置かれている物品101を保持した後に、障害物と接触することなく格納棚100から離脱できる。
また、演算部14は、ロボット10と格納棚100が近接した状態から、ロボット10が対象物品101を保持した状態で格納棚100から離隔した停止位置姿勢900と目標関節角度901との組み合わせを算出するので、格納棚100の奥に置かれている物品101を取り出すための一連の動作を適切に計画できる。
また、演算部14は、格納棚100の形状と、ロボット10の形状と、対象物品101の形状と、対象物品101の位置姿勢とに基づいて、ロボット10を停止位置姿勢900へ移動する制御とアーム12の関節角度を目標関節角度901へ変更する制御との順序を選択する。ロボット10がアームを曲げた状態で移動することが安全上望ましいが、目的を達し得ない場合は、アームを伸ばした状態で移動する必要がある。このように、制御の順序を選択することによって、適切な制御を行うことができる。
また、物品計測センサ18が前記格納棚100に格納された物品101を計測可能な位置姿勢へロボット10が移動し、物品計測センサ18は、計測可能な位置姿勢へロボット10が移動した後、格納棚100に格納された物品101を計測し、演算部14は、計測の結果に基づいて、格納棚100内の対象物品101の位置姿勢を認識するので、中央の制御装置(全体管理装置200)での物品101の管理が不要となり、システムの負荷を分散できる。
また、演算部14は、格納棚100の形状と、ロボット10の形状と、取り出される対象物品101の形状と、格納棚100内の対象物品101の位置姿勢とに基づいて、格納棚100の停止位置姿勢900及びアーム12の目標関節角度901を算出し、搬送車90は、停止位置姿勢900へ格納棚100を搬送し、ロボット10は、アーム12の関節角度を前記目標関節角度901へ変更し、格納棚100から対象物品101を取り出すので、リーチが短く関節自由度が少ないアームを有するロボットでも、障害物(格納棚100、他の物品など)に接触せずに、格納棚100から物品101を取り出すことが可能となる。このため、ロボットのコストを低減でき、安価なロボットでの棚形状の制約を低くすることができる。
また、演算部14は、格納棚100がロボット10に近づいた状態(ロボット10が格納棚100内の物品101にアクセス可能な状態)である第1の停止位置姿勢900n及び第1の目標関節角度901nを実現するために、アーム12の関節角度を第1の目標関節角度901nとした状態で、格納棚100及び格納している物品が障害物(ロボット10など)と干渉せずに現在の位置姿勢から第1の停止位置姿勢900nへ移動する経路904nを算出して、算出された経路904nに従って格納棚100が前記ロボット10に近づくので、ロボット10は格納棚100の奥に置かれている物品101を障害物(格納棚100、他の物品など)と接触することなく保持することができる。
また、演算部14は、格納棚100内の対象物品101の位置姿勢に基づいて、格納棚100及びロボット10が障害物(お互いや他の物品など)と干渉せずに、ロボット10が対象物品101を保持する停止位置姿勢900と目標関節角度901との組み合わせを算出するので、格納棚100の奥に置かれている物品101を取り出すための一連の連携動作を適切に計画できる。
また、演算部14は、格納棚100がロボット10から遠ざかった状態(格納棚100がロボット10から離れ、他の場所に移動可能な状態)である第2の停止位置姿勢900r及び第2の目標関節角度901rを実現するために、アーム12の関節角度が現在の状態で、格納棚100及び格納している物品が障害物(ロボット10など)と干渉せずに現在の位置姿勢から第2の停止位置姿勢900rへ搬送される経路904rを算出して、算出された経路904rに従って格納棚100がロボット10から遠ざかるので、格納棚100の奥に置かれている物品101を保持した後に、障害物(ロボット10など)と接触することなく格納棚100がロボット10から離脱できる。
また、演算部14は、ロボット10と格納棚100が近接した状態から、ロボット10が対象物品101を保持した状態で、格納棚100及び格納している物品がロボット10から離隔した停止位置姿勢900及び目標関節角度901を組合せとして算出するので、格納棚100の奥に置かれている物品101を取り出すための一連の連携動作を適切に計画できる。
また、演算部14は、格納棚100の形状と、ロボット10の形状と、対象物品101の形状と、対象物品101の位置姿勢とに基づいて、搬送車90が格納棚100を停止位置姿勢900へ搬送する制御とアーム12の関節角度を目標関節角度901へ変更する制御との順序を選択する。格納棚100がロボット10へ向かう移動経路を最小とすることは作業スループットの観点から望ましいが、目的を達し得ない場合は、ロボット10のアーム12を伸ばし、そのアーム12を回避するように格納棚100を移動させる必要がある。このように、制御の順序を選択することによって、適切な制御を行うことができる。
また、搬送車90は、物品計測センサ18が格納棚100に格納された物品101を計測可能な位置姿勢へ、格納棚100を搬送し、ロボット10は、計測可能な位置姿勢へ格納棚100が搬送された後、格納棚100に格納された物品101を計測し、演算部14は、計測の結果に基づいて、対象物品101の位置姿勢を認識するので、中央の制御装置(全体管理装置200)での物品101の管理が不要となり、システムの負荷を分散できる。
なお、本発明は前述した実施例に限定されるものではなく、添付した特許請求の範囲の趣旨内における様々な変形例及び同等の構成が含まれる。例えば、前述した実施例は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに本発明は限定されない。また、ある実施例の構成の一部を他の実施例の構成に置き換えてもよい。また、ある実施例の構成に他の実施例の構成を加えてもよい。また、各実施例の構成の一部について、他の構成の追加・削除・置換をしてもよい。
また、前述した各構成、機能、処理部、処理手段等は、それらの一部又は全部を、例えば集積回路で設計する等により、ハードウェアで実現してもよく、プロセッサがそれぞれの機能を実現するプログラムを解釈し実行することにより、ソフトウェアで実現してもよい。
各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリ、ハードディスク、SSD(Solid State Drive)等の記憶装置、又は、ICカード、SDカード、DVD等の記録媒体に格納することができる。
また、制御線や情報線は説明上必要と考えられるものを示しており、実装上必要な全ての制御線や情報線を示しているとは限らない。実際には、ほとんど全ての構成が相互に接続されていると考えてよい。