(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024158731
(43)【公開日】2024-11-08
(54)【発明の名称】処理装置、制御システム及びプログラム
(51)【国際特許分類】
B25J 13/00 20060101AFI20241031BHJP
【FI】
B25J13/00 Z
【審査請求】未請求
【請求項の数】11
【出願形態】OL
(21)【出願番号】P 2023074211
(22)【出願日】2023-04-28
(71)【出願人】
【識別番号】000006633
【氏名又は名称】京セラ株式会社
(71)【出願人】
【識別番号】502340996
【氏名又は名称】学校法人法政大学
(74)【代理人】
【識別番号】100088672
【弁理士】
【氏名又は名称】吉竹 英俊
(74)【代理人】
【識別番号】100088845
【弁理士】
【氏名又は名称】有田 貴弘
(74)【代理人】
【識別番号】100156177
【弁理士】
【氏名又は名称】池見 智治
(74)【代理人】
【識別番号】100130166
【弁理士】
【氏名又は名称】田中 宏明
(72)【発明者】
【氏名】鯵坂 志門
(72)【発明者】
【氏名】中村 壮亮
【テーマコード(参考)】
3C707
【Fターム(参考)】
3C707AS01
3C707CS08
3C707HS27
3C707JS03
3C707KS10
3C707KS35
3C707KS36
3C707KT01
3C707KT06
3C707KW05
3C707LV02
(57)【要約】
【課題】互いに協調して作業を行う複数のロボットを適切に制御することを可能にする技術を提供する。
【解決手段】処理装置は取得部及び生成部を備える。取得部は、複数のロボットが互いに協調して行う作業に関する動作指令情報と、複数のロボットのうちの少なくとも一つのロボットに関するロボット情報とを取得する。生成部は、動作指令情報及びロボット情報に基づいて、複数のロボットのうちの少なくとも一つの制御情報を生成する。
【選択図】
図5
【特許請求の範囲】
【請求項1】
複数のロボットが互いに協調して行う作業に関する動作指令情報と、前記複数のロボットのうちの少なくとも一つのロボットに関するロボット情報とを取得する取得部と、
前記動作指令情報及び前記ロボット情報に基づいて、前記複数のロボットの少なくとも一つの制御情報を生成する生成部と
を備える、処理装置。
【請求項2】
請求項1に記載の処理装置であって、
前記複数のロボットは、第1ロボットを有しており、
前記動作指令情報は、前記第1ロボットのみに対する動作指令を示す、処理装置。
【請求項3】
請求項2に記載の処理装置であって、
前記動作指令情報は、前記第1ロボットの操作情報に基づく、処理装置。
【請求項4】
請求項2または請求項3に記載の処理装置であって、
前記動作指令情報は、前記第1ロボットとは異なる場所に配された制御装置から出力される、ユーザの動作を前記第1ロボットに模倣させる情報である、処理装置。
【請求項5】
請求項2または請求項3に記載の処理装置であって、
前記複数のロボットは、前記第1ロボットと異なる仕様または前記第1ロボットと異なる設定の第2ロボットを有している、処理装置。
【請求項6】
請求項1から請求項3のいずれか一つに記載の処理装置であって、
前記ロボット情報は、前記複数のロボットのうちの少なくとも一つのロボットの状態を検出する少なくとも一つのセンサ部での検出結果を含む、処理装置。
【請求項7】
請求項1から請求項3のいずれか一つに記載の処理装置であって、
前記生成部は、
前記動作指令情報及び前記ロボット情報に基づいて、前記複数のロボットの間での処理分担を決定し、
前記処理分担に基づいて、前記複数のロボットのそれぞれについての前記制御情報を個別に生成する、処理装置。
【請求項8】
請求項1から請求項3のいずれか一つに記載の処理装置であって、
前記取得部及び前記生成部は、前記複数のロボットのいずれか一つに設けられている、処理装置。
【請求項9】
請求項1から請求項3のいずれか一つに記載の処理装置であって、
前記複数のロボットと通信する通信部を備え、
前記通信部は、前記複数のロボットの少なくとも一つに前記制御情報を送信する、処理装置。
【請求項10】
請求項1から請求項3のいずれか一つに記載の処理装置と、
前記処理装置に前記動作指令情報を送信する制御装置と
を備える、制御システム。
【請求項11】
コンピュータ装置を、請求項1から請求項3のいずれか一つに記載の処理装置として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、ロボットの制御に関する。
【背景技術】
【0002】
特許文献1には、ロボットを制御する技術が記載されている。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
ロボットの制御については改善の余地がある。
【課題を解決するための手段】
【0005】
処理装置、制御システム及びプログラムが開示される。一の実施の形態では、処理装置は取得部及び生成部を備える。取得部は、複数のロボットが互いに協調して行う作業に関する動作指令情報と、複数のロボットのうちの少なくとも一つのロボットに関するロボット情報とを取得する。生成部は、動作指令情報及びロボット情報に基づいて、複数のロボットの少なくとも一つの制御情報を生成する。
【0006】
また、一の実施の形態では、制御システムは、上記の処理装置と、処理装置に動作指令情報を送信する制御装置とを備える。
【0007】
また、一の実施の形態では、プログラムは、コンピュータ装置を、上記の処理装置として機能させるためのものである。
【発明の効果】
【0008】
互いに協調して作業を行う複数のロボットを適切に制御することが可能となる。
【図面の簡単な説明】
【0009】
【
図2】ロボットシステムの構成の一例を示す概略図である。
【
図6】ロボットシステムの構成の一例を示す概略図である。
【発明を実施するための形態】
【0010】
図1は、ロボットを制御するための制御情報を生成する処理装置1の構成の一例を示す概略図である。
図2は、処理装置1を含むロボットシステム200の構成の一例を示す概略図である。
【0011】
図2に示されるように、ロボットシステム200は、例えば、複数のロボット50と、当該複数のロボット50を制御する制御システム250とを備える。複数のロボット50は、制御システム250によって制御されることによって、互いに協調して作業を行うことができる。
【0012】
制御システム250は、例えば、処理装置1及び制御装置10を備える。制御装置10は、例えば、複数のロボット50に対して遠隔地に位置する。一方で、処理装置1は、複数のロボット50に対して近接地に位置する。制御装置10と処理装置1とは、例えば、インターネット等を含むネットワーク80を通じて互いに通信することが可能である。制御装置10と各ロボット50とは、例えば、ネットワーク80を通じて互いに通信することが可能である。処理装置1は、例えば、各ロボット50とネットワーク80を介さずに直接的に通信することができる。処理装置1とロボット50との間の通信遅延は、例えば、制御装置10とロボット50との間の通信遅延よりも短くなっている。以後、複数のロボット50をまとめてロボット群と呼ぶことがある。
【0013】
制御装置10とロボット群とは、例えば、互いに異なる場所に配されている。具体的には、制御装置10とロボット群は、互いに異なる建物に配されてもよいし、柵などよって仕切られた互いに異なる空間に配されていてもよい。また、制御装置10及びロボット群の一方は屋内に配され、制御装置10及びロボット群の他方は屋外に配されていてもよい。また、制御装置10が安全エリアに配されており、ロボット群が危険エリアに配されていてもよい。
【0014】
制御装置10は、複数のロボット50が互いに協調して行う作業に関する動作指令情報を生成する。動作指令情報は、少なくとも一つのロボット50に対する動作指令を示す。制御装置10は、生成した動作指令情報を処理装置1に送信する。制御装置10は、少なくとも一つのロボット50についての動作指令情報を処理装置1に送信することによって、処理装置1を通じて、当該少なくとも一つのロボット50を制御することができる。
【0015】
本実施形態では、複数のロボット50は、第1ロボットを有する。制御装置10は、第1ロボットに対する動作指令を生成する。制御装置10は、複数のロボット50のうち、動作指令を生成する第1ロボットを変更してもよい。すなわち、例えば、ユーザが制御装置10を介してロボット50を直接操作することによって動作指令を生成する場合、操作対象となるロボット50は、切り替え可能であってもよい。この場合、複数のロボット50のうち、切り替え後の操作対象のロボット50が第1ロボットになる。なお、複数のロボット50は、1つの第1ロボットを有してもよい。具体的には、複数のロボット50が同時にユーザの直接の操作対象にはならず、ユーザが直接の操作対象とできるのは、1つのロボット50であってもよい。以後、単に作業といえば、複数のロボット50が互いに協調して行う作業を意味する。
【0016】
処理装置1は、少なくとも一つのロボット50についての動作指令情報から、各ロボット50についての制御情報を個別に生成する。そして、処理装置1は、各ロボット50に対して、当該ロボット50に応じた制御情報(つまり当該ロボット50を制御するための制御情報)を送信する。複数のロボット50が、処理装置1からの制御情報に基づいて動作を行うことによって、複数のロボット50が互いに協調して作業を行うことができる。例えば、複数のロボット50は、互いに異なる動作を行ないながら、作業の対象となる物体(作業対象物ともいう)を互いに協調して保持して所定位置まで運ぶ作業を行う。なお、作業の内容はこの限りではない。
【0017】
本実施形態では、複数のロボット50が第1ロボット及び第2ロボットを有する場合、処理装置1は、第1ロボットの第1制御情報と、第2ロボットの第2制御情報を生成することができる。第1制御情報は第1ロボットへ送信されて、第2制御情報は第2ロボットへ送信される。第1ロボットは第1制御情報にしたがって動作し、第2ロボットは第2制御情報にしたがって動作することで、第1ロボットと第2ロボットは、協調作業を実行することができる。
【0018】
<処理装置の構成例>
図1に示されるように、処理装置1は、例えば、制御部2と、記憶部3と、通信部4と、通信部5とを備える。通信部4は、例えばネットワーク80に接続されており、ネットワーク80を通じて制御装置10と通信することが可能である。制御部2は、通信部4及びネットワーク80を通じて制御装置10から動作指令情報を取得することができる。制御部2は、取得した動作指令情報に基づいて各ロボット50の制御情報を生成する。通信部4は、例えば、通信回路、インタフェース、あるいはインタフェース回路ともいえる。通信部4は、ネットワーク80と有線通信を行ってもよいし、無線通信を行ってもよい。
【0019】
通信部5は、例えば、各ロボット50と直接的に通信することが可能である。通信部5は、制御部2で生成される、複数のロボット50にそれぞれ応じた複数の制御情報を、複数のロボット50にそれぞれ送信する。通信部5は、例えば、通信回路、インタフェースあるいはインタフェース回路ともいえる。通信部5は、各ロボット50と有線通信を行ってもよいし、無線通信を行ってもよい。
【0020】
制御部2は、処理装置1の他の構成要素を制御することによって、処理装置1の動作を統括的に管理することが可能である。制御部2は、例えば制御回路ともいえる。制御部2は、以下にさらに詳細に述べられるように、種々の機能を実行するための制御及び処理能力を提供するために、少なくとも一つのプロセッサを含む。
【0021】
種々の実施形態によれば、少なくとも一つのプロセッサは、単一の集積回路(IC)として、または複数の通信可能に接続された集積回路IC及び/またはディスクリート回路(discrete circuits)として実行されてもよい。少なくとも一つのプロセッサは、種々の既知の技術に従って実行されることが可能である。
【0022】
1つの実施形態において、プロセッサは、例えば、関連するメモリに記憶された指示を実行することによって1以上のデータ計算手続又は処理を実行するように構成された1以上の回路又はユニットを含む。他の実施形態において、プロセッサは、1以上のデータ計算手続き又は処理を実行するように構成されたファームウェア(例えば、ディスクリートロジックコンポーネント)であってもよい。
【0023】
種々の実施形態によれば、プロセッサは、1以上のプロセッサ、コントローラ、マイクロプロセッサ、マイクロコントローラ、特定用途向け集積回路(ASIC)、デジタル信号処理装置、プログラマブルロジックデバイス、フィールドプログラマブルゲートアレイ、またはこれらのデバイス若しくは構成の任意の組み合わせ、又は他の既知のデバイス及び構成の組み合わせを含み、以下に説明される機能を実行してもよい。
【0024】
制御部2は、例えば、プロセッサとしてのCPU(Central Processing Unit)を備えてもよい。記憶部3は、ROM(Read Only Memory)及びRAM(Random Access Memory)などの、制御部2のCPUが読み取り可能な非一時的な記録媒体を含んでもよい。記憶部3には、例えば、処理装置1を制御するためのプログラム30が記憶されている。制御部2の各種機能は、例えば、制御部2のCPUが記憶部3内のプログラム30を実行することによって実現される。
【0025】
なお、制御部2の構成は上記の例に限られない。例えば、制御部2は、複数のCPUを備えてもよい。また制御部2は、少なくとも一つのDSP(Digital Signal Processor)を備えてもよい。また、制御部2のすべての機能あるいは制御部2の一部の機能は、その機能の実現にソフトウェアが不要なハードウェア回路によって実現されてもよい。また、記憶部3は、ROM及びRAM以外の、コンピュータが読み取り可能な非一時的な記録媒体を備えてもよい。記憶部3は、例えば、小型のハードディスクドライブ及びSSD(Solid State Drive)などを備えてもよい。
【0026】
<ロボットの構成例>
図3は各ロボット50の構成例を示す概略図である。ロボット50は、ロボット機構52と、ロボット機構52を制御するロボットコントローラ51と備える。また、ロボット50は、ロボット50の状態を検出するセンサ部53と、ロボット50の周囲を撮影するカメラ54とを備える。
【0027】
ロボットコントローラ51(単にコントローラ51ともいう)は例えばコンピュータ装置である。コントローラ51は、例えば、制御部2と同様の制御部と、記憶部3と同様の記憶部と、通信部4と同様の第1通信部と、通信部5と同様の第2通信部とを備えていればよい。第1通信部は、ネットワーク80を通じて制御装置10と通信可能である。第2通信部は処理装置1の通信部5と通信可能である。
【0028】
ロボット機構52は、例えば、人体の少なくとも一部を模った人型ロボット機構であってもよいし、単腕あるいは双腕を有するアーム型ロボット機構であってもよい。また、ロボット機構52は、位置が固定されていてもよいし、移動可能であってもよい。
【0029】
複数のロボット50のロボット機構52は互いに協調して作業を行うことができる。複数のロボット50の構造は、互いに異なっていてもよいし、互いに同じであってもよい。例えば、ロボットシステム200が備える複数のロボット50のロボット機構52には、互いに異なる構造を有する複数のロボット機構52が含まれてもよいし、互いに同じ構造を有するロボット機構52が含まれてもよい。また、複数のロボット50の仕様又は設定は、互いに異なっていてもよいし、互いに同じであってもよい。例えば、ロボットシステム200が備える複数のロボット50のロボット機構52には、互いに異なる仕様又は設定を有する複数のロボット機構52が含まれてもよいし、互いに同じ仕様又は設定を有するロボット機構52が含まれてもよい。また、複数のロボット50は、互いに同じ構造を有する場合であっても互いに異なる仕様又は設定を有してもよい。例えば、互いに同じ型ではあるものの互いに制御方法が異なる2つのロボット50を考える。この場合、一方のロボット50はユーザの動作に倣って動作するロボットであり、他方のロボット50は自立制御のロボットであってもよい。
【0030】
ロボット機構52は、当該ロボット機構52が備える少なくとも一つの可動部を駆動する少なくとも一つのモータ520を備える。ロボットコントローラ51は、ロボット機構52が備える少なくとも一つのモータ520を制御することによって、ロボット機構52の動作を制御することができる。
【0031】
カメラ54は、例えばカラーカメラ又は赤外線カメラである。カメラ54は、ロボット機構52の周囲を撮影してカメラ画像を生成する。カメラ画像は例えば動画像である。カメラ54で生成されたカメラ画像はコントローラ51に入力される。コントローラ51は、ネットワーク80を通じて入力されたカメラ画像を制御装置10に送信する。なお、カメラ54は、被写体までの距離を把握可能なようにLiDAR(Light Detection And Ranging)などのセンシング機構を有していてもよいし、デプスカメラなどであってもよい。
【0032】
センサ部53は、ロボット50の状態、詳細にはロボット機構52の状態を検出することができる。センサ部53は、例えば、エンコーダ、トルクセンサ、電圧センサ、電流センサ及び温度センサなどを備える。エンコーダはモータ520の回転数を検出する。トルクセンサは、モータ520にかかるトルクを検出する。電圧センサは、モータ520の電源電圧(言い換えれば駆動電圧)を検出する。電流センサは、モータ520に流れる電流を検出する。温度センサは、モータ520の温度を検出する。また、センサ部53は、ロボット50の周囲環境を把握可能なセンサを有していてもよい。具体的には、センサ部53は、周囲の障害物又は異変などを検知できる光学式センサ又はガスセンサなどを有していてもよい。なお、周囲環境を把握可能なセンサによって取得された検出結果は必ずしもユーザに対して可視化される必要はない。
【0033】
以後、エンコーダで検出された回転数を検出回転数と呼ぶ。また、トルクセンサで検出されたトルクを検出トルクと呼ぶ。また、電圧センサで検出された電源電圧を検出電源電圧と呼ぶ。また、電流センサで検出された電流を検出電流と呼ぶ。また、温度センサで検出された温度を検出温度と呼ぶ。
【0034】
センサ部53は、ロボット50の状態の検出結果を、センサ検出情報としてコントローラ51に出力する。センサ検出情報には、例えば、検出回転数、検出トルク、検出電源電圧、検出電流及び検出温度が含まれる。
【0035】
コントローラ51は、自身が属するロボット50に関する情報である個別ロボット情報510(後述の
図5参照)を生成して処理装置1に送信する。複数のロボット50がそれぞれ送信する複数の個別ロボット情報510は、複数のロボット50に関するロボット情報500を構成する。以後、ロボット情報500を全体ロボット情報500と呼ぶことがある。処理装置1では、制御部2が、複数のロボット50からの個別ロボット情報510を全体ロボット情報500として記憶部3に記憶する。
【0036】
個別ロボット情報510には、例えば、ロボット50の性能を示す性能情報が含まれる。性能情報には、例えば、ロボット50が仕様上動くことができる最大の範囲(仕様上の最大可動範囲)が含まれる。また、性能情報には、モータ520の仕様上の最高回転数が含まれる。また、性能情報には、モータ520の仕様上の最大トルクが含まれる。また、性能情報には、モータ520の仕様上の応答速度が含まれる。性能情報は、ロボット50の状態及び周囲環境に応じて変化しない。
【0037】
また、個別ロボット情報510には、ロボット50のセンサ部53で得られるセンサ検出情報が含まれる。また、個別ロボット情報510には、ロボット50の作業対象物の位置情報が含まれる。センサ検出情報は、ロボット50の状態を示す情報である。ロボット50の状態を示す情報は、例えば、ロボット50の各部位の位置情報又は稼働状況などである。また、ロボット50の状態は、当該ロボット50が保持する作業対象物の位置に応じて変化する。したがって、センサ検出情報及び作業対象物の位置情報は、ロボット50の状態を特定するための状態特定情報であるといえる。状態特定情報はロボット50の状態に応じて変化する。
【0038】
また、個別ロボット情報510には、ロボット50が、周囲の障害物と干渉せずに動くことができる最大の範囲(障害物非干渉最大可動範囲ともいう)が含まれる。コントローラ51は、例えば、仕様上の最大可動範囲と、カメラ54で生成されるカメラ画像とに基づいて、障害物非干渉最大可動範囲を特定することができる。障害物非干渉最大可動範囲は、ロボット50の周囲環境に応じて、具体的にはロボット50の周囲の障害物の位置及び範囲に応じて変化する。したがって、障害物非干渉最大可動範囲は、ロボット50の周囲環境を特定するための周囲環境特定情報であるといえる。周囲環境特定情報はロボット50の周囲環境に応じて変化する。
【0039】
また、個別ロボット情報510には、ロボット50の設定情報も含まれてもよい。例えば、ユーザによって操作される第1ロボットと第1ロボットに協調して動作する第2ロボットがある場合、第1ロボットがメインロボットになり第2ロボットがサブロボットになるため、第1ロボット及び第2ロボットには主従関係の設定がされている。この場合、メインロボットの個別ロボット情報510には、メインロボットであることを示す設定情報が含まれ、サブロボットの個別ロボット情報510には、サブロボットであることを示す設定情報が含まれてもよい。
【0040】
<制御装置の構成例>
図4は制御装置10の構成の一例を示すブロック図である。制御装置10は、例えば、ユーザの動きを検出し、検出したユーザの動きを一のロボット50に模倣させることができる。ユーザは、制御装置10を通じて、一のロボット50を操作することができる。ユーザは、制御装置10を通じて、当該ユーザの動きを一のロボット50に摸倣させることができる。本実施形態において、制御装置10がユーザの動きを模倣させる対象のロボット50は第1ロボットである、なお、本開示において、第1ロボットをスレーブロボット50と呼ぶことがある。スレーブロボット50にユーザの動きを模倣させる制御装置10は例えばマスタ装置10ともいえる。マスタ装置10は、例えば、スレーブロボット50に相当する機構を有しており、ユーザが当該機構を操作することによって、スレーブロボット50にユーザの動きを模倣させることができる。
【0041】
図4に示されるように、制御装置10は、例えば、制御部12、記憶部13、通信部14、センサ部15及び表示部16を備える。通信部14は、ネットワーク80に接続されている。通信部14は、ネットワーク80を通じて処理装置1の通信部4と通信することが可能である。また、通信部14は、ネットワーク80を通じて各ロボット50のコントローラ51と通信することが可能である。通信部14は、例えば、通信回路、インタフェース、あるいはインタフェース回路ともいえる。通信部14は、ネットワーク80と有線通信を行ってもよいし、無線通信を行ってもよい。
【0042】
制御部12は、制御装置10の他の構成要素を制御することによって、制御装置10の動作を統括的に管理することが可能である。制御部12は、例えば制御回路ともいえる。制御部12は、以下にさらに詳細に述べられるように、種々の機能を実行するための制御及び処理能力を提供するために、少なくとも一つのプロセッサを含む。処理装置1の制御部2が備えるプロセッサについての上記の説明は、制御部12が備えるプロセッサについても適用することができる。
【0043】
制御部12は、例えば、プロセッサとしてのCPUを備えてもよい。記憶部13は、ROM及びRAMなどの、制御部12のCPUが読み取り可能な非一時的な記録媒体を含んでもよい。記憶部13には、例えば、制御装置10を制御するためのプログラム130が記憶されている。制御部12の各種機能は、例えば、制御部12のCPUが記憶部13内のプログラム130を実行することによって実現される。
【0044】
なお、制御部12の構成は上記の例に限られない。例えば、制御部12は、複数のCPUを備えてもよい。また制御部12は、少なくとも一つのDSPを備えてもよい。また、制御部12のすべての機能あるいは制御部12の一部の機能は、その機能の実現にソフトウェアが不要なハードウェア回路によって実現されてもよい。また、記憶部13は、記憶部3と同様に、ROM及びRAM以外の、コンピュータが読み取り可能な非一時的な記録媒体を備えてもよい。
【0045】
表示部16は、制御部12による制御によって、各種情報を表示することが可能である。表示部16は、例えば、液晶ディスプレイであってもよいし、有機EL(electro-luminescence)ディスプレイであってもよいし、プラズマディスプレイであってもよい。制御部12は、通信部14がロボット50から受信するカメラ画像を表示部16に表示させることができる。ロボット50が生成したカメラ画像が表示部16に表示されることによって、制御装置10のユーザは、当該ロボット50の周囲の様子を確認することができる。
【0046】
センサ部15は、ユーザの動きを検出することができる。センサ部15は、例えば、少なくとも一つのモーションセンサを備える。モーションセンサは、例えば、3軸加速度センサと、3軸ジャイロセンサと、3軸地磁気センサとを有する。センサ部15はユーザの体に取り付けられる。センサ部15での検出結果は制御部12に入力される。なお、センサ部15は、例えばカメラを有してもよい。この場合、センサ部15は、例えば、カメラで得られるカメラ画像を使用する光学式モーションキャプチャ技術に基づいてユーザの動きを検出してもよい。また、センサ部15は、ポテンションメータを有し、当該ポテンショメータを使用してユーザの動きを検出してもよい。
【0047】
ユーザは、例えば、表示部16に表示される、スレーブロボット50からのカメラ画像を確認することによって、スレーブロボット50の周囲の様子を確認することができる。ユーザは、例えば、スレーブロボット50の周囲の様子を確認しながら、スレーブロボット50に模倣させる動きを行う。ユーザは、例えば、表示部16に表示されるカメラ画像に基づいて、スレーブロボット50の周囲に障害物が存在することを確認した場合、当該障害物に対してスレーブロボット50が干渉しないように、スレーブロボット50に模倣させる動きを行う。
【0048】
制御部12は、例えば、センサ部15での検出結果に基づいて、スレーブロボット50に対する動作指令を示す動作指令情報100(後述の
図5参照)を生成する。動作指令情報100は、例えば、ユーザの動作をスレーブロボット50(言い換えれば第1ロボット)に模倣させる情報であるといえる。
【0049】
本例では、制御装置10を通じてスレーブロボット50を操作するユーザの動きを検出するセンサ部15での検出結果は、ユーザのスレーブロボット50に対する操作を示す操作情報であると見ることができる。制御部12は、センサ部15を通じてユーザのスレーブロボット50への操作情報を取得して、取得した操作情報に基づいて動作指令情報100を生成する。動作指令情報100は、例えば、第1ロボットの操作情報に基づく情報であるといえる。
【0050】
制御部12が生成する動作指令情報100には、例えば、作業対象物の移動先の位置情報と、スレーブロボット50のモータ520の設定トルクとが含まれる。制御部12は、スレーブロボット50がユーザの動きを模倣するように動作指令情報100を順次生成する。制御部12で生成された動作指令情報100は、後述するように、処理装置1で修正された後に、スレーブロボット50に入力される。
【0051】
図5は、処理装置1の記憶部3が記憶する情報の一例と、処理装置1の制御部2が備える機能ブロックの一例とを示す概略図である。制御装置10の制御部12で生成された動作指令情報100は、通信部14から処理装置1に送信される。処理装置1では、制御部2が、通信部4が受信した動作指令情報100を記憶部3に記憶する。また、制御部2は、通信部5が受信した複数の個別ロボット情報510を全体ロボット情報500として記憶部3に記憶する。
【0052】
制御部2は、例えば取得部20及び生成部21を備える。取得部20及び生成部21は、制御部2のCPUが記憶部3内のプログラム30を実行することによって、制御部2に形成される機能ブロックである。なお、取得部20のすべての機能あるいは取得部20の一部の機能は、その機能の実現にソフトウェアが不要なハードウェア回路によって実現されてもよい。生成部21についても同様である。
【0053】
取得部20は、記憶部3から、動作指令情報100及び全体ロボット情報500を取得する。生成部21は、取得部20が取得した動作指令情報100及び全体ロボット情報500に基づいて、各ロボット50の制御情報を個別に生成する。
【0054】
生成部21は、例えば、動作指令情報100を全体ロボット情報500に基づいて修正し、修正後の動作指令情報を、スレーブロボット50(言い換えれば第1ロボット)に対する制御情報とする。例えば、生成部21は、動作指令情報100を、少なくとも第1ロボットの個別ロボット情報510(第1個別ロボット情報510ともいう)に基づいて修正し、修正後の動作指令情報を、第1ロボットに対する第1制御情報としてもよい。
【0055】
また、生成部21は、動作指令情報100と全体ロボット情報500とに基づいて、スレーブロボット50以外のロボット50(スレーブ外ロボット50ともいう)の制御情報を生成する。この制御情報は、例えば、スレーブ外ロボット50の動作指令を示す動作指令情報であるともいえる。スレーブ外ロボット50は第2ロボットである。例えば、生成部21は、動作指令情報100と、少なくとも第2ロボットの個別ロボット情報510(第2個別ロボット情報510ともいう)とに基づいて、第2ロボットの第2制御情報を生成してもよい。
【0056】
なお、第1ロボットの第1制御情報は、第1個別ロボット情報510及び第2個別ロボット情報510を含む情報に基づいて生成されてもよい。また、第2ロボットの第2制御情報は、第1個別ロボット情報510及び第2個別ロボット情報510を含む情報に基づいて生成されてもよい。
【0057】
生成部21で生成された、スレーブロボット50に対する制御情報は、通信部5からスレーブロボット50に送信される。スレーブロボット50は、処理装置1からの制御情報(つまり、修正後の動作指令情報)に従って動作する。また、生成部21で生成された、スレーブ外ロボット50に対する制御情報は、通信部5から当該スレーブ外ロボット50に送信される。スレーブ外ロボット50は、処理装置1からの制御情報に従って動作する。
【0058】
このように、本例では、スレーブロボット50は、制御装置10で生成された動作指令情報をそのまま使用するのではなく、複数のロボット50に関するロボット情報500に基づいて修正された動作指令情報に従って動作する。これにより、スレーブロボット50は、ユーザの動きを模倣しつつも、スレーブロボット50及びスレーブ外ロボット50の性能、状態及び周囲環境によっては、ユーザの動きとは少し違う動きを行うことができる。
【0059】
また、本例では、スレーブ外ロボット50に対する制御情報が、スレーブロボット50の動作指令を示す動作指令情報と、複数のロボット50に関するロボット情報500とに基づいて生成されていることから、スレーブ外ロボット50は、スレーブロボット50の動作に合わせて適切に作業を行うことができる。よって、複数のロボット50は、互いに協調して作業を適切に行うことができる。
【0060】
例えば、本例とは異なり、スレーブロボット50が、制御装置10で生成された動作指令情報をそのまま使用してユーザの動きを単純に模倣し、スレーブ外ロボット50が制御装置10及び処理装置1から制御情報を受け取らずにスレーブロボット50の動きに合わせて自律的に動作を行う場合を考える。この場合、例えば、各ロボット50の性能、状態及び周囲環境によっては、複数のロボット50が適切に作業を行えない可能性がある。
【0061】
例えば、スレーブロボット50及びスレーブ外ロボット50の少なくとも一方のモータ520の仕様上の最高回転数が小さい場合には、当該モータ520の回転数が作業中に仕様上の最高回転数に達して複数のロボット50が作業対象物に対して適切に作業を行えない可能性がある。また、スレーブロボット50及びスレーブ外ロボット50の少なくとも一方のモータ520の仕様上の最大トルクが小さい場合には、当該モータ520にかかるトルクが仕様上の最大トルクに達して複数のロボット50が作業対象物に対して適切に作業を行えない可能性がある。
【0062】
また、スレーブロボット50及びスレーブ外ロボット50の少なくとも一方のモータ520の応答速度が遅い場合には、複数のロボット50が作業対象物に対して適切に作業を行えない可能性がある。また、作業対象物の移動先によっては、スレーブロボット50及びスレーブ外ロボット50の少なくとも一方のロボット50の移動先の位置が仕様上の最大可動範囲を超えてしまい、複数のロボット50が作業対象物に対して適切に作業を行えない可能性がある。また、スレーブロボット50及びスレーブ外ロボット50の少なくとも一方に異常が発生して、複数のロボット50が作業対象物に対して適切に作業を行えない可能性がある。
【0063】
また、作業中において、スレーブロボット50、スレーブ外ロボット50及び作業対象物の少なくとも一つが障害物に干渉して、複数のロボット50が作業対象物に対して適切に作業を行えない可能性がある。本例では、ユーザは、表示部16に表示されるカメラ画像に基づいてスレーブロボット50の周囲を確認することができるものの、カメラ54の死角に障害物が存在する場合には、ユーザは、スレーブロボット50の周囲の障害物に気が付かないことがある。また、スレーブロボット50と制御装置10との間の通信遅延が大きい場合、実際にはスレーブロボット50の周囲に障害物が存在するものの、表示部16に表示されるカメラ画像には障害物が写っていないことがある。この場合、ユーザはスレーブロボット50の周囲の障害物に気が付かないことがある。そのため、ユーザは、スレーブロボット50の周囲の障害物に気が付かずにスレーブロボット50を動作させることがあり、その結果、スレーブロボット50が障害物に干渉する可能性がある。
【0064】
本例では、処理装置1が、動作指令情報及び全体ロボット情報500に基づいて各ロボット50の制御情報を生成していることから、例えば、各ロボット50の性能、状態及び周囲環境に応じて各ロボット50の制御情報を生成することができる。よって、処理装置1は、各ロボット50の性能、状態及び周囲環境に応じて各ロボット50を制御して、複数のロボット50に作業を適切に行われることができる。例えば、あるロボット50の元々の性能が低い場合に、あるいは、あるロボット50の性能が当該あるロボット50の状態及び周囲環境の少なくとも一方によって低下した場合に、処理装置1は、当該あるロボット50以外のロボット50にかかる負荷を大きくすることによって、複数のロボット50に作業を適切に行わせることができる。
【0065】
本例では、全体ロボット情報500には、各ロボット50に関して、例えば、モータ520の仕様上の最高回転数と、モータ520の検出回転数(言い換えればモータ520の現在の回転数)とが含まれる。このため、処理装置1は、作業中の各ロボット50のモータ520の回転数が過大とならないように各ロボット50の制御情報を生成することができる。よって、複数のロボット50は、互いに協調して作業を適切に行うことができる。
【0066】
また、全体ロボット情報500には、各ロボット50に関して、モータ520の仕様上の最大トルクと、モータ520の検出トルク(言い換えればモータ520の現在のトルク)と、モータ520の実際の最大トルクに影響を与える、モータ520の検出回転数、検出電源電圧及び検出温度とが含まれる。このため、処理装置1は、作業中の各ロボット50のトルクが過大とならないように各ロボット50の制御情報を生成することができる。
【0067】
また、本例では、全体ロボット情報500には、各ロボット50に関して、モータ520の仕様上の応答速度が含まれていることから、処理装置1は、各ロボット50のモータ520の仕様上の応答速度を考慮して各ロボット50の制御情報を生成することができる。よって、複数のロボット50は、互いに協調して作業を適切に行うことができる。
【0068】
また、本例では、全体ロボット情報500には、各ロボット50についての仕様上の最大可動範囲と、複数のロボット50が保持する作業対象物の位置情報とが含まれることから、処理装置1は、各ロボット50を仕様上の最大可動範囲内で動作させつつ作業を適切に実行させることができる。
【0069】
また、本例では、全体ロボット情報500には、各ロボット50についての障害物非干渉最大可動範囲と、複数のロボット50が保持する作業対象物の位置情報とが含まれることから、処理装置1は、各ロボット50及び作業対象物が障害物と干渉しないように各ロボット50の制御情報を生成することができる。例えば、ユーザがスレーブロボット50の周囲の障害物に気が付かずにスレーブロボット50を動作させたとしても、処理装置1は、ユーザの動きよりもスレーブロボット50の動きが小さくなるように各ロボット50の動きを制御して、スレーブロボット50が障害物に干渉しないようにすることができる。
【0070】
また、本例では、全体ロボット情報500には、各ロボット50に関して、モータ520の検出電流(言い換えればモータ520の現在の電流)が含まれている。これにより、処理装置1は、あるロボット50に異常が発生して当該あるロボット50のモータ520の電流が異常となった場合であっても、異常が発生しているロボット50とは別のロボット50を適切に制御して、結果として、複数のロボット50に作業を適切に実行させることができる。
【0071】
なお、全体ロボット情報500には、各ロボット50の位置情報が含まれていてもよい。ロボット50の位置情報は、ロボット50全体の位置を示す位置情報である。これにより、各ロボット50が互いに適切な位置関係を保つことができる。具体的には、例えば、2台のロボット50で作業対象物を保持する場合に、一方のロボット50に対向する位置に他方のロボット50が位置するように2台のロボット50を制御することができ、効果的に作業対象物を保持することができる。
【0072】
また、全体ロボット情報500には、各ロボット50のエンドエフェクタ57の位置情報が含まれていてもよい。これにより、例えば、2台のロボット50で作業対象物を保持する場合に、保持位置を適切な位置に設定することができる。具体的には、例えば、各ロボット50の作業を上面視した場合に、作業対象物と各ロボット50のエンドエフェクタ57とが接触する範囲において、エンドエフェクタ57同士の距離が最大となる位置になるようロボット50を制御することができ、効果的に作業対象物を保持することができる。
【0073】
<ロボットシステムの動作例>
以下にロボットシステム200の詳細な動作例について説明する。ここでは、
図6に示される2つのロボット50a及び50bを備えるロボットシステム200の動作例について説明する。
【0074】
図6の例では、ロボット50aはスレーブロボット50であって、ロボット50bはスレーブ外ロボット50である。以後、ロボット50aをスレーブロボット50aと呼び、ロボット50bをスレーブ外ロボット50bと呼ぶ。
【0075】
スレーブロボット50a及びスレーブ外ロボット50bのそれぞれは、例えば、移動式のアーム型のロボット機構52を備える。ロボット機構52は、例えば、移動部55と、移動部55に取り付けられたアーム56と、アーム56の先端に取り付けられたエンドエフェクタ57とを備える。エンドエフェクタ57はハンドとも呼ばれる。移動部55が移動することによって、ロボット機構52全体が移動する。移動部55には、移動部55を移動させるためのモータ520が設けられている。
【0076】
図6の例では、スレーブロボット50aのエンドエフェクタ57(エンドエフェクタ57aともいう)と、スレーブ外ロボット50bのエンドエフェクタ57(エンドエフェクタ57bともいう)とが、作業対象物90を互いに協調して作業対象物90を保持する。より具体的には、エンドエフェクタ57aとエンドエフェクタ57bとが、作業対象物90を互いに反対側から挟み込んで作業対象物90を保持する。そして、作業対象物90を保持するスレーブロボット50a及びスレーブ外ロボット50bの移動部55が移動することによって、作業対象物90が移動して所定の場所に搬送される。
【0077】
図6の例では、各移動部55は、同一直線上を移動することができる。例えば、各移動部55は、
図6の左右方向に移動することができる。スレーブロボット50aとスレーブ外ロボット50bが作業対象物90を挟み込んでいる場合、エンドエフェクタ57aとエンドエフェクタ57bとの間の距離に応じて、スレーブロボット50a及びスレーブ外ロボット50bの作業対象物90の保持力が変化する。エンドエフェクタ57aとエンドエフェクタ57bとの間の距離は、スレーブロボット50aの移動部55及びスレーブ外ロボット50bの移動部55の少なくとも一方が移動することによって変化する。以後、エンドエフェクタ57aとエンドエフェクタ57bとの間の距離をエンドエフェクタ間距離と呼ぶことがある。
【0078】
本例では、スレーブロボット50a及びスレーブ外ロボット50bの作業対象物90の保持力に応じて、各移動部55が有するモータ520のトルクが変化する。エンドエフェクタ間距離が小さくなると、スレーブロボット50a及びスレーブ外ロボット50bの作業対象物90の保持力が大きくなって各モータ520のトルクは大きくなる。一方で、エンドエフェクタ間距離が大きくなると、スレーブロボット50a及びスレーブ外ロボット50bの作業対象物90の保持力が小さくなって各モータ520のトルクは小さくなる。本例では、エンドエフェクタ57a及びエンドエフェクタ57bが、作業対象物90を互いに反対側から挟み込んでいることから、スレーブロボット50aのモータ520のトルクと、スレーブ外ロボット50bのモータ520のトルクとは概ね同じとなる。以後、単に作業対象物90の保持力といえば、スレーブロボット50a及びスレーブ外ロボット50bの作業対象物90の保持力を意味する。
【0079】
ユーザは、例えば、片方の手を一方向に沿って移動させることによって、スレーブロボット50aを一方向に沿って移動させることができる。制御装置10の制御部12は、ユーザの動きを検出するセンサ部15での検出結果に基づいて、スレーブロボット50aがスレーブ外ロボット50bとともに保持する作業対象物90の移動先の位置を示す移動先位置情報101(後述の
図7参照)を生成する。そして、制御部12は、移動先位置情報101と、スレーブロボット50aのモータ520の設定トルク102(後述の
図7参照)とを含む動作指令情報100を生成する。スレーブロボット50aの位置は、移動先位置情報101が示す位置に応じて変化する。したがって、エンドエフェクタ57aの位置は、移動先位置情報101が示す位置に応じて変化する。また、スレーブロボット50aのモータ520の設定トルク102に応じて、作業対象物90の保持力が変化する。制御部12は、作業対象物90の保持力が適切になるような、スレーブロボット50aのモータ520の設定トルク102を決定する。制御部12で生成された動作指令情報100は処理装置1に入力される。
【0080】
本例では、作業対象物90の位置は、
図6に示されるように、移動部55の移動方向に沿って設定されたX軸上のプラス側のX座標で表される。X座標の単位は例えばmm(ミリメートル)である、作業対象物90の位置は、例えばプラスの値で表される。スレーブロボット50a及びスレーブ外ロボット50bはX軸に沿って移動することが可能である。スレーブロボット50aは、スレーブ外ロボット50bに対してX軸のプラス側に位置し、スレーブ外ロボット50bはスレーブロボット50aに対してX軸のマイナス側に位置する。エンドエフェクタ57aはX軸のプラス側から作業対象物90に接触し、エンドエフェクタ57bはX軸のマイナス側から作業対象物90に接触する。作業対象物90の保持力を大きくする場合には、例えば、スレーブロボット50aがX軸のマイナス側に移動し、スレーブ外ロボット50bがX軸のプラス側に移動する。
【0081】
図7は生成部21の構成の一例を示す概略図である。生成部21は、例えば、調整量決定部210と、分担決定部220と、第1生成部230aと、第2生成部230bとを備える。調整量決定部210、分担決定部220、第1生成部230a及び第2生成部230bは、制御部2のCPUが記憶部3内のプログラム30を実行することによって、制御部2に形成される機能ブロックである。なお、調整量決定部210のすべての機能あるいは調整量決定部210の一部の機能は、その機能の実現にソフトウェアが不要なハードウェア回路によって実現されてもよい。分担決定部220、第1生成部230a及び第2生成部230bについても同様である。
【0082】
本例では、処理装置1は、作業対象物90の保持力が、動作指令情報100に含まれる設定トルク102に応じた適切な値となるように、エンドエフェクタ間距離を調整する調整処理を行う。調整量決定部210は、設定トルク102と、全体ロボット情報500に含まれるスレーブロボット50a及びスレーブ外ロボット50bの検出トルク511とに基づいて、エンドエフェクタ間距離の調整量αを決定する。調整量決定部210は、作業対象物90の保持力が、設定トルク102に応じた適切な値となるように、エンドエフェクタ間距離を現在の値からどの程度変化させるかを決定するといえる。処理装置1は、エンドエフェクタ間距離を調整量αだけ調整しつつ、作業対象物90が動作指令情報100に含まれる移動先位置情報101が示す位置まで移動するように、スレーブロボット50a及びスレーブ外ロボット50bの位置を制御する。これにより、スレーブロボット50a及びスレーブ外ロボット50bは、作業対象物90を適切な保持力で保持しながら、移動先位置情報101が示す位置まで移動させることができる。
【0083】
本例では、例えば、調整量αがプラスの値の場合、エンドエフェクタ間距離が調整量αの絶対値の分だけ小さくされる。したがって、調整量αがプラスの値の場合、調整処理によって作業対象物90の保持力が大きくなる。一方で、調整量αがマイナスの値の場合、エンドエフェクタ間距離が調整量αの絶対値の分だけ大きくされる。したがって、調整量αがマイナスの値の場合、調整処理によって作業対象物90の保持力が小さくなる。調整量αの単位は例えばmm(ミリメートル)である。
【0084】
分担決定部220は、動作指令情報100及び全体ロボット情報500に基づいて、スレーブロボット50aとスレーブ外ロボット50bとの間での調整処理の分担を決定する。
【0085】
ここで、エンドエフェクタ間距離を調整量αだけ調整する調整処理は、例えば、スレーブロボット50aが調整量αのすべてを負担してエンドエフェクタ57aがエンドエフェクタ57bに対して相対的に調整量αだけ移動することで実現することができる。また、調整処理は、スレーブ外ロボット50bが調整量αのすべてを負担してエンドエフェクタ57bがエンドエフェクタ57aに対して相対的に調整量αだけ移動することでも実現することもできる。また、調整処理は、スレーブロボット50aが調整量αの一部α1を分担してエンドエフェクタ57aが一部α1だけエンドエフェクタ57bに対して相対的に移動し、スレーブ外ロボット50bが調整量αの残りの一部α2を分担してエンドエフェクタ57bが一部α2だけエンドエフェクタ57aに対して相対的に移動することでも実現できる。分担決定部220は、動作指令情報100及び全体ロボット情報500に基づいて、スレーブロボット50aでの調整量αの分担量(第1分担量という)と、スレーブ外ロボット50bでの調整量αの分担量(第2分担量ともいう)とを決定する。例えば、第1分担量が零であれば、エンドエフェクタ57bがエンドエフェクタ57aに対して相対的に調整量αだけ移動する。一方で、第2分担量が零であれば、エンドエフェクタ57aがエンドエフェクタ57bに対して相対的に調整量αだけ移動する。分担決定部220は、調整処理においてスレーブロボット50a及びスレーブ外ロボット50bをどれだけ移動させるかを決定するともいえる。
【0086】
第1生成部230aは、動作指令情報100と、分担決定部220で決定された、スレーブロボット50aでの調整処理の分担とに基づいて、スレーブロボット50aに対する制御情報600aを生成する。第1生成部230aは、動作指令情報100及び第1分担量に基づいて、スレーブロボット50aに対する制御情報600aを生成する。
【0087】
第2生成部230bは、動作指令情報100と、分担決定部220で決定された、スレーブ外ロボット50bでの調整処理の分担とに基づいて、スレーブ外ロボット50bに対する制御情報600bを生成する。第2生成部230bは、動作指令情報100及び第2分担量に基づいて、スレーブ外ロボット50bに対する制御情報600bを生成する。
【0088】
以下に調整量決定部210、分担決定部220、第1生成部230a及び第2生成部230bの動作例について詳細に説明する。
【0089】
<調整量決定部の動作例>
調整量決定部210は、例えば、全体ロボット情報500に含まれるスレーブロボット50a及びスレーブ外ロボット50bの検出トルク511の平均値を求める。スレーブロボット50a及びスレーブ外ロボット50bの検出トルク511の平均値は、スレーブロボット50a及びスレーブ外ロボット50bのモータ520の現在のトルクを示している。そして、調整量決定部210は、設定トルク102から、検出トルク511の平均値を差し引いて得られるトルク差分値に基づいて調整量αを求める。トルク差分値は、設定トルク102が、モータ520の現在のトルクからどの程度離れているかを示している。
【0090】
調整量決定部210は、スレーブロボット50aのモータ520のトルクがトルク差分値の分だけ変化するような調整量αを求める。例えば、設定トルク102が検出トルク511の平均値よりも大きくてトルク差分値がプラスの値である場合、調整量決定部210は、スレーブロボット50aのモータ520のトルクがトルク差分値の絶対値の分だけ大きくなるような調整量αを求める。この場合、調整量αはプラスの値となる。一方で、検出トルク511の平均値が設定トルク102よりも大きくてトルク差分値がマイナスの値である場合、調整量決定部210は、スレーブロボット50aのモータ520のトルクがトルク差分値の絶対値の分だけ小さくなるような調整量αを求める。この場合、調整量αはマイナスの値となる。
【0091】
<分担決定部の動作例>
分担決定部220は、例えば、分担率決定部221、第1分担量算出部222a及び第2分担量算出部22bを備える。分担率決定部221は、動作指令情報100及び全体ロボット情報500に基づいて、スレーブロボット50a及びスレーブ外ロボット50bでの調整処理の分担率を決定する。例えば、分担率決定部221は、動作指令情報100及び全体ロボット情報500に基づいて、スレーブロボット50aでの調整量αの分担率(第1分担率ともいう)と、スレーブ外ロボット50bでの調整量αの分担率(第2分担率ともいう)とを決定する。例えば、第1分担率及び第2分担率のそれぞれは1以下の正の値であって、第1分担率及び第2分担率を足し合わせた値は“1”となる。以後、動作指令情報100及び全体ロボット情報500をまとめて分担決定用情報550と呼ぶことがある。
【0092】
分担率決定部221は、例えば、ディープラーニング等の機械学習を用いて、分担決定用情報550に基づいて第1分担率及び第2分担率を決定する。分担率決定部221は、例えば、分担決定用情報550に基づいて第1分担率及び第2分担率を決定する学習済みのニューラルネットワーク221aを備えている。
【0093】
ニューラルネットワーク221aの入力層には分担決定用情報550が入力され、ニューラルネットワーク221aの出力層からは第1分担率及び第2分担率が出力される。ニューラルネットワーク221aは、畳み込みニューラルネットワークであってもよいし、他の種類のニューラルネットワークであってもよい。
【0094】
ニューラルネットワーク221aの学習段階(訓練段階ともいう)では、ニューラルネットワーク221aの訓練用の入力データとして、多数の訓練用分担決定用情報550が用意される。また、用意された各訓練用分担決定用情報550に対応する第1分担率及び第2分担率がアノテーションデータとして用意される。そして、訓練用分担決定用情報550及びアノテーションデータの多数の組み合わせで構成されるデータセットが使用されてニューラルネットワーク221aの学習(言い換えれば訓練)が行われる。アノテーションデータは例えば教師データとも呼ばれる。
【0095】
ここで、スレーブロボット50aに対する動作指令が、訓練用分担決定用情報550に含まれる動作指令情報100が示す動作指令であり、かつ、スレーブロボット50a及びスレーブ外ロボット50bの性能、状態及び周囲環境が、当該訓練用分担決定用情報550に含まれる全体ロボット情報500から特定される性能、状態及び周囲環境である場合に実行される調整処理を、当該訓練用分担決定用情報550に対応する調整処理と呼ぶ。訓練用分担決定用情報550に対応する調整処理においてスレーブロボット50a及びスレーブ外ロボット50bが分担すべき第1分担率及び第2分担率が、当該訓練用分担決定用情報550に対応するアノテーションデータとなる。
【0096】
第1分担量算出部222aは、スレーブロボット50aでの調整量αの第1分担量を算出する。第1分担量算出部222aは、分担率決定部221で決定された第1分担率を調整量αに乗算して得られる値を第1分担量とする。
【0097】
第2分担量算出部222bは、スレーブ外ロボット50bでの調整量αの第2分担量を算出する。第2分担量算出部222bは、分担率決定部221で決定された第2分担率を調整量αに乗算して得られる値を第2分担量とする。
【0098】
分担率決定部221が備えるニューラルネットワーク221aは、スレーブロボット50a及びスレーブ外ロボット50bがそれらの性能、状態及び周辺環境に応じて適切に作業を行うことができるような第1分担率及び第2分担率を決定するように、学習される。
【0099】
例えば、ニューラルネットワーク221aは、スレーブロボット50a及びスレーブ外ロボット50bが作業対象物90を適切な保持力で保持しながら、移動先位置情報101が示す位置まで移動させる場合に、スレーブロボット50a及びスレーブ外ロボット50bのモータ520の両方の回転数が過大とならないような第1分担率及び第2分担率を決定するように、学習される。
【0100】
また、ニューラルネットワーク221aは、スレーブロボット50a及びスレーブ外ロボット50bが作業対象物90を適切な保持力で保持しながら、移動先位置情報101が示す位置まで移動させる場合に、スレーブロボット50a及びスレーブ外ロボット50bのモータ520の両方のトルクが過大とならないような第1分担率及び第2分担率を決定するように、学習される。
【0101】
また、ニューラルネットワーク221aは、スレーブロボット50a及びスレーブ外ロボット50bが作業対象物90を適切な保持力で保持しながら、移動先位置情報101が示す位置まで移動させる場合に、スレーブロボット50a及びスレーブ外ロボット50bのモータ520の応答速度の差異にかかわらず適切に作業を行うことができるような第1分担率及び第2分担率を決定するように、学習される。
【0102】
また、ニューラルネットワーク221aは、スレーブロボット50a及びスレーブ外ロボット50bが作業対象物90を適切な保持力で保持しながら、移動先位置情報101が示す位置まで移動させる場合に、スレーブロボット50a及びスレーブ外ロボット50bが仕様上の最大可動範囲内で動作しながら作業を適切に行うことができるような第1分担率及び第2分担率を決定するように、学習される。
【0103】
また、ニューラルネットワーク221aは、スレーブロボット50a及びスレーブ外ロボット50bが作業対象物90を適切な保持力で保持しながら、移動先位置情報101が示す位置まで移動させる場合に、スレーブロボット50a、スレーブ外ロボット50b及び作業対象物90が障害物と干渉しないような第1分担率及び第2分担率を決定するように、学習される。
【0104】
また、ニューラルネットワーク221aは、スレーブロボット50a及びスレーブ外ロボット50bが作業対象物90を適切な保持力で保持しながら、移動先位置情報101が示す位置まで移動させる場合に、スレーブロボット50a及びスレーブ外ロボット50bの一方のロボット50に異常が発生して、当該一方のロボット50のモータ520の電流が異常となった場合であっても、スレーブロボット50a及びスレーブ外ロボット50bが作業を適切に行うことができるような第1分担率及び第2分担率を決定するように、学習される。
【0105】
<第1生成部及び第2生成部の動作例>
第1生成部230aは、スレーブロボット50aの動作指令を示す動作指令情報100に含まれる移動先位置情報101を、分担決定部220で決定された第1分担量に基づいて修正し、修正後の移動先位置情報101を、スレーブロボット50aに対する制御情報600aとする。例えば、第1生成部230aは、移動先位置情報101を示すX座標から第1分担量を差し引いて得られる値を制御情報600aとする。スレーブロボット50aは、第1生成部230aで生成された制御情報600aに従って動作を行う。
【0106】
第2生成部230bは、スレーブロボット50aの動作指令を示す動作指令情報100に含まれる移動先位置情報101と、分担決定部220で決定された第2分担量とに基づいて、スレーブ外ロボット50bに対する制御情報600bを生成する。例えば、第2生成部230bは、移動先位置情報101を示すX座標から第2分担量を足し合わせて得られる値を制御情報600bとする。スレーブ外ロボット50bは、第2生成部230bで生成された制御情報600bに従って動作を行う。
【0107】
例えば、移動先位置情報101が示すX座標が+1000mm、調整量αが+10mm、スレーブロボット50aの第1分担率が80%、スレーブ外ロボット50bの第2分担率が20%である場合を考える。例えば、スレーブロボット50aの周囲に障害物があまり存在せず、スレーブ外ロボット50bの周囲に障害物が多く存在する場合に、分担率決定部221は、第1分担率を80%、第2分担率を20%に決定する。あるいは、スレーブロボット50aのモータ520の応答速度が速く、スレーブ外ロボット50bのモータ520の応答速度が遅い場合、分担率決定部221は、第1分担率を80%、第2分担率を20%に決定する。このような場合、第1分担量が+8mm、第2分担量が+2mmとなることから、制御情報600aは+992mmを示し、制御情報600bは+1002mmを示す。制御情報600aに従って動作するスレーブロボット50aと、制御情報600bに従って動作するスレーブ外ロボット50bとは、互いに反対側から保持する作業対象物90がX座標の+1000mmの位置に移動し、かつエンドエフェクタ間距離が10mm小さくなるようにX軸上を移動する。このとき、スレーブロボット50a及びスレーブ外ロボット50bがエンドエフェクタ間距離が変化しないように作業対象物90をX座標の+1000mmの位置まで移動する場合と比較して、調整処理の80%を分担するスレーブロボット50aは8mmだけスレーブ外ロボット50b側に移動し、調整処理の20%を分担するスレーブ外ロボット50bは2mmだけスレーブロボット50a側に移動することによって、スレーブロボット50a及びスレーブ外ロボット50bはエンドエフェクタ間距離を10mmだけ小さくする。
【0108】
他の例として、移動先位置情報101が示すX座標が+1000mm、調整量αが+6mm、スレーブロボット50aの第1分担率が50%、スレーブ外ロボット50bの第2分担率が50%である場合を考える。例えば、スレーブロボット50a及びスレーブ外ロボット50bのそれぞれの周囲に障害物が存在しない場合、分担率決定部221は、第1分担率及び第2分担率のそれぞれを50%に決定する。あるいは、スレーブロボット50aのモータ520の応答速度と、スレーブ外ロボット50bのモータ520の応答速度と同程度の場合、分担率決定部221は、第1分担率及び第2分担率のそれぞれを50%に決定する。このような場合、第1分担量及び第2分担量はともに+3mmとなることから、制御情報600aは+997mmを示し、制御情報600bは+1003mmを示す。制御情報600aに従って動作するスレーブロボット50aと、制御情報600bに従って動作するスレーブ外ロボット50bとは、互いに反対側から保持する作業対象物90がX座標の+1000mmの位置に移動し、かつエンドエフェクタ間距離が6mm小さくなるようにX軸上を移動する。このとき、スレーブロボット50a及びスレーブ外ロボット50bがエンドエフェクタ間距離が変化しないように作業対象物90をX座標の+1000mmの位置まで移動する場合と比較して、調整処理の50%を分担するスレーブロボット50aは3mmだけスレーブ外ロボット50b側に移動し、調整処理の50%を分担するスレーブ外ロボット50bは3mmだけスレーブロボット50a側に移動することによって、スレーブロボット50a及びスレーブ外ロボット50bはエンドエフェクタ間距離を6mmだけ小さくする。
【0109】
他の例として、移動先位置情報101が示すX座標が+1500mm、調整量αが-10mm、スレーブロボット50aの第1分担率が30%、スレーブ外ロボット50bの第2分担率が70%である場合を考える。この場合、第1分担量が-3mm、第2分担量が-7mmとなることから、制御情報600aは+1503mmを示し、制御情報600bは+1493mmを示す。制御情報600aに従って動作するスレーブロボット50aと、制御情報600bに従って動作するスレーブ外ロボット50bとは、互いに反対側から保持する作業対象物90がX座標の+1500mmの位置に移動し、かつエンドエフェクタ間距離が10mm大きくなるようにX軸上を移動する。このとき、スレーブロボット50a及びスレーブ外ロボット50bがエンドエフェクタ間距離が変化しないように作業対象物90をX座標の+1500mmの位置まで移動する場合と比較して、調整処理の30%を分担するスレーブロボット50aは3mmだけスレーブ外ロボット50bから離れる方向に移動し、調整処理の70%を分担するスレーブ外ロボット50bは7mmだけスレーブロボット50aから離れる方向に移動することによって、スレーブロボット50a及びスレーブ外ロボット50bはエンドエフェクタ間距離を10mmだけ大きくする。
【0110】
他の例として、移動先位置情報101が示すX座標が+2000mm、調整量αが+10mm、スレーブロボット50aの第1分担率が100%、スレーブ外ロボット50bの第2分担率が0%である場合を考える。例えば、スレーブロボット50aの周囲に障害物が存在せず、スレーブ外ロボット50bの周囲に障害物がかなり多く存在する場合に、分担率決定部221は、第1分担率を100%、第2分担率を0%に決定する。あるいは、スレーブロボット50aのモータ520の応答速度がスレーブ外ロボット50bのモータ520の応答速度よりもかなり速い場合、分担率決定部221は、第1分担率を100%、第2分担率を0%に決定する。このような場合、第1分担量が+10mm、第2分担量が0mmとなることから、制御情報600aは+1990mmを示し、制御情報600bは+2000mmを示す。制御情報600aに従って動作するスレーブロボット50aと、制御情報600bに従って動作するスレーブ外ロボット50bとは、互いに反対側から保持する作業対象物90がX座標の+2000mmの位置に移動し、かつエンドエフェクタ間距離が10mm小さくなるようにX軸上を移動する。このとき、スレーブロボット50a及びスレーブ外ロボット50bがエンドエフェクタ間距離が変化しないように作業対象物90をX座標の+2000mmの位置まで移動する場合と比較して、調整処理の100%を分担するスレーブロボット50aは10mmだけスレーブ外ロボット50b側に移動し、調整処理の0%を分担するスレーブ外ロボット50b(つまり、調整処理に参加しないスレーブ外ロボット10b)は位置が変わらないことによって、スレーブロボット50a及びスレーブ外ロボット50bはエンドエフェクタ間距離を10mmだけ大きくする。
【0111】
他の例として、移動先位置情報101が示すX座標が+2000mm、調整量αが-10mm、スレーブロボット50aの第1分担率が0%、スレーブ外ロボット50bの第2分担率が100%である場合を考える。例えば、スレーブロボット50aの周囲に障害物がかなり多く存在し、スレーブ外ロボット50bの周囲に障害物が存在しない場合に、分担率決定部221は、第1分担率を0%、第2分担率を100%に決定する。あるいは、スレーブロボット50aのモータ520の応答速度がスレーブ外ロボット50bのモータ520の応答速度よりもかなり遅い場合、分担率決定部221は、第1分担率を0%、第2分担率を100%に決定する。このような場合、第1分担量が0mm、第2分担量が-10mmとなることから、制御情報600aは+2000mmを示し、制御情報600bは+1990mmを示す。制御情報600aに従って動作するスレーブロボット50aと、制御情報600bに従って動作するスレーブ外ロボット50bとは、互いに反対側から保持する作業対象物90がX座標の+2000mmの位置に移動し、かつエンドエフェクタ間距離が10mm大きくなるようにX軸上を移動する。このとき、スレーブロボット50a及びスレーブ外ロボット50bがエンドエフェクタ間距離が変化しないように作業対象物90をX座標の+2000mmの位置まで移動する場合と比較して、調整処理の0%を分担するスレーブロボット50aは位置が変わらずに、調整処理の100%を分担するスレーブ外ロボット50bは10mmだけスレーブロボット10aから離れる方向に移動することによって、スレーブロボット50a及びスレーブ外ロボット50bはエンドエフェクタ間距離を10mmだけ大きくする。
【0112】
以上のように、本例では、複数のロボット50が互いに協調して行う作業に関する動作指令情報と、当該複数のロボット50に関するロボット情報500とに基づいて、当該複数のロボット50のそれぞれについての制御情報が個別に生成される。これにより、互いに協調して作業を行う複数のロボット50を適切に制御することが可能となる。
【0113】
また、本例では、処理装置1は、複数のロボット50に対して近接地に位置することから、例えば、各ロボット50からセンサ検出情報をすぐに取得することができる。よって、処理装置1は、各ロボット50の現在の状態を正確に知ることができる。これにより、処理装置1は各ロボット50を適切に制御することができる。
【0114】
なお、上記の例では、複数のロボット50に関するロボット情報500に基づいて、複数のロボット50のそれぞれについての制御情報が個別に生成される例を説明したが、本開示はこれに限られない。例えば、複数のロボット50のうち少なくとも一つのロボット50に関する個別ロボット情報510に基づいて、複数のロボット50のうち少なくとも一つのロボット50の制御情報が生成されてもよい。具体的には、複数のロボット50が第1ロボットおよび第2ロボットを有する場合、第1ロボットの第1制御情報は動作指令情報に基づき生成され、第2ロボットの第2制御情報は動作指令情報及び第2ロボットの個別ロボット情報510に基づき生成されていてもよい。
【0115】
また、上記の例では、処理装置1は、各ロボット50と別体に設けられているが、一のロボット50のロボットコントローラ51が処理装置1として機能してもよい。例えば、スレーブロボット50aのロボットコントローラ51が処理装置1として機能してもよい。この場合、処理装置1の取得部20及び生成部21はロボット50に設けられることになる。例えば、ロボットコントローラ51は、自身が記憶するプログラムを実行することによって処理装置1として機能する。ロボット50が取得部20及び生成部21を備えることによって、取得部20は、例えば、各ロボット50からセンサ検出情報をすぐに取得することができる。よって、生成部21は、各ロボット50の現在の状態を適切に示すセンサ検出情報に基づいて制御情報を生成することができる。その結果、処理装置1は、各ロボット50を適切に制御することができる。
【0116】
また、スレーブ外ロボット50は、処理装置1から受け取った制御情報をそのまま使用して動作するのではなく、ある程度自律的に動作してもよい。例えば、スレーブ外ロボット50は、処理装置1から受け取った制御情報を、自身が備えるセンサ部53で得られるセンサ検出情報と、他のロボット50が備えるセンサ部53で得られるセンサ検出情報とに基づいて修正し、修正後の制御情報に従って動作することによって、ある程度自律的に動作してもよい。
【0117】
上記の例では、制御装置10は、ユーザの動きの検出結果に基づいて、ロボット50の動作指令を示す動作指令情報を生成しているが、予め作成された作業内容を示す作業情報に基づいて、ロボット50の動作指令を示す動作指令情報を生成してもよい。この場合、動作指令の対象となるロボット50は、ユーザの動きを模倣するのではなく、予め作成された作業内容に従った動作を行う。また、制御装置10は、一のロボット50の動作指令を示す動作指令情報ではなく、複数のロボット50の動作指令を示す動作指令情報を生成してもよい。この場合、処理装置1は、複数のロボット50の動作指令を示す動作指令情報と全体ロボット情報500に基づいて、各ロボット50の制御情報を生成する。
【0118】
また、制御装置10は、複数のロボット50に対して近接地に位置してもよい。また、処理装置1は、複数のロボット50に対して遠隔地に位置してもよい。また、処理装置1は、ネットワーク80を通じて各ロボット50と通信してもよい。また、制御装置10と処理装置1とは、ネットワーク80を介さずに直接的に互いに通信してもよい。また、制御装置10は、ネットワーク80を介さずに直接的に各ロボット50と通信してもよい。
【0119】
また、上記の説明では、制御装置10が動作指令情報を生成する例を説明したが、処理装置1が制御装置10の出力に基づいて動作指令情報を生成してもよい。例えば、取得部20又は生成部21によって、上記で説明した制御装置10の一部の機能が実行されてもよい。具体的には、例えば、取得部20は、制御装置10からセンサ部15での検出結果を取得し、生成部21は取得部20が取得した検出結果に基づいて動作指令情報を生成してもよい。この場合、上記の説明において、適宜「制御装置10」は「処理装置1」と読み替えられてもよい。
【0120】
以上のように、処理装置、制御システム及びロボットシステムは詳細に説明されたが、上記した説明は、すべての局面において例示であって、この開示がそれに限定されるものではない。また、上述した各種例は、相互に矛盾しない限り組み合わせて適用可能である。そして、例示されていない無数の例が、この開示の範囲から外れることなく想定され得るものと解される。
【0121】
本開示には以下の内容が含まれる。
【0122】
一実施形態において、(1)処理装置は、複数のロボットが互いに協調して行う作業に関する動作指令情報と、前記複数のロボットのうちの少なくとも一つのロボットに関するロボット情報とを取得する取得部と、前記動作指令情報及び前記ロボット情報に基づいて、前記複数のロボットの少なくとも一つの制御情報を生成する生成部とを備える。
【0123】
(2)上記(1)の処理装置において、前記複数のロボットは、第1ロボットを有しており、前記動作指令情報は、前記第1ロボットのみに対する動作指令を示す。
【0124】
(3)上記(2)の処理装置において、前記動作指令情報は、前記第1ロボットの操作情報に基づく。
【0125】
(4)上記(2)または(3)の処理装置において、前記動作指令情報は、前記第1ロボットとは異なる場所に配された制御装置から出力される、ユーザの動作を前記第1ロボットに模倣させる情報である。
【0126】
(5)上記(2)から(4)のいずれか一つの処理装置において、前記複数のロボットは、前記第1ロボットと異なる仕様または前記第1ロボットと異なる設定の第2ロボットを有している。
【0127】
(6)上記(1)から(5)のいずれか一つの処理装置において、前記ロボット情報は、前記複数のロボットのうちの少なくとも一つのロボットの状態を検出する少なくとも一つのセンサ部での検出結果を含む。
【0128】
(7)上記(1)から(6)のいずれか一つの処理装置において、前記生成部は、前記動作指令情報及び前記ロボット情報に基づいて、前記複数のロボットの間での処理分担を決定し、前記処理分担に基づいて、前記複数のロボットのそれぞれについての前記制御情報を個別に生成する。
【0129】
(8)上記(1)から(7)のいずれか一つの処理装置において、前記取得部及び前記生成部は、前記複数のロボットのいずれか一つに設けられている。
【0130】
(9)上記(1)から(7)のいずれか一つの処理装置において、前記複数のロボットと通信する通信部を備え、前記通信部は、前記複数のロボットの少なくとも一つに前記制御情報を送信する。
【0131】
(10)制御システムは、上記(1)から(9)のいずれか一つの処理装置と、前記処理装置に前記動作指令情報を送信する制御装置とを備える。
【0132】
(11)プログラムは、コンピュータ装置を、上記(1)から(9)のいずれか一つの処理装置として機能させるためのプログラムである。
【符号の説明】
【0133】
1 処理装置
10 制御装置
20 取得部
21 生成部
30 プログラム
50,50a,50b ロボット
53 センサ部
100 動作指令情報
250 制御システム
500 ロボット情報