(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2022156506
(43)【公開日】2022-10-14
(54)【発明の名称】ロボット制御システム、および制御装置
(51)【国際特許分類】
B25J 13/08 20060101AFI20221006BHJP
【FI】
B25J13/08 A
【審査請求】未請求
【請求項の数】7
【出願形態】OL
(21)【出願番号】P 2021060233
(22)【出願日】2021-03-31
(71)【出願人】
【識別番号】391053696
【氏名又は名称】JOHNAN株式会社
(74)【代理人】
【識別番号】100148275
【弁理士】
【氏名又は名称】山内 聡
(74)【代理人】
【識別番号】100136319
【弁理士】
【氏名又は名称】北原 宏修
(74)【代理人】
【識別番号】100142745
【弁理士】
【氏名又は名称】伊藤 世子
(74)【代理人】
【識別番号】100143498
【弁理士】
【氏名又は名称】中西 健
(72)【発明者】
【氏名】森山 孝三
(72)【発明者】
【氏名】亀山 晋
(72)【発明者】
【氏名】ヴ ヤ チュン
(72)【発明者】
【氏名】ルーカス ブルックス
【テーマコード(参考)】
3C707
【Fターム(参考)】
3C707KS02
3C707KS03
3C707KS04
3C707KS11
3C707KT02
3C707KT05
3C707KT06
3C707KT09
3C707LV01
(57)【要約】
【課題】必要な箇所の撮影画像が取得できない不具合を低減するための技術を提供する。
【解決手段】ロボット200と、ロボットに取り付けられた、または固定された、少なくとも1つの第1のカメラ300と、作業者に取り付けられる第2のカメラ400と、制御装置100とを備えるロボット制御システム1が提供される。制御装置は、第1のカメラの画像と、第2のカメラの画像と、に基づいてワークW若しくは部品の位置または作業者の骨格姿勢若しくは状態を特定することによってロボットを制御する。
【選択図】
図1
【特許請求の範囲】
【請求項1】
ロボットと、
前記ロボットに取り付けられた、または固定された、少なくとも1つの第1のカメラと、
作業者に取り付けられる第2のカメラと、
制御装置とを備え、
前記制御装置は、前記第1のカメラの画像と、前記第2のカメラの画像と、に基づいてワーク若しくは部品の位置または作業者の骨格姿勢若しくは状態を特定することによって前記ロボットを制御する、ロボット制御システム。
【請求項2】
前記制御装置は、
所定の条件を満たす場合に、前記少なくとも1つの第1のカメラの画像と、前記第2のカメラの画像と、に基づいてワーク若しくは部品の位置または作業者の骨格姿勢若しくは状態を特定し、
前記所定の条件を満たさない場合に、前記少なくとも1つの第1のカメラの画像に基づいてワーク若しくは部品の位置または作業者の骨格姿勢若しくは状態を特定する、請求項1に記載のロボット制御システム。
【請求項3】
前記第2のカメラは、加速度センサを含み、
前記制御装置は、
前記所定の条件として、前記第2のカメラの位置や姿勢の変化が所定の程度よりも小さい場合に、前記少なくとも1つの第1のカメラの画像と、前記第2のカメラの画像と、に基づいてワーク若しくは部品の位置または作業者の骨格姿勢若しくは状態を特定し、
前記第2のカメラの動きが所定の程度よりも大きい場合に、前記少なくとも1つの第1のカメラの画像に基づいてワーク若しくは部品の位置または作業者の骨格姿勢若しくは状態を特定する、請求項2に記載のロボット制御システム。
【請求項4】
前記制御装置は、
前記所定の条件として、前記作業者の体によって前記少なくとも1つの第1のカメラから作業対象の一部が撮影できない場合に、前記少なくとも1つの第1のカメラの画像と、前記第2のカメラの画像と、に基づいてワーク若しくは部品の位置または作業者の骨格姿勢若しくは状態を特定し、
前記少なくとも1つの第1のカメラから前記作業対象の全てが撮影できる場合に、前記少なくとも1つの第1のカメラの画像に基づいてワーク若しくは部品の位置または作業者の骨格姿勢若しくは状態を特定する、請求項2または3に記載のロボット制御システム。
【請求項5】
第1のカメラと第2のカメラとロボットとの通信インターフェイスと、
メモリと、
プロセッサとを備え、
前記プロセッサは、前記第1のカメラの画像と、前記第2のカメラの画像と、に基づいてワーク若しくは部品の位置または作業者の骨格姿勢若しくは状態を特定することによって前記ロボットを制御する、制御装置。
【請求項6】
ロボットと、
固定カメラまたは前記ロボットに取り付けられた少なくとも1つの第1のカメラと、
作業者に取り付けられる第2のカメラと、
制御装置とを備え、
前記制御装置は、
所定の条件を満たす場合に、前記第2のカメラの画像に基づいてワーク若しくは部品の位置または作業者の骨格姿勢若しくは状態を特定することによって前記ロボットを制御し、
前記所定の条件を満たさない場合に、前記少なくとも1つの第1のカメラの画像に基づいてワーク若しくは部品の位置または作業者の骨格姿勢若しくは状態を特定することによって前記ロボットを制御する、ロボット制御システム。
【請求項7】
第1のカメラと第2のカメラとロボットとの通信インターフェイスと、
メモリと、
プロセッサとを備え、
前記プロセッサは、
所定の条件を満たす場合に、前記第2のカメラの画像に基づいてワーク若しくは部品の位置または作業者の骨格姿勢若しくは状態を特定することによって前記ロボットを制御して、
前記所定の条件を満たさない場合に、前記少なくとも1つの第1のカメラの画像に基づいてワーク若しくは部品の位置または作業者の骨格姿勢若しくは状態を特定することによって前記ロボットを制御する、制御装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、各種のロボットの制御システムの技術に関し、特にカメラの撮影画像に基づいてロボットを制御するための技術に関する。
【背景技術】
【0002】
従前より、カメラの撮影画像に基づいてロボットを制御するための技術が知られている。たとえば、特開2018-58178号公報(特許文献1)には、機械学習部を備えた作業補助システムが開示されている。特許文献1によると、作業者の体の少なくとも一つの部位の位置姿勢を検出するセンサ部と、作業者に部品又は工具を供給する供給部と、供給部を制御するセルコントローラと、を備え、セルコントローラが、検出された位置姿勢に基づいて作業者の作業状態を学習してモデルを構築する機械学習部と、構築されたモデルを用いて、作業者の作業状態を判断する作業状態判断部と、を備え、供給部が、判断された作業状態に基づいて部品又は工具を選択し、少なくとも一つの部位の位置姿勢に基づいて、部品又は工具の位置姿勢を変化させる作業補助システムを提供する。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
本発明の目的は、必要な箇所の撮影画像が取得できない不具合を低減するための技術を提供することにある。
【課題を解決するための手段】
【0005】
本発明の一態様に従うと、ロボットと、ロボットに取り付けられた、または固定された、少なくとも1つの第1のカメラと、作業者に取り付けられる第2のカメラと、制御装置とを備えるロボット制御システムが提供される。制御装置は、第1のカメラの画像と、第2のカメラの画像と、に基づいてワーク、部品の位置や姿勢や状態および作業者の骨格姿勢や状態を特定することで作業状況を判断し、状況に応じてロボットを制御する。
【発明の効果】
【0006】
以上のように、本発明によれば、必要な箇所の撮影画像が取得できない不具合を低減することができる。
【図面の簡単な説明】
【0007】
【
図1】第1の実施の形態にかかるロボット制御システムの全体構成を示すブロック図である。
【
図2】第1の実施の形態にかかるロボットカメラとウェアラブルカメラによる撮影を示すイメージ図である。
【
図3】第1の実施の形態にかかるロボット制御の情報処理を示すフローチャートである。
【
図4】第1の実施の形態にかかるマージ処理を示すフローチャートである。
【
図5】第1の実施の形態にかかるマージ処理の方法を示すイメージ図である。
【
図6】第2の実施の形態にかかるロボット制御の情報処理を示すフローチャートである。
【
図7】第3の実施の形態にかかるロボット制御の情報処理を示すフローチャートである。
【
図8】第4の実施の形態にかかるロボット制御の情報処理を示すフローチャートである。
【発明を実施するための形態】
【0008】
以下、図面を参照しつつ、本発明の実施の形態について説明する。以下の説明では、同一の部品には同一の符号を付してある。それらの名称および機能も同じである。したがって、それらについての詳細な説明は繰り返さない。
<第1の実施の形態>
<ロボット制御システムの全体構成>
【0009】
まず
図1を参照して、本実施の形態にかかるロボット制御システム1の全体構成について説明する。ロボット制御システム1は、主たる装置として、ロボット200と、第1のカメラ300と、第2のカメラ400と、撮影画像に基づいてロボット200の動作を制御するための制御装置100とを含む。
【0010】
本実施の形態にかかるロボット制御システム1は、たとえば工場の生産現場に適用されるものであり、生産現場においてロボット200に所定のタスクを実行させるように構成されている。また、本実施の形態にかかるロボット制御システム1は、ロボット200が柵などによって仕切られておらず、人がロボット200の作業領域にアクセス可能であり、人とロボット200とが協働して作業を進めていくものである。
【0011】
第1のカメラ300は、
図2に示すように、ロボット200に取り付けられるカメラであったり、作業台や天井などに固定されるカメラであったりする。第1のカメラ300は、作業台の上に置かれた対象物すなわちワークW、部品、および/または、そこで作業する作業者を撮影する。
【0012】
第2のカメラ400は、
図2に示すように、作業者の体や作業服や眼鏡や帽子やヘルメットなどに取り付けられるものであって、いわゆるウェアラブルカメラである。作業者の作業中に、第2のカメラ400の撮影範囲内にワークW、部品および/または作業者自身の手や腕などの体の部位が収まることが好ましい。
【0013】
図1に戻って、制御装置100は、第1のカメラ300や第2のカメラ400の撮影画像に基づいて、ロボット200に各種のタスクを実行させる。タスクとは、たとえばある地点のワークを別の地点に移動させる処理であったり、ワークWに応じた道具を作業者に手渡す処理であったりする。
【0014】
制御装置100は、主に、CPU110、メモリ120、ディスプレイ130、操作部140、スピーカ150、通信インターフェイス160を含む。CPU110は、メモリ120に記憶されているプログラムを実行することによって、ロボット200や制御装置100の各部を制御する。たとえば、CPU110は、メモリ120に格納されているプログラムを実行し、各種のデータを参照することによって、後述する各種の情報処理を実行する。
【0015】
メモリ120は、各種のRAM、各種のROMなどによって実現される。メモリ120は、CPU110によって実行されるロボット200のタスクなどのプログラムや、CPU110によるプログラムの実行により生成されたデータ、たとえば、ロボット200の動作状態や現在位置や姿勢や目標位置などを記憶する。
【0016】
ディスプレイ130は、CPU110の信号に基づいて、テキストや画像を表示する。
【0017】
操作部140は、ユーザの指示を受け付けて、CPU110に入力する。
【0018】
スピーカ150は、CPU110の信号に基づいて、各種の音声を出力する。
【0019】
通信インターフェイス160は、コネクタやアンテナなどによって実現されて、通信ケーブルや無線LANなどを介してロボット200や第1のカメラ300や第2のカメラ400などの他の装置と、各種データをやり取りする。本実施の形態においては、CPU110は、通信インターフェイス160としてのコネクタを介して、通信ケーブルを利用して、第1のカメラ300の撮影画像を取得する。CPU110は、通信インターフェイス160としての無線アンテナを介して、第2のカメラ400の撮影画像を取得する。
【0020】
本実施の形態においては、第2のカメラ400は、無線アンテナ460や、電池450を搭載する。第1のカメラ300は、信号ケーブルや電力ケーブルのコネクタを有し、ロボット200から電力を取得したり、電源ケーブルから電力を取得したりする。
【0021】
このようにして、制御装置100のCPU110は、メモリ120のロボット制御用のプログラムに従って、通信インターフェイス160を介して第1のカメラ300および第2のカメラ400から取得した画像に基づいて、通信インターフェイス160を介してロボット200に各種の動作を実行させる。
<ロボット制御システムの動作概要>
【0022】
制御装置100は、第1のカメラ300の撮影画像に基づいて、作業スペースにおける作業者の作業状況や作業台上のワークや部品の状況などを判断して、ロボット200を制御するものであるが、作業者の体や頭などが邪魔になって、第1のカメラ300が作業者の手や作業台上のワークWや部品の全てをうまく撮影できない場合がある。そこで、本実施の形態においては、作業者が身に着けている第2のカメラ400の撮影画像によって、第1のカメラ300の撮影画像からは得られない情報を補完することによって、ワークの正確な状況を把握できるものである。
<制御装置100の情報処理>
【0023】
以下では、
図3、
図4、
図5を参照して、本実施の形態における制御装置100の情報処理について詳述する。制御装置100のCPU110は、メモリ120のプログラムに従って、たとえばロボット200にタスクを実行させるためのプログラムを読みだして、以下の処理を実行する。
【0024】
まず、CPU110は、第1のカメラ300による撮影を開始する(ステップS110)。
図5(A)は、天井に取り付けた第1のカメラ300の撮影画像を示すものである。
【0025】
CPU110は、第2のカメラ400による撮影を開始する(ステップS120)。
【0026】
CPU110は、第1のカメラ300の撮影画像と第2のカメラ400のそれぞれの撮影画像において作業スペースの状況を解析することができ、その解析結果をマージすることによって複数の視点により情報の欠損が少ない解析結果を得ることができる(ステップS130)。これによって、CPU110は、タスクの実行に必要な情報、たとえばワークの部品の位置や姿勢、および/または、ワーク自体の位置や姿勢、および/または、作業者の姿勢など、を認識することができる。
【0027】
ここで、
図4を参照しながら、本実施の形態にかかるマージ処理(ステップS130)について説明する。
【0028】
CPU110は、第1のカメラ300の位置がワールド座標系においてどこに設定されているかを取得する(ステップS131)。作業台に固定されているカメラの場合は、ワールド座標系におけるカメラの位置や姿勢が予め定められている。ロボット200に取り付けられているカメラの場合は、CPU110は、ワールド座標系におけるロボット200の位置や姿勢と、ロボット200に対する第1のカメラ300の位置や姿勢とに基づいて、ワールド座標系における第1のカメラ300の位置や姿勢や画角などを計算する。
【0029】
CPU110は、ワールド座標系におけるカメラの画角などの情報に基づいて、第1のカメラ300から見た座標から、ワールド座標系への第1の変換行列を算出する(ステップS132)。
【0030】
図5(B)に示すように、CPU110は、第1のカメラ300の画像に基づいて、第1のカメラ300の視点からの2次元画像から、ワークWや部品の検出や作業者の骨格姿勢の検出などを行なう(ステップS133)。
【0031】
たとえば、RGB-Dカメラなどのような、3次元カメラを用いる場合には、CPU110は、上記で得られた2次元座標に、深さ情報を付記することによって、第1のカメラ300の座標としてのワークW、部品や作業者の骨格姿勢の3次元座標が得られる。
【0032】
2次元カメラを用いる場合には、CPU110は、複数の第1のカメラ300,300・・・によって同じ点を検出することができるため、三角推量などによって、ワークW、部品や作業者の骨格姿勢の3次元座標を得ることができる。
【0033】
CPU110は、第1の変換行列を用いて、第1のカメラ300の視点からのワークW、部品や作業者の骨格姿勢の座標をワールド座標へ変換する(ステップS134)。
【0034】
たとえば、CPU110は、
図5(C)に示すように、第1のカメラ300からの画像からARマーカMを認識する(ステップS136)。
【0035】
CPU110は、第1のカメラ300から見たARマーカMの位置と形状に基づいて、ARマーカ基準の第1のカメラ300の位置と姿勢とを計算する(ステップS137)。
【0036】
そして、CPU110は、
図5(D)に示すように、第2のカメラ400からの画像からARマーカMを認識する(ステップS138)。
【0037】
CPU110は、第2のカメラ400から見たARマーカMの位置と形状に基づいて、ARマーカ基準の第2のカメラ400の位置と姿勢とを計算する(ステップS139)。なお、ARマーカを利用する形態に限らず、作業台の外枠や部品などを介して、基準に対する第2のカメラ400の位置と姿勢とを計算してもよい。
【0038】
CPU110は、第2のカメラ400から見た座標からワールド座標への第2の変換行列を計算する(ステップS140)。より詳細には、CPU110は、第1のカメラ300の位置と姿勢に対する第2のカメラ400の位置と姿勢に基づいて、第1の変換行列から第2の変換行列を計算する。
【0039】
図5(D)に示すように、CPU110は、第2のカメラ400の画像に基づいて、第2のカメラ400の視点からの2次元画像から、ワークWや部品の検出や作業者の骨格姿勢の検出などを行なう(ステップS141)。
【0040】
たとえば、RGB-Dカメラを用いる場合には、CPU110は、上記で得られた2次元座標に、深さ情報を付記することによって、第2のカメラ400の座標としてのワークW、部品や作業者の骨格姿勢の3次元座標が得られる。
【0041】
2次元カメラを用いる場合には、CPU110は、複数の第2のカメラ400,400・・・によって同じ点を検出することができるため、三角推量などによって、ワークW、部品や作業者の骨格姿勢の3次元座標を得ることができる。
【0042】
CPU110は、第2の変換行列を用いて、第2のカメラ400の視点からの各検出結果の座標をワールド座標へ変換する(ステップS142)。
【0043】
CPU110は、第1のカメラ300からの画像によって取得されたワークW若しくは部品の位置または作業者の骨格姿勢若しくは状態のデータと、第2のカメラ400からの画像によって取得されたワークW若しくは部品の位置または作業者の骨格姿勢若しくは状態のデータとに基づいて、これら全ての位置や姿勢や状態を示す3次元データを作成する(ステップS143)。なお、第1のカメラ300からの画像と、第2のカメラ400からの画像と、から同じ部品に関する異なる位置や姿勢や状態が得られた場合には、状況を理解する上でより重要なワークW、部品や作業者の手に近い位置にある第1のカメラ300の画像から得られた位置や姿勢や状態を優先することが好ましい。
【0044】
図3に戻って、CPU110は、ワークW若しくは部品の位置または作業者の骨格姿勢若しくは状態のデータに基づいて、各種のタスクの制御データに従って、ワークWや部品に対する次の処理を決定する(ステップS150)。
【0045】
CPU110は、通信インターフェイス160を介して、ロボット200に制御命令を送信する(ステップS152)。
【0046】
なお、第1のカメラ300に関して、事前にキャリブレーション(変換行列算出)されており、カメラの位置・姿勢が変化しない場合は、ステップS136の処理は不要である。また、第1のカメラ300がロボット200などに取り付けられて移動する場合においても、第1のカメラ300の位置・姿勢が正確に算出できる場合には、キャリブレーションで取得した変換行列を第1のカメラ300の位置・姿勢に応じて補正することが可能であるため、同様にステップS136の処理は不要である。
【0047】
さらに、第2のカメラ400においても、一度でも変換行列を算出できていれば、その後第1のカメラ300の位置・姿勢が変化しても、加速度センサや画像変化の解析により、第1のカメラ300の位置・姿勢を推定し、取得済みの変換行列を補正することが可能である。そのためARマーカが検出できるときはステップS138により変換行列算出を行い、検出できないときは、ステップS138の処理の代わりに自己位置推定により取得済み変換行列を補正するようにしてもよい。
<第2の実施の形態>
【0048】
上記の実施の形態においては、常に、第1のカメラ300によるデータと第2のカメラ400によるデータとをマージするものであった。本実施の形態においては、第2のカメラ400の位置や姿勢が安定している場合に、第1のカメラ300によるデータと第2のカメラ400によるデータとを利用するものである。逆に、第2のカメラ400が移動していたり振動したりしている場合には、両者の画像を利用して得られたデータの信頼性が低い可能性があるため、第1のカメラ300の画像のみに基づいて、ワークW若しくは部品の位置または作業者の骨格姿勢若しくは状態を判断するものである。
【0049】
本実施の形態においては、第2のカメラは、加速度センサ470や、振動センサなどを搭載する。
【0050】
図6に示すように、CPU110は、加速度センサ470を利用して、第2のカメラ400が振動しているときや、第2のカメラ400の位置や姿勢が変化しているときには(ステップS212にてYESである場合)、1または複数の第1のカメラ300,300・・・の画像に基づいて、ワークW若しくは部品の位置または作業者の骨格姿勢若しくは状態などを特定する(ステップS131~ステップS134)。
【0051】
CPU110は、第2のカメラ400の振動が小さく、位置や姿勢の変化も小さい場合には(ステップS212にてNOである場合)、ステップS120からの処理を実行する。
【0052】
ただし、加速度センサ470を利用する形態に限らず、CPU110は、第2のカメラ400の撮影画像中における変化が大きい場合に(ステップS212にてYESである場合)、ステップS131からの処理を実行し、第2のカメラ400の撮影画像中における変化が小さい場合に(ステップS212にてNOである場合)、ステップS120からの処理を実行してもよい。
【0053】
あるいは、CPU110は、第2のカメラ400よりも第1のカメラ300の方が変化が大きい場合に(ステップS212にてYESである場合)、ステップS120からの処理を実行し、第2のカメラ400よりも第1のカメラ300の方が変化が小さい場合に(ステップS212にてNOである場合)、ステップS131からの処理を実行してもよい。
【0054】
本実施の形態においては、第2のカメラ400の精度が低い可能性が高い場合(ステップS212にてYESである場合)、CPU110は、第2のカメラ400を起動させない、あるいは撮影を行わせない、あるいは画像の送信を行わせないため、電池450の消耗を抑えることができる。
<第3の実施の形態>
【0055】
あるいは、
図7を参照して、CPU110は、第1のカメラ300の画像に基づいて、第1のカメラ300の撮影画像中に、作業者の頭や体などの部位が映っているエリアが所定の割合よりも大きく、かつ手や腕などの映っているエリアが小さい場合に(ステップS312にてYESである場合)、第2のカメラ400に撮影させたり、第1のカメラ300によるデータと第2のカメラ400によるデータとをマージしたりしてもよい。
【0056】
他にも、振動の判定の代わりに、あるいは振動の判定に加えて、CPU110は、第2のカメラ400の位置が、所定の位置、たとえば作業台の位置と第1のカメラ300の間など、である場合に、第2のカメラ400に撮影させたり、第1のカメラ300の検出結果と第2のカメラ400の検出結果とをマージしたりしてもよい。
【0057】
換言すれば、CPU110は、第2のカメラ400の位置が第1のカメラ300の位置よりも低い位置にある場合に、第2のカメラ400に撮影させたり、第1のカメラ300の検出結果と第2のカメラ400の検出結果とをマージしたりして、第2のカメラ400の位置が第1のカメラ300の位置よりも高い位置にある場合に、第2のカメラ400の検出結果を利用しないようにしてもよい。
【0058】
あるいは、CPU110は、第2のカメラ400の姿勢が所定の方向である場合、たとえば第2のカメラ400が下方を向いている場合などに、第2のカメラ400に撮影させたり、第1のカメラ300の画像と第2のカメラ400の画像によるそれぞれの検出結果をマージしたりしてもよい。
【0059】
その他、対象領域のカバー範囲(隠れ、見切れ)、第2のカメラ400の自己位置推定の信頼度(マーカが最後に検出できてからの位置・姿勢の変化量が多いなど)、画像品質(ボケ、露出オーバー/アンダー)などに基づいて、CPU110は、第1のカメラ300の検出結果と第2のカメラ400の検出結果とをマージするか否かを決定してもよい。
<第4の実施の形態>
【0060】
上記の実施の形態においては、第1のカメラ300によるデータと第2のカメラ400によるデータとをマージするものであった。しかしながら、所定の条件を満たす場合に、第2のカメラ400によってワークW若しくは部品の位置または作業者の骨格姿勢若しくは状態のデータを取得して、所定の条件を満たさない場合に、第1のカメラ300によってワークW若しくは部品の位置または作業者の骨格姿勢若しくは状態のデータを取得してもよい。
【0061】
たとえば、
図8を参照して、CPU110は、第1のカメラ300による撮影を開始する(ステップS110)。
【0062】
CPU110は、第1のカメラ300の画像に基づいて、第1のカメラ300の撮影画像中に、作業者の頭や体などの部位が映っているエリアが所定の割合よりも大きいかあるいは、手や腕などの映っているエリアが小さいか否かを判断する(ステップS312)。
【0063】
作業者の頭や体などの部位が映っているエリアが所定の割合よりも小さく、あるいは手や腕などの映っているエリアが大きい場合(ステップS312にてNOである場合)、CPU110は、第1のカメラ300の位置がワールド座標系においてどこに設定されているかを取得する(ステップS131)。作業台に固定されているカメラの場合は、ワールド座標系におけるカメラの位置や姿勢が予め定められている。ロボット200に取り付けられているカメラの場合は、CPU110は、ワールド座標系におけるロボット200の位置や姿勢と、ロボット200に対する第1のカメラ300の位置や姿勢とに基づいて、ワールド座標系における第1のカメラ300の位置や姿勢や画角などを計算する。
【0064】
CPU110は、ワールド座標系におけるカメラの画角などの情報に基づいて、第1のカメラ300から見た座標から、ワールド座標系への第1の変換行列を算出する(ステップS132)。
【0065】
CPU110は、第1のカメラ300の画像に基づいて、第1のカメラ300の視点からの2次元画像から、ワークWや部品の検出や作業者の骨格姿勢の検出などを行なう(ステップS133)。
【0066】
たとえば、3次元カメラを用いる場合には、CPU110は、上記で得られた2次元座標に、深さ情報を付記することによって、第1のカメラ300の座標としてのワークW、部品や作業者の骨格姿勢の3次元座標が得られる。
【0067】
2次元カメラを用いる場合には、CPU110は、複数の第1のカメラ300,300・・・によって同じ点を検出することができるため、三角推量などによって、ワークW、部品や作業者の骨格姿勢の3次元座標を得ることができる。
【0068】
CPU110は、第1の変換行列を用いて、第1のカメラ300の視点からのワークW、部品や作業者の骨格姿勢の座標をワールド座標へ変換する(ステップS134)。
【0069】
CPU110は、ワークWや部品の状態および作業者の骨格姿勢や状態に基づいて、各種のタスクの制御データに従って、ワークWや部品に対する次の処理を決定する(ステップS150)。
【0070】
CPU110は、通信インターフェイス160を介して、ロボット200に制御命令を送信する(ステップS152)。
【0071】
一方、作業者の頭や体などの部位が移っているエリアが所定の割合よりも大きくかつ手や腕などの映っているエリアが小さい場合(ステップS312にてYESである場合)、CPU110は、第2のカメラ400が振動したり位置や姿勢が変化したりしているか否かを判断する(ステップS212)。
【0072】
第2のカメラ400が振動したり位置や姿勢が変化したりしている場合は(ステップS212にてYESである場合)、ステップS131からの処理を実行する。
【0073】
第2のカメラ400が安定している場合は(ステップS212にてNOである場合)、CPU110は、第1のカメラ300からの画像からARマーカMを認識する(ステップS136)。なお、第1のカメラ300に関して、事前にキャリブレーション(変換行列算出)をしている場合は、ステップS136,ステップS138の処理は不要である。
【0074】
CPU110は、第1のカメラ300から見たARマーカMの位置と形状に基づいて、ARマーカ基準の第1のカメラ300の位置と姿勢とを計算する(ステップS137)。
【0075】
そして、CPU110は、第2のカメラ400からの画像からARマーカMを認識する(ステップS138)。
【0076】
CPU110は、第2のカメラ400から見たARマーカMの位置と形状に基づいて、ARマーカ基準の第2のカメラ400の位置と姿勢とを計算する(ステップS139)。
【0077】
CPU110は、第2のカメラ400から見た座標からワールド座標への第2の変換行列を計算する(ステップS140)。より詳細には、本実施の形態においては、CPU110は、ステップS131とステップS132を実行することによって第1の変換行列を計算してから、第1のカメラ300の位置と姿勢に対する第2のカメラ400の位置と姿勢に基づいて、第1の変換行列から第2の変換行列を計算する。
【0078】
CPU110は、第2のカメラ400の画像に基づいて、第2のカメラ400の視点からの2次元画像から、ワークWや部品の検出や作業者の骨格姿勢の検出などを行なう(ステップS141)。
【0079】
たとえば、3次元カメラを用いる場合には、CPU110は、上記で得られた2次元座標に、深さ情報を付記することによって、第2のカメラ400の座標としてのワークW、部品や作業者の骨格姿勢の3次元座標が得られる。
【0080】
2次元カメラを用いる場合には、CPU110は、複数の第2のカメラ400,400・・・によって同じ点を検出することができるため、三角推量などによって、ワークW、部品や作業者の骨格姿勢の3次元座標を得ることができる。
【0081】
CPU110は、第2の変換行列を用いて、第2のカメラ400の視点からのワークW、部品や作業者の骨格姿勢の座標をワールド座標へ変換する(ステップS142)。
【0082】
CPU110は、ステップS150からの処理を実行する。
【0083】
なお、本実施の形態においても、振動の有無の判断に加速度センサ470を利用する形態だけでなく、CPU110が、第2のカメラ400の撮影画像中における変化が大きい場合に(ステップS212にてYESである場合)、ステップS131からの処理を実行し、第2のカメラ400の撮影画像中における変化が小さい場合に(ステップS212にてNOである場合)、ステップS120からの処理を実行してもよい。
【0084】
あるいは、CPU110は、第2のカメラ400よりも第1のカメラ300の方が変化が大きい場合に(ステップS212にてYESである場合)、ステップS120からの処理を実行し、第2のカメラ400よりも第1のカメラ300の方が変化が小さい場合に(ステップS212にてNOである場合)、ステップS131からの処理を実行してもよい。
【0085】
他にも、上記の判定の代わりに、あるいは上記の判定に加えて、CPU110は、第2のカメラ400の位置が、所定の位置、たとえば作業台の位置と第1のカメラ300の間など、である場合に、ステップS120からの処理を実行し、そうでない場合にステップS131からの処理を実行してもよい。
【0086】
換言すれば、CPU110は、第2のカメラ400の位置が第1のカメラ300の位置よりも低い位置にある場合に、ステップS120からの処理を実行し、そうでない場合にステップS131からの処理を実行してもよい。
【0087】
あるいは、CPU110は、第2のカメラ400の姿勢が所定の方向である場合、たとえば第2のカメラ400が下方を向いている場合などに、ステップS120からの処理を実行し、そうでない場合にステップS131からの処理を実行してもよい。
【0088】
その他、対象領域のカバー範囲(隠れ、見切れ)、第2のカメラ400の自己位置推定の信頼度(マーカが最後に検出できてからの位置や姿勢の変化量が多いなど)、画像品質(ボケ、露出オーバー/アンダー)などに基づいて、CPU110は、ステップS120からの処理を実行するか、ステップS131からの処理を実行するかを判断してもよい。
<第6の実施の形態>
【0089】
上記の実施の形態のロボット制御システム1の制御装置100やロボット200などの各装置の役割の一部または全部を他の装置が実行してもよい。たとえば、制御装置100の役割の一部をロボット200が担ったり、制御装置100の役割を複数のパーソナルコンピューターで担ったり、制御装置100の情報処理のクラウド上のサーバで実行してもよい。
<まとめ>
【0090】
上記の実施の形態においては、ロボットと、ロボットに取り付けられた、または固定された、少なくとも1つの第1のカメラと、作業者に取り付けられる第2のカメラと、制御装置とを備えるロボット制御システムが提供される。制御装置は、第1のカメラの画像と、第2のカメラの画像と、に基づいてワーク若しくは部品の位置または作業者の骨格姿勢若しくは状態を特定することによってロボットを制御する。
【0091】
好ましくは、前記制御装置は、所定の条件を満たす場合に、前記少なくとも1つの第1のカメラの画像と、前記第2のカメラの画像と、に基づいてワーク若しくは部品の位置または作業者の骨格姿勢若しくは状態を特定し、前記所定の条件を満たさない場合に、前記少なくとも1つの第1のカメラの画像に基づいてワーク若しくは部品の位置または作業者の骨格姿勢若しくは状態を特定する
【0092】
好ましくは、第2のカメラは、加速度センサを含む。制御装置は、前記所定の条件として、第2のカメラの位置や姿勢の変化が所定の程度よりも小さい場合に、少なくとも1つの第1のカメラの画像と、第2のカメラの画像と、に基づいてワーク若しくは部品の位置または作業者の骨格姿勢若しくは状態を特定し、第2のカメラの動きが所定の程度よりも大きい場合に、少なくとも1つの第1のカメラの画像に基づいてワーク若しくは部品の位置または作業者の骨格姿勢若しくは状態を特定する。
【0093】
好ましくは、制御装置は、前記所定の条件として、作業者の体や頭によって少なくとも1つの第1のカメラから作業対象の一部が撮影できない場合に、少なくとも1つの第1のカメラの画像と、第2のカメラの画像と、に基づいてワーク若しくは部品の位置または作業者の骨格姿勢若しくは状態を特定し、少なくとも1つの第1のカメラから作業対象の全てが撮影できる場合に、少なくとも1つの第1のカメラの画像に基づいてワーク若しくは部品の位置または作業者の骨格姿勢若しくは状態を特定する。
【0094】
上記の実施の形態においては、第1のカメラと第2のカメラとロボットとの通信インターフェイスと、メモリと、プロセッサとを備える制御装置が提供される。プロセッサは、第1のカメラの画像と、第2のカメラの画像と、に基づいてワーク若しくは部品の位置または作業者の骨格姿勢若しくは状態を特定することによってロボットを制御する。
【0095】
上記の実施の形態においては、ロボットと、固定カメラまたはロボットに取り付けられた少なくとも1つの第1のカメラと、作業者に取り付けられる第2のカメラと、制御装置とを備えるロボット制御システムが提供される。制御装置は、所定の条件を満たす場合に、第2のカメラの画像に基づいてワーク若しくは部品の位置または作業者の骨格姿勢若しくは状態を特定することによってロボットを制御し、前記所定の条件を満たさない場合に、少なくとも1つの第1のカメラの画像に基づいてワーク若しくは部品の位置または作業者の骨格姿勢若しくは状態を特定することによってロボットを制御する。
【0096】
上記の実施の形態においては、第1のカメラと第2のカメラとロボットとの通信インターフェイスと、メモリと、プロセッサとを備えるロボット制御システムが提供される。プロセッサは、所定の条件を満たす場合に、第2のカメラの画像に基づいてワーク若しくは部品の位置または作業者の骨格姿勢若しくは状態を特定することによってロボットを制御して、前記所定の条件を満たす場合に、少なくとも1つの第1のカメラの画像に基づいてワーク若しくは部品の位置または作業者の骨格姿勢若しくは状態を特定することによってロボットを制御する。
【0097】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は、上記した説明ではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【0098】
1 :ロボット制御システム
100 :制御装置
110 :CPU
120 :メモリ
130 :ディスプレイ
140 :操作部
150 :スピーカ
160 :通信インターフェイス
200 :ロボット
300 :第1のカメラ
400 :第2のカメラ
450 :電池
460 :無線アンテナ
470 :加速度センサ