(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024024278
(43)【公開日】2024-02-22
(54)【発明の名称】ロボットシステム、ワーク管理システム、ロボット制御方法、およびワーク管理プログラム
(51)【国際特許分類】
B25J 9/22 20060101AFI20240215BHJP
G05B 19/42 20060101ALI20240215BHJP
【FI】
B25J9/22 A
G05B19/42 B
【審査請求】有
【請求項の数】14
【出願形態】OL
(21)【出願番号】P 2022127016
(22)【出願日】2022-08-09
(71)【出願人】
【識別番号】000006622
【氏名又は名称】株式会社安川電機
(74)【代理人】
【識別番号】100088155
【弁理士】
【氏名又は名称】長谷川 芳樹
(74)【代理人】
【識別番号】100145012
【弁理士】
【氏名又は名称】石坂 泰紀
(74)【代理人】
【識別番号】100171099
【弁理士】
【氏名又は名称】松尾 茂樹
(74)【代理人】
【識別番号】100144440
【弁理士】
【氏名又は名称】保坂 一之
(72)【発明者】
【氏名】株丹 亮
(72)【発明者】
【氏名】鈴木 良平
(72)【発明者】
【氏名】角谷 拓也
【テーマコード(参考)】
3C269
3C707
【Fターム(参考)】
3C269AB21
3C269AB33
3C269BB05
3C269CC09
3C269EF02
3C269EF10
3C269EF22
3C269EF56
3C269EF60
3C269JJ09
3C269JJ20
3C269KK08
3C269KK11
3C269MN09
3C269MN14
3C269MN16
3C269MN46
3C707AS04
3C707BS24
3C707DS01
3C707LS15
3C707LS20
3C707LV07
3C707LV14
3C707LW03
3C707MT02
3C707NS02
(57)【要約】
【課題】複数のワークを搬送面から効率的に取り出すこと。
【解決手段】ロボットシステムは、搬送面上を流れる複数のワークに基づいて、n個(ただし、n>1)のワークに対応するウィンドウを設定するウィンドウ設定部と、n個のワークのそれぞれの位置に基づいて、ウィンドウに対するピッキング順序を最適化アルゴリズムにより決定する順序決定部と、ピッキング順序に基づいて、ウィンドウからm個(ただし、n>m)のワークを選択する対象選択部と、ピッキング順序でm個のワークを搬送面から取り出すロボットとを備える。
【選択図】
図1
【特許請求の範囲】
【請求項1】
搬送面上を流れる複数のワークに基づいて、n個(ただし、n>1)のワークに対応するウィンドウを設定するウィンドウ設定部と、
前記n個のワークのそれぞれの位置に基づいて、前記ウィンドウに対するピッキング順序を最適化アルゴリズムにより決定する順序決定部と、
前記ピッキング順序に基づいて、前記ウィンドウからm個(ただし、n>m)のワークを選択する対象選択部と、
前記ピッキング順序で前記m個のワークを前記搬送面から取り出すロボットと、
を備えるロボットシステム。
【請求項2】
前記ロボットに前記取り出しを繰り返し実行させる反復制御部を更に備え、
前記反復制御部は、前記ロボットにより前記m個のワークが前記搬送面から取り出されるたびに、
前記ウィンドウ設定部に、前記ウィンドウ内の前記m個のワークを、前記複数のワークのうちの1以上のワークと入れ替えさせて、前記ウィンドウを更新させ、
前記順序決定部に、前記更新されたウィンドウに対して次のピッキング順序を決定させ、
前記対象選択部に、前記次のピッキング順序に基づいて、前記更新されたウィンドウから次のm個のワークを選択させ、
前記ロボットに、前記次のピッキング順序で前記次のm個のワークを前記搬送面から取り出させる、
請求項1に記載のロボットシステム。
【請求項3】
前記順序決定部は、
前記n個のワークのそれぞれについて、該ワークの取り出しに関する物理量を前記位置に基づいて推定し、
前記n個のワークのそれぞれの前記物理量に基づいて、前記ピッキング順序を決定する、
請求項1または2に記載のロボットシステム。
【請求項4】
前記順序決定部は、前記最適化アルゴリズムとして、前記物理量に基づく動的計画法を実行して、前記ピッキング順序を決定する、
請求項3に記載のロボットシステム。
【請求項5】
前記順序決定部は、
前記動的計画法を実行して、前記n個のワークに対応する複数の候補順序のそれぞれについて合計物理量を推定し、
複数の前記合計物理量に基づいて、前記複数の候補順序から前記ピッキング順序を決定する、
請求項4に記載のロボットシステム。
【請求項6】
前記ロボットは、前記m個のワークのそれぞれを共通の指定場所に移動し、
前記順序決定部は、前記n個のワークのそれぞれについて、該ワークを前記搬送面から前記指定場所に移動するための前記物理量を推定する、
請求項4に記載のロボットシステム。
【請求項7】
前記ロボットは、前記m個のワークのそれぞれを、該ワークに対応する指定場所に移動し、
前記順序決定部は、前記n個のワークのそれぞれについて、
前記指定場所の候補である複数の候補場所のそれぞれについて、該ワークを前記搬送面から該候補場所に移動するための前記物理量を推定する、
請求項4に記載のロボットシステム。
【請求項8】
前記搬送面における前記物理量の分布を示すデータテーブルを記憶する記憶部を更に備え、
前記順序決定部は、前記n個のワークのそれぞれについて、前記位置に基づいて前記データテーブルを参照して、前記物理量を取得する、
請求項3に記載のロボットシステム。
【請求項9】
前記搬送面は、前記複数のワークが流れる方向である流れ方向と、該流れ方向と直交する幅方向とを有し、
前記ウィンドウ設定部は、前記流れ方向および前記幅方向の少なくとも一つにおいてランダムに配置された状態で前記搬送面上を流れる前記複数のワークに基づいて、前記ウィンドウを設定する、
請求項1または2に記載のロボットシステム。
【請求項10】
前記ウィンドウ設定部は、
前記搬送面を監視するセンサによってワークが検知された順序に基づいて、前記ウィンドウに対応する前記n個のワークを選択する、
請求項1または2に記載のロボットシステム。
【請求項11】
搬送面上を流れる複数のワークのそれぞれの位置に基づく動的計画法を実行して、該複数のワークに対してピッキング順序を決定する順序決定部と、
前記ピッキング順序に基づいて、前記複数のワークから少なくとも一つのワークを選択する対象選択部と、
前記ピッキング順序で前記少なくとも一つのワークを前記搬送面から取り出すロボットと、
を備えるロボットシステム。
【請求項12】
搬送面上を流れる複数のワークに基づいて、n個(ただし、n>1)のワークに対応するウィンドウを設定するウィンドウ設定部と、
前記n個のワークのそれぞれの位置に基づいて、前記ウィンドウに対するピッキング順序を最適化アルゴリズムにより決定する順序決定部と、
前記ピッキング順序に基づいて、前記ウィンドウからm個(ただし、n>m)のワークを、前記搬送面から取り出す対象ワークとして選択する対象選択部と、
を備えるワーク管理システム。
【請求項13】
少なくとも一つのプロセッサを備えるロボット制御システムによって実行されるロボット制御方法であって、
搬送面上を流れる複数のワークに基づいて、n個(ただし、n>1)のワークに対応するウィンドウを設定するステップと、
前記n個のワークのそれぞれの位置に基づいて、前記ウィンドウに対するピッキング順序を最適化アルゴリズムにより決定するステップと、
前記ピッキング順序に基づいて、前記ウィンドウからm個(ただし、n>m)のワークを選択するステップと、
前記ピッキング順序で前記m個のワークを前記搬送面から取り出すようにロボットを制御するステップと、
を含むロボット制御方法。
【請求項14】
搬送面上を流れる複数のワークに基づいて、n個(ただし、n>1)のワークに対応するウィンドウを設定するステップと、
前記n個のワークのそれぞれの位置に基づいて、前記ウィンドウに対するピッキング順序を最適化アルゴリズムにより決定するステップと、
前記ピッキング順序に基づいて、前記ウィンドウからm個(ただし、n>m)のワークを、前記搬送面から取り出す対象ワークとして選択するステップと、
をコンピュータに実行させるワーク管理プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示の一側面は、ロボットシステム、ワーク管理システム、ロボット制御方法、およびワーク管理プログラムに関する。
【背景技術】
【0002】
特許文献1には、容器に物品を収容するロボットを制御するロボット制御装置が記載されている。この装置は、複数の物品の第1特性に基づいて、容器内での複数の物品の位置および姿勢の候補パターンを抽出し、複数の物品により容器に作用するモーメントのバランスが所定範囲に収まる候補パターンを判定して最終パターンとして選択し、その最終パターンに従って、容器に複数の物品を収容させるための所定の順序を決定し、その順序に従って複数の物品を容器へ収容させる制御信号をロボットに出力する。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
複数のワークを搬送面から効率的に取り出すことが望まれている。
【課題を解決するための手段】
【0005】
本開示の一側面に係るロボットシステムは、搬送面上を流れる複数のワークに基づいて、n個(ただし、n>1)のワークに対応するウィンドウを設定するウィンドウ設定部と、n個のワークのそれぞれの位置に基づいて、ウィンドウに対するピッキング順序を最適化アルゴリズムにより決定する順序決定部と、ピッキング順序に基づいて、ウィンドウからm個(ただし、n>m)のワークを選択する対象選択部と、ピッキング順序でm個のワークを搬送面から取り出すロボットとを備える。
【0006】
本開示の一側面に係るロボットシステムは、搬送面上を流れる複数のワークのそれぞれの位置に基づく動的計画法を実行して、該複数のワークに対してピッキング順序を決定する順序決定部と、ピッキング順序に基づいて、複数のワークから少なくとも一つのワークを選択する対象選択部と、ピッキング順序で少なくとも一つのワークを搬送面から取り出すロボットとを備える。
【0007】
本開示の一側面に係るワーク管理システムは、搬送面上を流れる複数のワークに基づいて、n個(ただし、n>1)のワークに対応するウィンドウを設定するウィンドウ設定部と、n個のワークのそれぞれの位置に基づいて、ウィンドウに対するピッキング順序を最適化アルゴリズムにより決定する順序決定部と、ピッキング順序に基づいて、ウィンドウからm個(ただし、n>m)のワークを、搬送面から取り出す対象ワークとして選択する対象選択部とを備える。
【0008】
本開示の一側面に係るロボット制御方法は、少なくとも一つのプロセッサを備えるロボット制御システムによって実行されるロボット制御方法であって、搬送面上を流れる複数のワークに基づいて、n個(ただし、n>1)のワークに対応するウィンドウを設定するステップと、n個のワークのそれぞれの位置に基づいて、ウィンドウに対するピッキング順序を最適化アルゴリズムにより決定するステップと、ピッキング順序に基づいて、ウィンドウからm個(ただし、n>m)のワークを選択するステップと、ピッキング順序でm個のワークを搬送面から取り出すようにロボットを制御するステップとを含む。
【0009】
本開示の一側面に係るワーク管理プログラムは、搬送面上を流れる複数のワークに基づいて、n個(ただし、n>1)のワークに対応するウィンドウを設定するステップと、n個のワークのそれぞれの位置に基づいて、ウィンドウに対するピッキング順序を最適化アルゴリズムにより決定するステップと、ピッキング順序に基づいて、ウィンドウからm個(ただし、n>m)のワークを、搬送面から取り出す対象ワークとして選択するステップとをコンピュータに実行させる。
【発明の効果】
【0010】
本開示の一側面によれば、複数のワークを搬送面から効率的に取り出すことができる。
【図面の簡単な説明】
【0011】
【
図1】ロボットシステムの構成の一例を示す図である。
【
図2】ロボットコントローラのハードウェア構成の一例を示す図である。
【
図3】ワークを配列に追加する処理の一例を示すフローチャートである。
【
図4】配列に基づくロボット制御の一例を示すフローチャートである。
【
図5】ピッキング順序を決定する処理の一例を示すフローチャートである。
【
図6】データテーブルの概念を説明するための図である。
【
図7】ピッキング順序を決定するアルゴリズムの一例を示す図である。
【発明を実施するための形態】
【0012】
以下、添付図面を参照しながら本開示での実施形態を詳細に説明する。図面の説明において同一または同等の要素には同一の符号を付し、重複する説明を省略する。
【0013】
[システムの概要]
本開示に係るロボットシステムは、搬送面上を流れる複数のワークを次々に取り出すようにロボットを制御する制御システムである。例えば、ロボットシステムは、ワークを搬送面から別の位置に移動させるピックアンドプレイスをロボットに実行させる。搬送面とは、ワークが置かれ、所定の駆動装置によって所定の方向に向かって動くことでそのワークを移動させる面をいう。一例では、搬送面はコンベヤの面であり、例えばベルトコンベヤのベルトであってもよいし、ローラコンベヤのローラの集合によって実現される面でもよい。
【0014】
一例では、ロボットシステムは、搬送面上を流れてきた個々のワークを次々に配列に追加することで、搬送面上のワークに関する情報を管理する。配列とは、搬送面上を流れる複数のワークに関する情報を管理するためのデータ構造である。一例では、この配列は一次元配列であり、ロボットシステムは複数のワークをその一次元配列に順番に追加する。
【0015】
ロボットシステムは配列内の複数のワークに基づいて、n個(n>1)のワークに対応するウィンドウを設定する。ウィンドウとは、搬送面から取り出される可能性があるn個のワークを特定するためのデータ構造をいい、n個のワークの仮想的な入れ物ともいうことができる。ロボットシステムはそのウィンドウに対して、すなわちn個のワークに対して、最適化アルゴリズムによりピッキング順序を決定する。ピッキング順序とは、搬送面からワークを取り出す順序をいう。
【0016】
ロボットシステムはそのピッキング順序に基づいて、ウィンドウからm個(ただし、n>m)のワークを選択する。ロボットシステムはそのピッキング順序でm個のワークを搬送面から取り出すようにロボットを制御する。n>mであるので、ウィンドウには少なくとも一つのワークが残る。ロボットシステムは搬送面から取り出されたワークを配列およびウィンドウから削除する。
【0017】
続いて、ロボットシステムは配列内の少なくとも一つのワークをそのウィンドウに追加して、n個のワークに対応するウィンドウを再び設定する。ロボットシステムは更新されたウィンドウに対して上記の処理を再び実行して、新たなピッキング順序で新たなm個のワークを搬送面から取り出すようにロボットを制御する。ロボットシステムは、ウィンドウの設定と、ピッキング順序の決定と、m個のワークの取り出しとを含む一連の処理を繰り返して、搬送面から複数のワークを次々に取り出す。この繰り返しにおいて、値n,mのうちの少なくとも一方が、前のループと次のループとの間で変更されてもよい。
【0018】
[システムの構成]
図1は、一例に係るロボットシステム1の構成を示す図である。ロボットシステム1は、作業空間9に配置されたロボット2と、ロボット2のモータを制御するモータ制御装置3と、モータ制御装置3に制御信号を出力するロボットコントローラ10とを備える。作業空間9は、ロボット2によって取り出されるワーク90が流れる第1コンベヤ6と、第1コンベヤ6から取り出されたワーク90が置かれる第2コンベヤ7と、第1コンベヤ6の搬送面を撮影するカメラ4とを更に含む。ロボットコントローラ10はモータ制御装置3およびカメラ4のそれぞれと通信ネットワークを介して接続する。装置間を接続する通信ネットワークは、有線ネットワークでも無線ネットワークでもよい。通信ネットワークはインターネットおよびイントラネットの少なくとも一方を含んで構成されてもよい。あるいは、通信ネットワークは単純に1本の通信ケーブルによって実現されてもよい。
【0019】
ロボット2は、動力を受けて目的に応じた所定の動作を行って、有用な仕事を実行する装置である。一例では、ロボット2は複数の関節を備え、先端部にエンドエフェクタ2aを保持した状態で様々な処理を実行できるように構成される。関節は駆動対象の一例である。複数の関節のそれぞれには関節軸が設定される。アーム、旋回部などのようなロボット2のいくつかの構成要素は関節軸を中心に回転し、この結果、ロボット2は所定の範囲内において先端部の位置および姿勢を自在に変更し得る。一例では、ロボット2は多軸のシリアルリンク型の垂直多関節ロボットである。ロボット2は、6軸の垂直多関節ロボットでもよいし、6軸に1軸の冗長軸を追加した7軸の垂直多関節ロボットでもよい。あるいは、ロボット2は、パラレルリンクという仕組みによって動作するパラレルリンクロボットであってもよい。ロボット2は自走可能な移動ロボットでもよく、例えば、無人搬送車(AGV)により支持されるロボットでもよい。あるいは、ロボット2は所定の場所に固定された据置型ロボットでもよい。
【0020】
エンドエフェクタ2aはワーク90に作用する機器であり、例えば、ワーク90に対して何らかの物理的な変化を与える機器である。エンドエフェクタ2aはグリッパ、吸着エンド、研磨工具、溶接ガン、プレス機、シーリングノズル、ねじ締め装置などのような様々な機器であり得る。
【0021】
モータは、モータ制御装置3から供給される電力に応じて、ロボット2の駆動対象を駆動させるための動力を発生させる装置である。個々のモータによって個々の駆動対象が動作し、その結果、ロボット2がエンドエフェクタ2aを用いてワーク90に対して所定の仕事を実行する。モータは、駆動対象を回転させる回転型モータであってもよいし、駆動対象を直線に沿って変位させるリニア型モータであってもよい。モータは、同期電動機であってもよいし、誘導電動機であってもよい。モータは、SPM(Surface Permanent Magnet)モータ、IPM(Interior Permanent Magnet)モータ等の永久磁石型の同期電動機であってもよい。モータは、シンクロナスリラクタンスモータ(synchronous reluctance motor)のような、永久磁石を有しない同期電動機であってもよい。モータはDCモータであってもよいしACモータであってもよい。
【0022】
ロボット2は、モータ制御装置3からの電力によって動作するロボット2の応答を検出する装置である少なくとも一つのセンサを備えてもよい。応答とは、ロボットを制御するための命令である指令に対する該ロボットの出力をいう。例えば、応答はロボット2の動作および状態の少なくとも一方に関する情報を示す。応答はモータの動作および状態の少なくとも一方に関する情報を示してもよく、例えば、モータの軸速度と磁極位置との少なくとも一方を示してもよい。モータが回転型である場合には、モータによる駆動対象の回転角度が「位置」に相当し、モータによる駆動対象の回転速度が「速度」に相当する。応答は駆動対象の動作および状態の少なくとも一方に関する情報を示してもよく、例えば、駆動対象の位置、速度、および力の少なくとも一つを示してもよい。センサは応答を示す応答信号をロボットコントローラ10に送信する。応答は、センサによって得られる値そのものでもよいし、所与の演算またはアルゴリズムによって算出または加工される値によって表されてもよい。センサの例として、モータの動作速度に比例した周波数のパルス信号を出力するロータリーエンコーダが挙げられる。ロータリーエンコーダはモータの位置および速度の両方を取得できる。
【0023】
モータ制御装置3は、ロボットコントローラ10からの制御信号(すなわち指令)にモータの出力を追従させるための装置である。モータ制御装置3は、ロボットコントローラ10からの制御信号に基づいて、モータを動かすための電力を生成し、その電力をモータに供給する。この供給される電力は、トルク指令、電流指令などのような駆動力指令に相当する。モータ制御装置3は例えば、インバータであってもよいし、サーボアンプであってもよい。モータ制御装置3はロボット2内に組み込まれてもよい。モータ制御装置3は、自機の応答を検出するセンサを備えてもよい。
【0024】
カメラ4は、第1コンベヤ6の搬送面を撮影する装置であり、搬送面を監視するセンサの一例である。一例では、カメラ4は1以上のワーク90が第1コンベヤ6を流れている間において、搬送面を撮影して画像データをロボットコントローラ10に継続的に送信する。画像データは、例えば、複数のフレームによって構成される映像データである。
【0025】
第1コンベヤ6および第2コンベヤ7はいずれも、複数のワーク90を所定の方向に流す搬送装置である。双方のコンベヤの搬送面はいずれも、複数のワーク90が流れる方向である流れ方向と、該流れ方向と直交する幅方向とを有する。第1コンベヤ6の幅は、2以上のワーク90が並行して流れることができる程の長さを有する。第1コンベヤ6では、複数のワーク90は流れ方向および幅方向の少なくとも一つにおいてランダムに配置された状態で搬送面上を流れる。すなわち、第1コンベヤ6では、複数のワーク90が流れ方向および幅方向においてランダムに置かれたかたちで搬送面上を流れる。複数のワーク90の一部は第1コンベヤ6上で回転しながら流れてくるかもしれず、これはランダムな配置の一場面である。例えば、複数のワーク90は、個々のワーク90の位置および向きの少なくとも一方がランダムに置かれたかたちで第1コンベヤ6の搬送面上を流れる。一方、第2コンベヤ7の幅は1個分のワーク90の寸法に対応する。したがって、第2コンベヤ7では、複数のワーク90が一つずつ順番に搬送面上を流れる。
【0026】
一例では、第1コンベヤ6はワーク90を循環させる経路を構成し、ロボット2は第1コンベヤ6の所定のピッキング領域内でm個のワーク90を取り出す。或るワーク90がピッキング領域で取り出されなかったとしても、そのワーク90は再びピッキング領域に戻ってきて、その際にロボット2によって取り出され得る。
【0027】
図1は一つのロボット2および一つのロボットコントローラ10を示すが、ロボットシステム1は複数のロボット2または複数のロボットコントローラ10を備えてもよい。一つのロボットコントローラ10は複数のロボット2と接続してもよい。複数の第1コンベヤ6および複数のカメラ4が存在してもよいし、複数の第2コンベヤ7が存在してもよい。
【0028】
ロボットコントローラ10は、ロボット2を動作させるための指令を生成し、その指令に基づく制御信号を出力する装置である。ロボットコントローラ10はロボット制御システムおよびワーク管理システムの一例である。一例では、ロボットコントローラ10は機能モジュールとして画像処理部11、配列設定部12、ウィンドウ設定部13、順序決定部14、時間推定部15、記憶部16、対象選択部17、ロボット制御部18、および反復制御部19を備える。画像処理部11は、カメラ4から受信された画像データからワーク90を抽出する機能モジュールである。配列設定部12は、抽出されたワーク90とロボット制御の結果とに基づいて、1以上のワーク90を示す配列を設定する機能モジュールである。ウィンドウ設定部13はその配列に基づいて、n個のワーク90に対応するウィンドウを設定する機能モジュールである。順序決定部14は、そのウィンドウに対するピッキング順序を最適化アルゴリズムにより決定する機能モジュールである。時間推定部15は、n個のワーク90のそれぞれについて、該ワーク90の取り出しに関する所要時間を推定する機能モジュールである。時間推定部15は順序決定部14の一部として機能し、所要時間はピッキング順序を決定するために用いられる。記憶部16は、所要時間の推定に用いるデータテーブルを記憶する機能モジュールである。対象選択部17は、決定されたピッキング順序に基づいてウィンドウからm個(n>m)のワーク90を対象ワークとして選択する機能モジュールである。ロボット制御部18は、そのピッキング順序でm個のワーク90を第1コンベヤ6の搬送面から取り出して第2コンベヤ7の搬送面上に置くようにロボット2を制御する機能モジュールである。反復制御部19は、ワーク90の取り出しをロボット2に繰り返し実行させる機能モジュールである。
【0029】
図2は、ロボットコントローラ10のハードウェア構成の一例を示す図である。ロボットコントローラ10は回路190を備える。一例では、回路190は、少なくとも一つのプロセッサ191と、メモリ192と、ストレージ193と、少なくとも一つの通信ポート194とを備える。ストレージ193は不揮発性の記憶媒体であり、上記の各機能モジュールを実現するためのプログラムを記憶する。ストレージ193は、例えば少なくとも一つのハードディスクまたは不揮発性メモリにより構成されてよい。メモリ192は、ストレージ193からロードされたプログラム、プロセッサ191による演算結果などを一時的に記憶する。メモリ192は例えば少なくとも一つのランダムアクセスメモリにより構成されてよい。プロセッサ191は、メモリ192と協働してプログラムを実行することで各機能モジュールを構成する。通信ポート194は、プロセッサ191からの指令に従って他の装置との間でデータ通信を行う。例えばロボットコントローラ10は、カメラ4との間でデータ信号を送受信するための一つの通信ポート194と、モータ制御装置3との間でデータ信号を送受信するための別の通信ポート194とを備える。
【0030】
ロボットコントローラ10の各機能モジュールは、プロセッサ191またはメモリ192の上にロボット制御プログラムを読み込ませてプロセッサ191にそのプログラムを実行させることで実現される。ロボット制御プログラムは、ロボットコントローラ10の各機能モジュールを実現するためのコードを含む。プロセッサ191はロボット制御プログラムに従って通信ポート194を動作させ、メモリ192またはストレージ193におけるデータの読み出しおよび書き込みを実行する。
【0031】
ロボット制御プログラムは、CD-ROM、DVD-ROM、半導体メモリなどの非一時的な記録媒体に固定的に記録された上で提供されてもよい。あるいは、ロボット制御プログラムは、搬送波に重畳されたデータ信号として通信ネットワークを介して提供されてもよい。
【0032】
一例では、ロボット制御プログラムは、ウィンドウを設定し、ピッキング順序を決定し、そして対象ワークを選択するワーク管理プログラムを含む。このワーク管理プログラムが独立して提供されてもよい。一例では、ワーク管理プログラムによってワーク管理システムが実現される。
【0033】
[ロボット制御方法]
本開示に係るロボット制御方法の一例として、
図3~
図5を参照しながら、ロボットコントローラ10により実行される処理手順の例を説明する。
図3は、ワークを配列に追加する処理の一例を処理フローS1として示すフローチャートである。
図4はその配列に基づくロボット制御の一例を処理フローS2として示すフローチャートである。
図5は、ピッキング順序を決定する処理の一例を示すフローチャートである。ロボットコントローラ10は配列へのワークの追加に関して処理フローS1を実行し、ロボット制御に関して処理フローS2を実行する。
【0034】
(配列へのワークの追加)
図3を参照しながら、ワークを配列に追加する処理の一例を説明する。一例では、ロボットコントローラ10はユーザまたは上位コントローラから所定の要求を受信したことに応答して処理フローS1を開始する。
【0035】
ステップS11では、画像処理部11がカメラ4から画像データを受信し、その画像データを解析して、新たにキャプチャされたワーク90を抽出する。例えば、画像処理部11は画像データに対して物体検出を実行してワーク90を抽出し、抽出されたワーク90の搬送面上における位置を算出する。その位置は例えば、X座標とY座標とで表されてもよいし、X座標、Y座標、およびZ座標によって表されてもよいし、Z軸周りの回転を更に含んでもよい。「新たにキャプチャされたワーク」とは、搬送面上を流れてきてカメラ4の撮影範囲に入ってきたワークをいう。1回のステップS11において、画像処理部11は複数の新たなワーク90を抽出し得る。
【0036】
ステップS12では、配列設定部12が抽出されたワーク90を配列に追加する。例えば、配列設定部12は配列へのワーク90の追加として、ワーク90を一意に特定する識別子であるワークIDと、搬送面上での該ワーク90の位置との組合せを配列に記録する。一例では、配列設定部12は抽出された1以上のワーク90を、カメラ4によってキャプチャされた順序で、すなわち搬送面上を流れてきた順序で配列に追加する。「カメラによってキャプチャされた順序」は、センサによってワークが検知された順序の一例である。
【0037】
ステップS13に示すように、ステップS11,S12は、ロボットシステム1がピックアンドプレイスを実行する間において繰り返し実行される。
【0038】
(ロボット制御)
図4および
図5を参照しながら、配列に基づくロボット制御の一例を説明する。一例では、ロボットコントローラ10はユーザまたは上位コントローラから所定の要求を受信したことに応答して処理フローS2を開始する。
【0039】
ステップS21では、ウィンドウ設定部13が配列内の複数のワーク90に基づいて、n個のワーク90に対応するウィンドウを設定する。一例では、ウィンドウ設定部13は配列の先頭からn個のワーク90を選択し、この選択されたワーク90に対してウィンドウを設定する。したがって、配列へのワーク90の追加およびウィンドウの設定は、先入れ先出し(FIFO)のような処理であり得る。一例では、カメラ4によってキャプチャされた順序で1以上のワーク90が配列に追加され、ウィンドウ設定部13はその順序に基づいてn個のワーク90を選択する。nは2以上の整数であるから、設定されたウィンドウは複数のワーク90を示す。配列は搬送面上を流れる複数のワーク90を示すから、ウィンドウ設定部13は配送面上を流れる複数のワークに基づいてウィンドウを設定するということもできる。第1コンベヤ6について上述したように、一例では、ウィンドウ設定部13は、流れ方向および幅方向の少なくとも一つにおいてランダムに配置された状態で搬送面上を流れる複数のワーク90に基づいてウィンドウを設定する。
【0040】
ステップS22では、順序決定部14が、設定されたウィンドウで示されるn個のワーク90のそれぞれの位置に基づいて、該ウィンドウに対するピッキング順序を動的計画法により決定する。動的計画法は最適化アルゴリズムの一例である。動的計画法とは、対象となる問題を複数の部分問題に分割し、該部分問題の計算結果を記録しながら最終的な解を見つける手法をいう。動的計画法は部分問題の計算結果を利用するので、同じ計算を繰り返す必要がなくなり、その分だけ全体の計算時間を短縮できる。
図5を参照しながら、動的計画法によってピッキング順序を決定する処理の一例を説明する。
【0041】
ステップS221では、順序決定部14がn個のワーク90について、候補順序の集合Sと所要時間の集合Tとを初期化する。この段階では集合S,Tはいずれも空集合である。候補順序とはピッキング順序の候補をいう。個々の所要時間は、候補順序に従って1以上のワーク90を取り出すための時間を示す。以下では、n個のワーク90をW1,W2,…,Wnと区別する。
【0042】
ステップS222では、順序決定部14が動的計画法における繰り返し処理を管理するための変数kを1に設定する。
【0043】
ステップS223では、時間推定部15が、n個のワーク90のそれぞれについて、該ワーク90に対応する所要時間を該ワーク90の位置に基づいて推定する。以下では、「ワークの取り出しに関する所要時間」を単に「ワークの所要時間」ともいう。それぞれの候補順序はk個のワーク90により規定される。この段階ではk=1であるから、n個の候補順序のそれぞれは単一のワーク90を示し、候補順序の集合Sは[S{W1},S{W2},…,S{Wn}]と表される。候補順序S{W1},S{W2},…,S{Wn}の所要時間がそれぞれT(W1),T(W2),…,T(Wn)であるとすると、時間推定部15は所要時間の集合Tとして[T(W1),T(W2),…,T(Wn)]を設定する。
【0044】
一例では、時間推定部15は記憶部16内のデータテーブルに基づいて所要時間を推定する。データテーブルは、カメラ4に映る搬送面上の複数のサンプル点のそれぞれにおける所要時間を示すデータ構造である。データテーブルは処理フローS2が実行される前に人手によりまたは自動的に記憶部16に格納される。データテーブルは、実際にロボット2を動作させて計測された時間に基づいて用意されてもよいし、コンピュータシミュレーションによってロボット2を仮想的に動作させて計測された時間に基づいて用意されてもよい。
【0045】
図6はデータテーブルの概念を説明するための図である。
図6の例におけるデータテーブル200は、カメラ4に映る搬送面210上に設定された複数のサンプル点211のそれぞれにおける所要時間を示す。搬送面210はXY平面により表現され、個々のサンプル点211はX座標およびY座標により表される。この例では、ロボット2は複数のワーク90のそれぞれを、共通の指定場所である基準位置212に移動する。共通の指定場所は特定の一点に限定されるものではなく、一つのコンテナの内部空間などのような、二次元の広がりを有する領域でもあり得ることに留意されたい。データテーブル200はそれぞれのサンプル点211について、該サンプル点211に位置するワーク90の取り出しに関する所要時間を示す。一例では、その所要時間は、ロボット2が基準位置212からサンプル点211までの距離におけるロボット2の往復移動時間と、ロボット2がサンプル点211でワーク90を取り出す時間と、ロボット2が基準位置212にそのワーク90を置く時間との和でもよい。
【0046】
図6の例では、時間推定部15はデータテーブル200を参照して、n個のワーク90のそれぞれについて、該ワーク90を搬送面から基準位置212に移動するための所要時間を推定する。或るワークW
iの位置が或るサンプル点211と同じであれば、時間推定部15はそのサンプル点211に対応する所要時間をワークW
iの所要時間として推定する。
図6における位置220のように、ワークW
iの位置はいずれのサンプル点211とも異なり得る。この場合には、時間推定部15はその位置の近傍に位置する少なくとも一つのサンプル点211の推定時間に基づく補間を実行して、ワークW
iの所要時間を推定してもよい。あるいは、時間推定部15はワークW
iの最も近くに位置するサンプル点211に対応する推定時間を、ワークW
iの所要時間として推定してもよい。
【0047】
時間推定部15はデータテーブルを用いることなく、基準位置212からワーク90の位置までの距離とロボット2の速度とに基づいてその距離の往復移動時間を算出し、その往復移動時間に基づいて所要時間を推定してもよい。例えば、時間推定部15は、その往復移動時間と、ロボット2が移動先でワーク90を取り出す時間と、ロボット2が基準位置212にそのワーク90を置く時間との和を所要時間として推定してもよい。
【0048】
図5に戻って、ステップS224では、時間推定部15がkループ目(ステップS223に続くステップS224では1ループ目)における候補順序の集合Sおよび所要時間の集合Tを保存する。これらの集合S,Tは次の繰り返し処理で用いられる。
【0049】
ステップS225では、順序決定部14が変数kをインクリメントする。この変数kの更新によって、動的計画法は次の繰り返し処理に移る。
【0050】
ステップS226では、時間推定部15が(k-1)ループ目で得られた集合S,Tを用いて、k個のワークから成る各候補順序について所要時間を推定する。時間推定部15は推定結果に基づいて、次の繰り返し処理で用いられる集合S,Tを設定する。
【0051】
ステップS227に示すように、順序決定部14および時間推定部15はn個のワーク90から成る各候補順序について所要時間を推定するまで、ステップS224~S226の処理を繰り返す。すなわち、時間推定部15は、前の繰り返し処理で保存された集合S,Tを用いて、ワーク90を一つ増やした場合の各候補順序について所要時間を推定し(ステップS226)、その推定結果に基づいて、次の繰り返し処理で用いられる集合S,Tを保存する(ステップS224)。時間推定部15は次の繰り返し処理で、その集合S,Tを用いて、ワーク90を更に一つ増やした場合の各候補順序について所要時間を推定する(ステップS225,S226)。時間推定部15はその推定結果に基づいて、更に次の繰り返し処理で用いられる集合S,Tを保存する(ステップS224)。
【0052】
ステップS228では、順序決定部14が、最後の繰り返し処理、すなわちnループ目の処理で得られた複数の候補順序のそれぞれの合計所要時間に基づいて、一つの候補順序をピッキング順序として決定する。合計所要時間とはn個のワーク90を搬送面から順次取り出すために要する時間をいい、最後の繰り返し処理で得られた集合Tによって示される。一例では、順序決定部14は合計所要時間が最小である候補順序をピッキング順序として決定する。
【0053】
上述したように、順序決定部14および時間推定部15は、n個のワーク90のそれぞれの所要時間に基づく動的計画法を実行して、ピッキング順序を決定する。
【0054】
図7を参照しながらステップS22の実装の一例を説明する。
図7はピッキング順序を決定するアルゴリズムの一例を示す図である。説明を簡単にするために、
図7の例ではウィンドウが3個のワークA,B,Cを示すものとして、その3個のワークのピッキング順序を決めるためのアルゴリズム300を個々のコードブロック毎に説明する。この例では、ワークA,B,Cの位置をそれぞれ(x
A,y
A),(x
B,y
B),(x
C,y
C)と示す。アルゴリズム300において呼び出される関数GetPickAndPlaceTimeは、指定された一つのワークに関する位置を引数として受け付けて、該ワークの所要時間を計算する。上述したように、関数GetPickAndPlaceTimeはデータテーブルを参照して所要時間を算出してもよいし、データテーブルを参照することなく所要時間を算出してもよい。
【0055】
コードブロック301では、順序決定部14が候補順序の集合Sと所要時間の集合Tとを初期化する。コードブロック301はステップS221に対応する。
【0056】
コードブロック302では、時間推定部15がワークA,B,Cのそれぞれについて、該ワークの所要時間を該ワークの位置に基づいて推定する。時間推定部15は候補順序S[{A}]に対応する所要時間T[{A}]と、候補順序S[{B}]に対応する所要時間T[{B}]と、候補順序S[{C}]に対応する所要時間T[{C}]とを算出する。時間推定部15はこれらの候補順序および所要時間を保存する。コードブロック302はステップS222~S224に対応する。
【0057】
コードブロック303では、時間推定部15が2個のワークから成る各候補順序について所要時間を推定する。ワークA,Bの組合せについては、時間推定部15は候補順序[A→B]に対応する所要時間と、候補順序[B→A]に対応する所要時間とを算出する。この計算では、コードブロック302で保存された候補順序および所要時間が用いられる。コードブロック303では、関数GetPickAndPlaceTimeによって2個目のワークの所要時間を計算する際に、1個目のワークの所要時間が考慮される。時間推定部15は算出された二つの所要時間のうちの最小値を、ワークA,Bの組合せについての所要時間T[{A,B}]として保存する。時間推定部15はその所要時間T[{A,B}]に対応する候補順序S[{A,B}]も保存する。候補順序S[{A,B}]は[A→B]および[B→A]のいずれか一方である。時間推定部15は、ワークA,Cの組合せと、ワークB,Cの組合せとについても、ワークA,Bの組合せと同様の処理を実行する。コードブロック303はステップS225,S226,S224に対応する。
【0058】
コードブロック304では、時間推定部15が3個のワークから成る各候補順序について所要時間を推定する。時間推定部15は候補順序[S[{A,B}]→C]に対応する所要時間と、候補順序[S[{A,C}]→B]に対応する所要時間と、候補順序[S[{B,C}]→A]に対応する所要時間とを算出する。この計算では、コードブロック303で保存された候補順序および所要時間が用いられる。コードブロック304では、関数GetPickAndPlaceTimeによって3個目のワークの所要時間を計算する際に、1個目および2個目のワークの所要時間が考慮される。時間推定部15は算出された三つの所要時間のうちの最小値を、ワークA,B,Cの組合せについての所要時間T[{A,B,C}]として取得する。順序決定部14はその所要時間T[{A,B,C}]に対応する候補順序S[{A,B,C}]をピッキング順序として決定する。候補順序S[{A,B,C}]は、取り得る6個の候補順序のいずれか一つである。コードブロック304はステップS225,S226,S228に対応する。
【0059】
以下では、アルゴリズム300を一般化して、ステップS224~S228の処理を、k=2、k=3、およびk=nの場合について説明する。
【0060】
(k=2の場合)
時間推定部15は2個のワークWi,Wj(ただし、i≠j)の各組合せについて、2個の候補順序[Wi→Wj],[Wj→Wi]のそれぞれについて所要時間を推定する。候補順序S{Wi},S{Wj}に対応する所要時間がそれぞれT(Wi),T(Wj)であるとする。
【0061】
候補順序[Wi→Wj]については、時間推定部15は、ワークWiを取り出す時間T(Wi)と、その後にワークWjを取り出す時間T(Wj)´との和を、所要時間として推定する。一例では、時間推定部15は所要時間T(Wi)に基づいて時間T(Wj)´算出する。
【0062】
候補順序[Wj→Wi]については、時間推定部15は、ワークWjを取り出す時間T(Wj)と、その後にワークWiを取り出す時間T(Wi)´との和を、所要時間として推定する。一例では、時間推定部15は所要時間T(Wj)に基づいて時間T(Wi)´算出する。
【0063】
時間推定部15は算出された二つの所要時間の最小値をT(Wi,Wj)として保存し、その最小値に対応する候補順序を、2個のワークWi,Wjの候補順序S{Wi,Wj}として保存する。
【0064】
(k=3の場合)
時間推定部15は3個のワークWi,Wj,Wk(ただし、i,j,kは互いに異なる)の各組合せについて、3個の候補順序[S{Wi,Wj}→Wk],[S{Wj,Wk}→Wi],[S{Wi,Wk}→Wj]のそれぞれについて所要時間を推定する。候補順序S{Wi,Wj},S{Wj,Wk},S{Wi,Wk}に対応する所要時間がそれぞれT(Wi,Wj),T(Wj,Wk),T(Wi,Wk)であるとする。前のループで保存された結果を参照することで、時間推定部15はこれら3個の候補順序について所要時間を推定すれば足り、取り得る6個の候補順序のすべてについて所要時間を推定する必要はない。
【0065】
候補順序[S{Wi,Wj}→Wk]については、時間推定部15は、候補順序S{Wi,Wj}に対応する所要時間T(Wi,Wj)と、その後にワークWkを取り出す時間Tk´との和を、所要時間として推定する。一例では、時間推定部15は時間T(Wi,Wj)に基づいて時間Tk´を算出する。
【0066】
候補順序[S{Wj,Wk}→Wi]については、時間推定部15は、候補順序S{Wj,Wk}に対応する所要時間T(Wj,Wk)と、その後にワークWiを取り出す時間Ti´との和を、所要時間として推定する。一例では、時間推定部15は時間T(Wj,Wk)に基づいて時間Ti´を算出する。
【0067】
候補順序[S{Wi,Wk}→Wj]については、時間推定部15は、候補順序S{Wi,Wk}に対応する所要時間T(Wi,Wk)と、その後にワークWjを取り出す時間Tj´との和を、所要時間として推定する。一例では、時間推定部15は時間T(Wi,Wk)に基づいて時間Tj´を算出する。
【0068】
時間推定部15は算出された三つの所要時間の最小値をT(Wi,Wj,Wk)として保存し、その最小値に対応する候補順序を、3個のワークWi,Wj,Wkの候補順序S{Wi,Wj,Wk}として保存する。
【0069】
(k=nの場合)
時間推定部15はn個のワークW1~Wnの各組合せについて、n個の候補順序[S{W1,W2,…,Wn-1}→Wn],[S{W2,W3,…,Wn}→W1],[S{W1,W3,…,Wn}→W2],…,[S{W1,W2,…,Wn-2,Wn}→Wn-1]のそれぞれについて合計所要時間を推定する。時間推定部15はk=2,3の場合と同様の計算を実行して、n個の合計所要時間を得る。順序決定部14はn個の合計所要時間の最小値をT(W1,W2,…,Wn)として特定し、その最小値に対応する候補順序を、n個のワークW1~Wnのピッキング順序S{W1,W2,…,Wn}として決定する。
【0070】
図4に戻って、ステップS23では、対象選択部17が、決定されたピッキング順序に基づいて、ウィンドウからm個のワークを対象ワークとして選択する。n>mであるから、対象選択部17は、ウィンドウに対応するn個のワークの一部を選択する。対象選択部17はピッキング順序の昇順にm個のワークを選択する。
【0071】
ステップS24では、ロボット制御部18が、m個のワーク90を搬送面から取り出すための指令をロボット2に向けて出力する。一例では、ロボット制御部18は、m個の対象ワークをピッキング順序に従って順に搬送面から取り出して指定場所に置くためのパスを生成する。パスはロボット2の軌道を示し、例えば、エンドエフェクタ2aの軌道を示す。一例では、ロボット制御部18はロボット2が障害物と干渉しないようにパスを生成する。干渉とは、或る物体が別の物体に接触または衝突する現象をいう。ロボット2が或る一つのワーク90を処理しようとする場合において、ロボット2とそのワーク90との接触は干渉ではないことに留意されたい。ロボット制御部18は、生成されたパスを示す一連の制御信号を指令として生成して、その制御信号をモータ制御装置3に順次出力する。モータ制御装置3は、モータを動かすための電力を制御信号に基づいて順次生成し、その電力をモータに順次供給する。この結果、ロボット2は、決定されたピッキング順序で、m個のワーク90のそれぞれを第1コンベヤ6の搬送面から取り出して第2コンベヤ7の搬送面上に置く。
【0072】
ステップS25では、配列設定部12が、取り出されたm個のワーク90を配列およびウィンドウから削除する。
【0073】
ステップS26の示すように、反復制御部19は、ロボット2によりm個のワーク90が搬送面から取り出されるたびに、他の機能モジュールにステップS21~S25の処理を繰り返し実行させる。反復制御部19は所定の終了条件が満たされるまでその繰り返しを実行する。終了条件は、所定数のワーク90が取り出されることでもよいし、すべてのワーク90が第1コンベヤ6から取り出されることでもよい。
【0074】
繰り返されるステップS21では、ウィンドウ設定部13が、配列内の複数のワーク90のうちの1以上のワーク90をウィンドウに追加して、新たなウィンドウを設定する。すなわち、ウィンドウ設定部13は、ウィンドウ内のm個のワーク90を、配列内の複数のワーク90のうちの1以上のワーク90と入れ替えて、ウィンドウを更新する。ステップS22では、順序決定部14が、更新されたウィンドウに対して次のピッキング順序を決定する。ステップS23では、対象選択部17がそのピッキング順序に基づいて、更新されたウィンドウから次のm個のワーク90を選択する。ステップS24では、ロボット制御部18がロボット2に、そのピッキング順序でそのm個のワーク90を搬送面から取り出させる。ステップS25では、配列設定部12がそのm個のワーク90を配列およびウィンドウから削除する。
【0075】
図8はウィンドウの更新の一例を示す図である。この例では、配列設定部12は抽出された9個のワークW
1~W
9を配列400に追加したとする(ステップS12)。ウィンドウ設定部13はその配列400に基づいて、3個のワークW
1~W
3に対応するウィンドウ410を設定する(ステップS21)。順序決定部14はこのウィンドウ410に対して、ワークW
3、ワークW
1、ワークW
2をこの順に取り出すことを示すピッキング順序420を決定する(ステップS22)。対象選択部17はこのピッキング順序420に基づいて2個のワークW
3,W
1を選択し(ステップS23)、ロボット制御部18はその2個のワークを搬送面から取り出すための指令をロボット2に出力する(ステップS24)。ロボット2がその指令に従ってワークW
3,W
1を取り出したことに応答して、配列設定部12はその2個のワークを配列400およびウィンドウ410から削除する(ステップS25)。これらステップS21~S25と並行してまたはこれらのステップの後に、配列設定部12は新たに抽出された3個のワークW
10~W
12を配列400に追加する(ステップS12)。ウィンドウ設定部13はその配列400に基づいて、2個のワークW
4,W
5をウィンドウ410に追加して、ウィンドウ410を更新する(ステップS21)。この更新されたウィンドウ410に基づいて、ステップS22以降の処理が実行される。
【0076】
ステップS21~S25の繰り返しにおいて、ウィンドウ設定部13はウィンドウの大きさ、すなわち、ウィンドウに対応するワーク90の個数nを変更してもよい。ウィンドウの大きさが可変であることに対応して、対象選択部17により選択される対象ワークの個数mも可変であってよい。
【0077】
[変形例]
以上、本開示の実施形態に基づいて詳細に説明した。しかし、本開示の技術事項は上記実施形態に限定されるものではない。本開示の技術事項は、その要旨を逸脱しない範囲で様々な変形が可能である。
【0078】
ロボットシステム、ロボット制御システム、またはワーク管理システムに関連する機能モジュールの少なくとも一部は、モータ制御装置などの他の装置内に実装されてもよい。
【0079】
ロボットシステム、ロボット制御システム、またはワーク管理システムは、ウィンドウを設定することなく、搬送面上を流れる複数のワークのそれぞれの位置に基づく最適化アルゴリズムを実行して、複数のワークに対してピッキング順序を決定してもよい。
【0080】
上記の例では、順序決定部14はワークの取り出しに関する所要時間に基づく最適化アルゴリズムを実行してピッキング順序を決定する。しかし、順序決定部は所要時間以外の物理量を用いてピッキング順序を決定してもよい。例えば、順序決定部は、ロボットの移動距離またはエネルギ消費量(例えば電力消費量)に基づく最適化アルゴリズムを実行してピッキング順序を決定してもよい。この例において、順序決定部は、所要時間以外の物理量の分布を示すデータテーブルを参照して、ウィンドウに対応するn個のワークのそれぞれの位置に基づいて物理量を取得してもよい。
【0081】
図6,7の例は、複数のワークが共通の指定場所に置かれることを前提とする。しかし、搬出面から取り出されたワークが置かれる位置は統一されなくてもよい。すなわち、ロボットはm個の対象ワークのそれぞれを、該対象ワークに対応する指定場所に移動してもよい。この例では、順序決定部は、ウィンドウに対応するn個のワークのそれぞれについて、指定場所の候補である複数の候補場所のそれぞれについて、該ワークを搬送面から該候補場所に移動するための物理量を推定する。そして、順序決定部はその物理量に基づいて、それぞれのワークについて指定場所を決定する。例えば、順序決定部はn個のワークのそれぞれについて、該n個のワークの取り出しに関する合計物理量が最小になる指定場所を決定する。そして、順序決定部は、指定場所が決定されたn個のワークに対応するn個の合計物理量に基づいて、ピッキング順序を決定する。
【0082】
システムのハードウェア構成は、プログラムの実行により各機能モジュールを実現する態様に限定されない。例えば、上述した機能モジュール群の少なくとも一部が、その機能に特化した論理回路により構成されてもよいし、該論理回路を集積したASIC(Application Specific Integrated Circuit)により構成されてもよい。
【0083】
少なくとも一つのプロセッサにより実行される方法の処理手順は上記の例に限定されない。例えば、上述したステップまたは処理の一部が省略されてもよいし、別の順序で各ステップが実行されてもよい。また、上述したステップのうちの任意の2以上のステップが組み合わされてもよいし、ステップの一部が修正または削除されてもよい。あるいは、上記の各ステップに加えて他のステップが実行されてもよい。
【0084】
コンピュータシステムまたはコンピュータ内で二つの数値の大小関係を比較する際には、「以上」および「よりも大きい」という二つの基準のどちらを用いてもよく、「以下」および「未満」という二つの基準のうちのどちらを用いてもよい。
【0085】
[付記]
上記の様々な例から把握されるとおり、本開示は以下に示す態様を含む。
(付記1)
搬送面上を流れる複数のワークに基づいて、n個(ただし、n>1)のワークに対応するウィンドウを設定するウィンドウ設定部と、
前記n個のワークのそれぞれの位置に基づいて、前記ウィンドウに対するピッキング順序を最適化アルゴリズムにより決定する順序決定部と、
前記ピッキング順序に基づいて、前記ウィンドウからm個(ただし、n>m)のワークを選択する対象選択部と、
前記ピッキング順序で前記m個のワークを前記搬送面から取り出すロボットと、
を備えるロボットシステム。
(付記2)
前記ロボットに前記取り出しを繰り返し実行させる反復制御部を更に備え、
前記反復制御部は、前記ロボットにより前記m個のワークが前記搬送面から取り出されるたびに、
前記ウィンドウ設定部に、前記ウィンドウ内の前記m個のワークを、前記複数のワークのうちの1以上のワークと入れ替えさせて、前記ウィンドウを更新させ、
前記順序決定部に、前記更新されたウィンドウに対して次のピッキング順序を決定させ、
前記対象選択部に、前記次のピッキング順序に基づいて、前記更新されたウィンドウから次のm個のワークを選択させ、
前記ロボットに、前記次のピッキング順序で前記次のm個のワークを前記搬送面から取り出させる、
付記1に記載のロボットシステム。
(付記3)
前記順序決定部は、
前記n個のワークのそれぞれについて、該ワークの取り出しに関する物理量を前記位置に基づいて推定し、
前記n個のワークのそれぞれの前記物理量に基づいて、前記ピッキング順序を決定する、
付記1または2に記載のロボットシステム。
(付記4)
前記順序決定部は、前記最適化アルゴリズムとして、前記物理量に基づく動的計画法を実行して、前記ピッキング順序を決定する、
付記3に記載のロボットシステム。
(付記5)
前記順序決定部は、
前記動的計画法を実行して、前記n個のワークに対応する複数の候補順序のそれぞれについて合計物理量を推定し、
複数の前記合計物理量に基づいて、前記複数の候補順序から前記ピッキング順序を決定する、
付記4に記載のロボットシステム。
(付記6)
前記ロボットは、前記m個のワークのそれぞれを共通の指定場所に移動し、
前記順序決定部は、前記n個のワークのそれぞれについて、該ワークを前記搬送面から前記指定場所に移動するための前記物理量を推定する、
付記4または5に記載のロボットシステム。
(付記7)
前記ロボットは、前記m個のワークのそれぞれを、該ワークに対応する指定場所に移動し、
前記順序決定部は、前記n個のワークのそれぞれについて、
前記指定場所の候補である複数の候補場所のそれぞれについて、該ワークを前記搬送面から該候補場所に移動するための前記物理量を推定する、
付記4または5に記載のロボットシステム。
(付記8)
前記搬送面における前記物理量の分布を示すデータテーブルを記憶する記憶部を更に備え、
前記順序決定部は、前記n個のワークのそれぞれについて、前記位置に基づいて前記データテーブルを参照して、前記物理量を取得する、
付記3~7のいずれか一つに記載のロボットシステム。
(付記9)
前記搬送面は、前記複数のワークが流れる方向である流れ方向と、該流れ方向と直交する幅方向とを有し、
前記ウィンドウ設定部は、前記流れ方向および前記幅方向の少なくとも一つにおいてランダムに配置された状態で前記搬送面上を流れる前記複数のワークに基づいて、前記ウィンドウを設定する、
付記1~8のいずれか一つに記載のロボットシステム。
(付記10)
前記ウィンドウ設定部は、
前記搬送面を監視するセンサによってワークが検知された順序に基づいて、前記ウィンドウに対応する前記n個のワークを選択する、
付記1~9のいずれか一つに記載のロボットシステム。
(付記11)
搬送面上を流れる複数のワークのそれぞれの位置に基づく動的計画法を実行して、該複数のワークに対してピッキング順序を決定する順序決定部と、
前記ピッキング順序に基づいて、前記複数のワークから少なくとも一つのワークを選択する対象選択部と、
前記ピッキング順序で前記少なくとも一つのワークを前記搬送面から取り出すロボットと、
を備えるロボットシステム。
(付記12)
搬送面上を流れる複数のワークに基づいて、n個(ただし、n>1)のワークに対応するウィンドウを設定するウィンドウ設定部と、
前記n個のワークのそれぞれの位置に基づいて、前記ウィンドウに対するピッキング順序を最適化アルゴリズムにより決定する順序決定部と、
前記ピッキング順序に基づいて、前記ウィンドウからm個(ただし、n>m)のワークを、前記搬送面から取り出す対象ワークとして選択する対象選択部と、
を備えるワーク管理システム。
(付記13)
少なくとも一つのプロセッサを備えるロボット制御システムによって実行されるロボット制御方法であって、
搬送面上を流れる複数のワークに基づいて、n個(ただし、n>1)のワークに対応するウィンドウを設定するステップと、
前記n個のワークのそれぞれの位置に基づいて、前記ウィンドウに対するピッキング順序を最適化アルゴリズムにより決定するステップと、
前記ピッキング順序に基づいて、前記ウィンドウからm個(ただし、n>m)のワークを選択するステップと、
前記ピッキング順序で前記m個のワークを前記搬送面から取り出すようにロボットを制御するステップと、
を含むロボット制御方法。
(付記14)
搬送面上を流れる複数のワークに基づいて、n個(ただし、n>1)のワークに対応するウィンドウを設定するステップと、
前記n個のワークのそれぞれの位置に基づいて、前記ウィンドウに対するピッキング順序を最適化アルゴリズムにより決定するステップと、
前記ピッキング順序に基づいて、前記ウィンドウからm個(ただし、n>m)のワークを、前記搬送面から取り出す対象ワークとして選択するステップと、
をコンピュータに実行させるワーク管理プログラム。
【0086】
付記1,12,13,14によれば、ウィンドウに対応する2以上のワークのピッキング順序が最適化アルゴリズムによって決定され、該2以上のワークの一部がその順序で取り出される。この一連の処理によって、ワークを効率的に取り出すことができる。
【0087】
付記2によれば、搬送面上を流れる複数のワークの状況に応じて、ウィンドウの設定からワークの取り出しまでの一連の処理が最適化アルゴリズムを用いつつ繰り返し実行されるので、次々に流れてくるワークを効率的に取り出すことができる。ウィンドウに対応するn個のワークのすべてを取り出すことは、局所解を求めることにとどまる。一部のワークをウィンドウに残し、その残りのワークと新しいワークとの集合に基づいて改めて最適化アルゴリズムを実行することで、搬送面上の複数のワークをより全体的に考慮してワークを効率的に取り出すことができる。例えば、ウィンドウに残された第1ワークは、ウィンドウに追加された新しい第2ワークと比べても取り出しの優先度が低いかもしれない。付記2によれば、第1ワークよりも先に第2ワークが取り出されることで、ワークの取り出しについての全体的な効率が向上し得る。
【0088】
付記3によれば、ワークの取り出しに関する物理量に基づいてピッキング順序が決定される。その物理量はワークの取り出しのコストを示す。したがって、その構成により、コストを考慮してワークを効率的に取り出すことができる。
【0089】
付記4によれば、動的計画法を用いることで、ピッキング順序を決定するための演算時間が短縮されるので、ロボットによるワークのピッキングをより早く開始することができる。その結果、ワークをより効率的に取り出すことができる。
【0090】
付記5によれば、1個のワークだけに着目するのではなく、ウィンドウ内の2以上のワークの取り出しに要する合計物理量を考慮することで、該2以上のワークの集合に対して最適なピッキング順序が決定される。したがって、ワークをより効率的に取り出すことができる。
【0091】
付記6によれば、ワークの移動先が固定された環境においてこのロボットシステムを適用することで、動的計画法を用いて物理量をより簡易な計算で推定できる。その結果、最適なピッキング順序をより正確に決定できる。
【0092】
付記7によれば、それぞれのワークについて、複数の候補場所のそれぞれへの移動が更に考慮されて個々の物理量が推定される。したがって、ワークの移動先も最適化しつつ、ワークを効率的に取り出すことができる。
【0093】
付記8によれば、予め用意されたデータテーブルから物理量が得られるので、物理量を得るための演算時間が節約される。その分、ロボットによるワークのピッキングをより早く開始することができ、したがって、ワークをより効率的に取り出すことができる。
【0094】
付記9によれば、複数のワークがランダムに流れてくる環境において、それらのワークを効率的に取り出すことができる。
【0095】
付記10によれば、ワークが検知された順序に基づいてウィンドウ内のn個のワークが選択されるので、搬送面上のワークの状況に応じて適切にウィンドウを設定できる。その結果、先に処理されるべきワークを効率的に取り出すことができる。
【0096】
付記11によれば、2以上のワークのピッキング順序が動的計画法によって決定され、該2以上のワークの一部がその順序で取り出される。動的計画法を用いることで、ピッキング順序を決定するための演算時間が短縮されるので、ロボットによるワークのピッキングをより早く開始することができる。その結果、ワークを効率的に取り出すことができる。
【符号の説明】
【0097】
1…ロボットシステム、2…ロボット、2a…エンドエフェクタ、3…モータ制御装置、4…カメラ、6…第1コンベヤ、7…第2コンベヤ、10…ロボットコントローラ、11…画像処理部、12…配列設定部、13…ウィンドウ設定部、14…順序決定部、15…時間推定部、16…記憶部、17…対象選択部、18…ロボット制御部、19…反復制御部、90…ワーク、200…データテーブル、210…搬送面、211…サンプル点、400…配列、410…ウィンドウ、420…ピッキング順序。