IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ JOHNAN株式会社の特許一覧

特許7597369ロボット制御システム、制御装置、およびロボットの制御方法
<>
  • 特許-ロボット制御システム、制御装置、およびロボットの制御方法 図1
  • 特許-ロボット制御システム、制御装置、およびロボットの制御方法 図2
  • 特許-ロボット制御システム、制御装置、およびロボットの制御方法 図3
  • 特許-ロボット制御システム、制御装置、およびロボットの制御方法 図4
  • 特許-ロボット制御システム、制御装置、およびロボットの制御方法 図5
  • 特許-ロボット制御システム、制御装置、およびロボットの制御方法 図6
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-12-02
(45)【発行日】2024-12-10
(54)【発明の名称】ロボット制御システム、制御装置、およびロボットの制御方法
(51)【国際特許分類】
   B25J 19/06 20060101AFI20241203BHJP
【FI】
B25J19/06
【請求項の数】 8
(21)【出願番号】P 2021060229
(22)【出願日】2021-03-31
(65)【公開番号】P2022156502
(43)【公開日】2022-10-14
【審査請求日】2023-10-24
(73)【特許権者】
【識別番号】391053696
【氏名又は名称】JOHNAN株式会社
(74)【代理人】
【識別番号】100148275
【弁理士】
【氏名又は名称】山内 聡
(74)【代理人】
【識別番号】100136319
【弁理士】
【氏名又は名称】北原 宏修
(74)【代理人】
【識別番号】100142745
【弁理士】
【氏名又は名称】伊藤 世子
(74)【代理人】
【識別番号】100143498
【弁理士】
【氏名又は名称】中西 健
(72)【発明者】
【氏名】森山 孝三
(72)【発明者】
【氏名】亀山 晋
(72)【発明者】
【氏名】ヴ ヤ チュン
(72)【発明者】
【氏名】ルーカス ブルックス
【審査官】臼井 卓巳
(56)【参考文献】
【文献】特開2019-025621(JP,A)
【文献】特開2018-149627(JP,A)
【文献】特開2019-084649(JP,A)
【文献】米国特許出願公開第2015/0314443(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
B25J 9/16-19/06
(57)【特許請求の範囲】
【請求項1】
ロボットと、
制御装置とを備え、
前記制御装置は、
他の物体の空間上に占める領域を特定し、
移動前の前記ロボットの複数の頂点の位置と、移動後の前記ロボットの前記複数の頂点の位置と、が含まれる1つの第1の直方体を特定し、前記1つの第1の直方体を内包するとともに、前記1つの第1の直方体よりも所定の分だけ大きい第2の直方体を特定し、前記第2の直方体内に前記他の物体がない場合に、前記ロボットを移動させる、ロボット制御システム。
【請求項2】
前記制御装置は、前記第2の直方体内に前記他の物体がある場合に、
移動前の前記ロボットの複数の頂点の位置と、移動中の前記ロボットの前記複数の頂点の位置と、が含まれる第3の直方体を含む第4の直方体を特定し、
移動中の前記ロボットの複数の頂点の位置と、移動後の前記ロボットの前記複数の頂点の位置と、が含まれる第5の直方体を含む第6の直方体を特定し、
前記第4の直方体内にも前記第6の直方体内にも前記他の物体がない場合に、前記ロボットを移動させる、請求項1に記載のロボット制御システム。
【請求項3】
前記制御装置は、
前記第4の直方体に前記他の物体がある場合には、前記移動前と前記移動中との間をさらに分割したときの頂点に関する直方体を作成して、当該直方体内に前記他の物体がない場合に、前記ロボットの移動を許可し、
前記第6の直方体に前記他の物体がある場合には、前記移動中と前記移動後との間をさらに分割したときの頂点に関する直方体をさらに作成して、当該直方体内に前記他の物体がない場合に、前記ロボットを移動させる、請求項2に記載のロボット制御システム。
【請求項4】
前記制御装置は、所定の回数の分割後の直方体内に前記他の物体がある場合には、前記ロボットの移動を行わずに、所定の情報を出力する、請求項3に記載のロボット制御システム。
【請求項5】
前記他の物体は、第2のロボットであって、
前記空間上に占める領域は、移動前の前記第2のロボットの複数の頂点の位置と、移動後の前記第2のロボットの前記複数の頂点の位置と、が含まれる第1の直方体を内包する第2の直方体である、請求項1から4のいずれか1項に記載のロボット制御システム。
【請求項6】
カメラをさらに備え、
前記制御装置は、前記カメラからの画像に基づいて前記他の物体の位置を特定する、請求項1から5のいずれか1項に記載のロボット制御システム。
【請求項7】
ロボットと通信するための通信インターフェイスと、
メモリと、
プロセッサとを備え、
前記プロセッサは、
他の物体の位置を特定し、
移動前の前記ロボットの複数の頂点の位置と、移動後の前記ロボットの前記複数の頂点の位置と、が含まれる1つの第1の直方体を特定し、前記1つの第1の直方体を内包するとともに、前記1つの第1の直方体よりも所定の分だけ大きい第2の直方体を特定し、前記第2の直方体内に前記他の物体がない場合に、前記ロボットを移動させる、制御装置。
【請求項8】
制御装置が、他の物体の位置を特定するステップと、
移動前のロボットの複数の頂点の位置と、移動後の前記ロボットの前記複数の頂点の位置と、が含まれる1つの第1の直方体を特定するステップと、
前記1つの第1の直方体を内包するとともに、前記1つの第1の直方体よりも所定の分だけ大きい第2の直方体を特定するステップと、
前記第2の直方体内に前記他の物体がない場合に、前記ロボットを移動させるステップと、を備えるロボットの制御方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、各種のロボットを制御するための技術に関し、特にロボットが移動する間に他の物体に衝突するか否かを判定するための技術に関する。
【背景技術】
【0002】
従前より、ロボットの衝突の回避のための技術が知られている。たとえば、特開2019-123022号公報(特許文献1)には、ロボット制御装置および自動組立システムが開示されている。特許文献1によると、ロボット制御装置は、センサより作業者の動作状態を入力する。そして、ロボット制御装置は、ロボットの動作状態と作業者の動作状態より、ロボットと作業者のそれぞれの位置と速度ベクトルを算出し、ロボットと作業者のそれぞれの周辺に危険性判定領域(ロボットを停止させる領域、退避させる領域、減速させる領域)を生成し、生成したロボットの危険性判定領域と作業者の危険性判定領域の重なりから危険性を判定して、その判定の結果からロボットと作業者の衝突を回避する衝突回避軌道を生成して、生成した衝突回避軌道に基づいて、ロボット制御を行う。
【先行技術文献】
【特許文献】
【0003】
【文献】特開2019-123022号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
本発明の目的は、効率的にロボットの移動時の衝突の有無を判定するための技術を提供することにある。
【課題を解決するための手段】
【0005】
本発明の一態様に従うと、ロボットと、制御装置とを備えるロボット制御システムが提供される。制御装置は、他の物体の位置を特定し、移動前のロボットの複数の頂点の位置と、移動後のロボットの複数の頂点の位置と、が含まれる第1の直方体を内包する第2の直方体を特定し、第2の直方体内に他の物体がない場合に、ロボットを移動させる。
【発明の効果】
【0006】
以上のように、本発明によれば、効率的にロボットの移動時の衝突の有無を判定するための技術が提供される。
【図面の簡単な説明】
【0007】
図1】第1の実施の形態にかかるロボット制御システムの全体構成を示すブロック図である。
図2】第1の実施の形態にかかる衝突判定の方法を示すイメージ図である。
図3】第1の実施の形態にかかる衝突判定の情報処理を示すフローチャートである。
図4】第2の実施の形態にかかる衝突判定の方法を示すイメージ図である。
図5】第2の実施の形態にかかる衝突判定の情報処理を示すフローチャートである。
図6】第5の実施の形態にかかる衝突判定の情報処理を示すフローチャートである。
【発明を実施するための形態】
【0008】
以下、図面を参照しつつ、本発明の実施の形態について説明する。以下の説明では、同一の部品には同一の符号を付してある。それらの名称および機能も同じである。したがって、それらについての詳細な説明は繰り返さない。
<第1の実施の形態>
<ロボット制御システムの全体構成>
【0009】
まず図1を参照して、本実施の形態にかかるロボット制御システム1の全体構成について説明する。ロボット制御システム1は、主たる装置として、ロボット200と、カメラ300と、カメラ300の撮影画像に基づいてロボット200の動作を制御するための制御装置100とを含む。ロボット制御システム1は、たとえば工場の生産現場に適用されるものであり、生産現場においてロボット200に所定のタスク(作業)を実行させるように構成されている。
【0010】
制御装置100は、主に、CPU110、メモリ120、ディスプレイ130、操作部140、スピーカ150、通信インターフェイス160を含む。CPU110は、メモリ120に記憶されているプログラムを実行することによって、ロボット200や制御装置100の各部を制御する。たとえば、CPU110は、メモリ120に格納されているプログラムを実行し、各種のデータを参照することによって、後述する各種の情報処理を実行する。
【0011】
メモリ120は、各種のRAM、各種のROMなどによって実現される。メモリ120は、CPU110によって実行されるプログラムや、CPU110によるプログラムの実行により生成されたデータ、たとえば、ロボット200の動作状態や現在位置や目標位置などを記憶する。
【0012】
ディスプレイ130は、CPU110からの信号に基づいて、テキストや画像を表示する。
【0013】
操作部140は、ユーザからの指示を受け付けて、CPU110に入力する。
【0014】
スピーカ150は、CPU110からの信号に基づいて、各種の音声を出力する。
【0015】
なお、ディスプレイ130や、操作部140や、スピーカ150は、他の端末によって実現されてもよい。
【0016】
通信インターフェイス160は、通信ケーブルや無線LANなどを介してロボット200やカメラ300などの他の装置と、各種データをやり取りする。
【0017】
このようにして、制御装置100のCPU110は、メモリ120のロボット制御用のプログラムに従って、通信インターフェイス160を介してカメラ300からの画像データに基づいて作業対象となるワークの空間上に占める領域(位置、形および/まはたサイズ等で特定)や障害物の空間上に占める領域(位置、形および/またはサイズ等で特定)を取得したり、通信インターフェイス160を介してロボット200に各種の動作命令を出力したりする。
【0018】
なお、以下では、ロボットアームのベース位置をロボット200の位置といい、ロボットアームの全関節の角度の組合せをロボット200の姿勢ともいう。
<ロボット制御システムの動作概要>
【0019】
次に、図2を参照して、本実施の形態にかかるロボット200と障害物との衝突判定の方法について説明する。
【0020】
本実施の形態においては、図2(A)を参照して、制御装置100は、ロボットあるいはロボットの位置および/または姿勢を制御する制御装置から、ロボット200の現在の位置および/または姿勢(姿勢:1)と、タスクの制御データに基づいて、移動後の姿勢(姿勢:2)を取得する。
【0021】
制御装置100は、ロボット200の現在の姿勢(姿勢:1)に基づいて、ロボット200の現在の各頂点の位置を計算する。なお、ロボット200の各頂点とは、ロボット200の外周面のうちの出っ張った箇所に設定される。制御装置100は、ロボット200の移動後の姿勢(姿勢:2)に基づいて、ロボット200の移動後の各頂点の位置を計算する。
【0022】
図2(B)を参照して、制御装置100は、移動前の頂点と移動後の頂点の全てを内包する第1の直方体を定義する。
【0023】
図2(C)を参照して、制御装置100は、当該第1の直方体を内包する第2の直方体を定義する。第2の直方体は、第1の直方体を内包し、第1の直方体よりも一回り大きい直方体である。たとえば、制御装置100は、第1の直方体の各辺を、第1の直方体の移動距離の長さ分だけ長くしたものを第2の直方体と定義する。
【0024】
制御装置100は、カメラ300からの画像に基づいて、他の障害物の位置を特定して、当該障害物が第2の直方体内に存在するか否かを判断する。制御装置100は、障害物が第2の直方体内に存在する場合は、移動中にロボット200が障害物に衝突する可能性が高いと判断して、警告を出力し、障害物が第2の直方体内に存在しない場合は、移動中にロボット200が障害物に衝突する可能性が低いと判断して、ロボット200の移動を許可する。
<制御装置100の情報処理>
【0025】
次に、図2および図3を参照して、本実施の形態における制御装置100の情報処理について詳述する。制御装置100のCPU110は、メモリ120のプログラムに従って、たとえば次に実行するタスクのためのプログラムを読みだして、以下のような処理を実行する。
【0026】
まず、CPU110は、ロボット200からロボット200の現在の位置および/または姿勢(姿勢:1)を取得する(ステップS102)。
【0027】
CPU110は、メモリ120のタスクの制御データを参照して、ロボット200の移動後の姿勢(姿勢:2)を取得する(ステップS104)。
【0028】
CPU110は、カメラ300にロボット200の周囲を撮影させて、撮影画像をメモリ120に格納する(ステップS106)。
【0029】
CPU110は、撮影画像に基づいて、障害物の有無や、障害物の位置や、障害物が占めるエリアを特定する(ステップS108)。
【0030】
CPU110は、ロボット200の現在の姿勢(姿勢:1)に基づいて、ロボット200の形状を表すポリゴンの複数の頂点の3次元座標を特定する(ステップS110)。たとえば、ロボット200の上端の頂点Tの位置(XT1,YT1,ZT1)や、ロボット200の左端の頂点Rの位置(XR1,YR1,ZR1)など、ロボット200の外周面のうちの、出っ張った箇所などの位置座標を特定する。
【0031】
CPU110は、ロボット200の移動後の姿勢(姿勢:2)に基づいて、ロボット200の複数の頂点の3次元の位置を特定する(ステップS112)。たとえば、ロボット200の上端の頂点Tの位置(XT2,YT2,ZT2)や、ロボット200の左端の頂点Rの位置(XR2,YR2,ZR2)など、ロボット200の外周面のうちの、出っ張った箇所などの位置座標を特定する。
【0032】
CPU110は、ロボット200の現在の姿勢(姿勢:1)の全ての頂点と、ロボット200の移動後の姿勢(姿勢:2)の全ての頂点を含む第1の直方体を作成する(ステップS114)。
【0033】
CPU110は、第1の直方体を、バッファを設けた状態で、内包する第2の直方体を作成する。本実施の形態においては、CPU110は、ロボット200の各頂点に関して、現在の姿勢(姿勢:1)と移動後の姿勢(姿勢:2)との間の距離を計算して、最も長い距離を選択する。CPU110は、第1の直方体の各辺を当該距離だけ長くした第2の直方体を形成する(ステップS116)。
【0034】
CPU110は、第2の直方体の内側に、障害物が存在するか否かを判断する(ステップS118)。
【0035】
CPU110は、第2の直方体の内側に、障害物が存在しない場合(ステップS120にてNOである場合)、ロボット200の移動を開始させる(ステップS122)。
【0036】
CPU110は、第2の直方体の内側に、障害物が存在する場合(ステップS120にてYESである場合)、ロボット200の移動を中止して、通信インターフェイス160を介して、他の装置などにエラー情報を通知する(ステップS124)。CPU110は、ディスプレイ130やスピーカ150からエラー情報を出力してもよい。
<第2の実施の形態>
【0037】
上記の実施の形態においては、ロボット200の現在の位置および/または姿勢(姿勢:1)の頂点と移動後の位置および/または姿勢(姿勢:2)の頂点を含む第1の直方体を内包する第2に直方体に基づいて、ロボット200が障害物に衝突するか否かを判断するものであった。本実施の形態においては、さらに加えて、第2の直方体内に障害物が存在すると判定された場合であっても、現在の位置(姿勢:1)の頂点と移動中の位置の頂点とに基づいた直方体や、移動中の位置の頂点と移動後の位置(姿勢:2)の頂点とに基づいた直方体などに基づいて、ロボット200が障害物に衝突するか否かを判断し直すものである。
【0038】
まず、図4(A)を参照して、本実施の形態においては、制御装置100は、ロボット200の現在の姿勢(姿勢:1)と、ロボット200の移動中の姿勢(姿勢:1-1)と、ロボット200の移動中の姿勢(姿勢:1-2)と、移動後の姿勢(姿勢:2)に基づいて、ロボット200の現在の各頂点の位置と移動中の各頂点の位置と移動後の各頂点の位置とを計算する。
【0039】
図4(B)を参照して、制御装置100は、ロボット200の現在の各頂点と移動中の各頂点とを全て含む第3の直方体を定義し、ロボット200の移動中の各頂点と移動中の各頂点とを全て含む第5の直方体を定義し、ロボット200の移動中の各頂点と移動後の各頂点とを全て含む第7の直方体を定義する。
【0040】
図4(C)を参照して、制御装置100は、当該第3の直方体を内包する第4の直方体を定義し、当該第5の直方体を内包する第6の直方体を定義し、当該第7の直方体を内包する第8の直方体を定義する。第4,6,8の直方体は、第3,5,7の直方体を内包し、第3,5,7の直方体よりも一回り大きい直方体である。
【0041】
そして、制御装置100は、カメラ300からの画像に基づいて、他の障害物の位置を特定して、当該障害物が第4,6,8の直方体内に存在するか否かを判断する。制御装置100は、障害物が第4,6,8の直方体のいずれの内側にも存在しない場合は、衝突する可能性が低いと判断して、ロボット200の移動を許可する。制御装置100は、障害物が第4,6,8の直方体のいずれかの内側に存在する場合は、移動中にロボット200が障害物に衝突する可能性が高いと判断して、移動を停止し、他のシステムにその旨を通知するなどの処理を行なう。
【0042】
以下では、障害物が上記の第2の直方体内に存在した場合の処理、すなわち図3のステップS120にてYESである場合の処理について説明する。CPU110は、メモリ120のプログラムに従って、以下の処理を実行する。
【0043】
図4および図5を参照して、CPU110は、ロボット200の現在の位置(姿勢:1)と移動後の位置(姿勢:2)との間の位置またはタイミングとして、ロボット200の移動中の第1の姿勢(姿勢:1-1)勢および第2の姿勢(姿勢:1-2)を特定する(ステップS130)。
【0044】
CPU110は、ロボット200の移動中の第1の姿勢(姿勢:1-1)に基づいて、ロボット200の各頂点の位置を計算する(ステップS132)。
【0045】
CPU110は、ロボット200の移動中の第2の姿勢(姿勢:1-2)に基づいて、ロボット200の各頂点の位置を計算する(ステップS134)。
【0046】
CPU110は、ロボット200の現在の位置(姿勢:1)の頂点の全てと、ロボット200の移動中の第1の位置(姿勢:1-1)の頂点の全てを内包する第3の直方体を作成する(ステップS136)。
【0047】
CPU110は、当該第3の直方体を内包する第4の直方体を定義する(ステップS138)。第4の直方体は、第3の直方体を内包し、第3の直方体よりも一回り大きい直方体である。たとえば、CPU110は、第3の直方体の各辺を、現在の位置(姿勢:1)から第1の位置(姿勢:1-1)までの距離のうちの最も長い距離だけ伸ばした直方体を第4の直方体と定義する。
【0048】
CPU110は、カメラ300からの画像に基づいて、他の障害物の位置を特定して、当該障害物が第4の直方体内に存在するか否かを判断する(ステップS140)。
【0049】
CPU110は、ロボット200の移動中の第1の位置(姿勢:1-1)の頂点の全てと、ロボット200の移動中の第2の位置(姿勢:1-2)の頂点の全てを内包する第5の直方体を定義する(ステップS142)。
【0050】
CPU110は、当該第5の直方体を内包する第6の直方体を定義する(ステップS144)。第6の直方体は、第5の直方体を内包し、第5の直方体よりも一回り大きい直方体である。
【0051】
CPU110は、カメラ300からの画像に基づいて、他の障害物の位置を特定して、当該障害物が第6の直方体内に存在するか否かを判断する(ステップS146)。
【0052】
CPU110は、ロボット200の移動中の第2の位置(姿勢:1-2)の頂点の全てと、ロボット200の移動後の位置(姿勢:2)の頂点の全てを内包する第7の直方体を定義する(ステップS148)。
【0053】
CPU110は、当該第7の直方体を内包する第8の直方体を定義する(ステップS150)。第8の直方体は、第7の直方体を内包し、第7の直方体よりも一回り大きい直方体である。
【0054】
CPU110は、カメラ300からの画像に基づいて、他の障害物の位置を特定して、当該障害物が第8の直方体内に存在するか否かを判断する(ステップS152)。
【0055】
CPU110は、障害物が第4の直方体内に存在せず、障害物が第6の直方体内に存在せず、障害物が第8の直方体内に存在しない場合(ステップS154にてNOである場合)、ロボット200が障害物に衝突する可能性が低いと判断して、ロボット200の移動を許可する(ステップS156)。
【0056】
CPU110は、障害物が第4の直方体内に存在した場合(ステップS154にてYESである場合)、現在の位置(姿勢:1)と、移動中の第1の位置(姿勢:1-1)との間をさらに分割して直方体を定義して(ステップS158)、当該直方体内に障害物が存在するか否かを判断する(ステップS160)。
【0057】
CPU110は、障害物が第6の直方体内に存在した場合は(ステップS154にてYESである場合)、移動中の第1の位置(姿勢:1-1)と、移動中の第2の位置(姿勢:1-2)との間をさらに分割して直方体を定義して(ステップS158)、当該直方体内に障害物が存在するか否かを判断する(ステップS160)。
【0058】
CPU110は、障害物が第8の直方体内に存在した場合は(ステップS154にてYESである場合)、移動中の第2の位置(姿勢:1-2)と、移動後の位置(姿勢:2)との間をさらに分割して直方体を定義して(ステップS158)、当該直方体内に障害物が存在するか否かを判断する(ステップS160)。
【0059】
このように、CPU110は、全ての直方体内に障害物が存在しないと判定された場合(ステップS160にてYESである場合)、ロボット200が障害物に衝突する可能性が低いと判断して、ロボット200の移動を許可する(ステップS156)。
【0060】
逆に、衝突すると判定された直方体に関しては、CPU110は、対応する移動経路を分割していきながら、衝突判定を繰り返していく(ステップS164)。CPU110は、所定の段階の分割後の判定でも、障害物と衝突する可能性が残る場合には、移動を停止し他のシステムへ通知するなどの処理を行なう(ステップS166)。
【0061】
なお、分割処理の終了条件として、分割回数の上限を設定してもいいし、移動前と移動後の間における各関節の移動距離(そのうちの最大値)、各関節角度(そのうちの最大)が一定の閾値以下になった場合としてもよい。
【0062】
ここでは、現在の位置(姿勢:1)と移動後の位置(姿勢:2)との間を、2つのポイントやタイミング、すなわち、移動中の第1の位置(姿勢:1-1)と、移動中の第2の位置(姿勢:1-2)で分割したが、1つのポイントやタイミングで分割してもよいし、3つ以上のポイントやタイミングで分割してもよい。
【0063】
あるいは、あらかじめ設定された移動距離以内になるように姿勢や移動経路を分割して、逐次的に衝突判定を行ってもよい。具体的には、ロボットを姿勢1から姿勢2に移動させるときに、あらかじめ所定の単位で移動経路を分割して (例えば 姿勢 1.1, 1.2, 1.3 ... 1.9 を衝突確認前にあらかじめ作っておいて)、ロボットの移動に従って、姿勢1.1, 1.2, 1.3 時点での衝突判定を行いながら姿勢2まで移動してもよい。
<第3の実施の形態>
【0064】
上記の実施の形態においては、制御装置100は、第1、第3、第5、第7の直方体を、最も移動した頂点の移動距離に基づいて、各辺の長さを延伸することによって、第2、第4、第6、第8の直方体とするものであった。しかしながら、第1、第3、第5、第7の直方体の周囲にバッファを設ける方法は、特に限定されない。
【0065】
たとえば、制御装置100のCPU110は、第1、第3、第5、第7の直方体を、ロボット200の先端のいずれかの頂点の移動距離に基づいて、各辺の長さを延伸することによって、第2、第4、第6、第8の直方体としてもよい。
【0066】
あるいは、制御装置100のCPU110は、ロボット200の回動角度に応じて、第1、第3、第5、第7の直方体を、X軸の正または正負の方向に所定の割合延伸し、Y軸の正または正負の方向に所定の割合延伸し、Z軸の正または正負の方向に所定の割合延伸することによって、第2、第4、第6、第8の直方体としてもよい。
<第4の実施の形態>
【0067】
上記の実施の形態においては、カメラ300を用いて他の物体の存在や位置やエリアを特定するものであった。しかしながら、他の物体の位置やエリアを特定する方法は、上記の方法には限られない。たとえば、カメラ300を利用する形態には限られない。メモリ120に、現在実行中のタスクに関する、各部品や道具や他のロボットの位置や姿勢が登録されていてもよい。
【0068】
この場合には、CPU110は、ステップS108において、メモリ120から各部品や道具やロボットの位置や姿勢や存在するエリアを取得する。あるいは、CPU110は、ステップS406において、通信インターフェイス160を介して、ロボットなどの他の装置から各部品や道具やロボットの位置や姿勢や存在するエリアを取得する。そして、CPU110は、第2の直方体の内側に、各部品や道具やロボットが存在するか否かを判断する(ステップS118)。
【0069】
当然ながら、CPU110は、カメラ300の画像から他の物体の位置を特定しつつ、メモリ120や他の装置からのデータに基づいて他の物体の位置を特定してもよい。
<第5の実施の形態>
【0070】
さらには、他の物体や障害物が移動したり姿勢を変えたりするものであってもよい。たとえば、ロボット制御システム1が、複数のロボット200,200・・・を含むものであってもよい。より詳細には、本実施の形態においては、制御装置100のCPU110は、メモリ120のプログラムに従って、たとえば次に実行するタスクのためのプログラムを読みだして、図6に示す処理を実行する。
【0071】
まず、CPU110は、第1のロボット200から第1のロボット200の現在の位置および/または姿勢(姿勢:1)を取得する(ステップS502)。
【0072】
CPU110は、メモリ120のタスクの制御データを参照して、第1のロボット200の移動後の位置や姿勢(姿勢:2)を取得する(ステップS504)。
【0073】
CPU110は、第1のロボット200の現在の位置や姿勢(姿勢:1)に基づいて、第1のロボット200の形状を表すポリゴンの複数の頂点の3次元座標を特定する(ステップS510)。
【0074】
CPU110は、第2のロボット200の移動後の位置や姿勢(姿勢:2)に基づいて、ロボット200の複数の頂点の3次元の位置を特定する(ステップS512)。
【0075】
CPU110は、第1のロボット200の現在の姿勢(姿勢:1)の全ての頂点と、第1のロボット200の移動後の姿勢(姿勢:2)の全ての頂点を含む第1の直方体を作成する(ステップS514)。
【0076】
CPU110は、第1の直方体を、バッファを設けた状態で、内包する第2の直方体を作成する(ステップS516)。
【0077】
本実施の形態においては、この処理を、第2のロボット200や第3のロボット200に関しても行う(ステップS502からステップS516)。
【0078】
CPU110は、各ロボットの第2の直方体同士が干渉するか否かを判断する(ステップS518)。
【0079】
CPU110は、各ロボットの第2の直方体同士が干渉しない場合(ステップS520にてNOである場合)、ロボット200の移動を開始させる(ステップS522)。
【0080】
CPU110は、各ロボットの第2の直方体同士が干渉する場合(ステップS420にてYESである場合)、ロボット200の移動を中止して、通信インターフェイス160を介して、他の装置などにエラー情報を通知する(ステップS424)。CPU110は、ディスプレイ130やスピーカ150からエラー情報を出力してもよい。
【0081】
第2の実施の形態と同様に、CPU110は、各ロボットの第2の直方体同士が干渉する場合(ステップS420にてYESである場合)、図5に示すように、各ロボットに関して、移動途中の頂点に基づいて第3,5,7の直方体を作成する(ステップS136、ステップS142、ステップS148)。CPU110は、それらを内包する第4,6,8の直方体を作成する(ステップS138、ステップS144、ステップS150)。CPU110は、各ロボットの第3の直方体同士が干渉するか否かを判断したり(ステップS140)、各ロボットの第5の直方体同士が干渉するか否かを判断したり(ステップS146)、各ロボットの第7の直方体同士が干渉するか否かを判断したりする(ステップS152)。そして、CPU110は、各ロボットの第4,6,8の直方体同士が干渉しない場合(ステップS154にてNOである場合)、ロボット200の移動を開始させる(ステップS156)。
【0082】
CPU110は、各ロボットの第4,6,8の直方体同士が干渉する場合(ステップS154にてYESである場合)、干渉する直方体に関して、さらに移動の途中の頂点に基づいて直方体を作成し、干渉するか否かの判断を繰り返す(ステップS158以降)。
<第6の実施の形態>
【0083】
上記の実施の形態のロボット制御システム1の制御装置100やロボット200などの各装置の役割の一部または全部を他の装置が実行してもよい。たとえば、制御装置100の役割の一部をロボット200が担ったり、制御装置100の役割を複数のパーソナルコンピューターで担ったり、制御装置100の情報処理のクラウド上のサーバで実行してもよい。
<まとめ>
【0084】
上記の実施の形態においては、ロボットと、制御装置とを備えるロボット制御システムが提供される。制御装置は、他の物体の位置を特定し、移動前のロボットの複数の頂点の位置と、移動後のロボットの複数の頂点の位置と、が含まれる第1の直方体を内包する第2の直方体を特定し、第2の直方体内に他の物体がない場合に、ロボットを移動させる。
【0085】
好ましくは、制御装置は、第2の直方体内に他の物体がある場合に、移動前のロボットの複数の頂点の位置と、移動中のロボットの複数の頂点の位置と、が含まれる第3の直方体を含む第4の直方体を特定し、移動中のロボットの複数の頂点の位置と、移動後のロボットの複数の頂点の位置と、が含まれる第5の直方体を含む第6の直方体を特定し、第4の直方体内にも第6の直方体内にも他の物体がない場合に、ロボットを移動させる。
【0086】
好ましくは、制御装置は、第4の直方体に他の物体がある場合には、移動前と移動中との間をさらに分割したときの頂点に関する直方体を作成して、当該直方体内に他の物体がない場合に、ロボットの移動を許可し、第6の直方体に他の物体がある場合には、移動中と移動後との間をさらに分割したときの頂点に関する直方体をさらに作成して、当該直方体内に他の物体がない場合に、ロボットを移動させる。
【0087】
好ましくは、制御装置は、所定の回数の分割後の直方体内に他の物体がある場合には、ロボットの移動を行わずに、所定の情報を出力する。
【0088】
好ましくは、他の物体は、第2のロボットである。制御装置は、前記第2のロボットの位置を取得することによって他の物体の位置を特定する。
【0089】
好ましくは、ロボット制御システムは、カメラをさらに備える。制御装置は、カメラからの画像に基づいて他の物体の位置を特定する。
【0090】
上記の実施の形態においては、ロボットと通信するための通信インターフェイスと、メモリと、プロセッサとを備える制御装置が提供される。プロセッサは、他の物体の位置を特定し、移動前のロボットの複数の頂点の位置と、移動後のロボットの複数の頂点の位置と、が含まれる第1の直方体を内包する第2の直方体を特定し、第2の直方体内に他の物体がない場合に、ロボットを移動させる。
【0091】
上記の実施の形態においては、制御装置が、他の物体の位置を特定するステップと、移動前のロボットの複数の頂点の位置と、移動後のロボットの複数の頂点の位置と、が含まれる第1の直方体を内包する第2の直方体を特定するステップと、第2の直方体内に他の物体がない場合に、ロボットを移動させるステップと、を備えるロボットの制御方法が提供される。
【0092】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は、上記した説明ではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【0093】
1 :ロボット制御システム
100 :制御装置
110 :CPU
120 :メモリ
130 :ディスプレイ
140 :操作部
150 :スピーカ
160 :通信インターフェイス
200 :ロボット
300 :カメラ
図1
図2
図3
図4
図5
図6