以下において、本発明の実施の形態を、図面を参照しつつ説明する。なお、以下で説明する実施の形態は、いずれも包括的又は具体的な例を示すものである。また、以下の実施の形態における構成要素のうち、最上位概念を示す独立請求項に記載されていない構成要素については、任意の構成要素として説明される。また、添付の図面における各図は、模式的な図であり、必ずしも厳密に図示されたものでない。さらに、各図において、実質的に同一の構成要素に対しては同一の符号を付しており、重複する説明は省略又は簡略化される場合がある。また、本明細書及び特許請求の範囲では、「装置」とは、1つの装置を意味し得るだけでなく、複数の装置からなるシステムも意味し得る。
(実施の形態)
実施の形態に係る機械装置システム1を説明する。図1は、実施の形態に係る機械装置システム1の構成の一例を示す機能ブロック図である。図1において、実線の矢印は、機械装置10を自動運転モードで動作させるための指令、データ及び情報等の流れを示す。破線の矢印は、機械装置10を手動運転モードの訓練モードで動作させるための指令、データ及び情報等の流れを示す。一点鎖線の矢印は、演算部36に学習させるための指令、データ及び情報等の流れを示す。これらは以下の機能ブロック図においても同様である。
[1-1.構成]
[1-1-1.機械装置システム]
図1に示すように、実施の形態に係る機械装置システム1は、機械装置10と、操作装置20と、制御装置30と、動作情報検出装置50と、出力装置60とを備える。機械装置10は、処理の対象物に対して作用を加える作用部11と、当該作用を実行するように作用部11を動かす動作部12とを備える。操作装置20及び制御装置30は、機械装置10を制御するための制御システム100を構成する。
操作装置20は、機械装置10を操作するための装置であり、操作装置20に入力される情報である操作情報を制御装置30に出力する。制御装置30は、機械装置10の全体の動作を制御する。動作情報検出装置50は、機械装置10の作用部11及び動作部12の動作を示す動作情報を検出し、制御装置30に出力する。例えば、動作情報検出装置50は、動作情報として、作用部11の位置、作用部11が対象物に加える力、対象物の画像、作用部11での振動、衝撃、光、音、温度、湿度及び気圧等を検出するセンサを備えてもよい。制御装置30は、動作の状態のフィードバック及び提示のために、動作情報を操作装置20及び出力装置60に出力する。出力装置60は、動作情報を視覚的及び聴覚的等の情報に変換し、操作装置20の操作者に提示する。例えば、カメラ等の撮像装置が機械装置10から離れた位置に配置され、当該撮像装置によって撮像された画像を出力装置60に出力してもよい。このような出力装置60は、機械装置10の状態を操作者に提示することができる。出力装置60の例は、液晶ディスプレイ(Liquid Crystal Display)及び有機又は無機ELディスプレイ(Electro-Luminescence Display)であるが、これらに限定されない。出力装置60は、音声を発するスピーカを備えてもよい。
これに限定されないが、本実施の形態では、機械装置システム1は、機械装置10に手動運転モードでの動作と自動運転モードでの動作とを実行させることができる。本実施の形態における手動運転モード及び自動運転モードは、機械装置10に作業等の動作を教える教示(「ティーチング」とも呼ばれる)動作を含まないものとする。手動運転モードでは、機械装置10は、操作者によって操作装置20に入力される操作に従った動作、つまり、当該操作をトレースした動作を実行する。機械装置10は、操作者によって手動運転される。さらに、手動運転モードは、訓練モード及び非訓練モードを含む。訓練モードでは、機械装置システム1は、操作者の操作装置20の操作を補助する。このとき、操作者は、操作装置20等から、予め設定された所定の動作を機械装置10に実行させるための操作装置20の操作の補助を受ける。非訓練モードでは、機械装置システム1は、操作者の操作装置20の操作を補助しない。このとき、操作者は、機械装置10に任意の動作をさせることができ、操作の補助を受けずに操作装置20を操作する。
自動運転モードでは、機械装置10は、予め設定された所定の動作に従った動作を実行する。機械装置10は、その制御プログラムに従って自動で所定の動作を実行する自動運転をする。所定の動作は、水平移動、鉛直移動及び回転等の個別の動作であってもよく、一連の複数の個別の動作が実行順序に従って組み合わされた複合的な動作であってもよい。なお、個別の動作は、1つの動作を含んでもよく、2つ以上の動作を含んでもよい。複合的な動作の例は、作用部11で対象物を保持して移動させる、作用部11で対象物を切断する、作用部11で2つ以上の対象物を接合する、作用部11で掘削する等の作業である。本実施の形態では、機械装置システム1は、自動運転中、操作装置20を用いた作用部11及び動作部12の動作の修正を受け付けることができる。機械装置システム1は、操作装置20に入力される操作に対応する修正動作を加えることで、作用部11及び動作部12の動作を修正する。また、自動運転モードは、複合的な動作の一部が手動運転されるように、自動運転と手動運転とを組み合わせて含んでもよい。
[1-1-2.機械装置]
図1に示すように、機械装置10は、動力によって動作する装置であればよい。機械装置10として、例えば、建設機械、トンネル掘削機、クレーン、荷役搬送車、及び産業用などの種々の用途のロボット等が例示される。例えば、機械装置10が建設機械のバックホウである場合、バックホウのショベルは作用部11に対応し、アームは動作部12に対応する。制御装置30はアームを動作させる油圧装置等を制御する。機械装置10がトンネル掘削機である場合、トンネル掘削機の掘削刃は作用部11に対応し、掘削刃を作動させる作動装置は動作部12に対応する。制御装置30は作動装置等の動作を制御する。機械装置10が荷役搬送車である場合、荷役搬送車の荷役装置のフォークなどの載置部又は把持部等は作用部11に対応し、荷役装置及び搬送台車の駆動装置は動作部12に対応する。制御装置30は、荷役装置及び搬送台車の駆動装置等の動作を制御する。機械装置10が産業用ロボットである場合、ロボットのロボットアームは動作部12に対応し、ロボットアームの先端のエンドエフェクタは作用部11に対応する。制御装置30は、ロボットアーム及びエンドエフェクタの駆動装置等の動作を制御する。動力の種類はいかなる種類でもよい。動力の種類の例は、電動機、内燃機関、水蒸気、液圧及び空気圧等である。制御の種類はいかなる種類でもよい。制御の種類の例は、電気制御、油圧制御、液圧制御及び空圧制御等である。
[1-1-3.操作装置]
図1に示すように、操作装置20は、操作者による入力を、当該入力に対応する情報に変換し、操作情報として制御装置30に出力する。例えば、操作装置20は、操作者による入力を、当該入力に対応する信号に変換し制御装置30に出力する。本実施の形態では、操作装置20は、機械装置10等の他の物体に固定されておらず、3次元空間内で任意の方向に移動自在であるように構成されている。なお、操作装置20は、2次元平面上又は1次元直線上で任意の方向に移動自在であるように構成されてもよい。操作装置20は操作者の手によって把持され得るように構成されている。このため、操作者は、把持している操作装置20を任意の方向に移動させ、任意の姿勢に方向付けることができる。操作装置20は、有線通信又は無線通信を介して制御装置30と通信するように構成されている。有線通信及び無線通信の種類は問わず、いかなる通信であってもよい。
これに限定されないが、操作装置20は、例えば、家庭用ゲーム機のゲームコントローラ、リモコン又はスマートフォン等の汎用的な装置と同様の構成の装置であってもよく、専用の装置であってもよい。例えば、専用の装置は、機械装置10が産業用ロボットである場合、エンドエフェクタの機能に対応した装置であってもよい。エンドエフェクタが塗装用のスプレーガンである場合、操作装置20はガン(銃)状の装置であってもよい。
本実施の形態では、操作装置20は、慣性計測装置(IMU:Inertial Measurement Unit)(図示せず)を含む。慣性計測装置は、3軸加速度センサ及び3軸角速度センサを含み、操作装置20は、慣性計測装置によって計測される3軸方向の加速度及び角速度の計測データに基づく操作情報を制御装置30に出力する。なお、操作装置20は、計測データ自体を制御装置30に出力してもよい。3軸方向の加速度及び角速度の計測データによって、位置、姿勢、移動、移動速度及び力等の操作装置20の動作及び作用力を示す様々な情報の検出が可能である。このような操作装置20は、操作装置20の動作を示す情報である操作動作情報に基づく操作情報を出力する。
さらに、本実施の形態では、操作装置20は、操作情報に従って動作する機械装置10の動作状態のフィードバックを、触覚として操作者に与えるハプティクスデバイス(図示せず)を含む。ハプティクスデバイスは、動作情報検出装置50から制御装置30を介して機械装置10の動作情報を受け取り、当該動作情報に基づく機械装置10の動作状態のフィードバックを、触覚として操作者に与える。ハプティクスデバイスは知覚装置の一例である。
ここで、動作情報は、動作データを含む。動作データは、機械装置10の作用部11が対象物に加える力、つまり作業環境に作用させる力を表す力データと、動作時における作用部11の位置を表す位置データとのうちの少なくとも1つを含む。本実施の形態では動作データは両方を含む。力データは、力の大きさと当該力を発生する時刻とを関連付けて含む時系列データであってもよい。位置データは、位置の情報と当該位置の時刻とを関連付けて含む時系列データであってもよい。力データ及び位置データを含む動作データは、力の大きさと、当該力を発生する時刻と、位置の情報と、当該位置の時刻とを関連付けて含む時系列データであってもよい。作用部11の位置は、3次元空間内の作用部11の位置だけでなく、3次元空間内の作用部11の姿勢を含んでもよい。本明細書及び特許請求の範囲において、「位置」とは、3次元空間内の位置及び3次元空間内の姿勢のうちの少なくとも3次元空間内の位置を含むことを意味する。
動作情報が動作データを必須の情報として含む理由は、制御装置30は、作用部11が作業環境に作用させる「力」及び動作時における作用部11の「位置」の少なくとも1つを制御することによって、機械装置10の動作を制御するからである。本実施の形態における「動作指令」は、この「力」の目標値又は修正値(補正値)を指示する指令である力指令と、この「位置」の目標値又は修正値(補正値)を指示する指令である位置指令とのうちの少なくとも1つを含む。
また、動作情報は、動作データ以外の情報として、作用部11が作用を加える対象物の撮像データ、作用部11で発生する振動データ、衝撃データ、光データ、音データ、温度データ、湿度データ、気圧などの圧力データ等を含んでもよい。操作装置20には、動作情報のうちの少なくとも動作データが送られる。
例えば、ハプティクスデバイスは、アクチュエータ、コントローラ及びドライバ等を含む。アクチュエータは、偏心モータ、リニア共振アクチュエータ及びピエゾ等により例示され、操作者に触力覚を与える。コントローラは、ドライバを介してアクチュエータを制御し、後述で例示する制御装置30の構成と同様の構成を有してもよい。ドライバは、アクチュエータとコントローラとの間のインタフェースを構成する。ハプティクスデバイスの詳細な構成は、特許第4111278号公報及び特開2019-60835号公報等に開示され、公知であるため、その詳細な説明を省略する。例えば、ハプティクスデバイスは、操作者が空中で操作装置20を把持している状態で触力覚を操作者に与えることができ、このような触力覚の例は、操作者が自分で押す感覚、自分で引っ張る感覚、外部から引っ張られる感覚、外部から押される感覚、膨張感、圧迫感、対象物の表面の粗度を示す質感、及び、対象物の硬軟を示す圧覚等である。
[1-1-4.制御装置]
図1に示す制御装置30は、例えば、プロセッサ及びメモリ等を有する演算器で構成される。メモリは、揮発性メモリ及び不揮発性メモリなどの半導体メモリ、ハードディスク(HDD:Hard Disc Drive)及びSSD(Solid State Drive)等の記憶装置で構成される。例えば、演算器の機能は、CPU(Central Processing Unit)などのプロセッサ、RAM(Random Access Memory)などの揮発性メモリ及びROM(Read-Only Memory)などの不揮発性メモリ等からなるコンピュータシステム(図示せず)により実現されてもよい。演算器の機能の一部又は全部は、CPUがRAMをワークエリアとして用いてROMに記録されたプログラムを実行することによって実現されてもよい。なお、演算器の機能の一部又は全部は、上記コンピュータシステムにより実現されてもよく、電子回路又は集積回路等の専用のハードウェア回路により実現されてもよく、上記コンピュータシステム及びハードウェア回路の組み合わせにより実現されてもよい。
具体的には、制御装置30は、例えば、マイクロコントローラ、MPU(Micro Processing Unit)、LSI(Large Scale Integration:大規模集積回路)、システムLSI、PLC(Programmable Logic Controller)、論理回路等で構成されてもよい。制御装置30の複数の機能は、個別に1チップ化されることで実現されてもよく、一部又は全てを含むように1チップ化されることで実現されてもよい。また、回路はそれぞれ、汎用的な回路でもよく、専用の回路でもよい。LSIとして、LSI製造後にプログラムすることが可能なFPGA(Field Programmable Gate Array)、LSI内部の回路セルの接続及び/又は設定を再構成可能なリコンフィギュラブルプロセッサ、又は、特定用途向けに複数の機能の回路が1つにまとめられたASIC(Application Specific Integrated Circuit)等が利用されてもよい。
制御装置30は、動作決定部31と、動作指令部32と、修正指令部33と、駆動指令部34と、修正情報検出部35と、演算部36と、動作情報処理部37と、差異検出部38と、補助情報処理部39と、第一記憶部40と、第二記憶部41と、第三記憶部42とを機能的な構成要素として含む。動作決定部31、動作指令部32、修正指令部33、駆動指令部34、修正情報検出部35、演算部36、動作情報処理部37、差異検出部38及び補助情報処理部39は、上記演算器のコンピュータシステム、ハードウェア回路、又は、コンピュータシステム及びハードウェア回路の組み合わせにより実現される機能ブロックである。第一記憶部40、第二記憶部41及び第三記憶部42は、上記演算器の記憶装置によって実現される機能ブロックである。差異検出部38及び補助情報処理部39は、補助部を構成する。
動作決定部31は、機械装置10に実行させる所定の動作を決定し、当該所定の動作の動作情報(以下、「決定動作情報」とも呼ぶ)を取得する。動作決定部31は、操作装置20又は機械装置システム1の他の入力装置を介して、機械装置10に実行させる所定の動作の指令を受け付ける。動作決定部31は、受け付けた所定の動作に対応する動作情報を決定動作情報として第三記憶部42から抽出する。機械装置10に実行させる所定の動作は、個別の動作であってもよく、複合的な動作であってもよい。動作決定部31は、自動運転モードでは、決定動作情報を動作指令部32に出力するが、さらに、所定の動作の内容を演算部36に出力してもよい。動作決定部31は、手動運転モードの訓練モードでは、所定の動作の内容を演算部36に出力するが、決定動作情報を取得しなくてもよい。非訓練モードでは動作決定部31は機能しない。
第三記憶部42は、機械装置10が実行可能である所定の動作と、当該所定の動作の動作情報とを関連付けて記憶する。所定の動作の動作情報は、予め設定されて第三記憶部42に記憶される。複合的な動作の場合、個別の動作それぞれの動作情報が設定されてもよい。例えば、各個別の動作の動作情報は、作用部11の力及び位置の目標値が予め設定されることで、設定されてもよい。又は、各個別の動作の動作情報は、手動運転モードにおいて操作装置20を介して機械装置10を動作させた結果得られる動作情報を用いることで設定されてもよい。又は、各個別の動作の動作情報は、自動運転モードにおいて実際に機械装置10を動作させた結果得られる動作情報を用いることで設定されてもよい。
動作指令部32は、機械装置10に動作を実行させるための動作指令(以下、「実行動作指令」とも呼ぶ)を生成する。訓練モード及び非訓練モードでは、動作指令部32は、操作装置20から操作情報を受け取り、当該操作情報に対応する実行動作指令を生成する。このとき、動作指令部32は、操作情報に対応する動作を作用部11にさせるための動作指令(以下、「操作動作指令」とも呼ぶ)を生成し、操作動作指令を実行動作指令として、駆動指令部34及び差異検出部38に出力する。
自動運転モードでは、動作指令部32は、動作決定部31によって決定された決定動作情報を用いて、当該決定動作情報に対応する動作を機械装置10に実行させるための実行動作指令を生成し、修正指令部33に出力する。また、動作指令部32は、演算部36から出力データを受け取るように構成されている。この出力データは、演算部36が機械装置10の動作情報を入力データとして入力されることで出力する指令(以下、「実行動作修正指令」とも呼ぶ)である。これに限定されないが、本実施の形態では、実行動作修正指令は動作指令である。動作指令部32は、演算部36から実行動作修正指令を受け取った場合、決定動作情報を実行するための動作指令(以下、「決定動作指令」)を、実行動作修正指令を用いて修正することで、実行動作指令を生成する。このとき、動作指令部32は、決定動作指令に、これに対応する実行動作修正指令を加える、又は、決定動作指令をこれに対応する実行動作修正指令で置き換える。受け取らなかった場合、動作指令部32は、決定動作指令を実行動作指令とする。なお、決定動作指令に対応する実行動作修正指令は、当該決定動作指令の動作を実行する直前の機械装置10の動作情報を入力データとしたときの演算部36の出力データである。
修正指令部33は自動運転モードで機能する。修正指令部33は、自動運転モード中に操作装置20から出力される操作情報に従って、動作指令部32から受け取った実行動作指令を修正することで、修正後の動作指令である修正動作指令を生成し、駆動指令部34に出力する。例えば、操作装置20への入力が行われると、修正指令部33は、上記入力に対応する操作情報に従って操作動作指令を生成する。修正指令部33は、実行動作指令と操作動作指令とを加算することで、修正動作指令を生成する。修正動作指令は、操作情報を反映させた動作指令である。また、操作装置20への入力がない場合、修正指令部33は、実行動作指令を修正動作指令に決定する。
駆動指令部34は、動作指令部32から受け取る実行動作指令又は修正指令部33から受け取る修正動作指令に従って、機械装置10の動作を制御する。駆動指令部34は、当該動作指令に対応する動作を作用部11にさせるように、機械装置10の各駆動装置の動作を制御する。駆動指令部34は、上記動作を実行するために駆動装置を駆動させる指令値を含む駆動データを生成し、各駆動装置に出力する。ここで、動作指令部32及び駆動指令部34は動作制御部を構成し、修正指令部33及び駆動指令部34は修正制御部を構成する。
上述のように、本実施の形態では、「指令」同士を加算又は減算することができ、且つ、「動作指令」及び「動作データ」を互いに加算又は減算することができる。
動作情報処理部37は、動作情報検出装置50から機械装置10の動作情報を受け取り、当該動作情報を、演算部36、操作装置20及び出力装置60に出力する。なお、動作情報処理部37は、自動運転モード及び訓練モードでは、動作情報を演算部36、操作装置20及び出力装置60に出力し、非訓練モードでは、動作情報を操作装置20及び出力装置60に出力するが、これに限定されない。ここで、動作情報処理部37は処理部の一例である。
修正情報検出部35は自動運転モードで機能する。修正情報検出部35は、修正指令部33によって行われた修正を示す修正情報を検出し、第二記憶部41に記憶させる。具体的には、修正指令部33によって実行動作指令の修正が行われた場合、修正情報検出部35は、修正指令部33によって生成された修正動作指令を、修正情報として検出する。また、修正指令部33によって実行動作指令の修正が行われなかった場合、修正情報検出部35は、修正されなかった実行動作指令を、修正情報として検出する。修正情報検出部35は、修正動作指令又は実行動作指令と、当該動作指令を発令した時刻である発令時刻とを関連付け、動作指令の時系列データを生成してもよい。この場合、修正情報検出部35は、当該動作指令に含まれる「力」の目標値及び「位置」の目標値と発令時刻とを関連付け、動作データと同様の時系列データを生成してもよい。
なお、修正情報検出部35は、修正情報として、操作動作指令を検出してもよい。例えば、修正情報検出部35は、実行動作指令の修正が行われた場合、当該修正に用いられた操作動作情報を修正情報として検出し、実行動作指令の修正が行われなかった場合、修正情報がないものとする検出結果を生成してもよい。
第一記憶部40は、機械装置10の動作を示す動作情報を記憶する。具体的には、第一記憶部40は、動作情報検出装置50から受け取る機械装置10の動作情報を記憶する。第一記憶部40では、動作情報と、動作情報検出装置50によって当該動作情報が検出された時刻とが関連付けられて記憶される。
第二記憶部41は、修正指令部33によって行われた修正を示す修正情報を記憶する。具体的には、第二記憶部41は、修正情報検出部35から受け取る修正情報を記憶する。第二記憶部41では、修正情報と、当該修正情報に対応する動作指令の発令時刻とが関連付けられて記憶される。
演算部36は機械学習する機械学習モデル36aを含む。機械学習モデル36aは、学習データを用いて学習することによって、入力データに対する出力データの精度を向上する。そのような機械学習モデルとして、Deep Learning(深層学習)等のニューラルネットワーク(Neural Network)、Random Forest、Genetic Programming、回帰モデル、木モデル、ベイズモデル、時系列モデル、クラスタリングモデル、アンサンブル学習モデル等が例示される。本実施の形態の機械学習モデル36aはニューラルネットワークである。
本実施の形態では、演算部36は機械学習モデル36aに機械学習をさせる。機械学習モデル36aは、機械装置10の動作情報と当該動作情報に対応する修正情報とを用いて機械学習する。さらに、機械学習後の機械学習モデル36aは、機械装置10の動作情報を入力データとし、当該動作情報に対応する指令を出力データとする。本実施の形態では、出力データは実行動作修正指令である。例えば、機械学習では、機械装置10の動作情報が入力データとされ、当該動作情報の状態のときに実行された修正情報が教師データとされてもよい。このとき、入力データに対する出力データを教師データに一致させるように、後述するニューラルネットワーク内のノード間の接続の重み付けが調整される。このような重み付け調整後の機械学習モデル36aは、機械装置10の動作情報が入力されると、当該動作情報の状態のときに実行すべき実行動作修正指令を出力することができる。
ニューラルネットワークは、脳神経系をモデルにした情報処理モデルである。ニューラルネットワークは、入力層及び出力層を含む複数のノード層で構成されている。ノード層には、1つ以上のノードが含まれる。例えば、機械学習モデル36aは、図2に示すようなニューラルネットワークで構成されてもよい。図2は、機械学習モデル36aの一例を示す図である。図2に示すように、ニューラルネットワークが、入力層、中間層及び出力層で構成される場合、ニューラルネットワークは、入力層のノードに入力された情報について、入力層から中間層への出力処理、中間層から出力層への出力処理を順次行い、入力情報に適合する出力結果を出力する。なお、1つの層の各ノードは、次の層の各ノードと接続されており、ノード間の接続には、重み付けがされている。1つの層のノードの情報は、ノード間の接続の重み付けが付与されて、次の層のノードに出力される。
また、機械学習モデル36aは、図3に示すようなリカレントニューラルネットワーク(Recurrent Neural Network)(「回帰型ニューラルネットワーク」とも呼ばれる)で構成されてもよい。図3は、機械学習モデル36aの別の一例を示す図である。図3に示すように、リカレントニューラルネットワークは、時系列情報を扱う。リカレントニューラルネットワークの入力データは、現在の時刻tでのデータと、時刻tよりも前の時刻t-1でのリカレントニューラルネットワークにおける中間層の出力データとを含む。このようにリカレントニューラルネットワークは、時系列情報を考慮したネットワーク構造を有している。このようなリカレントニューラルネットワークは、動作情報の経時的な挙動を考慮した出力をするため、出力データの精度を向上することができる。
演算部36の構成の一例を説明する。図4は、実施の形態に係る演算部36の構成の一例を示す機能ブロック図である。図4に示すように、演算部36は、機械学習モデル36aと、データ生成部36bと、データ入力部36cと、学習評価部36dとを含む。機械学習モデル36aの構成は、上述したような構成である。機械学習モデル36aは、以下のように時系列データを扱うため、リカレントニューラルネットワークであることが好ましい。
本例では、機械装置10が所定の動作を1回実行する間、各指令及び各データは所定のサンプリング間隔で取得される。例えば、自動運転モードにおいて、修正情報検出部35は、修正情報としての修正動作指令Pmの時系列データPm0,Pm1,Pm2,・・・,Pmu(以下、Pm0~Pmuと略記する)を当該サンプリング間隔で取得する。動作情報検出装置50は、機械装置10の動作データPdの時系列データPd0,Pd1,Pd2,・・・,Pdu(以下、Pd0~Pduと略記する)を当該サンプリング間隔で取得する。以下、各時系列データにおける添え字の数字は、サンプリング時刻(間欠的な時刻)の順序を表す。従って、この添え字の数字が同じである時系列データは、同じ又は実質的に同じとみなすことができるサンプリング時刻に取得されたデータであることを意味する。例えば、修正動作指令Pmの時系列データPmiに従って機械装置10が実行した動作データPdの時系列データは、時系列データPdiである。このような添え字の数字が同じである時系列データは、互いに対応する時系列データである。
まず、機械学習時の演算部36の各構成要素の処理を説明する。データ生成部36bは、第一記憶部40に記憶された動作データPdの時系列データPd0~Pduから学習データpdの時系列データpd0~pduを生成する。また、データ生成部36bは、第二記憶部41に記憶された修正動作指令Pmの時系列データPm0~Pmuから教師データpnの時系列データpn0~pnuを生成する。データ生成部36bは、生成した時系列データをデータ入力部36cに出力する。
データ入力部36cは、機械学習モデル36aのニューラルネットワークの入力層の各ニューロンに学習データpdの時系列データpd0~pduを順次入力する。例えば、データ入力部36cが、あるサンプリング時刻tiにおける学習データpdの時系列データpdi(i=0~u)を入力すると、ニューラルネットワークは、前向き演算によって、次のサンプリング時刻ti+1における実行動作修正指令Pni+1を予測し出力する。
学習評価部36dは、実行動作修正指令Pni+1に基づき、教師データpnの時系列データpn0~pnuを探索することで、サンプリング時刻ti+1における時系列データpni+1を抽出する。さらに、学習評価部36dは、実行動作修正指令Pni+1と時系列データpni+1との間でこれらを一致又は誤差を最小化等するように、後ろ向き演算によって、ニューラルネットワークのニューロン間の重みを調節する。さらに、データ入力部36c及び学習評価部36dは、学習データpdの時系列データpd0~pduの全てについて上記のような処理を行うことで、ニューロン間の重みを最適化する。
次に、データの入出力時の演算部36の各構成要素の処理を説明する。演算部36は自動運転モード及び訓練モードにおいて機能する。機械装置10の動作時、動作情報検出装置50は現在のサンプリング時刻tiにおける動作データPdiを検出し、動作情報処理部37を介して演算部36に出力する。データ入力部36cは、動作データPdiを機械学習モデル36aのニューラルネットワークに入力する。ニューラルネットワークは、動作データPdiを入力データとすることで、次のサンプリング時刻ti+1における実行動作修正指令Pni+1を出力データとして出力する。
自動運転モードでは、演算部36は、ニューラルネットワークによって出力された実行動作修正指令Pni+1を動作指令部32に出力する。動作指令部32は、実行動作修正指令Pni+1を反映した実行動作指令を生成する。各サンプリング時刻ti(i=0~u-1)において、機械学習モデル36aがニューラルネットワークを用いて、サンプリング時刻tiにおける動作データPdiを入力データとしてサンプリング時刻ti+1における実行動作修正指令Pni+1を出力することで、当該実行動作修正指令Pni+1が反映された実行動作指令が出力される。また、訓練モードでは、演算部36は、ニューラルネットワークによって出力された実行動作修正指令Pni+1を差異検出部38に出力する。
なお、機械学習モデル36aのニューラルネットワークは、入力データとして、サンプリング時刻tiにおける動作データPdiと、サンプリング時刻ti以前のサンプリング時刻ti-1~ti-n(nは所定の自然数)の動作データPdi-1~Pdi-nとが入力されるように構成されてもよい。この場合、機械学習時、データ入力部36cは、サンプリング時刻tiにおける学習データpdに関して、時系列データPdi,Pdi-1~Pdi-nをニューラルネットワークに入力し、ニューラルネットワークは、次のサンプリング時刻ti+1における実行動作修正指令Pni+1を出力する。学習評価部36dは、実行動作修正指令Pni+1と、教師データpnの時系列データpni+1とに関して、ニューラルネットワークのニューロン間の重みを調節する。
また、データの入出力時、機械学習モデル36aのニューラルネットワークは、サンプリング時刻tiに関して、サンプリング時刻ti,ti-1~ti-nにおける動作データPdi,Pdi-1~Pdi-nを入力データとしてサンプリング時刻ti+1における実行動作修正指令Pni+1を出力する。このようなニューラルネットワークは、その学習効率及び学習精度を向上させることができる。このようなニューラルネットワークは、現時点の瞬間における動作データだけでなく、それ以前からの一連の動作データに基づき、機械装置10の作用部11等の次の動きを予測するため、正確な予測を可能にする。
なお、上述のようなニューラルネットワークは、機械装置10が実行することができる複合的な動作の種類毎に構築され、1つのニューラルネットワークが1種類の複合的な動作に対応するように構成されてもよく、1つのニューラルネットワークが複数種類の複合的な動作に対応するように構成されてもよい。
また、差異検出部38は訓練モードで機能する。差異検出部38は、動作指令部32によって制御される機械装置10の動作と、演算部36によって出力される指令に対応する機械装置10の動作との間の差異を検出する。具体的には、差異検出部38は、動作指令部32から受け取る実行動作指令と、演算部36から受け取る実行動作修正指令との差異を検出する。差異の検出対象の実行動作指令及び実行動作修正指令は互いに対応する動作指令である。実行動作指令に対応する実行動作修正指令は、当該実行動作指令の動作を実行する直前の機械装置10の動作情報を入力データとしたときの演算部36の出力データである。例えば、サンプリング時刻tiにおける実行動作指令は、サンプリング時刻ti-1における動作データPdi-1を入力データとして出力される次のサンプリング時刻tiにおける実行動作修正指令Pniと対応する。
補助情報処理部39は訓練モードで機能する。補助情報処理部39は、差異検出部38によって検出された差異に基づき、操作装置20における操作を補助する補助指令を生成し、操作装置20に出力する。補助情報処理部39は、差異が閾値以上である場合、補助指令を生成し、差異が閾値未満である場合、補助指令を生成しない。補助指令は、差異が閾値以上であることを操作者に知覚させる刺激を発生させるための指令である。刺激の例は、光、音、振動、電気的刺激、温度、及びハプティクスデバイスを用いた触力覚等である。補助指令は、操作装置20に刺激を発生させる指令であってもよく、操作者の周囲の装置に刺激を発生させる指令であってもよい。本実施の形態では、補助指令は、刺激を操作装置20に発生させる。
刺激がハプティクスデバイスを用いた触力覚である場合、補助指令は、触力覚の程度が差異の大きさに対応するようにハプティクスデバイスに触力覚を発生させる指令であってもよい。例えば、補助指令は、差異を小さくする方向に操作装置20の動作を誘導する触力覚を発生させる指令であってもよい。例えば、ある方向への操作装置20の動作量が過大であり、それにより差異が閾値を超える場合、補助指令は、上記方向と反対方向へ操作者の手が押される感覚の触力覚を発生させる指令であってもよい。操作者は、操作装置20を把持する手に上記のような触力覚を受けることで、操作方向の誘導を受ける、つまり操作のアシストを受けることができる。
[1-2.動作]
実施の形態に係る機械装置システム1の自動運転モードでの動作と、手動運転モードの訓練モードでの動作と、手動運転モードの非訓練モードでの動作とを説明する。
[1-2-1.自動運転モードでの動作]
図5は、実施の形態に係る機械装置システム1の自動運転モードでの動作の一例を示すフローチャートである。さらに、図5は、機械装置システム1が機械装置10に1サイクルの所定の動作を実行させる例を示す。本例では、機械装置システム1は、所定の動作の全てを機械装置10に自動で実行させるものとして説明する。
図5に示すように、まず、操作者が、自動運転モードで所定の動作を実行する指令を機械装置システム1に入力し、制御装置30が当該指令を受け付ける(ステップS101)。この場合、操作者は、操作装置20を介して入力してもよく、機械装置システム1が備える他の入力装置を介して入力してもよい。なお、本例では、所定の動作は複合的な動作であるとする。
次いで、制御装置30の動作決定部31は、所定の動作に対応する動作情報を取得する(ステップS102)。動作決定部31は、所定の動作に含まれる個別の動作それぞれに対応する動作情報を第三記憶部42から抽出し、動作指令部32に順次出力する。また、動作決定部31は、所定の動作の内容を演算部36に出力する。
次いで、動作指令部32は、所定の動作に含まれる個別の動作に対応する動作情報の中で、未完了の動作情報があるか否かを判定する、つまり、未完了の個別の動作があるか否かを判定する(ステップS103)。動作指令部32は、未完了の動作情報がある場合(ステップS103でYes)、ステップS104に進み、未完了の動作情報がない場合(ステップS103でNo)、一連の処理を終了する。
ステップS104において、演算部36は、機械装置10の作用部11等の動作情報、具体的には、動作情報に含まれる動作データPdiを取得する。動作データPdiは、時刻tiでの動作データあり、処理の開始時である時刻t0では初期値Pd0である。このとき、演算部36は、制御装置30の動作情報処理部37に動作情報を要求してもよい。動作情報処理部37は、動作情報の検出を動作情報検出装置50に要求し、動作情報検出装置50の検出結果を取得してもよい。又は、演算部36は、後述するステップS112において動作情報処理部37から動作情報を受け取り、当該動作情報から動作データを取得してもよく、ステップS112において制御装置30の第一記憶部40に記憶された動作情報を取得してもよい。
次いで、演算部36は、所定の動作に対応する機械学習モデル36aのニューラルネットワークに、動作データPdiを入力することで実行動作修正指令Pmi+1を生成させ、実行動作修正指令Pmi+1を動作指令部32に出力する(ステップS105)。
次いで、動作指令部32は、所定の動作に対応する動作情報を用いて、当該動作を機械装置10に実行させるための実行動作指令を生成し、修正指令部33に出力する(ステップS106)。具体的には、動作指令部32は、所定の動作に含まれる未完了の個別の動作のうちの最早に実行すべき個別の動作について、当該個別の動作に対応する動作情報を実行するための動作指令である決定動作指令Psi+1を生成する。さらに、動作指令部32は、決定動作指令Psi+1と実行動作修正指令Pmi+1とに基づき、実行動作指令Pei+1を生成する。決定動作指令Psi+1と実行動作修正指令Pmi+1とは、時刻ti+1に関して対応する指令である。
次いで、修正指令部33は、操作装置20から機械装置10の動作を修正するための入力である修正入力があるか否かを判定する(ステップS107)。修正指令部33は、修正入力がある場合(ステップS107でYes)、ステップS108に進み、修正入力がない場合(ステップS107でNо)、ステップS109に進む。
ステップS108において、修正指令部33は、操作装置20から出力される操作情報に従って、動作指令部32の実行動作指令Pei+1を修正し、駆動指令部34に出力する。修正指令部33は、操作情報に対応する動作を作用部11にさせるための操作動作指令Pоi+1と、動作指令部32の実行動作指令Pei+1とを加算することで、修正動作指令Pfi+1を生成する。
ステップS109において、修正指令部33は、動作指令部32の実行動作指令Pei+1を駆動指令部34に出力する。
次いで、ステップS110において、修正情報検出部35は、修正情報を検出し、第二記憶部41に記憶させる。実行動作指令Pei+1の修正がある場合、修正情報検出部35は、修正情報として修正動作指令Pfi+1を検出する。実行動作指令Peiの修正がない場合、修正情報検出部35は、修正情報として非修正の実行動作指令Pei+1を検出する。
次いで、駆動指令部34は、修正動作指令Pfi+1又は実行動作指令Pei+1に対応する動作を作用部11にさせるように、機械装置10の各駆動装置を駆動させる指令である駆動データを生成し、各駆動装置に出力する。つまり、駆動指令部34は、上記指令に対応する動作をするように機械装置10を駆動する(ステップS111)。
次いで、動作情報検出装置50は、動作する機械装置10の動作情報として動作データPdi+1を検出し、第一記憶部40に記憶させる(ステップS112)。動作情報検出装置50は、検出した動作データPdi+1である検出動作情報を第一記憶部40及び動作情報処理部37に出力する。動作情報処理部37は、検出動作情報を演算部36、操作装置20及び出力装置60に出力する。さらに、動作情報処理部37は、ステップS103の処理に戻る。
操作装置20は、検出動作情報に含まれる動作データの力データ及び位置データに対応する触力覚を操作者に与える。触力覚は、作用部11の動作状態を示すことができる。例えば、操作装置20は、操作装置20を把持している操作者の手に対して、操作者が自分で押す感覚の触力覚を与えることで、作用部11が対象物を押圧している状態を体感させる。操作装置20は、操作者が自分で引っ張る感覚の触力覚を与えることで、作用部11が対象物を引っ張っている又は吊り上げている状態を体感させる。操作装置20は、表面の質感の触力覚を与えることで、作用部11が接触している対象物の表面の粗度状態を体感させる。操作装置20は、圧覚の触力覚を与えることで、作用部11が接触している対象物の表面の硬軟状態を体感させる。
出力装置60は、検出動作情報に含まれる動作データの位置データ等に基づく、対象物に対する作用部11の位置及び姿勢を、視覚的及び/又は聴覚的に操作者に示す。
上記のステップS103~S112では、サンプリング時刻ti+1に実行すべき動作に関する処理が行われるが、次のステップS103~S112では、次のサンプリング時刻ti+2に実行すべき動作に関する処理が行われる。
制御装置30は、所定の動作の完了後、サンプリング時刻t0~tuにおいて検出された動作情報を用いて、第三記憶部42に記憶される所定の動作に含まれる個別の動作それぞれに対応する動作情報を更新してもよい。
上記では、制御装置30は、サンプリング時刻t0~tuそれぞれのタイミングで、演算部36の実行動作修正指令を用いて決定動作指令を修正することで、実行動作指令を生成するが、これに限定されない。制御装置30は、所定の動作に含まれる個別の動作が変わるタイミングで上記のような実行動作指令を生成してもよい。
また、制御装置30は、演算部36の機械学習をいかなる時点で行ってもよい。例えば、制御装置30は、機械装置10による所定の作業が1回完了する毎に、1回の所定の作業で蓄積されたデータを用いて演算部36に機械学習をさせてもよい。又は、制御装置30は、機械装置10による所定の作業が所定回数完了する毎に、当該所定回数の所定の作業で蓄積されたデータを用いて演算部36に機械学習をさせてもよい。又は、制御装置30は、所定の日数、所定の週数、及び所定の月数等の所定の期間毎に、当該所定の期間での所定の作業で蓄積されたデータを用いて演算部36に機械学習をさせてもよい。
[1-2-2.訓練モードでの動作]
図6は、実施の形態に係る機械装置システム1の手動運転モードの訓練モードでの動作の一例を示すフローチャートである。さらに、図6は、操作者が操作装置20を用いて機械装置10に1サイクルの所定の動作を実行させる例を示す。本例では、機械装置システム1は、機械装置10に、所定の動作の全てを操作者の操作に従って実行させるものとして説明する。
図6に示すように、まず、操作者が、手動運転モードの訓練モードで所定の動作を実行する指令を機械装置システム1に入力し、制御装置30が当該指令を受け付ける(ステップS201)。
次いで、制御装置30の動作決定部31は、所定の動作の内容を演算部36に出力する。演算部36は、機械装置10の作用部11等の動作情報、具体的には、動作情報に含まれる動作データPdiを取得する(ステップS202)。このとき、演算部36は、制御装置30の動作情報処理部37を介して動作情報検出装置50に動作情報を要求し、動作情報検出装置50の検出結果を取得してもよい。
次いで、演算部36は、動作データPdiに基づき、所定の動作が未完了であるか否かを判定する(ステップS203)。演算部36は、未完了の場合(ステップS203でYes)、ステップS204に進み、完了済みである場合(ステップS203でNo)、一連の処理を終了する。
ステップS204において、演算部36は、所定の動作に対応する機械学習モデル36aのニューラルネットワークに、動作データPdiを入力することで実行動作修正指令Pmi+1を生成させ、実行動作修正指令Pmi+1を差異検出部38に出力する。
次いで、操作者が操作装置20を操作すると、動作指令部32は、操作者によって操作装置20に入力された操作情報を受け付ける(ステップS205)。さらに、動作指令部32は、操作情報に基づく実行動作指令として、操作情報から操作動作指令Pоi+1を生成する(ステップS206)。操作動作指令Pоi+1は、時刻ti+1に操作装置20に入力された操作情報から生成される動作指令であり、時刻ti+1に操作装置20に動作させるべき指令である。また、動作指令部32は、操作動作指令Pоi+1を差異検出部38及び駆動指令部34に出力する。
次いで、差異検出部38は、実行動作修正指令Pmi+1と操作動作指令Pоi+1との差異Di+1を検出する(ステップS207)。次いで、補助情報処理部39は、差異Di+1が閾値Tr以上である、つまり、Di+1≧Trであるか否かを検出する(ステップS208)。補助情報処理部39は、Di+1≧Trである場合(ステップS208でYes)、ステップS209に進み、Di+1<Trである場合(ステップS208でNо)、ステップS211に進む。
ステップS209において、補助情報処理部39は、操作装置20に刺激を発生させるための補助指令を生成し操作装置20に出力する。このような補助指令は、機械学習を用いた演算部36の出力結果と操作者の操作結果との間の差異が大きいことを表すための指令であり、操作者の操作結果が理想的な操作から逸脱していることを表すための指令である。なお、補助情報処理部39は、差異Di+1の大きさに対応する刺激を発生させる補助指令を生成してもよい。
次いで、操作装置20は、補助情報処理部39から補助指令を受信し、当該補助指令に対応する刺激を操作者に付与する(ステップS210)。刺激を知覚した操作者は、自身の操作が不適切であることを認識することができる。また、操作者は、差異Di+1の大きさに対応する刺激を受けることで、自身の操作を理想的な操作に近づけやすくなる。
次いで、駆動指令部34は、ステップS206において動作指令部32から受け取った操作動作指令Pоi+1に対応する動作を作用部11にさせるように、機械装置10の各駆動装置の駆動データを生成し、各駆動装置に出力する。つまり、駆動指令部34は、上記指令に対応する動作をするように機械装置10を駆動する(ステップS211)。さらに、駆動指令部34は、ステップS202の処理に戻る。
上記のステップS202~S211では、サンプリング時刻ti+1で実行される動作に関する処理が行われるが、次のステップS202~S211では、次のサンプリング時刻ti+2で実行される動作に関する処理が行われる。
上記では、制御装置30は、各サンプリング時刻tiのタイミングで、演算部36の実行動作修正指令と動作指令部32の操作動作指令との差異に基づき、操作装置20に刺激を発生させるが、これに限定されない。制御装置30は、所定の動作に含まれる個別の動作が変わるタイミングで上記のような指令を発生させてもよい。
[1-2-3.非訓練モードでの動作]
図1を参照しつつ、機械装置システム1の手動運転モードの非訓練モードでの動作の一例を説明する。まず、操作者が、手動運転モードの非訓練モードを実行する指令を機械装置システム1に入力し、制御装置30が当該指令を受け付ける。そして、操作者が操作装置20を操作すると、制御装置30の動作指令部32は、操作者によって操作装置20に入力された操作情報を受け付ける。さらに、動作指令部32は、操作情報に基づく実行動作指令として、操作情報から操作動作指令を生成し、駆動指令部34に出力する。
駆動指令部34は、動作指令部32から受け取った操作動作指令に対応する動作を作用部11にさせるように、機械装置10の各駆動装置の駆動データを生成し、各駆動装置に出力する。これにより、機械装置10は、操作装置20に入力された操作情報に従って動作する。このように、制御装置30は、操作装置20への入力があると、入力された操作情報に従って機械装置10を動作させる。
[1-3.効果等]
上述したように、実施の形態に係る機械装置システム1において、機械装置10の制御装置30は、機械装置10を操作するための操作装置20から出力される操作情報に従って、機械装置10の動作を制御する動作制御部としての動作指令部32及び駆動指令部34と、機械装置10の動作を示す第一動作情報を入力データとし且つ第一動作情報に対応する機械装置10の動作の指令を出力データとする機械学習モデル36aを含む演算部36と、動作指令部32によって制御される機械装置10の動作と、演算部36によって出力される上記指令に対応する機械装置10の動作との間の差異に基づき、操作装置20における操作を補助する補助指令を出力する補助部としての差異検出部38及び補助情報処理部39とを含む。また、操作装置20は、操作装置20の動作を示す第二動作情報に基づく操作情報を出力する。
上記構成によると、演算部36の機械学習モデル36aは、機械装置10の動作を示す第一動作情報に対応する機械装置10の動作の指令を出力する。補助情報処理部39は、このような動作の指令と機械装置10の動作との間の差異に基づき、操作装置20の操作を補助する補助指令を出力する。操作者は、このような補助指令に基づく補助を受けることで、機械学習によって得られる理想的な操作に自身の操作を近づけることができる、つまり、操作の訓練を受けることができる。よって、機械学習モデル36aを用いた機械装置10の操作の技能継承が可能になる。
また、実施の形態に係る機械装置システム1において、操作装置20は、操作装置20を保持する操作者に知覚の刺激を与える知覚装置を備え、補助情報処理部39は、知覚装置に知覚の刺激を発生させる補助指令を操作装置20に出力してもよい。なお、知覚装置は、触覚の刺激を操作者に与えるハプティクスデバイスであってもよい。上記構成によると、制御装置30は、操作装置20における操作を補助するために、知覚の刺激を操作者に与える。操作者は、操作に対する補助を、体感を通じて認識することができる。よって、操作者は、容易に且つ確実に当該補助を認識することができる。さらに、ハプティクスデバイスを用いた刺激は、多様な補助の内容を操作者に認識させることができる。
また、実施の形態に係る機械装置システム1において、制御装置30は、機械装置10の動作を示す第一動作情報を操作装置20に出力する処理部としての動作情報処理部37を含み、知覚装置としてのハプティクスデバイスは、第一動作情報に基づく機械装置10の動作状態に対応する知覚の刺激を操作者に与えてもよい。上記構成によると、操作者は、機械装置10の動作を体感しつつ操作装置20を操作することができる。よって、操作者は、操作装置20を用いた機械装置10の動作を適切に行うことができる。
また、実施の形態に係る機械装置システム1において、操作装置20は、慣性計測装置を含み、第二動作情報としての慣性計測装置の計測データに基づく操作情報を出力してもよい。上記構成によると、操作装置20は、操作装置20の動作を示す第二動作情報に基づく操作情報を出力する。操作情報は、慣性計測装置の計測データに基づく情報であるため、操作装置20の動作を的確に示すことができる。よって、操作情報の精度が向上し、それにより、操作装置20の操作内容が機械装置10の動作に高い精度で反映される。
また、実施の形態に係る機械装置システム1において、操作装置20は、3次元空間内で任意の方向に移動自在であるように構成されてもよい。上記構成によると、操作装置20は、機械装置10に多様な動作をさせることができる。
また、実施の形態に係る機械装置システム1において、機械装置10の動作を示す第一動作情報は、機械装置10が対象物に加える力を表す力データを含んでもよい。上記構成によると、演算部36は、機械装置10が対象物に加える力を考慮した機械装置10の動作の指令を出力する。よって、補助情報処理部39は、機械装置10の作用部11等の力の状態を考慮した補助指令を出力することができる。このような補助指令は、操作装置20における操作を高い精度で補助することができる。
また、実施の形態に係る機械装置システム1において、機械装置10の動作を示す第一動作情報は、機械装置10の位置を表す位置データを含んでもよい。上記構成によると、演算部36は、機械装置10の位置を考慮した機械装置10の動作の指令を出力する。よって、補助情報処理部39は、機械装置10の作用部11等の位置を考慮した補助指令を出力することができる。このような補助指令は、操作装置20における操作を高い精度で補助することができる。
また、実施の形態に係る機械装置システム1において、機械学習モデル36aは、ニューラルネットワークで構成されてもよい。上記構成によると、ニューラルネットワークは、フレキシブル且つ高精度な処理を可能にする。よって、機械学習モデル36aは、多様な入力データに対して高精度な出力データを出力することが可能である。
さらに、実施の形態に係る機械装置システム1において、機械装置10の動作を示す第一動作情報は、機械装置10の現在の動作と過去の動作とを含んでもよい。上記構成によると、第一動作情報は、機械装置10の動作の時系列情報を示す。そして、機械学習モデル36aは、このような時系列情報を入力データとする。よって、機械学習モデル36aは、機械装置10の経時的な挙動を考慮した機械装置10の動作の指令を出力する。従って、機械学習モデル36aの出力精度が向上する。
また、実施の形態に係る機械装置システム1において、制御装置30は、機械装置10の自動運転において、操作装置20から出力される操作情報に従って、機械装置10の動作を修正する修正制御部としての修正指令部33及び駆動指令部34と、機械装置10の第一動作情報を記憶する第一記憶部40と、修正指令部33によって行われた修正を示す修正情報とを記憶する第二記憶部41とを備えてもよい。さらに、演算部36は、第一動作情報と第一動作情報に対応する修正情報とを用いて機械学習モデル36aに機械学習させてもよい。また、動作指令部32は、自動運転において、演算部36の指令に基づき機械装置10の動作を制御し、機械装置10の手動運転において、操作装置20の操作情報に従って機械装置10の動作を制御し、補助情報処理部39は、手動運転において、補助指令を出力してもよい。
上記構成によると、演算部36は、機械装置10の動作を示す第一動作情報と、操作装置20を用いて行われた機械装置10の動作の修正を示す修正情報とを学習データとして用いて機械学習モデル36aに機械学習させる。つまり、演算部36は自身で機械学習を実行する。演算部36は、機械装置10の制御結果を用いて機械学習モデル36aに機械学習させため、機械装置10を動作させるに従って、機械学習モデル36aの学習精度を向上させることができる。また、上記学習データは、操作者が操作装置20を介して機械装置10の動作を修正することによって生成されるため、その生成が簡易である。さらに、機械装置10の動作の修正は、機械装置10の動作を確認した操作者によって行われるため、適切なものである。よって、適切な学習データの簡易な生成が可能である。このような学習データを用いて機械学習する機械学習モデル36aは、操作者等が理想とするような機械装置10の動作に対応する指令を出力する出力精度を短期間で達成することができる。従って、機械学習に要する時間の短縮が可能である。
また、実施の形態に係る制御システム100は、実施の形態に係る制御装置30と、操作装置20とを備える。上記構成によると、実施の形態に係る制御装置30と同様の効果が得られる。
また、実施の形態に係る機械装置システム1は、実施の形態に係る制御装置30と、機械装置10と、操作装置20とを備える。上記構成によると、実施の形態に係る制御装置30と同様の効果が得られる。
(変形例1)
実施の形態の変形例に係る機械装置システム1Aを説明する。本変形例では、機械装置システム1Aは、機械装置としてロボット10Aを備え、ロボット10Aの動作を動作データだけでなく、ロボット10Aの処理対象の画像を用いて制御する。以下、本変形例について、実施の形態と異なる点を中心に説明し、実施の形態と同様の点の説明を適宜省略する。
[2-1.機械装置システム]
図7は、変形例1に係る機械装置システム1Aの構成の一例を示す機能ブロック図である。図7に示すように、本変形例に係る機械装置システム1Aは、実施の形態に係る機械装置システム1と比較して、撮像装置70をさらに備える。さらに、機械装置システム1Aは、機械装置10としてのロボット10Aと、制御装置30としての制御装置30Aとを備える。ロボット10Aは、エンドエフェクタ11A及びロボットアーム12Aを備え、エンドエフェクタ11Aは作用部11に対応し、ロボットアーム12Aは動作部12に対応する。ロボット10Aの詳細は後述する。
撮像装置70は、ロボット10Aが処理する対象物を撮像する。撮像装置70の例は、デジタルカメラ及びデジタルビデオカメラ等である。例えば、撮像装置70は、エンドエフェクタ11A又はロボットアーム12A等に配置されるが、エンドエフェクタ11A又はロボットアーム12Aから離れた位置に配置されてもよい。撮像装置70は、撮像した画像の信号を制御装置30Aに出力する。撮像装置70は画像の信号を出力装置60に出力してもよい。これにより、操作者は、出力装置60を介して、エンドエフェクタ11Aによる対象物の処理状態を確認することができる。そして、操作者は、対象物の処理状態を確認しつつ、操作装置20を用いたエンドエフェクタ11Aの動作の制御を行うことができる。
[2-2.ロボット]
図8は、変形例1に係るロボット10Aの構成の一例を示す側面図である。図8に示すように、ロボット10Aのロボットアーム12Aの基部は、基台13に取り付け固定され、ロボットアーム12Aの先端部には、エンドエフェクタ11Aが着脱可能に取り付けられている。エンドエフェクタ11Aは、把持、吸着、吊り上げ、又は掬い上げ等の対象物に対応する様々な作用を、対象物に加えることができるように構成される。図7の例では、エンドエフェクタ11Aは、対象物Wを把持するように構成され、ロボット10Aは、エンドエフェクタ11Aで把持した対象物Wを組付対象物Tに組み付ける作業を行う。ロボット10Aの作業は組み付けに限定されず、いかなる作業であってもよい。ロボット10Aの作業の例は、仕分け、組立、塗装、溶接、接合、チッピング、研磨、シーリング、半導体製造、薬剤調合及び手術などの医療行為等である。
ロボットアーム12Aは、その基部から先端に向かって順に配置されたリンク12Aa~12Afと、リンク12Aa~12Afを順次接続する関節JT1~JT6と、関節JT1~JT6それぞれを回転駆動するアーム駆動装置M1~M6とを備えている。アーム駆動装置M1~M6の動作は、制御装置30Aによって制御される。これに限定されないが、本実施の形態では、アーム駆動装置M1~M6はそれぞれ、電力を動力源とし、これらを駆動する電気モータとしてサーボモータを有する。なお、ロボットアーム12Aの関節の数量は、6つに限定されず、7つ以上であってもよく、1つ以上5つ以下であってもよい。
リンク12Aaは基台13の取付面13aに取り付けられ、エンドエフェクタ11Aはリンク12Afの先端部に取り付けられている。リンク12Afの先端部にはメカニカルインターフェースが設けられている。エンドエフェクタ11Aは、メカニカルインターフェースに、力センサ14を介して装着される。力センサ14の例は、力覚センサ等であり、力覚センサの構成は特に限定されないが、例えば、3軸加速度センサで構成されてもよい。力センサ14は、エンドエフェクタ11Aが対象物に作用させる力を、当該対象物から受ける反力として検出する。力センサ14によって検出される力は、適宜な信号処理手段(図示せず)によって力データに変換される。この信号処理手段は、例えば、力センサ14又は制御装置30に設けられる。本明細書では、便宜上、力センサ14が力データを検出すると表現する。
関節JT1は、基台13とリンク12Aaの基端部とを、取付面13aに対して垂直である鉛直方向の軸周りに回転可能に連結する。関節JT2は、リンク12Aaの先端部とリンク12Abの基端部とを、取付面13aに平行な水平方向の軸周りに回転可能に連結する。関節JT3は、リンク12Abの先端部とリンク12Acの基端部とを、取付面13aに平行な方向の軸周りに回転可能に連結する。関節JT4は、リンク12Acの先端部とリンク12Adの基端部とを、リンク12Acの長手方向の軸周りに回転可能に連結する。関節JT5は、リンク12Adの先端部とリンク12Aeの基端部とを、リンク12Adの長手方向と直交する方向の軸周りに回転可能に連結する。関節JT6は、リンク12Aeの先端部とリンク12Afの基端部とを、リンク12Aeに対する捻れ回転可能に連結する。
アーム駆動装置M1~M6はそれぞれ、サーボモータ(図示せず)と、サーボモータの回転子の回転量を検出するエンコーダ等の回転センサ(図示せず)と、サーボモータの駆動電流を検出する電流センサ(図示せず)とを備えてもよい。アーム駆動装置M1~M6はそれぞれ、制御装置30Aから出力される指令等に従って、サーボモータを動作させ、回転センサの検出値を制御装置30Aに出力する。制御装置30Aは、各サーボモータからフィードバックされた回転センサの検出値に基づき、当該サーボモータの回転子の回転量及び回転速度等を検出し、検出結果を用いて当該サーボモータの回転開始、回転停止、回転速度及び回転トルクを制御する。これにより、制御装置30Aは、各サーボモータを任意の回転位置で停止させることができ、任意の回転速度で回転させることができ、任意の回転トルクで動作させることができる。よって、制御装置30Aは、ロボットアーム12Aを多様に且つ緻密に動作させることができる。
後述する制御装置30Aの動作情報演算部43は、アーム駆動装置M1~M6の全てのサーボモータの回転量を統合することで、エンドエフェクタ11Aの3次元位置を位置データとして算出する。また、力センサ14が検出するデータが力データである。上記位置データ及び上記力データは、ロボット10Aの動作データである。アーム駆動装置M1~M6の回転センサと力センサ14とは、動作情報検出装置50を構成する。アーム駆動装置M1~M6の電流センサの検出信号は、制御装置30Aが、アーム駆動装置M1~M6それぞれのサーボモータの電流を、電流指令に従った値になるようにフィードバック制御するために用いられる。上述のように、ロボット10Aは垂直多関節型ロボットとして構成されるが、これに限定されない。
[2-3.操作装置]
図9は、変形例1に係る操作装置20の外観の一例を示す図である。図10は、変形例1に係る操作装置20の構成の一例を示す機能ブロック図である。図9に示すように、操作装置20は、人の手が把持することが可能である筐体20aを備える。さらに、操作装置20は、筐体20aに入力装置21を備える。図9では、入力装置21はボタンスイッチであるが、これに限定されない。また、操作装置20は、筐体20aの内部に、図示しない慣性計測装置22、ハプティクスデバイス23、操作制御装置24及び通信装置25を備える。機械装置システム1Aでは、制御装置30Aは、操作装置20を用いてロボット10Aに対してバイラテラル制御を行う。
図10を参照しつつ、操作装置20の構成要素を説明する。ハプティクスデバイス23は、実施の形態において説明したとおりである。
通信装置25は、操作装置20と制御装置30Aとを有線通信又は無線通信を介して接続する。通信装置25は、通信回路を含んでもよい。有線通信及び無線通信の形式はいかなる形式であってもよい。
入力装置21は、操作者による指令及び情報等の入力を受け付け、入力された指令及び情報等を操作制御装置24及び通信装置25を介して、制御装置30Aに送信する。このような入力装置21は、物理的な入力、音声による入力及び画像による入力等を受け付けてもよい。例えば、入力装置21は、スライドスイッチ、ボタンスイッチ、キー、レバー、タッチパネル、マイク及びカメラ等の装置を備えてもよい。例えば、入力装置21に入力される指令及び情報は、ロボット10Aの運転モードの選択及び実行指令、エンドエフェクタ11Aの動作の選択及び実行指令等を示してもよい。
慣性計測装置22は、3軸加速度センサ及び3軸角速度センサを含み、操作装置20の3軸方向の加速度及び角速度を検出する。慣性計測装置22によって検出された3軸方向の加速度及び角速度の計測データは、操作制御装置24によって、位置、姿勢、移動、移動速度及び力等の操作装置20の動作及び作用力を示す様々な情報に変換され、当該情報が操作装置20の操作情報として通信装置25を介して制御装置30Aに送信される。なお、3軸方向の加速度及び角速度の計測データが制御装置30Aに送信され、制御装置30Aが当該データを変換する演算を行ってもよい。慣性計測装置22の計測データから変換される情報は、エンドエフェクタ11Aの位置、姿勢、移動、移動速度及び作用力等を示してもよい。慣性計測装置22は地磁気センサ及び温度センサ等を含んでもよい。例えば、3軸方向の加速度及び角速度の計測データは、地磁気センサ及び温度センサ等の計測データを用いて補正されてもよい。
操作制御装置24は、操作装置20の全体の動作を制御する。操作制御装置24は、制御装置30について実施の形態において例示した構成と同様の構成を有してもよい。例えば、操作制御装置24は、入力装置21から信号を受け取り、当該信号を対応する操作を示す情報に変換し、制御装置30Aに送信する。また、操作制御装置24は、慣性計測装置22の計測データを変換し、変換データを制御装置30Aに送信する。又は、操作制御装置24は、慣性計測装置22の計測データを制御装置30Aに送信する。操作制御装置24は、制御装置30Aからロボット10Aの動作情報を受信し、動作情報に含まれる動作データ等をハプティクスデバイス23への入力に適合するデータに変換し、ハプティクスデバイス23に出力する。
[2-4.制御装置]
制御装置30Aの構成を説明する。図7に示すように、本変形例に係る制御装置30Aは、実施の形態に係る制御装置30と比較して、動作情報演算部43と、画像処理部44と、第四記憶部45とをさらに含み、演算部36の代わりに演算部36Aを含む。
動作情報演算部43は、動作情報検出装置50から受け取るデータを動作データに変換し、動作情報処理部37及び第一記憶部40に出力する。具体的には、動作情報検出装置50は、ロボット10Aのアーム駆動装置M1~M6の回転センサを用いて検出したサーボモータの回転量のデータと、力センサ14を用いて検出した力の力データとを動作情報演算部43に出力する。動作情報演算部43は、アーム駆動装置M1~M6の全てのサーボモータの回転量を統合することで、エンドエフェクタ11Aの3次元位置を示す位置データを算出する。動作情報演算部43は、同じ検出時刻の力データと位置データとを、当該検出時刻と関連付けて含む動作データを生成し出力する。
画像処理部44は、撮像装置70によって撮像された画像を示す画像データを受け取り、当該画像データに対して画像処理を行う。画像処理部44は、画像処理によって、画像に含まれる対象物及びエンドエフェクタ11Aを抽出し、対象物及びエンドエフェクタ11Aのみを含む画像の画像データである処理画像データを生成する。画像処理部44は、処理画像データを、その撮像時刻と関連付けて第四記憶部45に記憶させる。画像処理部44は、処理前の画像データも第四記憶部45に記憶させてもよい。
画像から対象物及びエンドエフェクタ11Aの像を抽出する方法は、既知のいかなる方法であってもよい。例えば、画像処理部44は、特徴ベース又は領域ベース等の画像マッチング手法を用いて、対象物及びエンドエフェクタ11Aの像を抽出してもよい。
例えば、特徴ベースの場合、画像処理部44は、処理前の画像において、エッジ及びコーナー等の特徴点を抽出し、特徴点の特徴量を算出してもよい。さらに、画像処理部44は、特徴点の特徴量に基づき、処理前の画像と対象物及びエンドエフェクタ11Aの画像のテンプレートとの間でマッチングを行うことで、処理前の画像から対象物及びエンドエフェクタ11Aの像を抽出してもよい。また、領域ベースの場合、画像処理部44は、処理前の画像において、エッジ及びテクスチャ等に基づき、各領域を特定してもよい。さらに、画像処理部44は、特定した領域に基づき、処理前の画像と対象物及びエンドエフェクタ11Aの画像のテンプレートとの間でマッチングを行うことで、処理前の画像から対象物及びエンドエフェクタ11Aの像を抽出してもよい。対象物及びエンドエフェクタ11Aの画像のテンプレートは、第四記憶部45に予め記憶されていてもよい。
第四記憶部45は、第一記憶部40等と同様に、記憶装置によって実現される。第四記憶部45は、撮像装置70によって撮像された画像データ、画像処理部44によって処理された処理画像データ、並びに、対象物及びエンドエフェクタ11Aの画像のテンプレート等を記憶する。
また、本変形例に係る演算部36Aは、ロボット10Aの動作情報と当該動作情報に対応する修正情報とを用いて機械学習する。また、演算部36Aは、ロボット10Aの動作情報を入力データとし、当該動作情報に対応する指令を出力データとする。本変形例では、ロボット10Aの動作情報は、ロボット10Aのエンドエフェクタ11Aの動作データと、撮像装置70によって撮像された対象物の画像データとを含む。当該画像データは、エンドエフェクタ11Aと対象物との位置関係、及び、エンドエフェクタ11Aによる対象物の処理状況等のエンドエフェクタ11Aの動作情報を示す。本変形例では、画像データは、画像処理部44による処理済みの処理画像データであるが、処理前の画像データであってもよい。処理画像データを用いることによって、ニューラルネットワークの出力精度の向上が可能である。
例えば、機械学習では、演算部36Aのニューラルネットワークにおいて、エンドエフェクタ11Aの動作データ及び対象物の画像データが入力データとされ、これらのデータの検出時に実行された修正情報が教師データとされる。データの入出力時、ニューラルネットワークは、エンドエフェクタ11Aの動作データ及び対象物の画像データの入力を受け付け、ロボット10Aに次に実行させるための実行動作修正指令を出力する。
演算部36Aの構成の一例を説明する。図11は、変形例1に係る演算部36Aの構成の一例を示す図である。図11に示すように、演算部36Aは、機械学習モデル36Aaと、データ生成部36bと、データ入力部36cと、学習評価部36dとを含む。
本例でも、ロボット10Aが所定の動作を1回実行する間、各指令及び各データは所定のサンプリング間隔で取得される。例えば、修正情報検出部35は、修正動作指令Pmの時系列データPm0~Pmuを当該サンプリング間隔で取得する。動作情報検出装置50は、エンドエフェクタ11Aの検出データを当該サンプリング間隔で取得し、動作情報演算部43は、当該検出データを演算することで、エンドエフェクタ11Aの動作データPdの時系列データPd0~Pduを取得する。また、撮像装置70は、対象物が撮像された画像データを当該サンプリング間隔で取得し、画像処理部44は、画像データを画像処理することで、画像処理済みの処理画像データIpの時系列データIp0~Ipuを取得する。
機械学習時の演算部36Aの処理を説明する。データ生成部36bは、第一記憶部40の動作データPdの時系列データPd0~Pduと、第四記憶部45の処理画像データIpの時系列データIp0~Ipuとを用いて、学習データLdの時系列データLd0~Lduを生成する。時系列データLdiは、時系列データPdi及びIpiを用いて生成される。また、データ生成部36bは、第二記憶部41の修正動作指令Pmの時系列データPm0~Pmuから教師データpnの時系列データpn0~pnuを生成する。
データ入力部36cは、機械学習モデル36Aaのニューラルネットワークの入力層の各ニューロンに学習データLdの時系列データLd0~Lduを順次入力する。ニューラルネットワークは、サンプリング時刻tiでの学習データLdの時系列データLdiの入力を受けると、次のサンプリング時刻ti+1での実行動作修正指令Pni+1を予測し出力する。
学習評価部36dは、サンプリング時刻ti+1における教師データpnの時系列データpni+1と実行動作修正指令Pni+1とに基づき、ニューラルネットワークのニューロン間の重みを調節する。データ入力部36c及び学習評価部36dは、時系列データLd0~Lduの全てについて上記処理を行う。
データの入出力時の演算部36Aの処理を説明する。ロボット10Aの動作時、動作情報演算部43は、現在のサンプリング時刻tiにおける動作情報検出装置50の検出データを用いて、動作データPdiを検出し、演算部36Aに出力する。並行して、画像処理部44は、サンプリング時刻tiに撮像装置70によって撮像された画像データを用いて、処理画像データIpiを生成し、演算部36Aに出力する。
データ入力部36cは、動作データPdi及び処理画像データIpiを機械学習モデル36Aaのニューラルネットワークに入力する。ニューラルネットワークは、動作データPdi及び処理画像データIpiを入力データとすることで、次のサンプリング時刻ti+1における実行動作修正指令Pni+1を出力データとして、動作指令部32に出力する。動作指令部32は、実行動作修正指令Pni+1を反映した実行動作指令を生成する。各サンプリング時刻t0~tu-1において、機械学習モデル36Aaが上記処理を行う。このような機械学習モデル36Aaによる処理には、対象物の処理状態が考慮される。
なお、機械学習モデル36Aaのニューラルネットワークは、実施の形態と同様に、入力データとして、サンプリング時刻tiにおける動作データPdi及び処理画像データIpiと、過去のサンプリング時刻ti-1~ti-nの動作データPdi-1~Pdi-n及び処理画像データIi-1~Ii-nとが入力されるように構成されてもよい。また、変形例1に係る機械装置システム1Aのその他の構成及び動作は、実施の形態と同様であるため、その詳細な説明を省略する。
[2-5.効果等]
上述のような変形例1に係る機械装置システム1Aによれば、実施の形態と同様の効果が得られる。さらに、機械装置システム1Aにおいて、機械学習モデル36Aaは、ロボット10Aの動作情報と当該動作情報に対応する修正情報とを用いて機械学習し、ロボット10Aの動作情報を入力データとし、当該動作情報に対応する指令を出力データとする。ロボット10Aの動作情報は、ロボット10Aのエンドエフェクタ11Aの動作データと、撮像装置70によって撮像された対象物の画像データとを含む。上記構成により、機械学習モデル36Aaは、エンドエフェクタ11Aの動作状態だけでなく、画像から認識される処理対象の対象物の状態、つまり処理状態に対応した出力をすることができる。例えば、ロボット10Aが塗装、溶接、チッピング、研磨又はシーリング等の作業を行う場合、対象物における処理対象の部位の状態に応じて作業の出来映えが変化する。機械学習モデル36Aaは、当該部位を含む画像を入力データとすることで、当該部位の状態に適した出力をすることができる。よって、機械学習モデル36Aaの出力精度が向上する。なお、画像データを含む動作情報を扱う機械学習モデル36Aaは、ロボット以外のいかなる機械装置に用いられてもよい。
(変形例2)
実施の形態の変形例2に係る機械装置システム1Bを説明する。本変形例では、機械装置システム1Bは、自身で機械学習モデルに学習させず、与えられた機械学習モデルを用いて処理を行う点で、実施の形態及び変形例1と異なる。以下、本変形例について、実施の形態及び変形例1と異なる点を中心に説明し、実施の形態及び変形例1と同様の点の説明を適宜省略する。
[3-1.機械装置システム]
図12は、変形例2に係る機械装置システム1Bの構成の一例を示す機能ブロック図である。図12に示すように、本変形例に係る機械装置システム1Bは、実施の形態に係る機械装置システム1と比較して、制御装置30として制御装置30Bを備える。さらに、制御装置30Bは、実施の形態に係る制御装置30と比較して、修正指令部33、修正情報検出部35、第一記憶部40及び第二記憶部41を備えず、演算部36の代わりに演算部36Bを備える。制御装置30Bの動作決定部31、動作指令部32、駆動指令部34、動作情報処理部37、差異検出部38、補助情報処理部39及び第三記憶部42の構成は、実施の形態と同様である。なお、動作指令部32は、全てのモードにおいて、実行動作指令を駆動指令部34に出力し、訓練モードにおいて、実行動作指令を差異検出部38にも出力する。
図13は、変形例2に係る演算部36Bの構成の一例を示す図である。図13に示すように、演算部36Bは、機械学習モデル36Baと、データ入力部36cとを含む。演算部36Bは、自動運転モード及び訓練モードにおいて、データの入出力の機能を実行する。データ入力部36cは、動作情報検出装置50及び動作情報処理部37によって検出される機械装置10の動作データを機械学習モデル36Baのニューラルネットワークに入力する。機械学習モデル36Baは、実施の形態の機械学習モデル36aと同様の構成を有するが、機械装置システム1Bの外部での機械学習を通じて生成され、演算部36Bに与えられた機械学習モデルである。例えば、機械学習モデル36Baは、1つの機械装置システム1Bにおいて収集された学習データだけでなく、他の機械装置システムにおいて収集された学習データも用いた機械学習を通じて生成されてもよい。このような機械学習モデル36Baは、多くの学習データを用いて機械学習するため、多様な入力データに対応した出力データを出力することができる。予め生成された機械学習モデル36Baは、演算部36Bの図示しない記憶部等に保持され、新たな機械学習モデルが生成されると、当該機械学習モデルによって更新されてもよい。
[3-2.効果等]
上述のような変形例2に係る機械装置システム1Bによれば、実施の形態と同様の効果が得られる。さらに、機械装置システム1Bにおいて、機械学習モデル36Baは、機械装置システム1Bの外部から与えられた機械学習モデルであってもよい。このような機械学習モデル36Baは、機械装置システム1Bだけでなく、それ以外のシステム等で収集された学習データを用いた機械学習によって生成され得る。機械学習モデル36Baは、多様な入力データに対応して出力データを出力できるため、そのフレキシビリティを向上することができる。なお、本変形例に係る機械装置システム1Bの構成を、変形例1に適用してもよい。
(その他の実施の形態)
以上、本発明の実施の形態の例について説明したが、本発明は、上記実施の形態及び変形例に限定されない。すなわち、本発明の範囲内で種々の変形及び改良が可能である。例えば、各種変形を実施の形態及び変形例に施したもの、及び、異なる実施の形態及び変形例における構成要素を組み合わせて構築される形態も、本発明の範囲内に含まれる。
例えば、実施の形態及び変形例において、制御装置の補助情報処理部39は、操作装置20における操作を補助するために、操作装置20を介して操作者に知覚の刺激を与えていたが、これに限定されない。例えば、補助情報処理部39は、操作装置20以外の装置に補助指令を出力し、当該装置に、操作者への知覚の刺激を発生させてもよい。
例えば、補助情報処理部39は、操作装置20における操作を補助する画像を表示するための補助指令を、出力装置60等の画像出力装置に出力するように構成されてもよい。例えば、図14に示すように、上記補助指令は、出力装置60における操作者の操作用の画面Sにおいて、カメラによって撮像されたロボット10Aの画像上に、操作装置20と指標Ad1及びAd2とを表す画像を重畳表示する指令であってもよい。例えば、指標Ad1及びAd2は、操作装置20の移動方向を示す矢印と移動順序を示す数値とを含んでもよい。よって、操作者は視覚を介して補助を受けることができる。
また、補助情報処理部39は、操作装置20における操作を補助する音声を出力するための補助指令を、出力装置60等の音声出力装置に出力するように構成されてもよい。よって、操作者は聴覚を介して補助を受けることができる。
また、実施の形態及び変形例において、操作装置20は、操作者に知覚の刺激を与えるためにハプティクスデバイス23を備えていたが、これに限定されない。操作装置20は、操作者に知覚の刺激を与えるいかなる装置を備えてもよい。例えば、操作装置20は、触覚、温覚、視覚及び聴覚の刺激の少なくとも1つを操作者に与えるように構成されてもよい。操作装置20は、操作装置20の膨張収縮又は伸縮などの変形、及び振動等により触覚の刺激を与え、例えば、空気圧又は液圧により膨張収縮する装置、及び圧電素子などの振動を発生する装置等を備えてもよい。操作装置20は、発熱等により温覚の刺激を与え、例えば、ヒータ等を備えてもよい。操作装置20は、発光及び光の点滅等により視覚の刺激を与え、例えば、LED(Light Emitting Diode)などの光源等を備えてもよい。操作装置20は、発音等により聴覚の刺激を与え、例えば、スピーカ等を備えてもよい。
また、実施の形態及び変形例において、制御装置は、訓練モードを手動運転モードにおいて実行するように構成されていたが、自動運転モードにおいても訓練モードを実行するように構成されてもよい。例えば、自動運転モードで実行される所定の動作が自動運転による動作と手動運転による動作とを含む場合、制御装置は、手動運転による動作に対して訓練モード及び非訓練モードからいずれかを選択して実行するように構成されてもよい。
また、実施の形態及び変形例において、制御装置は、自動運転モード時、1つの操作装置20から出力される操作情報に従って、機械装置10及びロボット10Aの動作を修正したが、これに限定されない。制御装置は、2つ以上の操作装置20のから出力される操作情報に従って、機械装置10及びロボット10Aの動作を修正してもよい。例えば、2つ以上の操作装置20に優先順位が設定され、制御装置は、優先順位に従って、2つ以上の操作装置20のから出力される操作情報のうちから修正に採用する操作情報を決定してもよい。又は、制御装置30及び30Aは、2つ以上の操作装置20のから出力される操作情報に対して、加算、減算、平均化、又は、他の統計的処理等の処理を実行し、処理後の操作情報を修正に採用してもよい。
また、実施の形態及び変形例において、機械学習モデルが機械学習に用いる情報は、自動運転モードのときに取得される情報、具体的には、機械装置10及びロボット10Aの動作情報としての動作データ及び対象物の画像データのうちの少なくとも動作データと、修正情報としての修正動作指令とであったが、これに限定されない。例えば、機械学習モデルは、手動運転モードのときに取得される情報を機械学習に用いてもよい。このような情報は、例えば、操作装置20の操作情報に基づく実行動作指令と、当該実行動作指令に従って動作した機械装置10及びロボット10Aの動作情報としての動作データ及び対象物の画像データのうちの少なくとも動作データとであってもよい。これにより、機械学習モデルは、操作者による機械装置10及びロボット10Aの操作結果も機械学習するため、人の操作に近い出力をすることができる。
また、変形例において、ロボット10Aは垂直多関節型ロボットであったが、これに限定されず、例えば、水平多関節型ロボット、極座標型ロボット、円筒座標型ロボット、直角座標型ロボット、垂直多関節型ロボット、又はその他のロボットとして構成されてもよい。
また、本発明は、制御方法であってもよい。例えば、本発明に係る制御方法は、機械装置を操作するための操作装置から出力される操作情報に従って、前記機械装置を動作させ、前記機械装置の動作を示す第一動作情報を入力データとして機械学習モデルに入力して、前記第一動作情報に対応する前記機械装置の動作の指令を出力させ、前記機械装置の動作と、前記機械学習モデルによって出力される前記指令に対応する前記機械装置の動作との間の差異に基づき、前記操作装置における操作を補助する補助指令を出力し、前記操作装置は、前記操作装置の動作を示す第二動作情報に基づく前記操作情報を出力する。この制御方法によれば、上記機械装置システム等と同様の効果が得られる。このような制御方法は、CPU、LSIなどの回路、ICカード又は単体のモジュール等によって、実現されてもよい。
また、本発明は、上記制御方法を実行するためのプログラムであってもよく、上記プログラムが記録された非一時的なコンピュータ読み取り可能な記録媒体であってもよい。また、上記プログラムは、インターネット等の伝送媒体を介して流通させることができるのは言うまでもない。
また、上記で用いた序数、数量等の数字は、全て本発明の技術を具体的に説明するために例示するものであり、本発明は例示された数字に制限されない。また、構成要素間の接続関係は、本発明の技術を具体的に説明するために例示するものであり、本発明の機能を実現する接続関係はこれに限定されない。
また、機能ブロック図におけるブロックの分割は一例であり、複数のブロックを一つのブロックとして実現する、一つのブロックを複数に分割する、及び/又は、一部の機能を他のブロックに移してもよい。また、類似する機能を有する複数のブロックの機能を単一のハードウェア又はソフトウェアが並列又は時分割に処理してもよい。