以下、本発明を説明する。本明細書において使用される用語は、特に言及しない限り、当該分野で通常用いられる意味で用いられることが理解されるべきである。したがって、他に定義されない限り、本明細書中で使用される全ての専門用語および科学技術用語は、本発明の属する分野の当業者によって一般的に理解されるのと同じ意味を有する。矛盾する場合、本明細書(定義を含めて)が優先する。
(用語の定義)
本明細書において、「操作者」とは、ロボットを動かすための入力を提供する人物を意味する。
本明細書において、操作者またはロボットの「部位」とは、操作者またはロボット全体のうちの一領域を指す。操作者の部位は、例えば、操作者の手指、手、腕、頭、首、腰、脚、上半身、および下半身等を含み、ロボットの部位は、操作者の部位に対応する部位を含む。本明細書において、操作者またはロボットの「部分」とは、操作者またはロボットの部位を構成する一部分を指す。例えば、操作者の部位が手指である場合、操作者の部分は、末節骨、遠位指節間関節、中節骨、近位指節間関節、基節骨、中手指節関節、手根中手関節等を含む。
本明細書において、一方の動きに対して他方の動きが「先行する」とは、同時刻において、一方が将来行うことが予想される動きを他方が行うことを指す。例えば、関節の屈曲運動において、一方の動きに対して他方の動きが先行するということは、関節の伸展状態の角度を0度とした場合、一方の関節角度が30度であるときに、他方の関節角度が30度より大きい角度(例えば、35度、40度、45度等)をとることを指す。一方、関節の伸展運動において、一方の動きに対して他方の動きが先行するということは、関節の伸展状態の角度を0度とした場合、一方の関節角度が30度であるときに、他方の関節角度が30度より小さい角度(例えば、25度、20度、15度等)をとることを指す。また、本明細書において、一方の動きに対して他方が先行する動きを行っているときのある時刻における他方の姿勢は、一方の姿勢に対して「先行する」姿勢であると称される。
本明細書において、一方の動きに対して他方の動きが「後行する」とは、同時刻において、一方が過去に行った動きを他方の動きが行うことを指す。例えば、関節の屈曲運動において、一方の動きに対して他方の動きが後行するということは、関節の伸展状態の角度を0度とした場合、一方の関節角度が30度であるときに、他方の関節角度が30度より小さい角度(例えば、25度、20度、15度等)をとることを指す。一方、関節の伸展運動において、一方の動きに対して他方の動きが後行するということは、関節の伸展状態の角度を0度とした場合、一方の関節角度が30度であるときに、他方の関節角度が30度より大きい角度(例えば、35度、40度、45度等)をとることを指す。また、本明細書において、一方の動きに対して他方が後行する動きを行っているときのある時刻における他方の姿勢は、一方の姿勢に対して「後行する」姿勢であると称される。
本明細書において、「約」とは、後に続く数値の±10%を意味する。
以下、図面を参照しながら、本発明の実施の形態を説明する。
(本システムの構成)
図1は、操作者の動きに基づいてロボットの動きを制御するためのシステム10の構成の一例を示す。
システム10は、操作者の動きを測定する測定機器100と、コンピュータ装置200と、ロボット300とを備えている。システム10では、測定機器100から取得された操作者の動きに関する情報に基づいて、コンピュータ装置200が、ロボット300を動かす制御信号を生成する。そして、コンピュータ装置200は、生成した制御信号をロボット300に出力し、それによってロボット300が動く。
測定機器100は、ロボット300に伝達すべき動きを行う操作者の部位(以下では「動作部位」ともいう)に取り付けられるように構成されている。測定機器100は、操作者の動作部位に取り付けられることが可能であり、かつ操作者の動きに関する情報を測定することが可能な任意の器具であり得る。測定機器100は、例えば、1つ以上のセンサ(例えば、加速度計、ジャイロセンサ、慣性測定ユニット、角度計、磁気センサ、ひずみゲージ、曲げセンサ等)であり、各々のセンサが操作者に直接取り付けられ得る。別の例では、測定機器100は、1つ以上のセンサを備える操作者に装着可能なウェアラブルデバイス(例えば、データグローブ、データスーツ等)であり得る。好ましくは、操作者による制約の少ない動きを可能にし、かつ、正確な情報を取得するために操作者に密着して装着され得るように、測定機器100は、複数の小型のセンサを備えるウェアラブルデバイスであることが好ましい。
図1に示される例では、測定機器100としてデータグローブが示されている。
動作部位は、操作者の身体の任意の部位であり得る。動作部位は、例えば、手指、手、腕、肩、脚、膝、足首、腰、上半身、下半身、全身等であり得る。しかしながら、本発明の測定機器は、各関節が連携して動く手指の動きに対して特に好ましい。
図1に示される例では、動作部位として、手指が示されている。
操作者の動きに関する情報は、操作者の動作部位に関する任意の情報であり得る。操作者の動きに関する情報は、例えば、動作部位の角度、向き、長さ、太さ、面積、体積、座標、位置、速度(角速度)、加速度(角加速度)、複数の部位間の相対的位置、反力等を含み得る。操作者の動きに関する情報は、例えば、操作者の動作部位の長さ、大きさ、太さ、面積、体積等の動作中不変の値であってもよいし、操作者の動作部位の向き、位置、座標、角度、速度、加速度、筋肉の伸び等、操作者の動きにしたがって変化するパラメータ(以下では「操作者パラメータ」ともいう)であってもよい。なお、操作者の動きに関する情報は、後述される軌道上の姿勢の決定を適切に行うために、操作者パラメータを少なくとも1つ含むことが好ましい。
測定機器100によって測定された操作者の動きに関する情報は、コンピュータ装置200に送信される。コンピュータ装置200は、測定機器100から操作者の動きに関する情報を受信することと、受信された操作者の動きに関する情報に基づいてロボット300を動かす制御信号を生成することと、生成された制御信号を出力することとが可能な任意の手段であり得る。コンピュータ装置200は、例えば、専用のコンピュータ装置であってもよいし、汎用のコンピュータ装置であってもよい。コンピュータ装置200は、例えば、デスクトップ型、ラップトップ型、タブレット型、スマートフォン型等のコンピュータ装置であってもよい。コンピュータ装置200は、例えば、測定機器100および/またはロボット300に有線で接続されてもよいし、無線で接続されてもよい。例えば、測定機器100とコンピュータ装置200とは、ネットワーク(例えば、インターネット、LAN等)を介して接続され得る。さらに、コンピュータ装置200は、例えば、測定機器100と別個のコンピュータ装置として実装されてもよいし、測定機器100内に搭載されてもよい。
図1に示される例では、コンピュータ装置200は、ラップトップ型のコンピュータ装置として示されている。
コンピュータ装置200によって生成された制御信号は、ロボット300に送信され得る。ロボット300は、コンピュータ装置200によって生成された制御信号に基づいて動き得る任意のロボットであり得る。好ましくは、ロボット300は、操作者の動作部位に対応する部位を有し得る。例えば、操作者の動作部位が手指である場合、ロボット300は、操作者の手指に対応する部位を有し得る。もっとも、操作者の動作部位に対応するロボット300の部位は、必ずしも操作者の動作部位と同一の形状および構造(例えば、部位の長さ、太さ、厚さ、関節の数、関節の自由度等)である必要はなく、ロボット300が所望される動きを実施し得る限り、操作者の動作部位の形状および構造と異なっていてもよい。ロボット300の部位が対応する操作者の部位と同一の形状および構造を有している場合、ロボット300は、操作者の動きを忠実に再現することができる。一方、ロボット300の部位が、所望される動きを実現するための最小限の形状および構造を有している場合、ロボット300の動きを決定するための計算量を低減させてロボット300の反応が遅延することを防止することができる。
図1に示される例では、ロボット300は、人間の手指と同様の形状および構造を有するロボットハンドとして示されている。
図2Aは、コンピュータ装置200の構成の一例を示す。
コンピュータ装置200は、測定器具100およびロボット300に接続されている。コンピュータ装置200は、受信部210と、プロセッサ部220と、メモリ部230と、出力部240とを備える。
受信部210は、コンピュータ装置200の外部から信号を受信することが可能であるように構成されている。受信部210は、コンピュータ装置200の外部から無線または有線で信号を受信する。受信部210は、例えば、Wi-fi等の無線LANを利用して信号を受信してもよい。受信部210は、Bluetooth(登録商標)等の近距離無線通信等を利用して信号を受信してもよい。受信部210は、例えば、測定機器100によって測定された操作者の動きに関する情報を表す信号を測定機器100から受信する。受信部210は、例えば、ユーザによる入力を受信する。受信部210は、受信された信号をプロセッサ部220に渡し、プロセッサ220は、これを取得する。
プロセッサ部220は、コンピュータ装置200全体の動作を制御する。プロセッサ部220は、メモリ部230に格納されているプログラムを読み出し、そのプログラムを実行する。これにより、コンピュータ装置200を所望のステップを実行するコンピュータ装置として機能させることが可能である。
メモリ部230には、処理の実行に必要とされるプログラムおよびそのプログラムの実行に必要とされるデータ等が格納されている。例えば、メモリ部230には、操作者の動きからロボット300の動きを生成するための処理(例えば、図6、図7を参照して後述される処理)を実現するためのプログラムが格納され得る。ここで、プログラムをどのようにしてメモリ部230に格納するかは問わない。例えば、プログラムは、メモリ部230にプリインストールされていてもよい。あるいは、プログラムは、ネットワークを経由してダウンロードされることによってメモリ部230にインストールされるようにしてもよいし、光ディスクやUSB等の記憶媒体を介してメモリ部230にインストールされるようにしてもよい。
出力部240は、コンピュータ装置200の外部に信号を出力することが可能であるように構成されている。出力部240は、ロボット300へ信号を出力することが可能である。出力部240が信号をどのように出力するかは問わない。出力部240は、例えば、コンピュータ装置200の外部に有線で信号を送信してもよいし、無線で送信してもよい。例えば、出力部240は、信号の出力先のロボット300によって取り扱い可能な形式に変換して、または、信号の出力先のロボット300によって取り扱い可能な応答速度に調整して信号を送信し得る。
プロセッサ部220は、設定手段221と、姿勢決定手段222と、制御信号生成手段223とを備える。
設定手段221は、ロボット300の目標姿勢およびその目標姿勢に向かう軌道を設定するように構成されている。
目標姿勢は、ロボット300が動作の結果、到達することを所望される姿勢であり得る。目標姿勢は、例えば、手指のつまみ姿勢、手指の握り姿勢、手指の伸展姿勢、腕を広げた姿勢、腕を組む姿勢、腕を上方に上げた姿勢、腕を下方に下げた姿勢、膝の屈曲姿勢、膝の伸展姿勢、脚を踏み出す姿勢、脚を蹴り上げた姿勢、上半身の前屈姿勢等、上半身をそらせた姿勢であり得る。目標姿勢は、ロボット300が目標姿勢に到達したときのロボット300のある部分に関する1つ以上のパラメータ(以下では「ロボットパラメータ」ともいう)の値に対応し得る。ロボットパラメータは、例えば、ロボット300のある部分の角度、位置、座標、向き等であり得る。目標姿勢は、ロボット300の単一の部位の単一の部分に関するロボットパラメータの値に対応していてもよいし(例えば、目標姿勢が膝の屈曲姿勢である場合、目標姿勢は人間の膝に対応するロボット300の部分の角度により規定され得る)、ロボット300の単一の部位の複数の部分に関するロボットパラメータの値に対応していてもよいし(例えば、目標姿勢が腕を広げた姿勢である場合、目標姿勢は、少なくとも人間の腕の肘関節に対応するロボット300の第1の部分の角度と、人間の腕の肩関節に対応するロボット300の第2の部分の角度とにより規定され得る)、ロボット300の複数の部位に関するロボットパラメータの値に対応していてもよい(例えば、目標姿勢が手指のつまみ姿勢である場合、目標姿勢は、少なくとも、人間の示指に対応するロボット300の第1の部位の複数の部分の角度と、人間の拇指に対応するロボット300の第2の部位の複数の部分の角度とにより規定され得る)。測定機器100とコンピュータ装置200との間のデータ通信の遅延を防止するために、かつ/または後述する姿勢決定における計算量を低減させるために、目標姿勢は、可能な限り少数の部分(例えば、1~5つの部分)に関する少数のロボットパラメータ(例えば、1~5つ)の値に対応していることが好ましい。
目標姿勢に向かう軌道は、ロボット300の部位が目標姿勢に到達するまでに通る軌道であり得る。軌道は、ロボット300の1つ以上の部分に関する1つ以上のロボットパラメータの変化に対応し得る。軌道は、例えば、目標姿勢に到達するために動かされるロボット300の単一の部位の単一の部分に関するロボットパラメータの変化に対応していてもよいし、ロボット300の単一の部位の複数の部分に関するロボットパラメータの変化に対応していてもよいし、ロボット300の複数の部位の複数の部分に関するロボットパラメータの変化に対応していてもよい。好ましくは、軌道は、目標姿勢を表すために用いられるロボットパラメータ(例えば、手指の角度)と同一のロボットパラメータの変化に対応している。軌道は、ロボット300の部分の可動範囲全体にわたって設定されてもよいし、人間の可動範囲全体にわたって設定されてもよいし、それらの可動範囲のうちの一部から目標姿勢まで設定されてもよい。操作者によって所望される姿勢に到達することが可能である限り、ロボット300の軌道が設定される範囲は、任意である。
軌道は、例えば、複数(例えば、2つ、3つ、または4つ等)のロボットパラメータの変化の関係に対応し得る。軌道に対応する複数のパラメータの変化の関係は、ロボット300が目標姿勢に到達するための軌道を規定することができる限り、任意であり得る。複数のロボットパラメータは、例えば、ロボット300の単一の部分に関する複数の互いに異なる第1のロボットパラメータと第2のロボットパラメータ(例えば、ロボット300の第1の部分の角度と第1の部分の向き)であってもよいし、ロボット300の第1の部分に関する第1のロボットパラメータとロボット300の第2の部分に関する第2のロボットパラメータ(例えば、ロボット300の第1の部分の角度と第2の部分の角度、またはロボット300の第1の部分の角度と第2の部分の向き)であってもよい。軌道に対応する複数のロボットパラメータの変化の関係は、任意の関係であり得、例えば、一定の比率で規定されるような線形関係であってもよいし、非線形の関係であってもよい。
目標姿勢と軌道との関係は、任意であり得る。ある実施形態では、1つの目標姿勢は、1つの軌道に結び付けられ得る。この場合、ロボット300の姿勢を決定するための計算量が低減させられ得る。別の実施形態では、1つの目標姿勢は、複数の軌道に結び付けられ得る。この場合、操作者の動きに近い軌道または操作者の動きに無理のない軌道を選択して、操作者の動きにより近い軌道上でロボット300を動かすことによって操作性を高めつつ、ロボット300を確実に目標姿勢に向けて動かすことができる。さらに別の実施形態では、1つの軌道上に複数の目標姿勢があり得る。これは、複数の段階を有する動作をロボット300に行わせることにおいて有用であり得る。例えば、ロボット300に歩行動作を行わせる場合、脚を上げる姿勢を第1の目標姿勢として設定し、脚を前方に降ろして接地させた姿勢を第2の目標姿勢として設定することによって、確実に(例えば、歩行方向に障害物があったとしても障害物を跨いで)ロボット300を歩行させることを可能にし得る。
設定手段221は、任意の方法により目標姿勢を設定し得る。例えば、目標姿勢および軌道の両方が、予めメモリ部230に記憶されており、設定手段221は、受信部210によりユーザの入力を受信したことを契機に、メモリ部230から目標姿勢および軌道を読み出して設定し得る。別の実施形態では、目標姿勢が予めメモリ部230に記憶されており、設定手段221は、目標姿勢をメモリ部230から読み出して設定し、軌道を目標姿勢から計算することにより設定し得る。さらに別の実施形態では、軌道が予めメモリ部230に記憶されており、設定手段221は、軌道をメモリ部230から読み出して設定し、目標姿勢を軌道から計算することにより設定し得る。他の実施形態では、目標姿勢および/または軌道は、外部機器に記憶されており、外部機器から受信部210によって受信され、設定部221によって設定され得る。
姿勢決定手段222は、受信部210によって受信された操作者の動きに関する情報を取得し、取得された操作者の動きに関する情報と設定手段221によって設定された軌道とに基づいて、ロボット300の軌道上の姿勢を決定するように構成されている。姿勢決定手段222は、操作者の動きに関する情報からロボット300の軌道上の姿勢を決定し得る。具体的には、姿勢決定手段222は、操作者の動きに関する情報を取得し、取得された操作者の動きに関する情報に対応するロボット300の軌道上の姿勢のロボットパラメータの値を決定し得る。操作者の動きに関する情報に対応するロボット300の軌道上の姿勢のロボットパラメータの値は、軌道上でロボット300が操作者の動きに近い動きを行うように、すなわち、動作の各時刻において操作者パラメータの値に最も近いロボットの軌道上の姿勢に対応するロボットパラメータの値に決定されてもよいし、軌道上でロボット300が操作者の動きに先行する動きを行うように、すなわち、操作者パラメータの値に最も近いロボットの軌道上の姿勢に対して先行する姿勢に対応するロボットパラメータの値に決定されてもよい。もっとも、後述されるように、ロボットパラメータの値は、軌道上でロボット300が操作者の動きに先行する動きを行うように決定されることが、操作者によるロボット300の操作性、およびロボット300の物体との相互作用可能性を向上させ得る。さらに、操作者によるロボット300の操作性を向上させるために、ロボットパラメータの値は、軌道上でロボット300が操作者の動きに後行する動きを行うように決定されてもよい。ロボット300の動きを操作者の動きに対して先行させるか、後行させるか、または先行も後行もさせないかは、例えば、実施する動作における操作者による操作のしやすさに合わせて選択され得る。例えば、動作の初期段階では、ロボット300を操作者の動きに後行させ、動作の中間段階では、ロボット300に操作者の動きに近い動きを行わせ、動作の最終段階では、ロボット300を操作者の動きに先行させてもよい。
姿勢決定手段222が取得する操作者の動きに関する情報は、少なくとも1つの操作者パラメータの値を含む。少なくとも1つの操作者パラメータは、例えば、操作者の動作部位またはその部分の向き、位置、座標、角度、速度、加速度、筋肉の伸び、皮膚の伸び等であり得る。もっとも、人体は、複雑な構造を有しているので、人体の動きは多くの変数によって規定される。そのため、操作者の動きをロボット300に可能な限り正確に反映させるために、姿勢決定手段222が取得する操作者の動きに関する情報は、少なくとも2つの操作者パラメータ(第1の操作者パラメータおよび第2の操作者パラメータ)の値を含むことが好ましい。
操作者の動きに関する情報からロボット300の軌道上の姿勢を決定する方法は、任意であり得、例えば、所定の計算式によって計算されてもよいし、操作者パラメータの値と軌道上の姿勢のロボットパラメータの値との対応を表すルックアップテーブルを参照することによって決定されてもよい。もっとも、操作者の動きを連続的にロボット300に反映するために、ロボット300の軌道上の姿勢のロボットパラメータの値は、所定の計算式によって計算されることが好ましい。
図3Aは、ロボット300の軌道上の姿勢を決定する例示的方法を示す。この例では、第1の操作者パラメータの値および第2の操作者パラメータの値から、ロボット300の第1のロボットパラメータの値および第2のロボットパラメータの値を計算することにより、ロボット300の目標姿勢に向かう軌道上の姿勢が決定される。ロボット300の目標姿勢および軌道は、上述されるように、コンピュータ装置200の設定手段221により設定され得る。図3Aに示されるグラフにおいて、ロボットパラメータ座標320は、ロボット300の目標姿勢に対応するロボットパラメータの座標であり、直線322は、目標姿勢に向かう軌道に対応するロボットパラメータの変化の関係である。この例では、目標姿勢は、ロボット300の第1の部分の角度α(第1のロボットパラメータ)の値および第2の部分の角度β(第2のロボットパラメータ)の値に対応し、軌道は、角度αと角度βとの間の線形的関係(例えば、β=kα(kは定数))に従う変化に対応し、これら2つの部分の角度α、βにより、ロボット300の軌道上の姿勢が決定される。この例では、ロボット300の第1の部分は、操作者の第1の関節に対応しており、ロボット300の第2の部分は、操作者の第2の関節に対応している。姿勢決定手段222は、操作者パラメータとして、操作者の第1の関節の角度a(第1の操作者パラメータ)と、第2の関節の角度b(第2の操作者パラメータ)とを取得し、これらの操作者パラメータから、ロボット300の第1の部分の角度αと第2の部分の角度βとを決定する。
時刻tnにおいて、操作者パラメータ310nとして、操作者の第1の関節の角度anと、操作者の第2の関節の角度bnとが取得される。これに対応する時刻tnにおけるロボット300の軌道上のロボットパラメータ330nとして、ロボット300の第1の部分の角度αnと、ロボット300の第2の部分の角度βnとが決定される。次に、時刻tn+1において、操作者パラメータ310n+1として、操作者の第1の関節の角度an+1と、操作者の第2の関節の角度bn+1とが取得される。これに対応する時刻tn+1におけるロボット300の軌道上のロボットパラメータ330n+1として、ロボット300の第1の部分の角度αn+1と,ロボット300の第2の部分の角度βn+1とが決定される。このように、角度α、βの決定を逐次的に繰り返し行うことにより、ロボット300を軌道320上で動かすことができる。
図3Aに示される例において、ロボット300の第1の部分の角度αは、少なくとも操作者の第1の関節の角度aと操作者の第2の関節の角度bとを変数する第1の関数によって決定され、ロボット300の第2の部分の角度βは、少なくとも操作者の第1の関節の角度aと操作者の第2の関節の角度bとを変数する第2の関数によって決定される。例えば、第1の関数は、
α=A1f(a,b)+B1
であり、第2の関数は、
β=A2f(a,b)+B2
であり得る。ここで、A1、B1、A2、B2は、任意の定数であり、f(a,b)は、操作者の第1の関節角度aおよび第2の関節角度bを変数とする任意の線形または非線形の関数であり得る。第1の関数および第2の関数は、ロボット300に対して操作者の動きに近い動きを行わせるようにロボットパラメータの値を決定する関数であってもよいし、ロボット300に対して操作者の動きに先行または後行する動きを行わせるようにロボットパラメータの値を決定する関数であってもよい。第1の関数および第2の関数は、例えば、軌道と操作者の関節角度とのマッピングにおいて操作者の関節角度から最短距離にある直線322上の点を導出する関数、目標姿勢到達時のロボットの部分の角度に対する軌道上の角度の比率を、操作者の関節の最大角度に対する現在の関節角度の比率に合わせる関数、操作者の第1の関節角度aと操作者の第2の関節角度bとをそれぞれ重み付けして足し合わせる関数、図3Aに示されるような、操作者の関節角度から最短距離にある直線322上の点からある度合いだけずらされた直線322上の点を導出する関数、または他の任意の関数(シグモイド関数等)であり得る。
本発明者らは、第1の関数および第2の関数は、操作者の関節角度から最短距離にある直線322上の点からある度合いだけずらされた直線322上の点を導出する関数、特に、最短距離にある直線322上の点から、操作者の動きに対してロボットの動きを先行させるようにある度合いだけずらされた軌道上の点を導出する関数であることが好ましいことを見出した。図3Aに示される例では、時刻tnにおけるロボットパラメータ330nは、操作者パラメータ310nから最短距離にある直線322上の点から先行度336nだけずらされた点として決定され、時刻tn+1におけるロボットパラメータ330n+1は、操作者パラメータ310n+1から最短距離にある直線322上の点から先行度336n+1だけずらされた点として決定される。先行度336n、336n+1は、操作者パラメータからの直線322上の最短距離からずらされる度合いを表す。先行度は、一定値であってもよいし、変動値であってもよい。もっとも、操作者の感じる操作性を向上させるために、先行度は、動作が進むにつれて(例えば、屈曲動作において操作者の関節の屈曲角度が増加するにつれて)増加する値であることが、好ましい。この場合、先行度は、線形的に増加する値であってもよいし、非線形的に(例えば、指数関数的に)増加する値であってもよい。また、先行度によって操作者パラメータからの最短距離からずらされる方向は、動作の進行する方向であることが好ましく、例えば、図3Aにおいて、操作者の関節角度が増加していく動作(例えば、関節角度の最大伸展状態を0度とした場合、屈曲動作)時には、図3Aに示されるように直線322上で角度が増加する方向にずらされたロボットパラメータが決定され、操作者の角度が減少していく動作(例えば、関節角度の最大伸展状態を0度とした場合、伸展動作)時には、角度が減少する方向にずらされたロボットパラメータが決定される。例えば、操作者の関節の最大伸展状態における操作者パラメータの値(例えば、0度の関節角度)と最大屈曲状態における操作者パラメータの値(例えば、90度の関節角度)との間に中間値(例えば、45度の関節角度)が設定される。中間値は、最大伸展状態における操作者パラメータの値と最大伸展状態における操作者パラメータとの間の任意の値であり、必ずしも2つの状態の間の中央値でなくともよい。中間値が設定される場合、姿勢決定手段222は、操作者の関節角度が中間値を下回るときには、ロボットの姿勢が伸展方向に先行するように、すなわち操作者の関節角度に対してロボットの対応する部分の角度が小さくなるように、ロボットの姿勢を決定し、操作者の関節角度が中間値を上回るときには、ロボットの姿勢が屈曲方向に先行するように、すなわち操作者の関節角度に対してロボットの対応する部分の角度が大きくなるように、ロボットの姿勢を決定し得る。これにより、動作の進行する方向に合わせて自動でロボットの先行動作を行わせることができる。このように、第1の関数および第2の関数を、ロボットの動作を操作者の動作に対して先行させるようにロボットパラメータの値を決定する関数とすることは、操作者の動作に最も近い(最短距離の)直線上のロボットパラメータの値を求める関数とするよりも、操作者の感じる操作性をさらに向上させることが見出された。
図3Bは、操作者の動きに対するロボットの動きの先行度の設定の一例を示す図である。破線で表される直線337は、先行度γ=1の場合、すなわち、図3Aのマッピングにおいて、操作者パラメータの値から最短距離にある軌道上のロボットパラメータの値が、姿勢決定手段222によって各時刻のロボットパラメータの値として決定される場合を表している。一方、実線で表される直線338は、先行度γ=1.5の場合、すなわち、操作者パラメータの値から最短距離にある軌道上のロボットパラメータの値からずらされた値が、姿勢決定手段222によって各時刻のロボットパラメータの値として決定される場合を表している。図3Bの例において、直線338は、運動の開始(操作者パラメータの値から最短距離にある軌道上のロボットパラメータの値が0のとき)直後において、一定の間、決定されるロボットパラメータの値が0となり、操作者パラメータの値から最短距離にある軌道上のロボットパラメータの値がα1以上のとき、決定されるロボットパラメータの値が0以上となっている。そして、操作者パラメータの値から最短距離にある軌道上のロボットパラメータの値が0~α2の間において、決定されるロボットパラメータの値は、操作者パラメータの値から最短距離にある軌道上のロボットパラメータの値を下回っており、これによって、ロボットの動きは操作者の動きに対して後行することとなる。例えば、ロボットハンドによるつまみ動作の初期において、ロボットハンドの各指を最大に伸展させた状態で物体にアプローチすることを操作者が望むときに、操作者が無意識あるいは疲労感等から手をわずかに屈曲させてしまうことがある。このような場合に、姿勢決定手段222は、操作者の手のわずかな屈曲をロボットハンドに反映させずロボットハンドの各指を最大伸展状態にし、操作者による屈曲運動の開始後、ロボットハンドの動きを操作者の動きに対して後行させるようにロボットハンドの姿勢を決定し得る。これによって、操作者の望み通りにロボットハンドを制御することができ、操作者がロボットハンドにつまみ動作を行わせるときの動作初期におけるロボットハンドの操作感覚を向上させることができる。
そして、操作者パラメータの値から最短距離にある軌道上のロボットパラメータの値がα2より大きくなると、決定されるロボットパラメータの値は、操作者パラメータの値から最短距離にある軌道上のロボットパラメータの値を上回るようになり、これによって、ロボットの動きは操作者の動きに対して先行することとなる。このように、動作初期ではロボットを操作者の動きに対して後行させ、動作の中途段階でロボットの動きが操作者の動きを追い越し、その後ロボットの動きが操作者の動きに対して先行するように、先行度γおよびロボットの動作開始時点を設定することにより、操作者のロボット操作性がさらに向上させられることが見出された。先行度γおよびロボットの動作開始時点は、ロボットに実行させる様々な動きに対して、操作者の操作感覚を満足させるように様々に設定され得る。
さらに、このような関数を用いることは、ロボットを物体と相互作用させる場合にも有利である。図3Cは、ロボットパラメータの値が操作者の動きに対してロボットの動きを先行させるように決定される場合における操作者とロボットとの姿勢の比較の一例を示す。図3Cは、時刻tnにおける操作者の手指の姿勢と、同時刻におけるロボットの手指に対応する部位の姿勢とを表す。図3Cの例では、操作者の示指と拇指との動きをロボットに伝え、ロボットに物体350をつまむ動作を行わせている。時刻tnにおける操作者の示指の姿勢311nおよび拇指の姿勢312nに先行するように、ロボットの対応する部位の姿勢331n、332n(図3Cにおいて破線で示されている)が決定され、ロボットはその姿勢に動かされる。しかし、ロボットは、物体350の存在により、姿勢331n、332nまで動くことができず、物体350に接した姿勢331’n、332’nで静止する。このとき、ロボットは、実際には姿勢331n、332nまで動くように駆動されているため、その駆動力により物体350に対して力を加え、その結果、物体350をつまんで保持することができる。このように、ロボットの動きを操作者の動きに対して先行させることにより、ハプティクス等による触覚フィードバックを装備することなく、ロボットが見かけ上操作者の姿勢に近い姿勢で物体に力を加えて保持することができる。さらに、物体350が変形可能な物体である場合、操作者がさらに示指と拇指とを接近させるように動かすことで、ロボットは、物体350にさらに大きな力を加え、物体350を変形させることができる。ここで、上述されるようにロボットの動きの先行度を変動値とすることで、見かけ上のロボットの姿勢を操作者との姿勢とを近い状態にしながら、設定された先行度の大きさの分だけ大きい力を物体350に力を加えていくことができる。
このような関数によって、操作者パラメータの値に対応する軌道上の姿勢のロボットパラメータの値が逐次的に決定される。
このようにロボット300の1つの部分のロボットパラメータ(例えば、角度)の値を決定するために操作者の複数の部分(例えば、複数の関節)の操作者パラメータの値を考慮することによって、ロボット300の動かされる部位全体の動きを考慮に入れて各部分の動きを決定することが可能になる。その結果、ロボット300は、所定の軌道上で動かされることが可能になる。もっとも、ロボット300の各部分を決定する関数の変数は、これらに限定されず、同一の部分の他の操作者パラメータ(例えば、操作者の第1の関節の座標)、および/または動きに関係する他の部分に関する操作者パラメータ(例えば、操作者の第3の関節の角度)が関数の変数に含まれ得る。
操作者パラメータの値をそのままロボット300の対応する部分に反映するのではなく、上述されるように操作者パラメータの値をロボット300の軌道上の姿勢のロボットパラメータの値に変換することにより、操作者の動きを、ロボット300の構造に適合する動きに変換することができる。よって、ロボット300は、確実に目標姿勢に到達するように動くことが可能となる。これにより、操作者間の身体形状、可動領域および運動能力等の個人差、ならびに操作者とロボット300との間の構造の差異等に依存することなく、ロボット300に所望の動作(例えば、目標姿勢への到達)を行わせることが可能となり、ロボット300の操作性が向上させられ得る。
図3Aに示す例では、ロボット300の軌道がロボット300の第1の部分の角度と第2の部分の角度との変化に対応する実施形態について説明されたが、ロボット300の軌道のためのロボットパラメータは、これに限定されない。ロボット300の軌道のためのロボットパラメータは、操作者の動作部位の構造、および/またはロボット300の目標姿勢に依存し得る。ある実施形態では、ロボット300の軌道は、複数の異なる種類のロボットパラメータ(例えば、角度、向き、座標、速度等の任意の組合せ)の変化に対応し得る。例えば、操作者の動作部位が腕であり、ロボット300の目標姿勢が机に肘をつく姿勢である場合、ロボット300の軌道は、人間の肘関節に対応するロボット300の第3の部分の角度と向きとの変化に対応し得る。別の実施形態では、ロボット300の軌道は、同一の部分の複数の異なる方向の角度の変化に対応し得る。例えば、操作者の動作部位が腕であり、ロボット300の目標姿勢が胴体の前方で物を抱える姿勢である場合、人間の腕に対応するロボット300の第4の部分の動きを規定するために、操作者の肩関節の角度が用いられる。人間の肩関節は、伸展・屈曲方向と、内転・外転方向と、内旋・外旋方向との3つの自由度を有する。そのため、ロボット300の軌道は、人間の肩関節の伸展・屈曲方向に対応するロボット300の第4の部分の第1の方向の角度と、人間の肩関節の内転・外転方向に対応するロボット300の第4の部分の第2の方向の角度と、人間の肩関節の内旋・外旋方向に対応するロボット300の第4の部分の第3の方向の角度との変化に対応し得る。
また、姿勢決定手段222は、所定の条件下においてロボットパラメータの値を一定の値に決定してもよい。例えば、目標姿勢がロボット300の第1の部位の先端と第2の部位の先端とを接触させた姿勢である場合、第1の部位の先端と第2の部位の先端とが確実に接触する軌道でロボット300を動かすために、第1の部位の第1の部分の角度を一定の値以内にする必要があり得る。このような場合、姿勢決定手段222は、ロボット300の第1の部位の第1の部分の角度が一定の値を上回らないように、所定の条件下では第1の部位の第1の部分の角度を一定の値に決定し得る。所定の条件は、例えば、操作者パラメータの値が閾値を上回ること、またはロボット300の第1の部位の第1の部分を決定する計算式によって導出されたロボットパラメータの値が閾値を上回ること等であり得る。
加えて、設定手段221は、複数のロボット300の複数の部位について各々の目標姿勢および軌道を設定し、姿勢決定手段222は、ロボット300の複数の部位の各々の軌道上の姿勢を決定してもよい。例えば、目標姿勢がロボット300の複数の部位が連動することにより達成される場合(例えば、手指の示指と拇指とのつまみ姿勢、胴体の前方において両腕で物を抱える姿勢等)、各部位について各々の目標姿勢および軌道を設定し、各々の部位の姿勢が決定され得る。この場合、複数の部位の軌道上の姿勢は、互いに関連付けられ得る。例えば、ロボット300の第1の部位の軌道上の姿勢と、第2の部位の軌道上の姿勢とが決定される場合、ロボット300の第1の部位の軌道上の姿勢は、少なくとも操作者の第1の指の第1の関節の角度と、操作者の第1の指の第2の関節の角度と、操作者の第2の指の第1の関節の角度とを変数とする第1の関数によって決定され、ロボット300の第2の部位の軌道上の姿勢は、少なくとも操作者の第2の指の第1の関節の角度と、操作者の第2の指の第2の関節の角度と、操作者の第1の指の第1の関節の角度とを変数とする第2の関数によって決定され得る。この例のように、操作者の第1の部位の第1の関節の角度と操作者の第2の部位の第1の関節の角度とがロボット300の両方の部位の姿勢の決定に使用されてロボット300の2つの部位が関連付けられることにより、ロボット300の2つの部位を連携して動かすことが可能となり得る。
また、操作者の動きに関する情報は、受信部210によって受信された値をそのまま使用されてもよいし、姿勢決定手段222によって何らかの処理が行われてから使用されてもよい。処理は、操作者の動きに関する情報からロボット300の軌道を規定する値を抽出するためのものであり得る。例えば、複数の自由度を有する操作者の関節の各方向の角度が測定機器100によって正確に測定できないことがあり得る。この場合、拇指のCM関節について後述されるように、測定前に関節の各方向の極限状態(例えば、最大屈曲状態と最大伸展状態、最大外転状態と最大内転状態等)を測定し、複数方向のベクトル形式で保存しておき、測定開始後に取得された操作者の角度を各方向の成分に射影することにより、関節の各方向の角度が導出され、導出された各方向の角度が、ロボット300の軌道上の姿勢の決定のために使用され得る。
別の例では、設定手段221は、ロボット300の同一の部位について複数の目標姿勢を設定し得る。複数の目標姿勢は、例えば、同一の種類であるが形態の異なる姿勢であり得る。例えば、目標姿勢が手指のつまみ姿勢である場合、手指を伸展させて掌から遠位の位置でつまむ姿勢と、手指を屈曲させて拇指ともう一方の指とで略円形を作るように掌の近位の位置で物をつまむ姿勢とが想定される。これらの姿勢の違いをロボット300に再現させることが所望される場合、複数の異なる形態の目標姿勢が設定され得る。また、複数の目標姿勢は、例えば、異なる種類の姿勢であり得る。例えば、ロボット300が操作者の手指の動きに基づいて動く場合、設定手段221は、第1の目標姿勢として「つまみ姿勢」を設定し、第2の目標姿勢として「把持姿勢」を設定し得る。
設定手段221により複数の目標姿勢が設定された場合、姿勢決定手段222は、操作者の動きに関する情報に基づいて、複数の目標姿勢およびそれらに向かう軌道の中からいずれかを選択して、ロボット300の軌道上の姿勢を決定し得る。図4は、複数の目標姿勢および軌道が設定された場合のロボット300の例示的な姿勢決定方法を示す図である。図4に示される例では、第1の目標姿勢と、第2の目標姿勢とが設定され、第1の目標姿勢は、2つの軌道を有し、第2の目標姿勢は、1つの軌道を有する。図4において、ロボットパラメータ座標420は、第1の目標姿勢に対応するロボットパラメータの座標であり、ロボットパラメータ座標440は、第2の目標姿勢に対応するロボットパラメータの座標であり、曲線422、422’は、第1の目標姿勢に向かう軌道に対応するロボットパラメータの変化の関係であり、曲線440は、第2の目標姿勢に向かう軌道に対応するロボットパラメータの変化の関係である。
時刻tnにおいて、コンピュータ装置200の受信部210は、操作者パラメータとして、操作者の第1の関節の角度anと、操作者の第2の関節の角度bnとを受信し、プロセッサ部がanとbnとを取得する(操作者パラメータ座標410n)。これに対応する時刻tnにおけるロボット300の姿勢430nを決定するために、姿勢決定手段222は、操作者パラメータ座標410nに対応するロボット300の各軌道上の姿勢のロボットパラメータ座標を計算し、それぞれの軌道について、ロボットパラメータとして、ロボット300の第1の部分の角度αnと、ロボット300の第2の部分の角度βnとを算出する。算出されたロボットパラメータ座標のうち、操作者の姿勢に最も近いものが、時刻tnにおけるロボット300の姿勢のロボットパラメータ座標430nとして決定される。図4に示される例では、時刻tnにおいて軌道422上の姿勢のロボットパラメータ座標が最も操作者パラメータ座標に近いため、姿勢決定手段222は、軌道422上の姿勢をロボット300の姿勢として決定する。次に、時刻tn+1において、コンピュータ装置200の受信部210は、操作者パラメータとして、操作者の第1の関節の角度an+1と、操作者の第2の関節の角度bn+1とを受信し、プロセッサ部がan+1とbn+1とを取得する(操作者パラメータ座標410n+1)。これに対応する時刻tn+1におけるロボット300の姿勢430n+1を決定するために、姿勢決定手段222は、操作者パラメータの値に対応するロボット300の各軌道上の姿勢のロボットパラメータ座標を計算し、それぞれに軌道について、ロボットパラメータとして、ロボット300の第1の部分の角度αn+1と、ロボット300の第2の部分の角度βn+1とを算出する。図4に示される例では、時刻tn+1において軌道422’の姿勢のロボットパラメータ座標が最も操作者パラメータ座標に近いため、姿勢決定手段222は、軌道422’上の姿勢をロボット300の姿勢430n+1として決定する。さらに、時刻tn+2において、操作者パラメータ座標410n+2が軌道442に最も近いため、姿勢決定手段222は、軌道442上の姿勢をロボット300の姿勢430n+2として決定する。この結果、ロボット300は、第1の目標姿勢ではなく第2の目標姿勢に向かって動き始めることとなる。このように逐次的に操作者の関節角度から、複数の軌道のうちのいずれかの軌道を選択して、ロボット300の対応する部分の角度を決定することにより、より操作者の動きに近いロボット300の動きを決定することが可能となる。また、予め複数の目標姿勢および軌道が設定されることにより、操作者が目標姿勢を変更したいときに目標姿勢を設定しなおす必要なく、別の目標姿勢に向けてロボット300を動かすことが可能となる。
制御信号生成手段223は、ロボット300を制御するための制御信号を生成するように構成されている。制御信号生成手段223は、姿勢決定手段222によって決定された姿勢へロボット300を動かすための制御信号を生成する。
生成された制御信号は、出力部240を介してロボット300に送信される。ロボット300は、制御信号を受信し、受信された制御信号に従って動く。
コンピュータ装置200の構成は、図2Aを参照して説明される構成に限定されない。コンピュータ装置200の構成要素のうち、いずれか複数の構成要素が単一の構成要素として統合されていてもよいし、コンピュータ装置200の構成要素のうちの1つが複数の構成要素として実装されていてもよい。
図2Bは、コンピュータ装置200の代替実施形態であるコンピュータ装置200’の構成の一例を示す。コンピュータ装置200’は、プロセッサ部220’が判定手段224を備えている点で、コンピュータ装置200と異なっている。図2Aを参照して説明した構成要素と同一の構成要素には同一の参照番号を付し、ここでは、詳細な説明が省略される。
コンピュータ装置200’は、受信部210と、プロセッサ部220’と、メモリ部230と、出力部240とを備える。
プロセッサ部220’は、コンピュータ装置200’全体の動作を制御する。プロセッサ部220’は、メモリ部230に格納されているプログラムを読み出し、そのプログラムを実行する。これにより、コンピュータ装置200’を所望のステップを実行するコンピュータ装置として機能させることが可能である。
プロセッサ部220’は、判定手段224と、設定手段221と、姿勢決定手段222と、制御信号生成手段223とを備える。
判定手段224は、受信部210によって受信された操作者の動きに関する情報を取得し、取得された操作者の動きに関する情報のうちの操作者パラメータの値が所定の閾値以上であるか否かを判定するように構成されている。所定の閾値は、任意の数値であり得るが、操作者が目標姿勢に向けて動いていると判定できる値であることが好ましい。判定手段224が、操作者パラメータの値が所定の閾値以上であると判定した場合、姿勢決定手段222は、ロボット300の目標姿勢に向かう軌道上の姿勢を決定し、制御信号生成手段223は、軌道上の姿勢へロボット300を動かす制御信号を生成し得る。一方、判定手段224が、操作者パラメータの値が所定の閾値未満であると判定した場合、姿勢決定手段222は、ロボット300の軌道上の姿勢の決定を実施しない。この場合、制御信号生成手段223は、操作者の測定された部分に対応するロボット300の部分を操作者パラメータの値と同一の値になるようにロボット300を動かす制御信号を生成し得る。例えば、操作者パラメータが操作者の膝関節の角度であり、所定の閾値が45度である場合、膝関節の角度が45度以上であるとき、姿勢決定手段222は、ロボット300の立ち上がる姿勢に向かう軌道上の姿勢を決定し、制御信号生成手段223は、決定された姿勢に向かってロボット300を動かす制御信号を生成し得る。一方、膝関節が45度未満であるとき、制御信号生成手段223は、膝関節に対応するロボット300の部分の角度を測定された操作者の膝関節の角度と同一の値になるように動かす制御信号を生成し得る。操作者パラメータの値が所定の閾値未満である場合のロボット300の姿勢の決定方法は、他にも、操作者パラメータの値に所定の倍率を乗じた値をロボット300に適用する方法、または、ロボット300を、予め決められた動作範囲の中で操作者の動きの速度を模倣して動かす方法等があり得る。
別の実施形態では、判定手段224が、操作者パラメータの値が所定の閾値以下であると判定した場合、姿勢決定手段222は、ロボット300の目標姿勢に向かう軌道上の姿勢を決定し得る。一方、判定手段224が、操作者パラメータの値が所定の閾値を上回る値であると判定した場合、姿勢決定手段222は、ロボット300の軌道上の姿勢の決定を実施せず、制御信号生成手段223が操作者の測定された部分に対応するロボット300の部分を操作者パラメータの値と同一の値になるように動かす制御信号を生成し得る。この場合、ロボット300は、操作者パラメータの値が所定の閾値以下である間、目標姿勢に向かう軌道上で動作し、操作者パラメータの値が所定の閾値を上回ると、操作者パラメータの値と一致するように動作する。さらに別の実施形態では、判定手段224は、操作者パラメータの値が所定の下限値以上であるか否かを判定することと、操作者パラメータの値が所定の上限値以上であるか否かを判定することとを行い得る。この実施形態では、例えば、判定手段224が、操作者パラメータの値が所定の下限値以上かつ所定の上限値未満であると判定した場合、姿勢決定手段222は、ロボット300の目標姿勢に向かう軌道上の姿勢を決定し得、判定手段224が、操作者パラメータの値が所定の下限値未満または所定の上限値以上であると判定した場合、制御信号生成手段223は、ロボット300の部分を操作者パラメータの値と同一の値になるように動かす制御信号を生成し得る。
判定手段224は、複数の操作者パラメータの各々の値が各々の閾値以上であるか否かを判定し得る。例えば、複数の操作者パラメータは、第1の操作者パラメータと第2の操作者パラメータとを含み、判定手段224は、第1の操作者パラメータの値が第1の閾値以上であるか否かを判定することと、第2の操作者パラメータの値が第2の閾値以上であるか否かを判定することとを行い得る。複数の操作者パラメータの値について閾値による判定を行うことにより、操作者の動作全体を考慮して、操作者が目標姿勢に向けて動いているか否かを判定することが可能になる。
図5は、複数の操作者パラメータの各々の値が各々の閾値以上であるか否かを判定することを含む実施形態を示している。判定手段224は、操作者の第1の関節の角度aが第1の閾値511以上であるか否かを判定することと、操作者の第2の関節の角度bが第2の閾値512以上であるか否かを判定することとを行う。第1の閾値511および第2の閾値512は、操作者が目標姿勢520に向かって動いていると判定できる任意の値であり得、2つの閾値は、同一の値であってもよいし、異なる値であってもよい。第1の閾値511および第2の閾値512は、一定の値であってもよいし、変動する値であってもよい。例えば、操作者の第1の関節と第2の関節との間に依存関係および/または連動する関係がある場合、第1の閾値は、操作者の第2の関節の角度の大きさに依存し、第2の閾値は、操作者の第1の関節の角度の大きさに依存し得る。例えば、人間の身体の構造上第1の関節が屈曲しているときに第2の関節も自然とわずかに屈曲する関係がある場合、このような人間の意志によらない自然な屈曲の影響を排除するために、第2の閾値512は、第1の関節の角度が大きいほど大きい値であり得る。図5では、第1の関節の角度aの第1の閾値511は、Db+E(D、Eは、定数)で表され、第2の関節の角度bが大きいほど大きい値である。第2の関節の角度bの第2の閾値512は、Fa+G(F、Gは、定数)で表され、第1の関節の角度aが大きいほど大きい値である。図5では、一方の閾値と他方の角度との関係が線形であるように描写されているが、この関係は、非線形であってもよい。
判定手段224が、操作者の第1の関節の角度aが第1の閾値511以上であり、かつ操作者の第2の関節の角度bが第2の閾値512以上であると判定した場合、姿勢決定手段222は、目標姿勢に向かう軌道上のロボット300の姿勢を決定し、制御信号生成手段223は、決定された軌道上の姿勢に向かってロボット300を動かす制御信号を生成し得る。一方、判定手段224が、操作者の第1の関節の角度aが第1の閾値511未満であり、かつ/または操作者の第2の関節の角度bが第2の閾値512未満であると判定した場合、制御信号生成手段223は、第1の関節に対応するロボット300の第1の部分の角度がaになり、第2の関節に対応するロボット300の第2の部分の角度がbになるようにロボット300を動かすための制御信号を生成し得る。
図5に示す例では、時刻tnにおいて、コンピュータ装置200’の受信部210は、操作者パラメータ座標510nとして、操作者の第1の関節の角度anと、操作者の第2の関節の角度bnとを受信し、プロセッサ部220’は、anとbnとを取得する。判定手段224は、操作者の第1の関節の角度anが第1の閾値511未満(すなわち、an<Dbn+E)であり、かつ操作者の第2の関節の角度bnが第2の閾値512未満(すなわち、bn<Fan+G)であると判定する。この場合、制御信号生成手段223は、ロボット300の第1の部分の角度を操作者の第1の関節の角度と同一の値(すなわち、αn=an)になり、ロボット300の第2の部分の角度を操作者の第2の関節の角度と同一の値(すなわち、βn=bn)になるようにロボット300を動かすための制御信号を生成する。その後、時刻tn+1において、受信部210は、操作者パラメータ座標510n+1として、操作者の第1の関節の角度an+1と、操作者の第2の関節の角度bn+1とを受信し、プロセッサ部220’は、an+1とbn+1とを取得する。判定手段224は、操作者の第1の関節の角度an+1が第1の閾値511以上(すなわち、an+1≧Dbn+1+E)であり、かつ操作者の第2の関節bn+1の角度が第2の閾値512以上(すなわち、bn+1≧Fan+1+G)であると判定する。この場合、姿勢決定手段222は、目標姿勢に向かう軌道上の姿勢のロボットパラメータ座標530n+1を決定し、制御信号生成手段223は、決定された姿勢に向かってロボット300を動かす制御信号を生成する。
以上のように、判定手段224による操作者パラメータの値の判定に基づいてロボット300の姿勢(動き)の決定方法を変えることにより、操作者が目標姿勢に向かって動いていると判断できない場合には、操作者の動きと同一であるようにロボット300を動かすように制御し、操作者が目標姿勢に向かって動いていると判断できる場合には、ロボット300を確実に目標姿勢に向かって動かすように制御することが可能となる。これにより、操作者が所望しないようなロボット300の動き(例えば、操作者が手指のつまみ姿勢に向かってロボット300を動かすことを所望していないときに、ロボット300がつまみ姿勢に向かう軌道上で動くこと)を回避することができる。また、このような判定手段224を備えることによって、操作者は、操作者が目標姿勢に向かってロボット300を動かすことを所望するときにその都度入力等によって目標姿勢および軌道を設定するのではなく、予め目標姿勢および軌道を設定しておくことができる。
図2Aおよび図2Bに示される例では、コンピュータ装置200の各構成要素がコンピュータ装置200内に設けられているが、本発明はこれに限定されない。コンピュータ装置200の各構成要素のいずれかがコンピュータ装置200の外部に設けられることも可能である。例えば、プロセッサ部220もしくはプロセッサ部220’、ならびにメモリ部230のそれぞれが別々のハードウェア部品で構成されている場合には、各ハードウェア部品が任意のネットワークを介して接続されてもよい。このとき、ネットワークの種類は問わない。各ハードウェア部品は、例えば、LANを介して接続されてもよいし、無線接続されてもよいし、有線接続されてもよい。
図2Aおよび図2Bに示される例では、プロセッサ部の各構成要素が同一のプロセッサ部内に設けられているが、本発明はこれに限定されない。プロセッサ部の各構成要素が複数のプロセッサ部に分散される構成も本発明の範囲内である。このとき、複数のプロセッサ部は、同一のハードウェア部品内に位置してもよいし、近傍または遠隔の別個のハードウェア部品内に位置してもよい。
(本システムの処理)
図6は、操作者の動きに基づいてロボット300の動きを制御するためのシステム10による処理の一例(処理600)を示すフローチャートである。処理600は、コンピュータ装置200のプロセッサ部220によって行われ得る。
ステップS601の前に、操作者は、まず、測定機器100を装着する。次いで、測定機器100をコンピュータ装置200に接続し、測定機器100のキャリブレーションを行う。キャリブレーションは、コンピュータ装置200のプロセッサ部220が、測定機器100によって測定された操作者パラメータの値および他の操作者の動きに関する情報を取得することを可能にするための任意の処理であり得る。キャリブレーションは、操作者の実際の動作を正確に反映させるように実施されてもよいし、操作者のわずかな動きでロボット300を大きく動かすことができるように実施されてもよい。例えば、処理600において操作者パラメータとして操作者の第1の関節の角度が用いられる場合、キャリブレーションにおいて、操作者は、測定機器100が装着された第1の関節を第1の極限状態から第2の極限状態へ可動領域全体にわたって動かすことにより、第1の関節の第1の極限状態と第2の極限状態との間の中間状態がプロセッサ部220に正確に認識されるようにし得る。この場合、例えば操作者の実際の第1の関節の角度が40度であるとき、プロセッサ部220は、第1の関節の角度の値を40度として取得し得、操作者の動きを正確に把握することが可能である。一方、キャリブレーションにおいて、操作者は、測定機器100が装着された第1の関節を第1の極限状態と第2の極限状態との間の第1の中間状態から第2の中間状態へ可動領域の一部にわたって動かすことにより、プロセッサ部220に、操作者の第1の中間状態を第1の極限状態として取得させ、第2の中間状態を第2の極限状態として取得させることができる。この場合、操作者は、本開示に係るロボット制御において、第1の関節を第1の中間状態から第2の中間状態まで動かすだけで、第1の関節の可動領域全体の動きをプロセッサ220に伝達することができるため、操作者による操作の負担を軽減させることができる。
操作者が動作部位を動かすと、測定機器100が、操作者パラメータの値を測定する。操作者パラメータは、上述されるように、操作者の動作部位の角度、向き、位置、座標、速度、加速度等であり得る。測定機器100が測定する情報は、操作者パラメータ以外の操作者の動きに関する他の情報(例えば、長さ、大きさ、太さ等の不変の情報)も含み得る。測定機器100は、取得した操作者パラメータの値をコンピュータ装置200に送信する。コンピュータ装置200の受信部210が、操作者パラメータの値を受信する。受信された操作者パラメータの値は、プロセッサ部220に渡される。あるいは、受信された操作者パラメータの値は、キャッシュ等の一時メモリに格納され得る。
ステップS601では、プロセッサ部220が、操作者パラメータの値を取得する。プロセッサ部220は、例えば、受信部210によって受信された操作者パラメータの値を取得するようにしてもよいし、キャッシュ等の一時メモリから取得するようにしてもよい。
ステップS602では、プロセッサ部220の設定手段221が、ロボット300の目標姿勢および目標姿勢に向かう軌道を設定する。プロセッサ部220は、目標姿勢および軌道をメモリ部230から読み出すことにより設定し得る。ステップS602は、ステップS601の前に行われてもよいし、ステップS601の後に行われてもよいし、ステップS601と同時に行われてもよい。
プロセッサ部220が操作者パラメータの値を取得し、設定手段221がロボット300の目標姿勢および軌道を設定すると、ステップS603では、プロセッサ部220の姿勢決定手段222が、操作者パラメータの値に対応するロボット300の軌道上の姿勢を決定する。姿勢決定手段222は、例えば、操作者パラメータの値に対応するロボット300のロボットパラメータの値を算出することにより、ロボット300の軌道上の姿勢を決定する。
ステップS604では、プロセッサ部220の制御信号生成手段223が、決定された姿勢に向かってロボット300を動かす制御信号を生成し、生成された制御信号を出力部240を介してロボット300に出力する。これにより、目標姿勢に向かってロボット300を動かすことができる。ステップS604の終了後、処理600は、再度ステップS601に戻り、上述の処理を実行する。この処理を繰り返し行うことにより、ロボット300の動きが経時的に制御される。
上述した例では、コンピュータ装置200によって処理600を行うことを説明したが、コンピュータ装置200’によっても同様に処理600を行うことができる。
本処理によってロボット300を制御することは、従来のロボット制御方法と比較していくつかの利点を有する。本処理の利点の1つは、操作者パラメータの測定誤差があってもロボットを所望の軌道で動かすことが可能であることである。例えば、測定機器の精度が高くない場合であっても、本処理は、測定された操作者パラメータの値をロボットの軌道上のロボットパラメータの値に変換して出力するので、ロボットの動きが操作者の動きから大きく乖離することを防ぐことができる。本処理は、この利点を有することにより、上述されるようなデータグローブのみならず、様々な測定方法と組み合わせて実施可能である。本処理は、例えば、モーションキャプチャ技術と組み合わせて実施可能である。モーションキャプチャ技術では、光センサによって検出される反射マーカーが操作者の体表に多数取り付けられ、これらから操作者の情報が取得されるが、センサの間隔が小さい場合(例えば、手指等の緻密な動作を行う部位にマーカーが取り付けられている場合)、隣接するマーカーのデータの分別が困難となり、その結果、測定誤差が発生することがある。このような場合であっても、本処理は、複数の操作者パラメータの値に基づいてロボットの軌道上のロボットパラメータの値を決定し得るので、測定誤差の影響を低減させて、ロボットの動きが操作者の所望する動きから大きく乖離することを防ぐことができる。
また、本処理は、複雑な計算を伴わないため、確実にロボットを目標姿勢に動かすことができるという利点がある。従来技術の一つとして、操作者の動作部位の先端(例えば、指先)のみをセンサによって追跡して、その先端部分に対応するロボットの部分の座標を決定することにより、ロボットを動かす方法がある。この方法では、先端部分に対応するロボットの部分を決定された空間座標に動かすために、ロボット全体をどのように動かすか(例えば、ロボットの関節の角度を何度にするか等)を逐次計算する必要があるため、計算量が膨大となる。また、この方法では、計算において、ロボットの動作に関するパラメータの解が「解なし」となり、ロボットが動作不能となってしまう場合があった。これに対し、本開示に係るロボット制御方法は、予めロボットの目標姿勢および軌道が設定され、軌道は、目標姿勢に到達するために動かされるロボットの部分のロボットパラメータの変化に対応しているため、計算を複雑化させることなく、計算において解なしとなる可能性を低減させることができる。
図7は、コンピュータ装置200’によって行われる処理700の一例を示すフローチャートである。
ステップS701では、プロセッサ部220’が、操作者パラメータの値を取得する。
ステップS702では、プロセッサ部220’の判定手段224が、取得された操作者操作者パラメータの値が閾値以上であるか否かを判定する。閾値は、任意の数値であり得るが、操作者が目標姿勢に向けて動いていると判定できる値であることが好ましい。
ステップS703では、プロセッサ部220’の設定手段221が、ロボット300の目標姿勢および目標姿勢に向かう軌道を設定する。設定手段221は、目標姿勢および軌道をメモリ部230から読み出すことにより設定し得る。ステップS703は、ステップS701および/またはステップS702の前に行われてもよいし、それらのステップの後に行われてもよいし、それらのステップと同時に行われてもよい。
ステップS702において操作者パラメータの値が閾値以上であると判定された場合、処理700は、ステップS704に進む。ステップS704では、プロセッサ部220’の姿勢決定手段222が、操作者パラメータの値に対応するロボット300の軌道上の姿勢を決定する。これにより、ロボット300の姿勢が決定される。
ステップS705では、プロセッサ部220’の制御信号生成手段223が、決定された姿勢に向かってロボット300を動かす制御信号を生成し、生成された制御信号を出力部240を介してロボット300に出力する。これにより、目標姿勢に向かってロボット300を動かすことができる。ステップS705の終了後、処理700は、再度ステップS701に戻り、上述の処理を繰り返し実行する。なお、ステップS703は、一度実行された後は、再度実行される必要はない。もっとも、操作者のパラメータの値が大きく変動した場合には、目標姿勢および軌道が再設定されてもよい。
ステップS702において操作者パラメータの値が閾値未満であると判定された場合、ステップS706に進む。ステップS706では、制御信号生成手段223が、操作者の動作部位に対応するロボット300の部分の値が操作者パラメータの値に一致するようにロボット300を動かす制御信号を生成し、生成された制御信号を出力部240を介してロボット300に出力する。これにより、操作者の動きと一致するようにロボット300を動かすことができる。ステップS706の終了後、処理700は、再度ステップS701に戻り、上述の処理を実行する。
上述した処理700により、操作者が目標姿勢に向かって動いていると判断できない場合には、ロボット300は、操作者の動きと一致するように動かされ、操作者が目標姿勢に向かって動いていると判断できる場合には、ロボット300は、目標姿勢に向かって動かされる。これにより、処理600よりさらに操作者の意図を反映させたロボット動作が可能になる。
(ロボットに手指のつまみ動作を行わせる方法)
以下、本開示の処理により操作者の手指の動きに基づいてロボットを動かす処理の実施形態を説明する。もっとも、本開示の処理は、手指の動きに限定されず、操作者の他の部位の動き(例えば、腕、首、肩、頭、顎、腰、脚、上半身、下半身等)にも適用可能であることが意図される。
図8は、人間の手の骨格および姿勢の概略図である。
本明細書において、「MP関節」は、中手指節関節であり、図8Aにおいて801で示されている。MP関節は、屈曲方向と外転方向との2自由度を有する。本明細書において、MP関節の屈曲角度は、図8Bに示されるように、掌に対して垂直な平面上におけるMP関節回りの手指の角度を指し、最大伸展状態を0度として表される。本明細書において、MP関節の外転角度は、図8Cに示されるように、掌に対して平行な平面上におけるMP関節回りの手指の角度を指し、第3中手骨810(図8A参照)の延在方向を0度として表される。
本明細書において、「IP関節」は、指節間関節であり、手指の根本から手指の先端の間に位置する指の関節を意味する。「PIP関節」は、近位指節間関節であり、拇指以外の手指のIP関節のうち手指の根本に近い方の関節を意味し、図8Aにおいて802で示されている。「DIP関節」は、遠位指節間関節であり、拇指以外の手指のIP関節のうち手指の先端に近い方の関節を意味し、図8Aにおいて803で示されている。また、拇指においては、IP関節は1つのみ存在し、図8Aにおいて802’で示されている。
本明細書において、「CM関節」は、手根中手関節であり、遠位手根骨と中手骨底との間に画定される関節を意味する。拇指のCM関節804は、2自由度を有する鞍関節であり、対立方向と屈曲方向とに可動である。本明細書において、CM関節の対立角度は、図8Dに示されるように、掌に垂直な平面上におけるCM関節回りの拇指の角度であり、拇指を掌と同一平面上に配置したときを0度として表される。本明細書において、CM関節の屈曲角度は、図8Eに示されるように、掌に平行な平面上におけるCM関節回りの拇指の角度であり、拇指を示指から最も遠ざけたときの角度を0度として表される。
図9Aは、本開示に係る処理により動きを制御されるロボット900を示す。ロボット900は、人間の手と同様の形状を有し、人間の手と同様の態様で動作することが可能である。ロボット900は、人間の手による動きを再現することが可能であれば、人間の手の構造および形状と異なっていてもよい。ロボット900は、例えば、人間の手より多くの関節を有していてもよいし、人間の手より少ない関節を有していてもよい。ロボット900のMP関節に対応する部分からIP関節に対応する部分までの距離は、人間の手指のMP関節からIP関節までの距離と異なっていてもよい。このような人間の手の構造および形状と異なるロボットであっても、本開示の処理が適用されることにより、人間の操作者の動きと同等の動きを実現することが可能となる。
以下、操作者の示指と拇指とによるつまみ動作をロボット900に行わせる実施形態を説明する。もっとも、以下の実施形態は、これに限定されず、示指以外の指(中指、薬指、または小指)と拇指とのつまみ動作、および拇指と他の複数の指とのつまみ動作にも適用可能である。
図9Aに示されるロボット900は、人間の手指の示指に対応する第1の部位920と、人間の手指の拇指に対応する第2の部位940とを有する。ロボット900の第1の部位920は、人間の示指のMP関節に対応する第1の部分921と、PIP関節に対応する第2の部分922と、DIP関節に対応する第3の部分923とを有する。ロボット900の第2の部位940は、人間の拇指のMP関節に対応する第1の部分941と、IP関節に対応する第2の部分942と、CM関節に対応する第4の部分944とを有する。そして、ロボット900の第1の部位920および第2の部位940の各部分は、対応する人間の関節と同等かまたはそれ以上の範囲にわたって枢動可能であるように構成され得る。ロボット900のそれぞれの部分回りの枢動は、コンピュータ装置200等によって生成され出力される制御信号に従って行われ得る。図9Aにおいて、ロボット900の第1の部位920は、目標姿勢920gにあり、ロボット900の第2の部位940は、目標姿勢940gにある。
ロボット900の第1の部位920の第1の部分921は、そこに接続される部材が第1の部分921回りで第1の方向921fおよび第2の方向921a(第1の方向921に垂直な方向)に枢動可能であるように構成される。第1の部位920の第1の部分921の第1の方向921fは、人間の示指のMP関節の屈曲方向に対応し、第1の部位920の第1の部分921の第2の方向921aは、人間のMP関節の外転方向に対応している。ロボット900の第1の部位920の第2の部分922は、そこに接続される部材が第2の部分922回りで方向922fに枢動可能であるように構成され、第3の部分923は、そこに接続される部材が第3の部分923回りで方向923fに枢動可能であるように構成される。ロボット900の第2の部位940の第1の部分941は、そこに接続される部材が第1の部分941回りで方向941fに枢動可能であるように構成され、第2の部分942は、そこに接続される部材が第2の部分942回りで方向942fに枢動可能であるように構成される。第2の部位940の第4の部分944は、そこに接続される部材が第4の部分944回りで第1の方向944aおよび第2の方向944fに枢動可能であるように構成される。第2の部位940の第4の部分944の第1の方向944aは、人間の拇指のCM関節の対立方向に対応し、第2の部位940の第4の部分944の第2の方向944fは、人間の拇指のCM関節の屈曲方向に対応している。
図9Bは、操作者の姿勢とロボット900の姿勢との対応を示す。本開示の処理は、操作者の示指について実行されると、時刻tnのときの操作者の示指のMP関節の屈曲角度MPHnおよびPIP関節の角度PIPHn基づいて、時刻tnにおけるロボット900の第1の部位920の軌道926上の姿勢920nを決定する。姿勢920nは、時刻tnにおけるロボット900の第1の部位920の第1の部分921の第1の方向の角度MPRnおよび第2の部分922の角度PIPRnを決定することにより規定され得る。また、別の実施形態では、姿勢920nは、時刻tnにおけるロボット900の第1の部位920の第1の部分921の第1の方向の角度MPRnと、第2の部分922の角度PIPRnと、第3の部分923の角度と決定することにより規定され得る。さらに別の例では、姿勢920nは、時刻tnにおけるロボット900の第1の部位920の第1の部分921の第1の方向の角度MPRnと、第1の部分921の第2の方向の角度と、第2の部分922の角度PIPRnとを決定することにより規定され得る。
図10は、操作者の手指の動きに基づいてロボット900につまみ動作を行わせる処理1000の一例を示すフローチャートである。処理1000が、ロボット900の第1の部位920と第2の部位940とのそれぞれについて実行されることにより、ロボット900のつまみ動作が行われる。処理1000は、例えば、上述されるコンピュータ装置200’のプロセッサ部220’により実行され得る。
ステップS1001では、コンピュータ装置200’のプロセッサ部220’が、操作者パラメータとして、操作者の手指のMP関節の屈曲角度とIP関節の角度とを取得する。IP関節の角度は、拇指以外の指の場合、PIP関節の関節角度、DIP関節の関節角度、またはその両方の関節角度であり得る。
ステップS1002では、プロセッサ部220’の判定手段224が、取得されたMP関節の屈曲角度が第1の閾値以上であるか否か、および取得されたIP関節の角度が第2の閾値以上であるか否かを判定する。このステップにより、処理1000は、操作者の動きがつまみ姿勢に向かっているか否かを判定する。第1の閾値および第2の閾値は、一定値であってもよいし、変動する値であってもよい。もっとも、人間の手指は、MP関節を屈曲させたとき、IP関節も自然とわずかに屈曲するように構成され、同様に、IP関節を屈曲させたとき、MP関節も自然とわずかに屈曲するように構成されている。そのため、操作者の動きがつまみ姿勢に向かっている否かを判定することにおいて、このような人間の意志によらない自然な手指の屈曲の影響を排除するために、第1の閾値は、IP関節の角度が大きいほど大きい値であり、第2の閾値512は、MP関節の角度が大きいほど大きい値であることが好ましい。
代替として、ステップS1001で操作者の手指のDIP関節とPIP関節との両方が取得された場合、ステップS1002では、判定手段224は、MP関節の屈曲角度が第1の閾値以上であるか否か、およびDIP関節の角度とPIP関節の角度とから求まる値が第2の閾値以上であるか否かを判定し得る。人間のDIP関節とPIP関節とは、互いに従属して屈曲するように構成されている。そのため、DIP関節の角度とPIP関節の角度とを総合的に判定することにより、操作者がつまみ姿勢に向かって手指を動かしているか否かを判断することが可能である。DIP関節の角度とPIP関節の角度とから求まる値は、例えば、DIP関節の角度とPIP関節の角度との和であってもよいし、DIP関節の角度とPIP関節の角度との平均値であってもよいし、DIP関節とPIP関節とを一定の比率(例えば、1:2、1:3、2:3、3:5等)で重み付けして足し合わせた値であってもよい。
ステップS1003では、プロセッサ部220’の設定手段221が、ロボット900のつまみ姿勢およびつまみ姿勢に向かう軌道を設定する。処理1000が人間の操作者の示指に対応するロボット900の第1の部位920に適用される場合、図9Aに示されるつまみ姿勢920gと、図9Bに示される軌道926とが設定される。処理1000が人間の操作者の拇指に対応するロボット900の第2の部位940に適用される場合、図9Aに示されるつまみ姿勢940gと、つまみ姿勢940gに向かう軌道とが設定される。これらのつまみ姿勢および軌道は、予めメモリ部230に記憶されていており、設定手段221がメモリ部230から読み出すことにより設定されてもよいし、コンピュータ装置200’が外部機器と通信することにより取得され、設定手段221によって設定されてもよい。軌道926は、第1の部位920の第1の部分921の角度、第2の部分922の角度、および/または第3の部分923の角度を関連付けることにより規定され得る。例えば、軌道926は、第1の部分921の屈曲角度と第2の部分922の角度とが所定の比率(例えば、1:2、1:3、2:3、2:5等)を満たす軌道であり得る。
ステップS1002において、判定手段224が、MP関節の屈曲角度が第1の閾値以上であり、かつIP関節の角度が第2の閾値以上であると判定した場合、処理1000は、ステップS1004に進む。ステップS1004~ステップS1005では、プロセッサ部220’の姿勢決定手段222が、操作者パラメータの値に対応するロボット900の軌道上の姿勢のロボットパラメータの値を決定する。具体的には、処理1000がロボットの第1の部位920に適用される場合、姿勢決定手段222は、ステップS1004において、少なくとも操作者のMP関節の屈曲角度とIP関節の角度とを変数とする第1の関数によって、ロボット900の第1の部位920の第1の部分921の第1の方向921fの角度を決定し、ステップS1005において、少なくとも操作者のMP関節の屈曲角度とIP関節の角度とを変数とする第2の関数によって、ロボット900の第1の部位920の第2の部分922の角度を決定する。
ステップS1006では、プロセッサ部220’の制御信号生成手段223が、決定された姿勢に向かってロボット300を動かす制御信号を生成し、生成された制御信号を出力部240を介してロボット900に出力する。これにより、目標姿勢に向かってロボット900を動かすことができる。ステップS1006の終了後、処理1000は、再度ステップS1001に戻り、上述の処理を繰り返し実行する。
ステップS1002において、判定手段224が、操作者のMP関節の屈曲角度が第1の閾値未満であるか、またはIP関節の角度が第2の閾値未満であると判定した場合、処理1000は、ステップS1007に進む。ステップS1007では、制御信号生成手段223が、操作者の動作部位に対応するロボット900の各部分のロボットパラメータの値が操作者パラメータの値に一致するようにロボット900を動かす制御信号を生成し、出力部240は、生成された制御信号をロボット900に出力する。これにより、操作者の動きと一致するようにロボット900を動かすことができる。ステップS1007の終了後、処理1000は、再度ステップS1001に戻り、上述の処理を繰り返し実行する。
図11は、操作者の手指の動きに基づいてロボットにつまみ動作を行わせるための処理1100の一例を示すフローチャートである。処理1100は、操作者の拇指以外の手指(示指、中指、薬指、または小指)の動きに基づいてロボットの動きを制御するための処理である。処理1100は、操作者の手指のMP関節の外転角度に基づいてロボットの第1の部分の第2の方向の角度を制御することを含む点で、処理1000と異なる。処理1100は、例えばロボット900の第1の部位920について実行される。処理1100は、例えば、上述されるコンピュータ装置200’のプロセッサ部220’により実行され得る。
ステップS1101では、コンピュータ装置200’のプロセッサ部220’が、操作者パラメータとして、操作者の拇指以外の手指のMP関節の屈曲角度と、MP関節の外転角度と、IP関節の角度とを取得する。IP関節の角度は、PIP関節の角度、DIP関節の角度、またはその両方であり得る。測定機器は、MP関節の屈曲方向の角度を測定するセンサと、外転方向の角度を測定するセンサとの2つの独立したセンサを有しており、これらのセンサから、2方向の角度が測定され得る。なお、MP関節の屈曲角度と外転角度とは、図13に関して後述される1つのセンサから各方向の角度成分を決定する手法を用いて決定されてもよい。
ステップS1102の内容は、処理1000のステップS1002の内容と同じであるため、詳細な説明が省略される。
ステップS1103では、設定手段221が、ロボット900のつまみ姿勢およびつまみ姿勢に向かう軌道を設定する。つまみ姿勢および軌道は、予めメモリ部230に記憶されており、設定手段221がメモリ部230から読み出すことにより設定されてもよいし、コンピュータ装置200’が外部機器と通信することにより取得され、設定手段221によって設定されてもよい。軌道926は、第1の部位920の第1の部分921の第1の方向921fの角度と、第1の部分921の第2の方向の角度921aと、第2の部分922の角度および/または第3の部分923の角度とを関連付けることにより規定され得る。例えば、軌道は、単一の軌道であり、第1の部分921の第1の方向921fの角度と、第1の部分921の第2の方向922aの角度と、第2の部分922の角度とが所定の比率を満たす軌道であり得る。別の例では、軌道は、複数の軌道であり、第1の部分921の第1の方向921fの角度と第2の部分922の角度との間の所定の比率を規定する第1の軌道と、第1の部分921の第1の方向921fの角度と第1の部分921の第2の方向921aの角度との間の所定の比率を規定する第2の軌道とを含み得る。
ステップS1102において、判定手段224が、MP関節の屈曲角度が第1の閾値以上であり、かつIP関節の角度が第2の閾値以上であると判定した場合、処理1100は、ステップS1104に進む。ステップS1104~ステップS1108では、プロセッサ部220’の姿勢決定手段222が、操作者パラメータの値に対応するロボット900の軌道上の姿勢を決定する。ステップS1104では、姿勢決定手段222は、少なくとも操作者のMP関節の屈曲角度とIP関節の角度とを変数とする第3の関数によって、ロボット900の第1の部位920の第1の部分921の第1の方向921fの角度を決定する。ステップS1105では、姿勢決定手段222は、少なくとも操作者のMP関節の屈曲角度とIP関節の角度とを変数とする第4の関数によって、ロボット900の第1の部位920の第2の部分922の角度を決定する。
ステップS1106~ステップS1108の処理は、操作者の手指の外転角度に対応するロボット900の第1の部位920の部分921の第2の方向921aの角度を決定するための処理である。人間の拇指以外の手指のMP関節回りの外転角度は、MP関節回りの屈曲角度に依存する。MP関節の屈曲角度が増大すると、MP関節の外転角度は自然と小さくなる(つまり、示指、薬指、または小指が屈曲する場合、それらの指が中指に近づく)。そして、MP関節の屈曲角度がある大きさになると、MP関節の外転角度はほぼ0度となる。このような人間の自然な動きをロボット900の動きに反映させるために、このような処理が実行される。
ステップS1106では、姿勢決定手段222は、操作者のMP関節の屈曲角度が、第3の閾値未満であるか否かを判定する。これにより、人間の手指のMP関節の屈曲角度がある大きさになるとMP関節の外転角度はほぼ0度となるという特性を、ロボット900に反映させることができる。第3の閾値は、第1の閾値より大きい値であり得る。
ステップS1106において操作者のMP関節の屈曲角度が第3の閾値未満であると判定された場合、処理1100は、ステップS1107に進む。ステップS1107では、姿勢決定手段222が、少なくとも操作者のMP関節の屈曲角度と外転角度とを変数とする第5の関数によって、ロボット900の第1の部分921の第2の方向921aの角度を決定する。第5の関数は、図3Aに示されるような、操作者パラメータの値からロボットの軌道上の姿勢のロボットパラメータの値を決定する関数であってもよいし、操作者のMP関節の屈曲角度の大きさに基づいてロボット900の第1の部分921の第2の方向921aの角度を修正する関数であってもよい。後者の場合、第5の関数は、例えば、操作者のMP関節の角度の増加に伴ってロボット900の第1の部分921の第2の方向921aの角度の取り得る範囲を狭める関数であり得る。例えば操作者のMP関節の屈曲角度が20°であり、ロボット900の第1の部分921の第2の方向921aの角度の取り得る範囲が-2°~+2°である場合において、操作者のMP関節の外転角度が+1°と測定された場合、ロボット900の第1の部分921の第2の方向921aの角度も+1°に決定され、一方で、操作者のMP関節の外転角度が+3°と測定された場合、ロボット900の第1の部分921の第2の方向921aの角度のとり得る範囲を逸脱しているので、その範囲に収まるように、+2°に修正され得る。このように、操作者のMP関節の外転角度を、上述される軌道上の姿勢ではなく、より簡便な方法によりロボット900に反映されるようにすることで、本処理を低減させることができる。
一方、ステップS1106において操作者のMP関節の外転角度が第3の閾値以上であると判定された場合、処理1100は、ステップS1108に進む。ステップS1108では、姿勢決定手段222が、ロボット900の第1の部分921の第2の方向921aの角度を一定の値に決定する。一定の値は、例えば0度であり得る。
ステップS1109では、プロセッサ部220’の制御信号生成手段223が、決定された姿勢に向かってロボット900を動かす制御信号を生成し、出力部240は、生成された制御信号をロボット900に出力する。これにより、目標姿勢に向かってロボット900を動かすことができる。ステップS1109の終了後、処理1100は、再度ステップS1101に戻り、上述の処理を繰り返し実行する。
ステップS1102において、判定手段224が、MP関節の屈曲角度が第1の閾値未満であるか、またはIP関節の角度が第2の閾値未満であると判定した場合、処理1100は、ステップS1110に進む。ステップS1110では、制御信号生成手段223が、操作者の動作部位に対応するロボット900の各部分のロボットパラメータの値が操作者パラメータの値に一致するようにロボット900を動かす制御信号を生成し、出力部240は、生成された制御信号をロボット900に出力する。これにより、操作者の動きと一致するようにロボット900を動かすことができる。ステップS1110の終了後、処理1100は、再度ステップS1101に戻り、上述の処理を繰り返し実行する。
処理1100は、拇指以外の手指について、操作者の手指のMP関節の屈曲角度およびIP関節の角度に加え、操作者の手指のMP関節の外転角度も考慮して目標姿勢に向かう軌道を決定するため、処理1000よりもさらに確実にロボット900を目標姿勢に向かって動かすことが可能になる。人間の手指の外転角度は非常に微量であるため、これをセンサによって正確に取得できないこともある。そのため、センサによって取得された外転角度をそのままロボットに反映させた場合、ロボットに正確につまみ動作を実行させることができない(例えば、拇指に対応する部分の先端と示指に対応する部分の先端とが接触しない)ことがあり得る。これを回避するために、処理1100は特に有用である。
図12は、操作者の手指の動きに基づいてロボット900につまみ動作を行わせるための処理1200の一例を示すフローチャートである。処理1200は、操作者の拇指のCM関節の角度に基づいてロボットの第4の部分を制御することを含む点で、処理1000および処理1100と異なる。処理1200は、例えばロボット900の第2の部位940について実行される。処理1200は、例えば、上述されるコンピュータ装置200’のプロセッサ部220’により実行され得る。
ステップS1201では、コンピュータ装置200’のプロセッサ部220’が、操作者の拇指のMP関節の角度と、IP関節の角度と、CM関節のパラメータの値とを取得する。
ステップS1202の内容は、処理1000のステップS1002の内容と同じであるため、詳細な説明が省略される。
ステップS1203では、設定手段221が、ロボット900のつまみ姿勢およびつまみ姿勢に向かう軌道を設定する。つまみ姿勢および軌道は、予めメモリ部230に記憶されていており、設定手段221がメモリ部230から読み出すことにより設定されてもよいし、コンピュータ装置200’が外部機器と通信することにより取得され、設定手段221によって設定されてもよい。軌道は、ロボット900の第2の部位940の第1の部分941の角度と、第2の部分942の角度と、第4の部分944の第1の方向944aの角度および/または第4の部分944の第2の方向944fの角度とを関連付けることにより規定され得る。例えば、軌道は、単一の軌道であり、第2の部位940の第1の部分941の角度と、第2の部分942の角度と、第4の部分944の第1の方向944aの角度とが所定の比率(例えば、1:2、1:3、2:3、2:5等)を満たす軌道であり得る。別の例では、軌道は、複数の軌道であり、第1の部分941の角度と第2の部分942の角度との間の所定の比率を規定する第1の軌道と、第1の部分941の角度と第4の部分944の第1の方向944aの角度との間の所定の比率を規定する第2の軌道とを含み得る。
ステップS1202において、判定手段224が、MP関節の角度が第1の閾値以上であり、かつIP関節の角度が第2の閾値以上であると判定した場合、処理1200は、ステップS1204に進む。ステップS1204~ステップS1209では、プロセッサ部220’の姿勢決定手段222が、操作者パラメータの値に対応するロボット900の軌道上の姿勢を決定する。
ステップS1204では、姿勢決定手段222は、少なくとも操作者の拇指のMP関節の角度とIP関節の角度とを変数とする第1の関数によって、ロボット900の第2の部位940の第1の部分941の角度を決定する。ステップS1205では、姿勢決定手段222は、少なくとも操作者の拇指のMP関節の角度とIP関節の角度とを変数とする第2の関数によって、ロボット900の第2の部位940の第2の部分942の角度を決定する。
ステップS1206~ステップS1209の処理は、操作者の拇指のCM関節の対立角度に対応するロボット900の第2の部位940の第4の部分944の第1の方向944aの角度を決定するための処理である。つまみ姿勢において、拇指は、掌に対向する位置に配置される。掌に対する拇指全体の位置は、主に、拇指のCM関節の対立角度とMP関節の角度とに依存する。そこで、処理1200は、ロボット900が第2の部位940をつまみ姿勢904gの位置に確実に移動させることができるように、操作者パラメータの値に基づいてロボット900の第2の部位940の第4の部分944の第1の方向944aを制御するための処理を実行する。
人間の拇指のCM関節は、上述されるように、2自由度を有する鞍関節であり、対立角度と屈曲角度とによりその動きが規定される。しかし、従来のCM関節の動きを測定するセンサ(例えば、曲げセンサ)は、対立角度成分と屈曲角度成分とが混在した情報しか取得することができないことがあり、CM関節の正確な対立角度と屈曲角度とを独立して取得することが困難であり得る。
そこで、ステップS1206において、姿勢決定手段222は、操作者のCM関節のパラメータの値に基づいて、操作者のCM関節の対立角度成分と屈曲角度成分とを決定する処理を行う。CM関節の角度成分の決定は、任意の方法で行われる。角度成分の決定の一例として、姿勢決定手段222は、予め求められた各角度成分の最大ベクトルを取得し、操作者のCM関節のパラメータの値と最大ベクトルとに基づいて各角度成分を決定し得る。例えば、処理1200は、ステップS1201の前に拇指のCM関節のキャリブレーションを行い、CM関節の対立角度成分の最大ベクトルと、屈曲角度成分の最大ベクトルとを決定し得る。図13は、操作者のCM関節の対立角度成分と屈曲角度成分とを決定するための例示的方法を示す図である。図13に示す例では、CM関節のキャリブレーションは、CM関節に設置されたセンサの値に基づいて実施される。このセンサは、例えば、曲げセンサであり得る。CM関節のキャリブレーションにおいて、プロセッサ部220’は、CM関節回りの対立角度および屈曲角度を共に0にした状態におけるセンサの値351と、対立角度を最大値Amaxにし、屈曲角度を0にしたときのセンサの値352と、対立角度を0にし、屈曲角度を最大値Fmaxにしたときのセンサの値353と、対立角度を最大値Amaxにし、屈曲角度を最大値Fmaxにしたときのセンサの値354とを取得する。そして、センサの値351からセンサの値352へ伸びるベクトル360、および、センサの値351からセンサの値353へ伸びるベクトル370が決定される。ベクトル360の大きさは、CM関節の対立方向の最大角度を示しており、ベクトル370の大きさは、CM関節の屈曲方向の最大角度を示している。
姿勢決定手段222は、時刻tnにおいて取得されたCM関節のセンサ値350nを、図13のようにマッピングする。そして、姿勢決定手段222は、センサ値350nから、対立方向ベクトル360と屈曲方向ベクトル370とに射影し、センサの値350nの対立方向の基底ベクトル360nと屈曲方向の基底ベクトル370nとを決定する。そして、姿勢決定手段222は、対立方向ベクトル360に対する対立方向規定ベクトル360nの割合を求めることによって、時刻tnにおける対立角度を決定し、屈曲方向ベクトル370に対する屈曲方向基底ベクトル370nの割合を求めることによって、時刻tnにおける屈曲角度を決定する。
ステップS1207では、姿勢決定手段222は、操作者のMP関節の角度が第4の閾値未満であるか、またはステップS1206において決定された操作者のCM関節の対立角度成分が第5の閾値未満であるかを判定する。
ステップS1207において、操作者のMP関節の角度が第4の閾値未満であるか、またはCM関節の対立角度成分が第5の閾値未満であると判定された場合、処理1200は、ステップS1208に進む。ステップS1208では、姿勢決定手段222は、少なくとも操作者のMP関節の角度とCM関節の対立角度成分とを変数とする第6の関数によって、ロボット900の第2の部位940の第4の部分944の第1の方向944aの角度を決定する。
一方、ステップS1207において操作者のMP関節の角度が第4の閾値以上であり、かつCM関節の対立角度成分が第5の閾値以上であると判定された場合、処理1200は、ステップS1209に進む。ステップS1209では、姿勢決定手段222は、ロボット900の第2の部位940の第4の部分944の第1の方向944aの角度を一定の値に決定する。これにより、ロボット900の第2の部位940の第4の部分944の第1の方向944aの角度を大きく動かし過ぎることに起因して目標姿勢に到達されなくなることが回避され得る。例えば、ロボット900の第1の部位920と第2の部位940とでつまみ動作を行う場合、第2の部位940の第4の部分944の第1の方向944aの角度が大き過ぎると、第1の部位920の先端と第2の部位940の先端とが接触しないことがあり得る。よって、姿勢決定手段222は、ステップS1209の処理を実行することにより、上記のような事態を回避し得る。一定の値は、予め決定されている値であってもよいし、第1の部位920の軌道から計算される値であってもよい。
ステップS1210では、プロセッサ部220’の制御信号生成手段223が、決定された姿勢に向かってロボット900を動かす制御信号を生成し、出力部240は、生成された制御信号をロボット900に出力する。これにより、操作者の動きに基づいて目標姿勢に向かってロボット900を動かすことができる。ステップS1210の終了後、処理1200は、再度ステップS1201に戻り、上述の処理を繰り返し実行する。
ステップS1202において、判定手段224が、操作者のMP関節の角度が第1の閾値未満であるか、またはIP関節の角度が第2の閾値未満であると判定した場合、処理1200は、ステップS1211に進む。ステップS1211では、制御信号生成手段223が、操作者の動作部位に対応するロボット900の部分のロボットパラメータの値が操作者パラメータの値に一致するようにロボット900を動かす制御信号を生成し、出力部240は、生成された制御信号をロボット900に出力する。これにより、操作者の動きと一致するようにロボット900を動かすことができる。ステップS1211の終了後、処理1200は、再度ステップS1201に戻り、上述の処理を繰り返し実行する。
処理1200は、操作者の拇指のMP関節の屈曲角度およびIP関節の角度に加え、操作者の拇指のCM関節の対立角度も考慮して目標姿勢に向かう軌道を決定するため、処理1000よりもさらに確実にロボット900を目標姿勢に向かって動かすことが可能になる。
処理1000、1100および1120は、操作者の手指の関節の角度に基づいてロボット900をつまみ姿勢に向かって動かす例を説明しているが、本開示はこれに限定されない。これらの処理は、関節の角度に限定されず、例えば、手指のMP関節の空間座標(第1の操作者パラメータ)とIP関節の空間座標(第2の操作者パラメータ)とに基づいて、手指の先端の空間座標(第1の操作者パラメータ)と掌の中心の空間座標(第2の操作者パラメータ)とに基づいて、または、手指の先端と掌の中心との距離(第1の操作者パラメータ)と、IP関節の角度(第2の操作者パラメータ)とに基づいて、実行され得る。
上記では、本開示に係るプログラムを用いてロボットに手指のつまみ動作を行わせるための処理が説明されたが、本開示の範囲はこれに限定されない。本開示の処理は、操作者の動作部位のうちのいくつかの部分の情報に基づいてロボットを目標姿勢に向かって動かすことができるため、操作者の動作部位全体の情報に基づくロボット動作と比較して、データ量が低減され、ロボット制御におけるパラメータを単純化することができる。これにより、人体のうち複雑な構造または複雑な運動形態を有する部位の動きであっても、ロボットに確実に所望の動作を行わせることが可能になる。例えば、人間の頸椎は複雑な構造を有しているが、頸椎に関する少数のパラメータのみを測定し、測定されたパラメータの値からロボットの軌道上の姿勢を決定することによって、少ないデータ量で頸椎の動きをロボットに伝達することができる。
また、本開示の処理のように閾値を用いてロボットを動作させるモードを変更することにより、ロボットを所定の軌道上で動かす場合と、操作者の入力(例えば、操作者パラメータ)に忠実に動かす場合と、一定の姿勢の固定する場合とを詳細に設定することが可能になる。これにより、ロボットの動作を全て操作者の入力に忠実に行わせる場合と比較して、測定機器とロボットとの間の通信量が低減し得る。さらに、閾値による動作モード変更機能を備えることにより、ロボットが所定の軌道上での動作中に特殊な状況(例えば、障害物の存在)に遭遇したときに、操作者がロボットの動作モードを変更するような動きをすることによって、ロボットを操作者に忠実に動くモードに切り替えることができるため、ロボットをそのような特殊な状況に適応させることが容易である。
上述した例では、特定の順序で処理600、700、1000、1100、1200の各ステップが行われることを説明したが、説明された順序は一例に過ぎない。処理600、700、1000、1100、1200の各ステップは、論理的に可能な任意の順序で行われることができる。
また、処理600、700、1000、1100、1200の各ステップは、一実施形態においては、省略されてもよく、別の実施形態においては、他のステップと置換されてもよい。
処理600、700、1000、1100、1200は、プロセッサ部220とメモリ部230に格納されたプログラムとによって実現することが説明されたが、本発明はこれに限定されない。処理600、700、1000、1100、1200の各ステップのうちの少なくとも1つは、制御回路などのハードウェア構成によって実現されてもよい。
本発明は、上述した実施形態に限定されるものではない。本発明は、例えば、本開示の処理を行うプログラムを格納したコンピュータ読み取り可能な記録媒体によっても具現化され得る。本発明は、特許請求の範囲によってのみその範囲が解釈されるべきであることが理解される。当業者は、本発明の具体的な好ましい実施形態の記載から、本発明の記載および技術常識に基づいて等価な範囲を実施することができることが理解される。