(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-12-09
(45)【発行日】2024-12-17
(54)【発明の名称】ロボットの制御プログラムを作成する処理をプロセッサーに実行させるコンピュータープログラム、並びに、ロボットの制御プログラムを作成する方法及びシステム
(51)【国際特許分類】
B25J 9/22 20060101AFI20241210BHJP
【FI】
B25J9/22 A
(21)【出願番号】P 2020214761
(22)【出願日】2020-12-24
【審査請求日】2023-12-01
(73)【特許権者】
【識別番号】000002369
【氏名又は名称】セイコーエプソン株式会社
(74)【代理人】
【識別番号】100179475
【氏名又は名称】仲井 智至
(74)【代理人】
【識別番号】100216253
【氏名又は名称】松岡 宏紀
(74)【代理人】
【識別番号】100225901
【氏名又は名称】今村 真之
(72)【発明者】
【氏名】岩原 佑磨
(72)【発明者】
【氏名】北澤 幸行
【審査官】神山 貴行
(56)【参考文献】
【文献】国際公開第2017/130389(WO,A1)
【文献】特開2016-120564(JP,A)
【文献】特開2011-110621(JP,A)
【文献】西川 由理,「映像からの行動検出手法SlowFastの分散深層学習の評価」,情報処理学会 研究報告 ハイパフォーマンスコンピューティング(HPC) 2020-HPC-177 [online] ,日本,情報処理学会
(58)【調査した分野】(Int.Cl.,DB名)
B25J 1/00-21/02
(57)【特許請求の範囲】
【請求項1】
ロボットの制御プログラムを作成する処理をプロセッサーに実行させるコンピューター
プログラムであって、
(a)作業者が腕と手指とを用いてワークを操作する作業に含まれる1つ以上の作業者動
作を撮像装置で撮影した画像から、前記作業者動作を認識する処理と、
(b)前記作業者動作が前記手指の関節の動きを伴う特定手指動作を含む場合に、前記手
指を前記撮像装置で撮影した画像から、前記特定手指動作における手指位置を認識する処
理と、
(c)前記ワークを前記撮像装置で撮像した画像から、前記作業の後における前記ワーク
の位置を認識する処理と、
(d)前記処理(a)で認識された前記作業者動作と、前記処理(b)で認識された前記
手指位置と、前記処理(c)で認識された前記ワークの位置とを用いて、前記ロボットの
制御プログラムを生成する処理と、
を前記プロセッサーに実行させ
、
前記特定手指動作は、前記手指による把持動作と、前記手指による解放動作と、前記手
指による指差し動作と、のうちの1つ以上を含み、
前記処理(b)は、前記作業者動作が前記特定手指動作を含まない場合には、前記手指
位置を認識する処理を行わない、コンピュータープログラム。
【請求項2】
請求項
1に記載のコンピュータープログラムであって、
前記処理(d)は、
(i)前記作業者動作と前記手指位置と前記ワークの位置とを用いて、ロボットの種類に
依存しないロボット非依存座標系で前記作業を記述する作業記述リストを作成する処理と
、
(ii)前記制御プログラムにより制御される前記ロボットの種類に応じて、前記作業記
述リストを用いて、前記制御プログラムを作成する処理と、
を含む、コンピュータープログラム。
【請求項3】
請求項1~
2のいずれか一項に記載のコンピュータープログラムであって、
前記撮像装置は、複数のカメラを含み、
前記処理(a)において前記作業者動作を認識するために使用する前記画像と、前記処
理(b)において前記手指位置を認識するために使用する前記画像は、異なるカメラで撮
影された画像である、コンピュータープログラム。
【請求項4】
請求項1~
2のいずれか一項に記載のコンピュータープログラムであって、
前記撮像装置は、複数のカメラを含み、
前記処理(a)において前記作業者動作を認識するために使用する前記画像と、前記処
理(c)において前記ワークの位置を認識するために使用する前記画像は、異なるカメラ
で撮影された画像である、コンピュータープログラム。
【請求項5】
請求項1~
2のいずれか一項に記載のコンピュータープログラムであって、
前記撮像装置で撮影した画像は、複数の画像フレームを含み、
前記処理(a)は、
前記複数の画像フレームの中から第1周期で抽出した第1画像フレーム群を第1ニュー
ラルネットワークに入力して得られた第1処理結果と、
前記複数の画像フレームの中から前記第1周期より長い第2周期で抽出した第2画像フ
レーム群を第2ニューラルネットワークに入力して得られた第2処理結果と、を用いて前
記作業者動作を認識する処理である、コンピュータープログラム。
【請求項6】
ロボットの制御プログラムを作成する方法であって、
(a)作業者が腕と手指とを用いてワークを操作する作業に含まれる1つ以上の作業者動
作を撮像装置で撮影した画像から、前記作業者動作を認識する工程と、
(b)前記作業者動作が前記手指の関節の動きを伴う特定手指動作を含む場合に、前記手
指を前記撮像装置で撮影した画像から、前記特定手指動作における手指位置を認識する工
程と、
(c)前記ワークを前記撮像装置で撮像した画像から、前記作業の後における前記ワーク
の位置を認識する工程と、
(d)前記工程(a)で認識された前記作業者動作と、前記工程(b)で認識された前記
手指位置と、前記工程(c)で認識された前記ワークの位置とを用いて、前記ロボットの
制御プログラムを生成する工程と、
を含
み、
前記特定手指動作は、前記手指による把持動作と、前記手指による解放動作と、前記手
指による指差し動作と、のうちの1つ以上を含み、
前記工程(b)は、前記作業者動作が前記特定手指動作を含まない場合には、前記手指
位置を認識する工程を行わない、方法。
【請求項7】
ロボットの制御プログラムを作成する処理を実行するシステムであって、
プロセッサーを有する情報処理装置と、
前記情報処理装置に接続された撮像装置と、
を備え、
前記プロセッサーは、
(a)作業者が腕と手指とを用いてワークを操作する作業に含まれる1つ以上の作業者動
作を前記撮像装置で撮影した画像から、前記作業者動作を認識する処理と、
(b)前記作業者動作が前記手指の関節の動きを伴う特定手指動作を含む場合に、前記手
指を前記撮像装置で撮影した画像から、前記特定手指動作における手指位置を認識する処
理と、
(c)前記ワークを前記撮像装置で撮像した画像から、前記作業の後における前記ワーク
の位置を認識する処理と、
(d)前記処理(a)で認識された前記作業者動作と、前記処理(b)で認識された前記
手指位置と、前記処理(c)で認識された前記ワークの位置とを用いて、前記ロボットの
制御プログラムを生成する処理と、
を実行
し、
前記特定手指動作は、前記手指による把持動作と、前記手指による解放動作と、前記手
指による指差し動作と、のうちの1つ以上を含み、
前記処理(b)は、前記作業者動作が前記特定手指動作を含まない場合には、前記手指
位置を認識する処理を行わない、システム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、ロボットの制御プログラムを作成する処理をプロセッサーに実行させるコンピュータープログラム、並びに、ロボットの制御プログラムを作成する方法及びシステムに関する。
【背景技術】
【0002】
特許文献1には、ロボットの教示データを作成する技術が開示されている。この従来技術では、カメラを用いて作業者の手を含む教示画像を取得し、その教示画像に基づいて手指の各関節および指先の位置である手指座標を決定し、手指座標に基づいてロボットアーム110の動作を教示する。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかしながら、従来技術では、対象物を把持したり解放したりしない時であっても常に手指の認識を行うため、その処理負荷が大きいという問題があった。
【課題を解決するための手段】
【0005】
本開示の第1の形態によれば、ロボットの制御プログラムを作成する処理をプロセッサーに実行させるコンピュータープログラムが提供される。このコンピュータープログラムは、(a)作業者が腕と手指とを用いてワークを操作する作業に含まれる1つ以上の作業者動作を撮像装置で撮影した画像から、前記作業者動作を認識する処理と、(b)前記作業者動作が前記手指の関節の動きを伴う特定手指動作を含む場合に、前記手指を前記撮像装置で撮影した画像から、前記特定手指動作における手指位置を認識する処理と、(c)前記ワークを前記撮像装置で撮像した画像から、前記作業の後における前記ワークの位置を認識する処理と、(d)前記処理(a)で認識された前記作業者動作と、前記処理(b)で認識された前記手指位置と、前記処理(c)で認識された前記ワークの位置とを用いて、前記ロボットの制御プログラムを生成する処理と、を前記プロセッサーに実行させる。
【0006】
本開示の第2の形態によれば、ロボットの制御プログラムを作成する方法が提供される。この方法は、(a)作業者が腕と手指とを用いてワークを操作する作業に含まれる1つ以上の作業者動作を撮像装置で撮影した画像から、前記作業者動作を認識する工程と、(b)前記作業者動作が前記手指の関節の動きを伴う特定手指動作を含む場合に、前記手指を前記撮像装置で撮影した画像から、前記特定手指動作における手指位置を認識する工程と、(c)前記ワークを前記撮像装置で撮像した画像から、前記作業の後における前記ワークの位置を認識する工程と、(d)前記工程(a)で認識された前記作業者動作と、前記工程(b)で認識された前記手指位置と、前記工程(c)で認識された前記ワークの位置とを用いて、前記ロボットの制御プログラムを生成する工程と、を含む。
【0007】
本開示の第3の形態によれば、ロボットの制御プログラムを作成する処理を実行するシステムが提供される。このシステムは、プロセッサーを有する情報処理装置と、前記情報処理装置に接続された撮像装置と、を備える。前記プロセッサーは、(a)作業者が腕と手指とを用いてワークを操作する作業に含まれる1つ以上の作業者動作を前記撮像装置で撮影した画像から、前記作業者動作を認識する処理と、(b)前記作業者動作が前記手指の関節の動きを伴う特定手指動作を含む場合に、前記手指を前記撮像装置で撮影した画像から、前記特定手指動作における手指位置を認識する処理と、(c)前記ワークを前記撮像装置で撮像した画像から、前記作業の後における前記ワークの位置を認識する処理と、(d)前記処理(a)で認識された前記作業者動作と、前記処理(b)で認識された前記手指位置と、前記処理(c)で認識された前記ワークの位置とを用いて、前記ロボットの制御プログラムを生成する処理と、を実行する。
【図面の簡単な説明】
【0008】
【
図1】実施形態におけるロボットシステムの説明図。
【
図3】制御プログラム作成処理の手順を示すフローチャート。
【
図4】第1作業領域内のワークを撮影した画像フレームの例を示す説明図。
【
図6】作業者動作を撮影した画像フレームの例を示す説明図。
【
図8】ステップS40の詳細手順を示すフローチャート。
【発明を実施するための形態】
【0009】
図1は、一実施形態におけるロボットシステムの一例を示す説明図である。このロボットシステムは、ロボット100と、第1カメラ210と、第2カメラ220と、第3カメラ230と、ロボット100を制御する機能を有する情報処理装置300と、を備える。情報処理装置300は、例えばパーソナルコンピューターである。
【0010】
ロボット100は、複数の関節を有する多軸ロボットである。但し、ロボット100としては、1個以上の関節を有する任意のアーム機構を有するロボットを用いることが可能である。また、本実施形態のロボット100は、垂直多関節ロボットであるが、水平多関節ロボットを使用してもよい。本実施形態において、ロボット100のエンドエフェクターはワークを保持できるグリッパーであるが、任意のエンドエフェクターを使用可能である。
【0011】
図1のロボットシステムには、作業者TPが教示作業を行う第1作業領域WA1と、ロボット100が作業を実行する第2作業領域WA2とが設定されている。作業者TPを「教示者」とも呼ぶ。第1作業領域WA1は、第1カメラ210によって撮影することが可能である。第2作業領域WA2は、第2カメラ220によって撮影することが可能である。第1作業領域WA1と第1カメラ210の間の相対位置は、第2作業領域WA2と第2カメラ220の間の相対位置と同一に設定されていることが好ましい。なお、第1作業領域WA1と第2作業領域WA2は、同一の領域であってもよい。
【0012】
第1作業領域WA1には、作業者TPの手指やワークを撮影するための第3カメラ230が設置されている。第3カメラ230は、第1カメラ210よりも手指やワークをより近くで撮影できるようにするために、第1カメラ210よりも第1作業領域WA1により近い位置に設置されていることが好ましい。第3カメラ230で撮影された画像を用いて手指やワークの位置を認識すれば、第1カメラ210のみを用いる場合に比べて、手指やワークの位置をより正確に認識できる。但し、第3カメラ230を省略してもよい。
【0013】
第1作業領域WA1は、第1供給領域SA1と第1目標領域TA1とを含んでいる。第1供給領域SA1は、教示作業の開始時においてワークWK1が配置される領域である。第1目標領域TA1は、教示作業としての作業者TPの操作によってワークWK1を第1供給領域SA1から移動させてワークWK1を配置する領域である。第1作業領域WA1内における第1供給領域SA1及び第1目標領域TA1の形状と位置は任意に設定可能である。
【0014】
第2作業領域WA2は、第1作業領域WA1と同一の形状を有しており、第1供給領域SA1及び第1目標領域TA1とそれぞれ同じ形状を有する第2供給領域SA2及び第2目標領域TA2を含んでいる。第2供給領域SA2は、ロボット100による作業の開始時においてワークWK2が配置される領域である。第2目標領域TA2は、ロボット100の作業によってワークWK2を第2供給領域SA2から移動させてワークWK2を配置する領域である。なお、供給領域SA1,SA2と目標領域TA1,TA2は、それぞれトレーを用いて実現してもよく、或いは、床面や架台の上に個々の領域SA1,SA2,TA1,TA2を線で描くようにしてもよい。また、供給領域SA1,SA2と目標領域TA1,TA2は、明示的に区画されていなくてもよい。
【0015】
第1作業領域WA1での作業対象となるワークWK1と、第2作業領域WA2での作業対象となるワークWK2は、同じ設計による同種の物体である。但し、それぞれの作業領域WA1,WA2との対応関係をわかりやすくするために、以下では、これらを「第1ワークWK1」、「第2ワークWK2」と呼ぶ。
【0016】
図1には、ロボット100に対して設定されたロボット座標系Σrと、第1カメラ210に対して設定された第1カメラ座標系Σc1と、第2カメラ220に対して設定された第2カメラ座標系Σc2と、第3カメラ230に対して設定された第1カメラ座標系Σc3と、が描かれている。これらの座標系Σr,Σc1,Σc2,Σc3は、いずれも3つの軸X,Y,Zで規定された直交座標系である。これらの座標系Σr,Σc1,Σc2,Σc3の対応関係は、キャリブレーションによって決定されている。
【0017】
第1作業領域WA1におけるワークWK1の位置姿勢や作業者TPの動作は、第1カメラ210や第3カメラ230で撮影された第1作業領域WA1の画像から情報処理装置300によって認識される。また、第2作業領域WA2におけるワークWK2の位置姿勢は、第2カメラ220で撮影された第2作業領域WA2の画像から情報処理装置300によって認識される。カメラ210,220,230としては、被写体を動画又は複数の画像フレームとして撮影できるものが使用される。また、カメラ210,220,230としては、被写体を3次元的に認識できるものを用いることが好ましい。このようなカメラとして、例えば、ステレオカメラや、カラー画像と深さ画像とを同時に撮影可能なRGBDカメラを用いても良い。RGBDカメラを用いれば、深さ画像を用いて障害物の形状も認識することが可能である。カメラ210,220,230は、本開示における「撮像装置」に相当する。
【0018】
図2は、情報処理装置300の機能を示すブロック図である。情報処理装置300は、プロセッサー310と、メモリー320と、インターフェイス回路330と、インターフェイス回路330に接続された入力デバイス340及び表示部350と、を有している。インターフェイス回路330には、更に、カメラ210,220,230が接続されている。
【0019】
プロセッサー310は、物体認識部311と、動作認識部312と、手指位置認識部313と、作業記述リスト作成部314と、制御プログラム作成部315の機能を有する。物体認識部311は、第1カメラ210又は第3カメラ230で撮影された画像から第1ワークWK1を認識し、また、第2カメラ220で撮影された画像から第2ワークWK2を認識する。動作認識部312は、第1カメラ210で撮影された画像から、作業者TPの動作を認識する。手指位置認識部313は、第1カメラ210又は第3カメラ230で撮影された画像から、作業者TPの手指位置を認識する。物体認識部311と動作認識部312と手指位置認識部313による認識は、ディープラーニングによる機械学習モデルや、特徴量抽出モデルを使用して実現することができる。作業記述リスト作成部314は、他部の認識結果を用いて後述する作業記述リストWDLを作成する。制御プログラム作成部315は、他部の認識結果又は作業記述リストWDLを用いて、ロボット100の制御プログラムを作成する。これらの各部311~315の機能は、メモリー320に格納されたコンピュータープログラムをプロセッサー310が実行することによって実現される。但し、各部の機能の一部又は全部をハードウェア回路で実現してもよい。
【0020】
メモリー320には、ロボット特性データRDと、ワーク属性データWDと、作業記述リストWDLと、ロボット制御プログラムRPが格納される。ロボット特性データRDは、ロボット100の幾何構造や、関節の回転可能角度、重量、慣性値などの特性を含んでいる。ワーク属性データWDは、ワークWK1,WK2の種類や形状等の属性を含んでいる。作業記述リストWDLは、作業者TPの動作とワークWK1を撮影した動画又は複数の画像フレームから認識された作業内容を表すデータであって、ロボットの種類に依存しないロボット非依存座標系で作業を記述したデータである。ロボット制御プログラムRPは、ロボット100を動作させる複数の命令で構成されている。ロボット制御プログラムRPは、例えば、ロボット100を用いて第2ワークWK2を第2供給領域SA2から第2目標領域TA2に移動させるピックアンドプレース動作を制御するものとして構成される。ロボット特性データRDとワーク属性データWDは、後述する制御プログラム作成処理の前に予め準備される。作業記述リストWDLとロボット制御プログラムRPは、制御プログラム作成処理によって作成される。
【0021】
図3は、プロセッサー310によって実行される制御プログラム作成処理の手順を示すフローチャートである。制御プログラム作成処理は、作業者TPが教示作業の開始指示を情報処理装置300に入力したときから開始される。以下で説明するステップS10~S40が、作業者TPが教示を行う教示作業に相当する。但し、以下の説明において、単に「作業」という語句は、ワークを移動させる作業を意味する。
【0022】
ステップS10では、第1カメラ210及び第3カメラ230を用いて、作業者用の第1作業領域WA1で第1ワークWK1と作業者TPの動作を撮影する。ステップS20では、物体認識部311が、第1カメラ210又は第3カメラ230で撮影された画像から、第1作業領域WA1に存在する第1ワークWK1を認識する。
【0023】
図4は、第1作業領域WA1内の第1ワークWK1を撮影した画像フレームMF001,MF600の例を示す説明図である。上側の画像フレームMF001は、作業者TPによる第1ワークWK1の移動作業前における画像であり、下側の画像フレームMF600は、作業者TPによる第1ワークWK1の移動作業後における画像である。
【0024】
移動作業前の画像フレームMF001において、第1供給領域SA1内には、複数の第1ワークWK1a,WK1bが配置されており、第1目標領域TA1にはワークは配置されていない。この例では、2種類の第1ワークWK1a,WK1bが第1供給領域SA1内に配置されている。なお、第1ワークWK1としては、1種類の部品のみを用いてもよく、或いは、Nを2以上の整数として、N種類の部品を用いてもよい。N種類の部品を用いる場合には、ワーク属性データWDは、N種類の部品のそれぞれについて、その種類と形状を表すデータを含んでいる。物体認識部311は、このワーク属性データWDを参照して、画像フレームMF001から第1ワークWK1a,WK1bの種類と位置姿勢を認識する。これらの第1ワークWK1a,WK1bの周囲には、個々のワークを囲む枠線が描画されている。これらの枠線は、認識されたワークの種類によって色や形状が変更される。作業者TPは、各ワークの周囲に描画された枠線を観察することによって、個々のワークの種類を見分けることが可能である。但し、これらの枠線は省略可能である。画像フレームMF001には、画像フレームMF001内の位置を示す画像座標系の座標軸U,Vが描かれている。移動作業後の画像フレームMF600において、複数の第1ワークWK1a,WK1bは、第1供給領域SA1から第1目標領域TA1内に移動している。物体認識部311は、この画像フレームMF600からも、第1ワークWK1a,WK1bの種類と位置姿勢を認識する。
【0025】
図5は、第1ワークWK1に関する認識結果を示す説明図である。この認識結果の個々のレコードには、画像フレーム番号と、ワークIDと、ワークタイプIDと、画像座標点と、基準座標系位置姿勢とが登録される。ワークの認識結果は、時系列的にレコードが順番に配列された時系列データである。
図5の例では、移動作業前の画像フレームMF001について、2つの第1ワークWK1a,WK1bの認識結果が登録され、移動作業後の画像フレームMF600についても、2つの第1ワークWK1a,WK1bの認識結果が登録されている。「ワークID」は、個々のワークを区別する識別子である。「ワークタイプID」は、ワーク種類を示す識別子である。「画像座標点」は、個々のワークの代表点を画像座標(U,V)で表現した値である。ワークの代表点としては、例えば、ワーク重心点や、
図4に示したワークを囲む枠線の左上点などを使用できる。但し、画像座標点は省略してもよい。「基準座標系位置姿勢」は、ロボット100に依存しないロボット非依存座標系である基準座標系においてワークの位置姿勢を表現した値である。本開示において、基準座標系としては、第1カメラ210のカメラ座標系Σc1を使用する。但し、他の座標系を基準座標系として使用しても良い。基準座標系位置姿勢のうち、姿勢又は回転を示すパラメーターθx,θy,θzは、3つの軸回りの回転角度をそれぞれ示している。なお、姿勢又は回転を示すパラメーターの表現としては、回転角度の代わりに、回転を表す回転行列や4元数などの任意の表現を用いることができる。
【0026】
物体認識部311によるワークの認識は、作業の前と、作業の後と、ワークの位置姿勢に変化が生じたときに実行され、その認識結果が時系列データとして保存される。作業の途中では、ワークの位置姿勢に変化が生じた場合にのみ物体認識を実行することが好ましい。こうすれば、プロセッサー310の処理負荷を軽減でき、また、処理に必要なリソースを低減できる。なお、作業の後における物体の位置のみをロボット制御プログラムで使用する場合には、物体認識部311による物体認識は、作業の後のみに行うようにしてもよい。
【0027】
図3のステップS30では、動作認識部312が、第1カメラ210で撮影された画像から、作業者動作を認識する。
【0028】
図6は、作業者動作を撮影した画像フレームの例を示す説明図である。ここでは、時系列的に撮影された複数の画像フレームの一部である3つの画像フレームMF200,MF300,MF400が重ねられている。画像フレームMF200では、作業者TPが腕AMを伸ばして第1供給領域SA1内の第1ワークWK1aを把持している。動作認識部312は、この画像フレームMF200内において、腕AMと、第1ワークWK1aとを取り囲むバウンディングボックスBBを設定する。他の画像フレームMF300,MF400においても同様である。
【0029】
バウンディングボックスBBは、例えば以下の目的で使用できる。
(1)ワークの認識結果と手指位置の認識結果を用いて、画像上で接触判定を行うため。
(2)ワークの認識結果と手指位置の認識結果を用いて、画像上で把持位置を特定するため。
(3)画像にバウンディングボックスBBを描画して、腕AMが正しく認識されていることを示すため。
【0030】
図7は、作業者動作の認識結果を示す説明図である。この認識結果の個々のレコードには、作業に含まれる個々の作業者動作について、画像フレーム番号と、個体IDと、動作番号と、動作名と、バウンディングボックスBBの左上点位置及び右下点位置とが登録される。作業者動作の認識結果も、時系列的にレコードが順番に配列された時系列データである。「個体ID」は、腕AMを区別する識別子である。例えば、右腕と左腕が画像に現れた場合には、別の個体IDが付与される。バウンディングボックスBBの左上点位置及び右下点位置は、基準座標系としてのカメラ座標系Σc1での位置として表現されている。
【0031】
「動作名」は、その画像フレームにおける作業者動作の種類を示す。
図7の例では、画像フレームMF200においてpick(ピック)動作が認識されており、また、画像フレームMF300においてplace(プレース)動作が認識され、画像フレームMF400においてpointing(ポインティング)動作が認識されている。これらの動作は、それぞれ連続した複数の画像フレームを解析することによって認識できる。なお、pointing動作は、人差し指を用いた指差し動作を意味する。pointing動作は、人差し指の先端の位置に教示点を設定したり、人差し指の複数の関節に沿って延びる直線上にあるワークを搬送対象として認識したりするために使用できる。上述したもの以外の手指の特定の動作を、ロボットの特定の動作を指示するための動作として使用してもよい。例えば、手指のジェスチャーによって、ワークの把持方法を指示するようにしてもよい。
【0032】
なお、通常の作業は、複数の作業者動作を含むので、ステップS30では複数の作業者動作が認識される。但し、1つ以上の作業者動作で作業を構成することも可能である。従って、ステップS30では、ワークに関する作業に含まれる1つ以上の作業者動作が認識される。
【0033】
ステップS30における作業者動作の認識処理は、”SlowFast Networks for Vide Recognition”技術を使用して実行するようにしてもよい。この技術は、複数の画像フレームの中から第1周期で抽出した第1画像フレーム群を第1ニューラルネットワークに入力して得られた第1処理結果と、複数の画像フレームの中から第1周期より長い第2周期で抽出した第2画像フレーム群を第2ニューラルネットワークに入力して得られた第2処理結果と、を用いて動作を認識する技術である。このような技術を用いれば、作業者動作をより正確に認識できる。
【0034】
ステップS40では、手指位置認識部313が、第1カメラ210又は第3カメラ230で撮影された画像から、手指位置を認識する。
【0035】
図8は、ステップS40の詳細手順を示すフローチャートである。ステップS41では、手指位置認識部313が、第1カメラ210又は第3カメラ230で撮影された複数の画像フレームを読み込む。ステップS42では、手指位置認識部313が、複数の画像フレームにおいて手指の動作を認識する。ステップS43では、認識された手指の動作が、特定手指動作に相当するか否かが判定される。「特定手指動作」とは、手指の関節の動きを伴う動作であり、予め作業者TPによって指定された動作である。特定手指動作としては、例えば、手指による把持動作と、手指による解放動作と、手指による指差し動作と、のうちの1つ以上を含むものが指定される。本実施形態において、pick動作は「手指による把持動作」に相当し、place動作は「手指による解放動作」に相当し、pointing動作は「手指による指差し動作」に相当する。手指の動作が特定手指動作に相当する場合には、ステップS44において手指位置認識部313が手指位置を認識し、後述するステップS45に進む。手指位置の認識結果については後述する。手指の動作が特定手指動作に相当しない場合には、ステップS44以降の処理を実行せずに
図8の処理を終了する。換言すれば、作業者動作が特定手指動作を含まない場合には、手指位置を認識する処理を行わない。こうすれば、作業者動作が特定手指動作を含む場合のみに手指位置を認識する処理を行うので、処理負荷を軽減できる。
【0036】
ステップS45では、特定手指動作がpointing動作であるか否かが判定される。pointing動作でない場合には、
図8の処理を終了する。一方、特定手指動作がpointing動作である場合には、ステップS46において、手指位置認識部313が、複数の画像フレームから指差し方向を推定する。ステップS47では、手指位置認識部313が、複数の画像フレームから指差し対象のワークを特定する。ステップS48では、手指位置認識部313が、ステップS47で特定されたワークの方向を示す位置として、指差し位置を特定する。この指差し位置は、手指位置の認識結果に追加的に登録される。なお、ステップS45~S48の処理は省略してもよい。
【0037】
図9は、手指位置を認識する様子を示す説明図である。ここでは、
図6に示した画像フレームMF200において、作業者TPの腕AMと手指に複数の基準点JPが特定されている。複数の基準点JPは、リンクJLで接続されている。基準点JPは、手指の先端と関節の位置にそれぞれ設定されている。これらの基準点JPやリンクJLは、手指位置認識部313によって認識された結果である。
【0038】
図10は、認識対象となる手指位置の基準点を示す説明図である。ここでは、認識対象となる手指位置の基準点JPとして、以下が設定されている。
(1)親指の先端JP10及び関節点JP11~JP13
(2)人差し指の先端JP20及び関節点JP21~JP23
(3)中指の先端JP30及び関節点JP31~JP33
(4)薬指の先端JP40及び関節点JP41~JP43
(5)子指の先端JP50及び関節点JP51~JP53
(6)手首の関節点JP60
これらの基準点のうちの一部又は全部が、手指位置認識部313で認識される手指位置として使用される。手指位置を正確に認識するためには、上述した基準点のすべてを認識対象とすることが好ましいが、処理負荷を軽減するという観点からは、少なくとも親指の先端JP10と人差し指の先端JP20を認識対象とすることが好ましい。
【0039】
図11は、手指位置の認識結果を示す説明図である。この認識結果の個々のレコードには、画像フレーム番号と、個体IDと、手指位置IDと、手指名と、手指位置の画像座標点と、手指の基準座標系位置とが登録される。手指位置の認識結果も、時系列的にレコードが順番に配列された時系列データである。「個体ID」は、腕AMを区別する識別子である。「手指位置ID」は、
図10に示した基準点を区別する識別子である。「手指名」としては、手指位置認識部313による認識の対象となる特定の手指の名称が登録される。ここでは、thumb(親指)とindex(人差し指)が特定の手指として登録されている。thumb(親指)についてはその先端の基準点JP10が登録されており、index(人差し指)についてもその先端の基準点JP20が登録されている。
図10で説明した他の基準点についても同様に登録されることが好ましい。手指の画像座標点及び基準座標系位置は、個々の手指位置を示している。但し、画像座標点は省略してもよい。
【0040】
なお、上述した
図8においてステップS45~S48が実行され、pointing動作における指差し位置が特定されている場合には、その指差し位置を、手指位置の認識結果に追加的に登録される。
【0041】
上述したステップS20~S40の実行順序は任意に変更可能である。また、ステップS30において作業者動作を認識するために使用する画像と、ステップS40において手指位置を認識するために使用する画像は、異なるカメラで撮影された画像としてもよい。作業者動作を撮影するカメラと異なるカメラを用いて手指位置を撮影すれば、手指位置をより正確に認識できる。更に、ステップS30において作業者動作を認識するために使用する画像と、ステップS20においてワークを認識するために使用する画像も、異なるカメラで撮影された画像としてもよい。作業者動作を撮影するカメラと異なるカメラを用いてワークを撮影すれば、ワークをより正確に認識できる。
【0042】
図3のステップS50では、作業記述リスト作成部314が、それまでの認識結果を用いて、作業記述リストWDLを作成する。作業記述リストWDLは、ロボットの種類に依存しないロボット非依存座標系で作業を記述した時系列データである。
【0043】
図12は、作業記述リストWDLを示す説明図である。作業記述リストWDLの個々のレコードには、作業に含まれる個々の動作について、レコード番号と、画像フレーム番号と、動作名と、ワークIDと、ワーク位置姿勢と、アーム先端位置姿勢と、把持位置とが登録される。「動作名」は、個々の動作の種類である。
図12の例では、同一のワークWK1aに関して、approach(接近)、pick(ピック)、depart(待避)、approach(接近)、place(プレース)の5つの動作がこの順に登録されている。approach動作とdepart動作は、
図7で説明した作業者動作には含まれていないが、ロボット制御プログラムの動作命令として必要な動作なので、pick動作やplace動作などの前後に行われる動作として、作業者リスト作成部314によって追加されている。
【0044】
「アーム先端位置姿勢」は、各動作におけるロボットアームの先端の位置姿勢であり、
図11に示した手指位置の認識結果から算出される。「アーム先端位置姿勢」は、例えば、以下のように決定できる。pick動作については、そのpick動作の認識時における手指位置の認識結果から、物体と手の指先が接触した位置を把持位置として求め、基準座標系を原点とした座標変換を行う。そして、この把持位置から、ロボットアームの先端位置を示す値として「アーム先端位置姿勢」を算出する。この際、ワークの姿勢を考慮して、アーム先端の姿勢を決定することが好ましい。最適なアーム先端位置姿勢は、実際の作業に使用するエンドエフェクターに応じて異なる可能性がある。例えば、グリッパーを用いたpick動作やplace動作におけるアーム先端位置姿勢は、複数の把持位置の重心として求めることが可能である。approach動作におけるアーム先端位置は、その前後のpick動作又はplace動作におけるアーム先端位置から所定距離上昇した位置や、手指位置がpick動作又はplace動作を行った位置から所定距離移動したときの位置や、手指位置がpick動作又はplace動作を行った時点から所定時間移動したときの位置に設定される。depart動作におけるアーム先端位置も同様である。
【0045】
「把持位置」は、各動作における手指位置であり、
図11に示した手指位置の認識結果から算出される。
図12の例では、親指の先端の基準点JP10の位置と、人差し指の先端の基準点JP20の位置とが登録されている。他の基準点も同様に登録されるようにしてもよいが、少なくとも親指の先端の基準点JP10と人差し指の先端の基準点JP20に関する位置が登録されることが好ましい。また、「把持位置」は、手指によってワークが把持されたり、ワークの把持が解放されたりするときにのみ登録される。
図12の例では、pick動作とplace動作のときにのみ「把持位置」が登録され、approach動作やdepart動作のときには「把持位置」は登録されていない。
【0046】
作業記述リストWDLに登録されている位置姿勢は、すべてロボット非依存座標系としての基準座標系で表現されている。この作業記述リストWDLは、ロボット非依存座標系で作業を記述したものなので、任意の種類のロボットに適したロボット制御プログラムをこの作業記述リストWDLから容易に作成できる。このように、作業記述リストWDLは、ロボットの1動作に相当する単位で作業を分割し、1動作を1行のデータで表現したリストである。作業記述リストWDLは、経路計画は含んでいないことが好ましい。換言すれば、作業記述リストWDLには、作業者の動作から抽出したロボット動作の起点となる中継地点のみが登録されていることが好ましい。
【0047】
図3のステップS60では、制御プログラム作成部315が、ロボットタイプの入力を受付ける。このロボットタイプは、ロボット制御プログラムを作成する対象となるロボットの種類を示すものであり、作業者TPによって入力される。
【0048】
ステップS70では、第2カメラ220を用いて、ロボット用の第2作業領域WA2を撮影する。ステップS80では、物体認識部311が、第2カメラ220で撮影された画像から、第2作業領域WA2内に存在する第2ワークWK2を認識する。このとき、第2ワークWK2は、第2供給領域SA1内に配置されており、移動作業前の位置にある。
【0049】
ステップS90では、制御プログラム作成部315が、ステップS50で作成された作業記述リストWDLと、ステップS80で認識された第2ワークWKの位置を用いて、ロボットの種類に応じたロボット制御プログラムを作成する。この際、作業前のワークの位置としては、ステップS80で認識された第2ワークWKの位置が使用される。また、作業後のワークの位置としては、作業記述リストWDLに登録されている作業後のワークの位置が使用される。但し、
図1に示した第2供給領域SA2が、第2ワークWK2の位置が不定な状態の領域である場合には、ステップS70,S80を省略し、第2ワークWKの位置を用いることなくロボット制御プログラムを作成するようにしてもよい。この場合は、ロボット制御プログラムは、実際の作業の実行の際に第2カメラ220で認識されたワークをピックするように記述される。また、第2供給領域SA2が、パーツフィーダーのようにピックされる第2ワークWK2が一定の位置に配置される領域である場合にも、ステップS70,S80を省略し、第2ワークWKの位置を用いることなくロボット制御プログラムを作成することが可能である。
【0050】
なお、ロボット制御プログラムでは、作業記述リストWDLに登録されている動作が、ロボットの種類に応じた命令及び表現に変換されている。また、ロボット制御プログラムRPでは位置姿勢がロボット座標系Σrで表現されるので、作業記述リストWDLにおいて基準座標系Σc1で表現された位置姿勢は、座標変換によってロボット座標系Σrに変換される。基準座標系Σc1とロボット座標系Σrの座標変換を行う変換行列は既知である。
【0051】
ロボット制御プログラムを作成するために、各種のロボット用のロボット制御プログラム言語の命令と作業内容の対応表を予め用意してメモリー320に登録しておくようにしてもよい。この場合に、制御プログラム作成部315は、この対応表を参照して、作業記述リストWDLに登録されている動作に対する命令を選択し、作業記述リストWDLに登録されている位置姿勢を引数として与えることによって座標変換を行う、というルールベースの処理を実行することが可能である。
【0052】
図12に示した作業記述リストWDLでは、「把持位置」として複数の指による把持位置が登録されているので、実際に使用するエンドエフェクターがワークを把持する複数の指を有する場合に、それらの指の位置をロボット制御プログラムで記述することが可能である。また、実際に使用するエンドエフェクターが指を有さず、例えばワークを吸着する吸着ハンドである場合には、「把持位置」を用いずに、「アーム先端位置姿勢」を用いてそのエンドエフェクターの位置姿勢を記述することが可能である。これらの例からも理解できるように、本実施形態では、作業記述リストWDLに「アーム先端位置姿勢」や「把持位置」が記述されているので、実際に使用されるロボットやエンドエフェクターに適したロボット制御プログラムを作成することが可能である。
【0053】
以上のように、上記実施形態では、作業者動作が手指の関節の動きを伴う特定手指動作を含む場合に手指位置を認識するので、手指位置を常時認識する場合に比べて処理負荷を軽減できる。また、上記実施形態では、ロボット非依存座標系で作業を記述する作業記述リストWDLを作成し、その後、その作業記述リストWDLからロボットの種類に適したロボット制御プログラムRPを作成するので、複数種類のロボットのいずれかを用いて作業を実行するための制御プログラムを容易に作成できる。但し、作業記述リストWDLを作成せずに、作業者動作の認識結果と、手指位置の認識結果と、ワークの認識結果から、ロボット制御プログラムRPを作成するようにしてもよい。
【0054】
なお、上記実施形態では、ピックアンドプレース作業の例を説明したが、本開示は他の作業にも適用可能である。例えば、Pointing動作を含む塗布作業や、ネジ回し作業、ハンマーによる釘打ち作業、ワークの挿入作業、嵌合作業、組み立て作業、などの各種の作業にも本開示を適用できる。
【0055】
・他の実施形態:
本開示は、上述した実施形態に限られるものではなく、その趣旨を逸脱しない範囲において種々の形態で実現することができる。例えば、本開示は、以下の形態(aspect)によっても実現可能である。以下に記載した各形態中の技術的特徴に対応する上記実施形態中の技術的特徴は、本開示の課題の一部又は全部を解決するために、あるいは、本開示の効果の一部又は全部を達成するために、適宜、差し替えや、組み合わせを行うことが可能である。また、その技術的特徴が本明細書中に必須なものとして説明されていなければ、適宜、削除することが可能である。
【0056】
(1)本開示の第1の形態によれば、ロボットの制御プログラムを作成する処理をプロセッサーに実行させるコンピュータープログラムが提供される。このコンピュータープログラムは、(a)作業者が腕と手指とを用いてワークを操作する作業に含まれる1つ以上の作業者動作を撮像装置で撮影した画像から、前記作業者動作を認識する処理と、(b)前記作業者動作が前記手指の関節の動きを伴う特定手指動作を含む場合に、前記手指を前記撮像装置で撮影した画像から、前記特定手指動作における手指位置を認識する処理と、(c)前記ワークを前記撮像装置で撮像した画像から、前記作業の後における前記ワークの位置を認識する処理と、(d)前記処理(a)で認識された前記作業者動作と、前記処理(b)で認識された前記手指位置と、前記処理(c)で認識された前記ワークの位置とを用いて、前記ロボットの制御プログラムを生成する処理と、を前記プロセッサーに実行させる。
【0057】
(2)上記コンピュータープログラムにおいて、前記特定手指動作は、前記手指による把持動作と、前記手指による解放動作と、前記手指による指差し動作と、のうちの1つ以上を含み、
前記処理(b)は、前記作業者動作が前記特定手指動作を含まない場合には、前記手指位置を認識する処理を行わないものとしてもよい。
このコンピュータープログラムによれば、作業者動作が特定手指動作を含む場合のみに手指位置を認識する処理を行うので、ロボット制御プログラムの作成処理を高速に実行できる。
【0058】
(3)上記コンピュータープログラムにおいて、前記処理(d)は、(i)前記作業者動作と前記手指位置と前記ワークの位置とを用いて、ロボットの種類に依存しないロボット非依存座標系で前記作業を記述する作業記述リストを作成する処理と、(ii)前記制御プログラムにより制御される前記ロボットの種類に応じて、前記作業記述リストを用いて、前記制御プログラムを作成する処理と、を含むものとしてもよい。
このコンピュータープログラムによれば、ロボット非依存座標系で作業を記述する作業記述リストを作成し、その後、その作業記述リストからロボットの種類に適した制御プログラムを作成するので、複数種類のロボットのいずれかを用いて作業を実行するためのロボット制御プログラムを容易に作成できる。
【0059】
(4)上記コンピュータープログラムにおいて、前記撮像装置は、複数のカメラを含み、前記処理(a)において前記作業者動作を認識するために使用する前記画像と、前記処理(b)において前記手指位置を認識するために使用する前記画像は、異なるカメラで撮影された画像であるものとしてもよい。
このコンピュータープログラムによれば、作業者動作を撮影するカメラとは別のカメラを用いて手指位置を撮影するので、手指位置をより正確に認識できる。
【0060】
(5)上記コンピュータープログラムにおいて、前記撮像装置は、複数のカメラを含み、前記処理(a)において前記作業者動作を認識するために使用する前記画像と、前記処理(c)において前記ワークの位置を認識するために使用する前記画像は、異なるカメラで撮影された画像であるものとしてもよい。
このコンピュータープログラムによれば、作業者動作を撮影するカメラとは別のカメラを用いてワークを撮影するので、ワークの位置をより正確に認識できる。
【0061】
(6)上記コンピュータープログラムにおいて、前記撮像装置で撮影した画像は、複数の画像フレームを含み、前記処理(a)は、前記複数の画像フレームの中から第1周期で抽出した第1画像フレーム群を第1ニューラルネットワークに入力して得られた第1処理結果と、前記複数の画像フレームの中から前記第1周期より長い第2周期で抽出した第2画像フレーム群を第2ニューラルネットワークに入力して得られた第2処理結果と、を用いて前記作業者動作を認識する処理であるものとしてもよい。
このコンピュータープログラムによれば、作業者動作をより正確に認識できる。
【0062】
(7)本開示の第2の形態によれば、ロボットの制御プログラムを作成する方法が提供される。この方法は、(a)作業者が腕と手指とを用いてワークを操作する作業に含まれる1つ以上の作業者動作を撮像装置で撮影した画像から、前記作業者動作を認識する工程と、(b)前記作業者動作が前記手指の関節の動きを伴う特定手指動作を含む場合に、前記手指を前記撮像装置で撮影した画像から、前記特定手指動作における手指位置を認識する工程と、(c)前記ワークを前記撮像装置で撮像した画像から、前記作業の後における前記ワークの位置を認識する工程と、(d)前記工程(a)で認識された前記作業者動作と、前記工程(b)で認識された前記手指位置と、前記工程(c)で認識された前記ワークの位置とを用いて、前記ロボットの制御プログラムを生成する工程と、を含む。
この方法によれば、作業者動作が手指の関節の動きを伴う特定手指動作を含む場合に手指位置を認識するので、手指位置を常時認識する場合に比べて処理負荷を軽減できる。
【0063】
(8)本開示の第3の形態によれば、ロボットの制御プログラムを作成する処理を実行するシステムが提供される。このシステムは、プロセッサーを有する情報処理装置と、前記情報処理装置に接続された撮像装置と、を備える。前記プロセッサーは、(a)作業者が腕と手指とを用いてワークを操作する作業に含まれる1つ以上の作業者動作を前記撮像装置で撮影した画像から、前記作業者動作を認識する処理と、(b)前記作業者動作が前記手指の関節の動きを伴う特定手指動作を含む場合に、前記手指を前記撮像装置で撮影した画像から、前記特定手指動作における手指位置を認識する処理と、(c)前記ワークを前記撮像装置で撮像した画像から、前記作業の後における前記ワークの位置を認識する処理と、(d)前記処理(a)で認識された前記作業者動作と、前記処理(b)で認識された前記手指位置と、前記処理(c)で認識された前記ワークの位置とを用いて、前記ロボットの制御プログラムを生成する処理と、を実行する。
このシステムによれば、作業者動作が手指の関節の動きを伴う特定手指動作を含む場合に手指位置を認識するので、手指位置を常時認識する場合に比べて処理負荷を軽減できる。
【0064】
本開示は、上記以外の種々の形態で実現することも可能である。例えば、ロボットとロボット制御装置とを備えたロボットシステム、ロボット制御装置の機能を実現するためのコンピュータープログラム、そのコンピュータープログラムを記録した一時的でない記録媒体(non-transitory storage medium)等の形態で実現することができる。
【符号の説明】
【0065】
100…ロボット、210…第1カメラ(撮像装置)、220…第2カメラ(撮像装置)、230…第3カメラ(撮像装置)、300…情報処理装置、310…プロセッサー、311…物体認識部、312…動作認識部、313…手指位置認識部、314…作業記述リスト作成部、315…制御プログラム作成部、320…メモリー、330…インターフェイス回路、340…入力デバイス、350…表示部