(57)【要約】  オペレーションコンピュータは、第一の空間にいるオペレータがロボットの存在する第二の空間に居るならばオペレータの視界に現われる様子を表わす視界画像をヘッドマウントディスプレイのようなディスプレイに表示させる。そして、オペレータの動作に応じてタスクを行うようにロボットを制御する。
2018097223.tif 000002
【特許請求の範囲】
【請求項１】
ディスプレイに表示された画像をオペレータに見せながら、タスクを実行するようロボットを制御するロボット制御システムであって、
前記オペレータが前記ロボットの存在する空間に居るならば前記オペレータの視界に現われる様子を表わす視界画像を前記ディスプレイに表示させる表示手段と、
前記オペレータの動きに応じたタスクを前記ロボットに実行させるための制御命令を生成し、前記ロボットに送信する制御手段と、
を有するロボット制御システム。
【請求項２】
前記ロボットは、物体を取り扱う第一の部位を有し、
前記オペレータは、第二の部位を有し、
前記制御手段は、前記第二の部位の動きに基づいて前記第一の部位を動かす命令を前記制御命令として生成し前記ロボットに送信する、
請求項１に記載のロボット制御システム。
【請求項３】
前記制御手段は、前記オペレータが前記第二の部位を動かした際に、前記オペレータが前記空間に居るならば前記第二の部位が前記空間の中で動く軌跡に合わせて前記第一の部位が動くように前記ロボットを制御する、
請求項２に記載のロボット制御システム。
【請求項４】
前記ディスプレイは、前記オペレータに装着するためのヘッドマウントディスプレイであり、
前記表示手段は、前記空間を仮想的に再現した仮想空間の中に前記オペレータの動きに合わせて動くアバターを配置し、前記アバターの目から視線方向に見える様子を表わす画像を前記視界画像として前記ディスプレイに表示させる、
請求項２または請求項３に記載のロボット制御システム。
【請求項５】
前記表示手段は、前記オペレータを計測することによって求められた三次元形状および前記ロボットに設けられた計測装置によって得られたデータに基づいて求められた三次元形状を用いて前記アバターを前記空間に配置する、
請求項４に記載のロボット制御システム。
【請求項６】
前記オペレータが足踏みするのに伴って前記ロボットを移動させる第二の制御手段、を有し、
前記表示手段は、前記ロボットが前記仮想空間において再現される位置に前記アバターを配置し、前記視界画像を前記ディスプレイに表示させる、
請求項４または請求項５に記載のロボット制御システム。
【請求項７】
前記表示手段は、前記ロボットを仮想した仮想ロボットを前記仮想空間の中の前記位置に配置し、前記視界画像を前記ディスプレイに表示させる、
請求項６に記載のロボット制御システム。
【請求項８】
前記表示手段は、特定のコマンドが入力されまたは前記ロボットに特定のイベントが生じた場合に、前記ロボットを仮想した仮想ロボットを前記仮想空間の中の前記位置に配置し、前記アバターを前記位置の近傍に配置し直し、前記視界画像を前記ディスプレイに表示させる、
請求項６に記載のロボット制御システム。
【請求項９】
前記アバターが配置し直された後に前記オペレータが動作を行った場合に、前記オペレータと前記ロボットとの位置関係が前記アバターと前記仮想ロボットとの位置関係と同じであるならば前記動作によって前記ロボットに生じる変化が起きるように前記ロボットを制御する、第三の制御手段、を有する、
請求項８に記載のロボット制御システム。
【請求項１０】
前記ロボットが前記物体に触れまたは前記空間の中の障害物に干渉した場合に、前記物体に触れたことまたは前記障害物に干渉したことを、力覚、触覚、または聴覚を前記オペレータを与えることによって知らせる報知手段、を有する、
請求項２ないし請求項９のいずれかに記載のロボット制御システム。
【請求項１１】
前記第一の部位によって前記物体を前記オペレータの所望する通りに取り扱うことができない場合に他のロボットと協同して当該物体を取り扱うための処理を行う協同手段、を有する、
請求項２ないし請求項１０のいずれかに記載のロボット制御システム。
【請求項１２】
前記表示手段は、前記オペレータの動きに応じたタスクを行うように前記アバターを動かしながら前記視界画像を前記ディスプレイに表示させる、
請求項４ないし請求項９のいずれかに記載のロボット制御システム。
【請求項１３】
機械を制御する機械制御システムであって、
オペレータが前記機械の存在する空間の中の前記機械の近傍の位置に居るならば前記オペレータの視界に現われる様子を表わす視界画像をディスプレイに表示させる表示手段と、
前記オペレータが動作を行った場合に、前記オペレータが前記空間の中の前記位置に居るならば前記動作によって前記機械に生じる変化が起きるように前記機械を制御する、制御手段と、
を有する機械制御システム。
【請求項１４】
前記ディスプレイは、前記オペレータに装着するためのヘッドマウントディスプレイであり、
前記機械は、パワーアシストスーツである、
請求項１３に記載の機械制御システム。
【請求項１５】
ディスプレイに表示された画像をオペレータに見せながら、タスクを実行するようロボットを制御するロボット制御方法であって、
前記オペレータが前記ロボットの存在する空間に居るならば前記オペレータの視界に現われる様子を表わす視界画像を前記ディスプレイに表示させる表示処理を行い、
前記オペレータの動きに応じたタスクを前記ロボットに実行させるための制御命令を生成し前記ロボットに送信する制御処理を行う、
ロボット制御方法。
【請求項１６】
前記ロボットは、物体を取り扱う第一の部位を有し、
前記オペレータは、第二の部位を有し、
前記制御処理は、前記第二の部位の動きに基づいて前記第一の部位を動かす命令を前記制御命令として生成し前記ロボットに送信する処理である、
請求項１５に記載のロボット制御方法。
【請求項１７】
前記制御処理は、前記オペレータが前記第二の部位を動かした際に、前記オペレータが前記空間に居るならば前記第二の部位が前記空間の中で動く軌跡に合わせて前記第一の部位が動くように前記ロボットを制御する処理である、
請求項１６に記載のロボット制御方法。
【請求項１８】
前記ディスプレイは、前記オペレータに装着するためのヘッドマウントディスプレイであり、
前記表示処理は、前記空間を仮想的に再現した仮想空間の中に前記オペレータの動きに合わせて動くアバターを配置する配置し、前記アバターの目から視線方向に見える様子を表わす画像を前記視界画像として前記ディスプレイに表示させる処理である、
請求項１６または請求項１７に記載のロボット制御方法。
【請求項１９】
前記表示処理は、前記オペレータを計測することによって求められた三次元形状および前記ロボットに設けられた計測装置によって得られたデータに基づいて求められた三次元形状を用いて前記アバターを前記空間に配置し、前記視界画像を前記ディスプレイに表示させる処理である、
請求項１８に記載のロボット制御方法。
【請求項２０】
前記オペレータが足踏みするのに伴って前記ロボットを移動させる第二の制御処理、を行い、
前記表示処理は、前記ロボットが前記仮想空間において再現される位置に前記アバターを配置し、前記視界画像を前記ディスプレイに表示させる処理である、
請求項１８または請求項１９に記載のロボット制御方法。
【請求項２１】
前記表示処理は、前記ロボットを仮想した仮想ロボットを前記仮想空間の中の前記位置に配置し、前記視界画像を前記ディスプレイに表示させる処理である、
請求項２０に記載のロボット制御方法。
【請求項２２】
前記表示処理は、特定のコマンドが入力されまたは前記ロボットに特定のイベントが生じた場合に、前記ロボットを仮想した仮想ロボットを前記仮想空間の中の前記位置に配置し、前記アバターを前記位置の近傍に配置し直し、前記視界画像を前記ディスプレイに表示させる処理である、
請求項２０に記載のロボット制御方法。
【請求項２３】
前記アバターが配置し直された後に前記オペレータが動作を行った場合に、前記オペレータと前記ロボットとの位置関係が前記アバターと前記仮想ロボットとの位置関係と同じであるならば前記動作によって前記ロボットに生じる変化が起きるように前記ロボットを制御する、第三の制御処理を行う、
請求項２２に記載のロボット制御方法。
【請求項２４】
前記ロボットが前記物体に触れまたは前記空間の中の障害物に干渉した場合に、前記物体に触れたことまたは前記障害物に干渉したことを、力覚、触覚、または聴覚を前記オペレータを与えることによって知らせる報知処理を行う、
請求項１６ないし請求項２３のいずれかに記載のロボット制御方法。
【請求項２５】
前記第一の部位によって前記物体を前記オペレータの所望する通りに取り扱うことができない場合に他のロボットと協同して当該物体を取り扱うための協同処理を行う、
請求項１６ないし請求項２４のいずれかに記載のロボット制御方法。
【請求項２６】
前記表示処理は、前記オペレータの動きに応じたタスクを行うように前記アバターを動かしながら前記視界画像を前記ディスプレイに表示させる処理である、
請求項１８ないし請求項２３のいずれかに記載のロボット制御方法。
【請求項２７】
機械を制御する機械制御方法であって、
オペレータが前記機械の存在する空間の中の前記機械の近傍の位置に居るならば前記オペレータの視界に現われる様子を表わす視界画像をディスプレイに表示させる表示処理を行い、
前記オペレータが動作を行った場合に、前記オペレータが前記空間の中の前記位置に居るならば前記動作によって前記機械に生じる変化が起きるように前記機械を制御する制御処理を行う、
機械制御方法。
【請求項２８】
前記ディスプレイは、前記オペレータに装着するためのヘッドマウントディスプレイであり、
前記機械は、パワーアシストスーツである、
請求項２７に記載の機械制御方法。
【請求項２９】
ディスプレイに表示された画像をオペレータに見せながら、タスクを実行するようロボットを制御するコンピュータに用いられるコンピュータプログラムを格納した、前記コンピュータによるアクセスが可能な記録媒体であって、
前記コンピュータプログラムは、
前記オペレータが前記ロボットの存在する空間に居るならば前記オペレータの視界に現われる様子を表わす視界画像を前記ディスプレイに表示させる表示処理を前記コンピュータに実行させ、
前記オペレータの動きに応じたタスクを前記ロボットに実行させるための制御命令を生成し前記ロボットに送信する制御処理を前記コンピュータに実行させる、
記録媒体。
【請求項３０】
前記ロボットは、物体を取り扱う第一の部位を有し、
前記オペレータは、第二の部位を有し、
前記制御処理は、前記第二の部位の動きに基づいて前記第一の部位を動かす命令を前記制御命令として生成し前記ロボットに送信する処理である、
請求項２９に記載の記録媒体。
【請求項３１】
前記制御処理は、前記オペレータが前記第二の部位を動かした際に、前記オペレータが前記空間に居るならば前記第二の部位が前記空間の中で動く軌跡に合わせて前記第一の部位が動くように前記ロボットを制御する処理である、
請求項３０に記載の記録媒体。
【請求項３２】
前記ディスプレイは、前記オペレータに装着するためのヘッドマウントディスプレイであり、
前記表示処理は、前記空間を仮想的に再現した仮想空間の中に前記オペレータの動きに合わせて動くアバターを配置する配置し、前記アバターの目から視線方向に見える様子を表わす画像を前記視界画像として前記ディスプレイに表示させる処理である、
請求項３０または請求項３１に記載の記録媒体。
【請求項３３】
前記表示処理は、前記オペレータを計測することによって求められた三次元形状および前記ロボットに設けられた計測装置によって得られたデータに基づいて求められた三次元形状を用いて前記アバターを前記空間に配置し、前記視界画像を前記ディスプレイに表示させる処理である、
請求項３２に記載の記録媒体。
【請求項３４】
前記オペレータが足踏みするのに伴って前記ロボットを移動させる第二の制御処理を前記コンピュータに実行させ、
前記表示処理は、前記ロボットが前記仮想空間において再現される位置に前記アバターを配置し、前記視界画像を前記ディスプレイに表示させる処理である、
請求項３２または請求項３３に記載の記録媒体。
【請求項３５】
前記表示処理は、前記ロボットを仮想した仮想ロボットを前記仮想空間の中の前記位置に配置し、前記視界画像を前記ディスプレイに表示させる処理である、
請求項３４に記載の記録媒体。
【請求項３６】
前記表示処理は、特定のコマンドが入力されまたは前記ロボットに特定のイベントが生じた場合に、前記ロボットを仮想した仮想ロボットを前記仮想空間の中の前記位置に配置し、前記アバターを前記位置の近傍に配置し直し、前記視界画像を前記ディスプレイに表示させる処理である、
請求項３４に記載の記録媒体。
【請求項３７】
前記アバターが配置し直された後に前記オペレータが動作を行った場合に、前記オペレータと前記ロボットとの位置関係が前記アバターと前記仮想ロボットとの位置関係と同じであるならば前記動作によって前記ロボットに生じる変化が起きるように前記ロボットを制御する第三の制御処理を前記コンピュータに実行させる、
請求項３６に記載の記録媒体。
【請求項３８】
前記ロボットが前記物体に触れまたは前記空間の中の障害物に干渉した場合に、前記物体に触れたことまたは前記障害物に干渉したことを、力覚、触覚、または聴覚を前記オペレータを与えることによって知らせる報知処理を前記コンピュータに実行させる、
請求項３０ないし請求項３７のいずれかに記載の記録媒体。
【請求項３９】
前記第一の部位によって前記物体を前記オペレータの所望する通りに取り扱うことができない場合に他のロボットと協同して当該物体を取り扱うための協同処理を前記コンピュータに実行させる、
請求項３０ないし請求項３８のいずれかに記載の記録媒体。
【請求項４０】
前記表示処理は、前記オペレータの動きに応じたタスクを行うように前記アバターを動かしながら前記視界画像を前記ディスプレイに表示させる処理である、
請求項３２ないし請求項３７のいずれかに記載の記録媒体。
【請求項４１】
機械を制御するコンピュータに用いられるコンピュータプログラムを格納した、前記コンピュータによるアクセスが可能な記録媒体であって、
前記コンピュータプログラムは、
オペレータが前記機械の存在する空間の中の前記機械の近傍の位置に居るならば前記オペレータの視界に現われる様子を表わす視界画像をディスプレイに表示させる表示処理を前記コンピュータに実行させ、
前記オペレータが動作を行った場合に、前記オペレータが前記空間の中の前記位置に居るならば前記動作によって前記機械に生じる変化が起きるように前記機械を制御する制御処理を前記コンピュータに実行させる、
記録媒体。
【請求項４２】
前記ディスプレイは、前記オペレータに装着するためのヘッドマウントディスプレイであり、
前記機械は、パワーアシストスーツである、
請求項４１に記載の記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ロボットなどの機械をオペレータの動作に応じて動作させる技術に関する。
【背景技術】
【０００２】
オペレータは、ロボットにタスクをリアルタイムで実行させる場合、通常、ロボットを操作する。ロボットを操作する際に用いられる技術として、例えば次のような技術が知られている。【０００３】
特許文献１に記載される視覚装置は、操作者の頭部の動きに応じて、ロボットであるスレーブ装置に搭載した撮像装置に映像を撮像させ、ヘッドマウントディスプレイに投影させる。【０００４】
特許文献２に記載される遠隔操作システムは、吹き付け作業を開始する前に、吹き付け機１の左カメラ、右カメラでトンネルの吹き付け対象面の画像を撮像し、メモリに記憶する。吹き付け作業が開始されると吹き付けノズルの位置、方向等を計測し、吹き付け対象面の吹き付け量、吹き付け厚を推定し、吹き付けられるモルタルの画像を作成し、メモリに書き込む。また、吹き付けを行っている吹き付けノズルの画像を左カメラ、右カメラで撮像し、画像合成部でこの吹き付けノズルの画像とメモリから送られる吹き付け対象面、および吹き付けられるモルタルの画像とを合成し、立体画像表示部で立体表示する。オペレータは、この画像を見つつ吹き付け機を遠隔操作する。【０００５】
非特許文献１には、人間の身体と類似した構造を持つヒューマノイド型ロボットの操作方法が開示されている。非特許文献２には、移動マニピュレータの遠隔操作システムが開示されている。【０００６】
非特許文献３には、ロボットのいる遠隔地を仮想空間に再現し、その中に人間の手のモデルとタスクを実現するためのツールを提示する手法が開示されている。【０００７】
また、従来、人間の身体とは異なる構造を有するロボットをオペレータが操作する場合は、ジョイスティックまたはゲームコントローラなどの入力装置が用いられる。以下、このようなロボットを「非ヒューマノイド型ロボット」と記載する。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開平０５−２２８８５５号公報
【特許文献２】特開平０６−３２３０９４号報
【非特許文献】
【０００９】
【非特許文献１】C. L. Fernando, M. Furukawa, T. Kurogi, S. Kamuro, K. Sato, K. Minamizawa, and S. Tachi, "Design of telesar v for transferring bodily consciousness in telexistence," in Intelligent Robots and Systems (IROS), 2012 IEEE/RSJ International Conference on.IEEE, 2012, pp. 5112-5118
【非特許文献２】C. Ha, S. Park, J. Her, I. Jang, Y. Lee, G. R. Cho, H. I. So n, and D. Lee, "Whole body multi-modal semi-autonomous teleoperation system of mobile manipulator," in IEEE International Conference on Robotics and Automation (ICRA). Seattle, WA. MAY 26-30, 2015. IEEE, 2015
【非特許文献３】A. Kheddar, "Teleoperation based on the hidden robot concept," Systems, Man and Cybernetics, Part A: Systems and Humans, IEEE Transactions on, vol. 31, no. 1, pp.1-13, 2001
【発明の概要】
【発明が解決しようとする課題】
【００１０】
従来の技術によると、非ヒューマノイド型ロボットを動作させる場合に、オペレータは、どのように入力装置を操作すればどのように非ヒューマノイド型ロボットが動作するのかを予め把握する必要がある。さらに、操作に慣れる必要がある。【００１１】
非ヒューマノイド型ロボットを動作させるのに慣れる時間は、短いほうが望ましい。特に災害現場および事故現場など緊急性の要する場所で初心者が非ヒューマノイド型ロボットを使用する場合は、少しでも早く非ヒューマノイド型ロボットを動作させるのに慣れることが望ましい。ロボット以外の機械を動作させる場合も、同様である。【００１２】
本願発明は、このような課題に鑑み、オペレータがロボットなどの機械を、その存在を意識することなく動作させることができるようにすることを、目的とする。
【課題を解決するための手段】
【００１３】
本願発明の一形態に係るロボット制御システムは、ディスプレイに表示された画像をオペレータに見せながら、タスクを実行するようロボットを制御するロボット制御システムであって、前記オペレータが前記ロボットの存在する空間に居るならば前記オペレータの視界に現われる様子を表わす視界画像を前記ディスプレイに表示させる表示手段と、前記オペレータの動きに応じたタスクを前記ロボットに実行させるための制御命令を生成し、前記ロボットに送信する制御手段と、を有する。【００１４】
「タスク」は、ペンを持つタスクまたはペンで円を描くタスクなど複雑なタスクだけでなく、特定の部位を単に動かすタスクのような簡単なタスクも含まれる。また、タスクを実現するための人間の動作とロボットの動作とが異なるようなタスクも含まれる。例えば、写真を撮影するタスクに関しては、人間はカメラのシャッターを押す仕草をすることによって行うが、ロボットはそれに搭載されているカメラによって映像をキャプチャし保存することによって行う。このように、ロボットが行うタスクは、動作が見た目に現われないことがある。【００１５】
本願発明の一形態に係る機械制御システムは、機械を制御する機械制御システムであって、オペレータが前記機械の存在する空間の中の前記機械の近傍の位置に居るならば前記オペレータの視界に現われる様子を表わす視界画像をディスプレイに表示させる表示手段と、前記オペレータが動作を行った場合に、前記オペレータが前記空間の中の前記位置に居るならば前記動作によって前記ロボットに生じる変化が起きるように前記ロボットを制御する、制御手段と、を有する。
【発明の効果】
【００１６】
本発明によると、オペレータは、ロボットなどの機械を、その存在を意識することなく操作することができる。
【図面の簡単な説明】
【００１７】
【図１】遠隔作業システムの全体的な構成の例を示す図である。
【図２】第一の空間、第二の空間、および仮想空間の例を示す図である。
【図３】オペレーションコンピュータのハードウェア構成の例を示す図である。
【図４】作業支援プログラムの構成の例を示す図である。
【図５】ロボットのハードウェア構成の例を示す図である。
【図６】初期化の際のデータの流れの例を示す図である。
【図７】第二の空間座標系とロボット座標系との位置関係の例を示す図である。
【図８】角度θhip、長さＬleg、および距離Ｄstepの例を示す図である。
【図９】ロボットの移動の際のデータの流れの例を示す図である。
【図１０】角度θbodyの例を示す図である。
【図１１】ロボットの移動の方向および距離の例を示す図である。
【図１２】仮想空間の様子の画像を表示する際のデータの流れの例を示す図である。
【図１３】ヘッドマウントディスプレイに表示される画像の例を示す図である。
【図１４】把持部を動作させる際のデータの流れの例を示す図である。
【図１５】仮想空間への仮想ロボットの配置およびアバターのシフトの例を示す図である。
【図１６】ヘッドマウントディスプレイに表示される画像の例を示す図である。
【図１７】障害物の対策の際のデータの流れの例を示す図である。
【図１８】ロボットおよびヘルプロボットが協同する例を示す図である。
【図１９】遠隔地の作業を支援するための処理の流れの例を示すフローチャートである。
【図２０】遠隔地の作業を支援するための処理の流れの例を示すフローチャートである。
【図２１】遠隔地の作業を支援するための処理の流れの例を示すフローチャートである。
【図２２】パワーアシストスーツが制御の対象である場合の、第一の空間、第二の空間、および仮想空間の例を示す図である。
【図２３】パワーアシストスーツが制御の対象である場合の、第一の空間、第二の空間、および仮想空間の第二の例を示す図である。
【図２４】実験の結果の例を示す図である。
【発明を実施するための形態】
【００１８】
図１は、遠隔タスク実行システム５の全体的な構成の例を示す図である。図２は、第一の空間５１、第二の空間５２、および仮想空間５３の例を示す図である。
【００１９】
図１に示す遠隔タスク実行システム５は、図２に示す第二の空間５２でのタスクをオペレータ４０が第一の空間５１に居ながら遠隔的に行うことができるようにするシステムである。例えば、第二の空間５２の中にあるペン６１およびパネル６２を探し、ペン６１でパネル６２に絵を描く、というタスクを行うことができる。
【００２０】
第二の空間５２にはロボット３が配置されており、ロボット３が、第二の空間５２に存在する様々な物体を直接的に取り扱う。
【００２１】
仮想空間５３は、第二の空間５２をコンピュータによって仮想的に再現した仮想空間である。仮想空間５３には、オペレータ４０のアバター４１が配置される。オペレータ４０は、アバター４１の視線で見た、仮想空間５３の様子を、ヘッドマウントディスプレイ１２によって見ることができる。これにより、自分自身がアバター４１に乗り移り、仮想空間５３に居るように感じることができる。
【００２２】
オペレータ４０が動作するとアバター４１も同じように動作し、さらにロボット３もそれに連動して動作する。
【００２３】
遠隔タスク実行システム５のこのような機能により、オペレータ４０は、第一の空間５１に居ながら遠隔的に、かつ、ロボット３を意識することなく、第二の空間５２でのタスクを行うことができる。以下、この仕組みについて説明する。
【００２４】
遠隔タスク実行システム５は、図１に示すように、オペレーションコンピュータ１０、ヘッドマウントディスプレイ１２、複数台の色距離センサ１４、モーションキャプチャコンピュータ１６、通信回線２、およびロボット３などによって構成される。
【００２５】
通信回線２は、イーサネット（登録商標）回線、インターネット、公衆回線、または専用線などの通信回線であって、オペレーションコンピュータ１０とロボット３との通信など、後述する種々の通信のために用いられる。
【００２６】
オペレータ４０は、第一の空間５１にいる。ヘッドマウントディスプレイ１２は、オペレータ４０の頭部に装着される。ヘッドマウントディスプレイ１２として、非透過型のＨＭＤまたは透過型のＨＭＤなどが用いられる。非透過型のＨＭＤの例は、Ｏｃｕｌｕｓ  ＶＲ社のＯｃｕｌｕｓ  ｒｉｆｔである。透過型のＨＭＤの例は、マイクロソフト社のＨｏｌｏＬｅｎｓおよびグーグル社のグーグルグラスである。以下、ヘッドマウントディスプレイ１２として非透過型のＨＭＤが用いられる場合を例に説明する。
【００２７】
複数台の色距離センサ１４は、第一の空間５１の中央付近に配置される物体の前面、後面、および両側面を死角なく計測できるように、第一の空間５１の中に設置される。以下、色距離センサ１４として３台の色距離センサ１４１〜１４３が設置される場合を例に説明する。
【００２８】
ロボット３は、第二の空間５２の中にいる。さらに、第二の空間５２には、ペン６１およびパネル６２など様々な物体が置かれている。置かれている物体にはＲＦＩＤ（Radio Frequency Identification）などのタグが搭載されており、物体の情報をロボットが読み込める環境を想定してもよい。
【００２９】
パネル６２には、ペン６１によって絵が描かれる。パネル６２としてホワイトボードが用いられ、ペン６１として水性ペンが用いられる。または、パネル６２として、静電容量方式のタッチパネルディスプレイを用いてもよい。この場合は、ペン６１として、タッチペンが用いられる。
【００３０】
オペレーションコンピュータ１０は、ヘッドマウントディスプレイ１２およびモーションキャプチャコンピュータ１６と通信することができる場所に設置される。第一の空間５１の中に設置されていてもよいし、第一の空間５１の外に設置されていてもよい。
【００３１】
モーションキャプチャコンピュータ１６は、オペレーションコンピュータ１０および色距離センサ１４１〜１４３と通信することができる場所に設置される。第一の空間５１の中に設置されていてもよいし、第一の空間５１の外に設置されていてもよい。
【００３２】
〔各装置の概要〕
図３は、オペレーションコンピュータ１０のハードウェア構成の例を示す図である。図４は、タスク支援プログラム１０ｊの構成の例を示す図である。図５は、ロボット３のハードウェア構成の例を示す図である。
【００３３】
遠隔タスク実行システム５を構成する各装置の主な機能を説明する。各装置の処理の詳細については、後に説明する。
【００３４】
オペレーションコンピュータ１０は、主に、オペレータ４０のモーションに基づいてロボット３へのコマンドを生成したり、仮想空間５３にオペレータ４０のアバター４１を図２に示すように配置し仮想空間５３の様子を表わす画像の画像データを生成したりする。以下、オペレーションコンピュータ１０として、パーソナルコンピュータが用いられる場合を例に説明する。
【００３５】
オペレーションコンピュータ１０は、図３に示すように、ＣＰＵ（Central Processing Unit）１０ａ、ＲＡＭ（Random Access Memory）１０ｂ、ＲＯＭ（Read Only Memory）１０ｃ、補助記憶装置１０ｄ、無線通信装置１０ｅ、液晶ディスプレイ１０ｆ、スピーカ１０ｇ、および入力装置１０ｈなどによって構成される。
【００３６】
無線通信装置１０ｅは、通信回線２の無線基地局を介してヘッドマウントディスプレイ１２、モーションキャプチャコンピュータ１６、およびロボット３と通信する。
【００３７】
液晶ディスプレイ１０ｆは、メッセージを示す画面などを表示する。スピーカ１０ｇは、メッセージを音声によって出力する。
【００３８】
入力装置１０ｈは、キーボードまたはポインティングデバイスであって、オペレータ４０または管理者がデータまたはコマンドをオペレーションコンピュータ１０に入力するために用いられる。
【００３９】
ＲＯＭ１０ｃまたは補助記憶装置１０ｄには、タスク支援プログラム１０ｊが記憶されている。タスク支援プログラム１０ｊは、オペレータ４０に仮想空間５３の様子を見せたりロボット３を制御したりするためのプログラムである。
【００４０】
タスク支援プログラム１０ｊは、図４に示すように、初期化モジュール１０１、アバター生成モジュール１０２、仮想空間演算モジュール１０３、移動情報演算モジュール１０４、移動コマンドモジュール１０５、マニピュレートモジュール１０６、およびソリューションモジュール１０７などのソフトウェアモジュールなどによって構成される。本実施形態では、移動コマンドモジュールとマニュピュレートモジュールとを分けているが、ロボット３が冗長自由度を持つ場合などは、移動ベースとマニュピュレータとを一体のシステムとして制御してもよい。
【００４１】
初期化モジュール１０１は、タスクを開始する前またはタスクを再開する前に、初期化の処理を行う。
【００４２】
アバター生成モジュール１０２は、オペレータ４０の三次元形状の計測の結果に応じてアバター４１のデータを生成する。
【００４３】
仮想空間演算モジュール１０３は、仮想空間５３にある物体の位置および姿勢を演算する。さらに、仮想空間５３の中の特定の位置から特定の方向を見た場合の仮想空間５３の様子を表わす画像の画像データを生成する。アバター４１を仮想空間５３にした場合の仮想空間５３の様子を表わす画像の画像データを生成することもできる。演算および生成の技術として、ＳＬＡＭ（Simultaneous Localization And Mapping)が用いられる。
【００４４】
移動情報演算モジュール１０４は、オペレータ４０の動作に基づく移動の量および方向を演算する。
【００４５】
移動コマンドモジュール１０５は、ロボット３を移動させるためのコマンドをオペレータ４０の動作に応じて生成し、ロボット３に与える。
【００４６】
マニピュレートモジュール１０６は、ロボット３のアームを動作させるためのコマンドをオペレータ４０の動作に応じて生成し、ロボット３に与える。
【００４７】
ソリューションモジュール１０７は、ロボット３が障害物に遭遇した際の対策のためのモジュールである。
【００４８】
タスク支援プログラム１０ｊは、ＲＡＭ１０ｂにロードされ、ＣＰＵ１０ａによって実行される。補助記憶装置１０ｄとして、ＳＳＤ（Solid State Drive）またはハードディスクなどが用いられる。
【００４９】
ヘッドマウントディスプレイ１２は、上述の通りオペレータ４０の頭部に装着される。そして、オペレーションコンピュータ１０から画像データを受信し、仮想空間５３の様子を表わす画像を表示する。
【００５０】
色距離センサ１４１〜１４３は、ＲＧＢ−Ｄカメラまたはデプスカメラであって、オペレータ４０の人体の表面の各点の色、および、各点と色距離センサ１４１〜１４３自らとの距離を、所定の時間Ｔａごとに計測する。これにより、各点のＲＧＢＤ（Red Green Blue Depth）データが所定の時間Ｔａごとに得られる。所定の時間Ｔａは、オペレータ４０の動作の解析能の高さに応じて任意に決めることができるが、例えば０．１秒ごとに訪れる時刻である。
【００５１】
そして、色距離センサ１４１〜１４３は、ＲＧＢＤデータを得るごとに、モーションキャプチャコンピュータ１６へ送信する。色距離センサ１４１〜１４３として、例えばマイクロソフト社のｋｉｎｅｃｔセンサが用いられる。
【００５２】
モーションキャプチャコンピュータ１６は、色距離センサ１４１〜１４３からＲＧＢＤデータが送信されてくるごとに、オペレータ４０の全身の三次元形状を、ＲＧＢＤデータおよび色距離センサ１４１〜１４３それぞれの設置されている位置に基づいて算出する。そして、算出した三次元形状を示す三次元データをオペレーションコンピュータ１０へ送信する。モーションキャプチャコンピュータ１６として、例えばマイクロソフト社のＫｉｎｅｃｔ  ｆｏｒ  Ｗｉｎｄｏｗｓ  ＳＤＫがインストールされたコンピュータが用いられる。
【００５３】
このように、モーションキャプチャコンピュータ１６は、オペレータ４０の全身の三次元形状を所定の時間Ｔａごと算出する。三次元形状の変化は、オペレータ４０のモーションを表わしている。したがって、モーションキャプチャコンピュータ１６はオペレータ４０のモーションをキャプチャしている、と言える。
【００５４】
ロボット３は、図１または図５に示すように、筐体３０、ロボットコンピュータ３１、ロボットコントローラ３２、モータ３３、モバイルドライバ３４、および２つまたは４つの車輪３５、マニピュレータ３６、マニピュレータドライバ３７、アクチュエータ３８、および色距離センサ３９などによって構成される。
【００５５】
ロボットコンピュータ３１は、ロボット３の全体的な管理を行うためのコンピュータである。例えば、オペレーションコンピュータ１０から特定のデータを受信すると、ロボットコントローラ３２へ転送する。または、マニピュレータ３６によって得られたデータをオペレーションコンピュータ１０へ転送する。
【００５６】
また、ロボットコンピュータ３１は、色距離センサ３９によって得られたＲＧＢＤデータなどに基づいて、ロボットコンピュータ３１の周囲の物体のモデリングを行い、さらに、物体の位置および姿勢を算出する。ロボットコンピュータ３１は、筐体３０に内蔵されている。
【００５７】
色距離センサ３９は、ＲＧＢ−Ｄカメラまたはデプスカメラである。色距離センサ３９として、Ｋｉｎｅｃｔセンサが用いられる。色距離センサ３９は、ロボット３の前方を計測することができるように、筐体３０の上面に設置されている。なお、筐体３０の上面以外の位置に設置されてもよい。例えば、把持部３６２に設置されてもよい。または、色距離センサ３９が複数台、設置されてもよい。例えば、４台の色距離センサ３９が筐体３０の上面にそれぞれ前方、右方、左方、および後方を向くように設置されてもよい。
【００５８】
ロボットコントローラ３２は、筐体３０に内蔵されており、オペレータ４０のモーションに応じてロボット３が動くようにモバイルドライバ３４またはマニピュレータドライバ３７に指令を与える。
【００５９】
マニピュレータ３６は、人間の手および腕の代わりに、物体を掴んだり動かしたりする。マニピュレータ３６は、筐体３０の上面に設けられ、アーム部３６１および把持部３６２などによって構成される。
【００６０】
アーム部３６１は、手先に６自由度以上を持たせるための直動関節および回転関節を有し、これらの関節を曲げたり伸ばしたりすることによって、位置および姿勢を変えることができる。把持部３６２は、複数の指を有し、複数の指同士の距離を調整することによって物体を掴んだり離したりすることができる。
【００６１】
アクチュエータ３８は、アーム部３６１および把持部３６２を駆動する。マニピュレータドライバ３７は、ロボットコントローラ３２からの指令に基づいて、アーム部３６１または把持部３６２が駆動するようにアクチュエータ３８を制御する。なお、筐体３０に対する、把持部３６２の位置は、例えば、ロータリーエンコーダなどによって各関節の角度を計測することによって求められる。
【００６２】
床からの、筐体３０の上面の高さは、約５０〜１００センチメートルである。アーム部３６１の長さは、人間の腕の付け根から指の先端までの長さよりも少し長い程度であり、約６０〜１００センチメートルである。把持部３６２の両端の指を広げたときの距離は、人間の手を広げたときの親指と小指との距離よりも少し長い程度であり、約２０〜３０センチメートルである。
【００６３】
このような構成により、把持部３６２は、人間がロボット３と同じ位置に立っているときに人間の手が届く範囲と同じ範囲またはそれよりも広い範囲で動くことができる。オペレータ４０の可動範囲とロボット３の可動範囲とが異なっていても構わない。後に述べるが、オペレータ４０の可動範囲とロボット３の可動範囲とが異なっていて、オペレータ４０の動作に応じたタスクをロボット３が実現できない場合には、仮想空間にロボットのＣＧ（Computer Graphics）を入れ込むことにより、ロボット３がタスクを実現できないことをオペレータ４０に理解させて、対応するためのリカバリー処理を実施する。
【００６４】
筐体３０の右側面および左側面には、車輪３５が１つずつまたは２つずつ設けられている。以下、車輪３５として右車輪３５１および左車輪３５２それぞれが筐体３０の右側面および左側面に設けられている場合を例に説明する。
【００６５】
モータ３３は、筐体３０に内蔵されており、右車輪３５１および左車輪３５２を駆動させる。モバイルドライバ３４は、筐体３０に内蔵されており、ロボットコントローラ３２からの指令に基づいて、右車輪３５１および左車輪３５２が駆動するようにモータ３３を制御する。これにより、ロボット３が移動する。
【００６６】
〔第二の空間５２の中の物体を取り扱う際の処理〕
次に、オペレータ４０が第一の空間５１の中に居ながら第二の空間５２の中の物体を取り扱う際の、各装置の処理について説明する。
【００６７】
〔初期化〕
図６は、初期化の際のデータの流れの例を示す図である。図７は、第二の空間座標系とロボット座標系との位置関係の例を示す図である。
【００６８】
オペレータ４０は、タスクを開始する前に、第一の空間５１の中の、色距離センサ１４１〜１４３によって囲まれる位置に、右足４０３および左足４０４を揃えて立つ。そして、開始コマンド７０をオペレーションコンピュータ１０に入力する。
【００６９】
すると、オペレーションコンピュータ１０は、初期化モジュール１０１によって、初期化を行う。以下、初期化を、図６を参照しながら説明する。
【００７０】
オペレーションコンピュータ１０は、開始コマンド７０が入力されると、計測コマンド７１を色距離センサ１４１〜１４３へ送信する。
【００７１】
なお、オペレータ４０の手がオペレーションコンピュータ１０に届かない場合は、オペレータ４０が無線デバイスによって開始コマンド７０を入力してもよいし、オペレータ４０の代わりに補助者が開始コマンド７０を入力してもよい。または、オペレータ４０が開始コマンド７０を入力した後、所定の時間、例えば１０秒が経過した後、計測コマンド７１が送信されるようにしてもよい。
【００７２】
また、初期化が完了するまで、オペレータ４０は、動かず静止していることが、望ましい。特に、顔４０１、右手４０２、右足４０３、および左足４０４が静止していることが、望ましい。
【００７３】
色距離センサ１４１〜１４３は、それぞれ、計測コマンド７１を受信すると、オペレータ４０の人体の表面の各点の色、および、各点と色距離センサ１４１〜１４３自らとの距離の計測を開始する。計測は、上述の通り、所定の時間Ｔａごとに行われる。そして、色距離センサ１４１〜１４３は、計測によってＲＧＢＤデータ７Ａを得るごとに、モーションキャプチャコンピュータ１６へ送信する。
【００７４】
モーションキャプチャコンピュータ１６は、色距離センサ１４１〜１４３のそれぞれからＲＧＢＤデータ７Ａを受信すると、これらのＲＧＢＤデータ７Ａに基づいてオペレータ４０の全身の三次元形状を算出する。そして、算出した三次元形状を示す三次元データ７Ｂをオペレーションコンピュータ１０へ送信する。
【００７５】
オペレーションコンピュータ１０は、１つ目の三次元データ７Ｂを受信すると、その三次元データ７Ｂに示される三次元形状から、右手４０２、右足４０３、および左足４０４それぞれを検出する。そして、オペレータ座標系における、右手４０２の位置を算出する。以下、この算出された位置を「初期位置Ｐ０」と記載する。両手を使った作業の場合には、右手４０２だけでなく左手４０７の位置も検出する。
【００７６】
「オペレータ座標系」は、図２に示すような三次元座標系である。つまり、右足４０３のつま先と左足４０４のつま先とを結ぶライン４０Ｌの中心を原点とし、右足４０３のつま先から左足４０４のつま先への方向をＸ１軸方向とし、鉛直上向き方向をＺ１軸方向とし、さらに、Ｘ１軸およびＺ１軸に直交しかつオペレータ４０の正面から背後へ向かう方向をＹ１軸方向とする、三次元座標系である。
【００７７】
そして、オペレーションコンピュータ１０は、初期位置Ｐ０をパラメータとして示す初期化コマンド７２をロボットコンピュータ３１へ送信する。
【００７８】
ロボットコンピュータ３１は、初期化コマンド７２を受信すると、把持部３６２の位置の初期化を行うようにロボットコントローラ３２へ指令する。この際に、初期化コマンド７２に示される初期位置Ｐ０をロボットコントローラ３２に通知する。
【００７９】
すると、ロボットコントローラ３２は、初期位置Ｐ０に対応する、ロボット座標系における位置へ把持部３６２を移動させるように、マニピュレータドライバ３７へ指令する。
【００８０】
「ロボット座標系」は、右車輪３５１および左車輪３５２それぞれが接地する位置を結ぶラインの中心を原点とし、右車輪３５１から左車輪３５２へ向かう方向をＸ４軸方向とし、鉛直上向き方向をＺ４軸方向とし、さらに、Ｘ４軸およびＺ４軸に直交しかつロボット３の正面から背後へ向かう方向をＹ４軸方向とする三次元座標系である。以下、この中心を「ロボット原点Ｏ４」と記載する。
【００８１】
つまり、ロボットコントローラ３２は、初期位置Ｐ０が（Ｘ１ａ，Ｙ１ａ，Ｚ１ａ）であれば、ロボット座標系における（Ｘ１ａ，Ｙ１ａ，Ｚ１ａ）の位置へ把持部３６２を移動させるように、マニピュレータドライバ３７へ指令する。
【００８２】
この際に、ロボットコントローラ３２は、ロボット座標系におけるこの位置をマニピュレータドライバ３７へ通知する。
【００８３】
すると、マニピュレータドライバ３７は、通知された位置に把持部３６２が移動するようにアクチュエータ３８を制御する。さらに、マニピュレータドライバ３７は、把持部３６２が完全に開いた状態になるように、つまり、把持部３６２の複数の指同士の距離を、取り得る距離の最長になるように、アクチュエータ３８を制御する。
【００８４】
また、ロボットコンピュータ３１は、把持部３６２の位置の初期化を指令するのと並行して、ロボット３の前方の計測を色距離センサ３９に開始させる。
【００８５】
すると、色距離センサ３９は、所定の時間Ｔａごとに計測を行い、計測によってＲＧＢＤデータ７Ｃを得るごとにロボットコンピュータ３１へ送信する。なお、初期化後は、ロボット３の前方の計測およびＲＧＢＤデータ７Ｃの送信を、ロボット３が移動している間のみ行ってもよい。
【００８６】
そして、ロボットコンピュータ３１は、ＲＧＢＤデータ７Ｃを受信するごとに、これをオペレーションコンピュータ１０へ送信する。
【００８７】
ところで、第二の空間５２の原点Ｏ２、Ｘ２軸方向、Ｙ２軸方向、およびＺ２軸方向を定めなければならない。そこで、オペレーションコンピュータ１０は、図７（Ａ）のように、第二の空間５２の中の、初期化が行われた時点のロボット原点Ｏ４の位置と同じ位置を、原点Ｏ２に定める。さらに、この時点の、右車輪３５１から左車輪３５２へ向かう方向をＸ２軸方向に定める。鉛直上向き方向をＺ２軸方向に定める。そして、Ｘ２軸およびＺ２軸に直交しかつこの時点の、ロボット３の正面から背後へ向かう方向をＹ２軸方向に定める。Ｘ２軸、Ｙ２軸、およびＺ２軸からなる座標系を「第二の空間座標系」と記載する。
【００８８】
なお、初期化の時点においては、第二の空間座標系のＸＹＺの各軸つまりＸ２軸、Ｙ２軸、およびＺ２軸は、それぞれ、ロボット座標系のＸＹＺの各軸つまりＸ４軸、Ｙ４軸、およびＺ４軸に一致する。第二の空間座標系において、ロボット３は、Ｙ２軸のマイナス方向を向いて原点Ｏ２で止まっている。しかし、ロボット３が第二の空間５２つまり第二の空間座標系の中で移動するのに伴って、図７（Ｂ）のように、ロボット座標系の、第二の空間座標系に対する位置が変わる。
【００８９】
以上の処理によって、初期化モジュール１０１による初期化が完了する。初期化の後、オペレータ４０の動作に応じてアバター４１およびロボット３が動作する。つまり、オペレータ４０、アバター４１、およびロボット３がリンクする。オペレータ４０にとっては、自分の動作に伴ってアバター４１が動き、アバター４１の動作に伴ってロボット３が自律的に動くように感じられる。よって、オペレータ４０は、第二の空間５２の中の物体を、ロボット３を意識することなく、かつ、直接触れることなくロボット３を介して取り扱うことができる。仮想空間５３の画像の表示のための処理およびロボット３の移動のための処理が並行して行われる。以下、これらの処理について、説明する。
【００９０】
〔ロボット３の移動〕
図８は、角度θhip、長さＬleg、および距離Ｄstepの例を示す図である。図９は、ロボット３の移動の際のデータの流れの例を示す図である。図１０は、角度θbodyの例を示す図である。図１１は、ロボット３の移動の方向および距離の例を示す図である。
【００９１】
オペレータ４０が、第一の空間５１の中を歩きまたは足踏みすると、アバター４１が移動し、ロボット３も移動する。さらに、自分の正面の向きを変えることによって、ロボット３が前進する方向を変えることができる。まずは、ロボット３が前進する際の処理を、オペレータ４０が足踏みする場合を例に、図８を参照しながら説明する。アバター４１の移動については、後述する。第一の空間５１の中を歩く場合の処理も、後述する。
【００９２】
オペレーションコンピュータ１０は、移動情報演算モジュール１０４によって、ロボット３を移動させるべき距離および向きを次のように算出する。
【００９３】
上述の通り、初期化が完了した後も、所定の時間Ｔａごとにモーションキャプチャコンピュータ１６から三次元データ７Ｂがオペレーションコンピュータ１０に送信されてくる。
【００９４】
ところで、オペレータ４０が１回、足踏みする間に、オペレータ４０の右脚４０５と左脚４０６との角度θhipは、次のように変化する。オペレータ４０が左足４０４を上げ始めると、角度θhipは、０度から徐々に大きくなる。左足４０４が図９（Ａ）に示すように最も高く上がったところで、角度θhipは、最大になる。そして、左足４０４を下げ始めると角度θhipは、徐々に小さくなり、０度に戻る。
【００９５】
オペレーションコンピュータ１０は、三次元データ７Ｂに基づいて、右足４０３または左足４０４の位置の変化の有無を判別し、変化があれば、右脚４０５および左脚４０６それぞれの、所定の時間Ｔａごとの角度θhipを算出する。
【００９６】
さらに、オペレーションコンピュータ１０は、右脚４０５または左脚４０６の長さＬlegを三次元データ７Ｂに基づいて算出する。なお、長さＬlegは、１回だけ算出すればよい。初期化の際に予め算出しておいてもよい。
【００９７】
そして、オペレーションコンピュータ１０は、次の（１）式に基づいて、距離Ｄstepを算出する。
【００９８】
【数１】
2018097223.tif 000003
【００９９】
距離Ｄstepは、オペレータ４０が足踏みするのではなく歩いたならば進むと推測される距離である。
【０１００】
つまり、オペレーションコンピュータ１０は、長さＬlegおよび所定の刻み時間Ｔａにおける角度θhipの変化の割合に基づいて距離Ｄstepを算出する。なお、時刻Ｔｉは、ｉ番目のサンプル時刻であり、時刻（Ｔｉ−１）は、１つ前の時刻（時刻Ｔｉの時間Ｔａ前）である。
【０１０１】
オペレーションコンピュータ１０は、距離Ｄstepを他の方法によって算出してもよい。例えば、オペレーションコンピュータ１０は、最大であるときの角度θhipで図９（Ｂ）のようにオペレータ４０が一歩前進したものとみなし、三角関数を用いて距離Ｄstepを算出してもよい。この方法によると、（１）式を用いる方法よりも分解能は劣るが、計算量を減らすことができる。
【０１０２】
または、予め、オペレータ４０または補助者が、実際にオペレータ４０が様々な歩幅Ｗで歩いたときの両脚の最大の角度θhmxを計測し、歩幅Ｗと角度θhmxとの関係式、Ｗ＝ｆ（θhmx）、を求めておく。そして、オペレーションコンピュータ１０は、オペレータ４０が足踏みすると、角度θhipの最大値を算出し、これを、この式のθhmxに代入することによって、歩幅Ｗを距離Ｄstepとして算出してもよい。この方法も、（１）式を用いる方法よりも分解能は劣るが、計算量を減らすことができる。
【０１０３】
また、オペレーションコンピュータ１０は、三次元データ７Ｂに基づいて、オペレータ４０の正面の向きの変化を次のように算出する。
【０１０４】
オペレーションコンピュータ１０は、初期化後、第一の空間５１における、ライン４０Ｌ、つまり、右足４０３のつま先と左足４０４のつま先とを結ぶラインの向きを監視し続ける。そして、図１０に示すようにライン４０Ｌの向きに変化が生じると、変化前の向きに対する変化後の向きの角度θbodyを算出する。これにより、オペレータ４０が自分の正面の向きをどれくらい変えたのかが算出される。
【０１０５】
移動情報演算モジュール１０４によって、以上のように、ロボット３を移動させるべき距離および向きが算出される。
【０１０６】
なお、オペレータ４０が右脚４０５または左脚４０６を上げることによって自分の正面の向きを変えると、足踏みであるとオペレーションコンピュータ１０が誤って検知することがある。そこで、オペレータ４０は、右足４０３および左足４０４を床に付けたまま向きを変えるのが望ましい。または、角度θhipが所定の角度未満である場合は、オペレーションコンピュータ１０は、距離Ｄstepを算出しないようにしてもよい。
【０１０７】
オペレーションコンピュータ１０は、移動情報演算モジュール１０４によって距離Ｄstepまたは角度θhipが算出されると、移動コマンドモジュール１０５によって次のようにロボットコンピュータ３１へコマンドを与える。
【０１０８】
オペレーションコンピュータ１０は、移動情報演算モジュール１０４によって距離Ｄstepが算出された場合は、この距離Ｄstepをパラメータとして示す前進コマンド７３をロボットコンピュータ３１へ送信する。または、角度θbodyが算出された場合は、この角度θbodyをパラメータとして示す方向転換コマンド７４をロボットコンピュータ３１へ送信する。
【０１０９】
ロボットコンピュータ３１は、前進コマンド７３または方向転換コマンド７４を受信すると、ロボットコントローラ３２へ転送する。
【０１１０】
ロボットコントローラ３２は、初期化後に方向転換コマンド７４を受信することなく前進コマンド７３を受信した場合は、前進コマンド７３に示される距離Ｄstepだけ真っ直ぐ前進するようにモバイルドライバ３４へ指令する。または、前回に１歩分前進した後、方向転換コマンド７４を受信することなく前進コマンド７３を受信した場合も同様に、前進コマンド７３に示される距離Ｄstepだけ直進するようにモバイルドライバ３４へ指令する。
【０１１１】
すると、モバイルドライバ３４は、図１１（Ａ）に示すように距離Ｄstepだけ進行方向を変えることなくロボット３が直進するように、モータ３３を制御する。
【０１１２】
または、初期化後、方向転換コマンド７４を受信してから前進コマンド７３を受信した場合は、方向転換コマンド７４に示される角度θbodyの方向へ、前進コマンド７３に示される距離Ｄstepだけ前進するように、モバイルドライバ３４へ指令する。
【０１１３】
すると、モバイルドライバ３４は、図１１（Ｂ）に示すように角度θbodyの方向へ距離Ｄstepだけロボット３が前進するように、右車輪３５１および左車輪３５２の向きおよびモータ３３を制御する。
【０１１４】
また、モバイルドライバ３４は、ロボット３が移動している間、所定の時間Ｔａごとに、ロボット３の、第二の空間５２における現在の位置および姿勢を算出し、算出した位置および姿勢を示すステータスデータ７Ｄをロボットコンピュータ３１へ送信する。
【０１１５】
ロボットコンピュータ３１は、ステータスデータ７Ｄを受信するごとに、それをオペレーションコンピュータ１０へ転送する。
【０１１６】
〔仮想空間５３の画像の表示〕
図１２は、仮想空間５３の様子の画像を表示する際のデータの流れの例を示す図である。図１３は、ヘッドマウントディスプレイ１２に表示される画像の例を示す図である。
【０１１７】
初期化が完了した後、仮想空間５３の中の画像を表示するための処理が次のように行われる。以下、この処理を、図１２を参照しながら説明する。
【０１１８】
開始コマンド７０が入力されると、上述の通り、色距離センサ１４１〜１４３によってＲＧＢＤの計測が開始され、モーションキャプチャコンピュータ１６によって三次元形状の算出が開始される。
【０１１９】
初期化が完了した後も、色距離センサ１４１〜１４３は、ＲＧＢＤの計測を継続し、モーションキャプチャコンピュータ１６は三次元形状の算出を継続する。これにより、オペレーションコンピュータ１０には、所定の時間Ｔａごとにモーションキャプチャコンピュータ１６から三次元データ７Ｂが送信されてくる。
【０１２０】
オペレーションコンピュータ１０は、三次元データ７Ｂが送信されてくるごとに、アバター生成モジュール１０２を用いて三次元データ７Ｂに対して加工を施すことによって、アバター４１のアバターデータ７Ｅを生成する。例えば、加工として、三次元形状の円滑化の処理を施す。
【０１２１】
または、モーションキャプチャコンピュータ１６は、最初にオペレータ４０の三次元形状を算出して三次元データ７Ｂを生成し、三次元データ７Ｂをオペレーションコンピュータ１０へ送信した後は、三次元データ７Ｂを生成し送信するのを継続する代わりに、オペレータ４０の表面の点のうちの変化があった点の変化後の座標をオペレーションコンピュータ１０へ通知するようにしてもよい。
【０１２２】
この場合は、オペレーションコンピュータ１０は、変化後の座標を最初に通知されると、その座標に応じて三次元データ７Ｂを補正することによってアバターデータ７Ｅを生成する。その後は、変化後の座標が通知されるごとに、その座標に応じてアバターデータ７Ｅを補正する。
【０１２３】
上述の通り、オペレーションコンピュータ１０には、所定の時間ＴａごとにＲＧＢＤデータ７Ｃがロボットコンピュータ３１から送信されてくる。初期化後は、さらに、ステータスデータ７Ｄが送信されてくることがある。
【０１２４】
オペレーションコンピュータ１０は、ＲＧＢＤデータ７Ｃを受信し、またはアバターデータ７Ｅが生成されもしくは補正されるごとに、仮想空間演算モジュール１０３によって次の処理を行う。
【０１２５】
オペレーションコンピュータ１０は、ＲＧＢＤデータ７Ｃを受信すると、ＲＧＢＤデータ７Ｃに基づいて第二の空間５２を再現することによって、仮想空間５３にある仮想の物体の位置および姿勢を算出する。これにより、ペン６１およびパネル６２など第二の空間５２の中の各物体が、各物体の相対的な関係を保ったまま仮想空間５３に仮想される。
【０１２６】
なお、ロボット原点Ｏ４と色距離センサ３９の位置とが一致していないので、オペレーションコンピュータ１０は、両者の差に応じて物体の位置および姿勢を補正してもよい。
【０１２７】
また、ロボット３が移動し始めるまで、つまりステータスデータ７Ｄを受信するまでは、オペレーションコンピュータ１０は、ロボット３がＹ２軸のマイナス方向を向いて原点Ｏ２にあるものとして、第二の空間５２を再現する。ステータスデータ７Ｄを受信したら、そのステータスデータ７Ｄに示される位置および向きにロボット３があるものとして、第二の空間５２を再現する。位置および姿勢は、マイクロソフト社のｋｉｎｅｃｔの技術によって算出することができる。
【０１２８】
または、オペレーションコンピュータ１０は、アバター生成モジュール１０２によってアバターデータ７Ｅが生成されまたは補正されると、第二の空間５２における、ロボット３の現在の位置および向きに合わせて、そのアバターデータ７Ｅに基づいて仮想空間５３にアバター４１を配置しまたは移動させる。
【０１２９】
アバター４１の初期の位置は、仮想空間座標系の原点である。仮想空間座標系は、仮想空間５３の座標系であって、初期におけるアバター４１の右足のつま先から左足のつま先への方向をＸ３軸方向とし、鉛直上向き方向をＺ３軸方向とし、さらに、Ｘ３軸およびＺ３軸に直交しかつアバター４１の正面から背後へ向かう方向をＹ３軸方向とする、三次元座標系である。
【０１３０】
既にアバター４１を配置済である場合は、オペレーションコンピュータ１０は、そのアバターデータ７Ｅに示される三次元形状になるようにアバター４１を更新する。
【０１３１】
仮想空間５３へのアバター４１の配置およびアバター４１の更新は、ＳＬＡＭ（Simultaneous Localization And Mapping)の技術によって行うことができる。
【０１３２】
さらに、オペレーションコンピュータ１０は、仮想空間演算モジュール１０３によって、所定の時間Ｔａごとに仮想空間５３におけるアバター４１の両目の位置を検出し、その位置からの視線の方向を算出する。以下、仮想空間５３におけるアバター４１の両目の位置を「両目位置」と記載する。両目位置として、アバター４１の両目の代わりにヘッドマウントディスプレイ１２の位置を検出してもよい。そして、両目位置から視線の方向を見た場合の、仮想空間５３の中の物体の様子の画像を表わす画像データ７Ｆを生成し、ヘッドマウントディスプレイ１２へ送信する。この画像は、オペレータ４０の視界に現われる様子を表わしていると、言える。
【０１３３】
ヘッドマウントディスプレイ１２は、画像データ７Ｆを受信するごとに、画像データ７Ｆが表わす画像を表示する。
【０１３４】
以上の処理によると、オペレータ４０が顔４０１を動かすと、顔４０１の動きに伴ってアバター４１の両目位置および視線の方向も変わり、仮想空間５３の中の物体の様子の画像も変わる。よって、オペレータ４０は、所定の時間Ｔａごとに表示される画像を見ることによって、自分が第二の空間５２または仮想空間５３にいるように感じることができる。画像が所定の時間Ｔａごとに変わるので、ヘッドマウントディスプレイ１２は動画像を表示していると、言える。
【０１３５】
また、表示される画像は、両目位置から見えるものである。よって、これらの画像には、アバター４１の全体は表われておらず、図１３のように、例えば腕および手しか表われない。
【０１３６】
オクルージョンの問題を軽減するために、アバター４１の画像を半透明にしてもよい。または、オペレータ４０がタスクを実行していないとき、つまり、右手４０２を動かしていないときは、アバター４１の画像を表示しないようにしてもよい。または、コマンドによってアバター４１の画像の不透過での表示、半透明での表示、および非表示を切り換えることができるようにしてもよい。ヘッドマウントディスプレイ１２として透過型のＨＭＤが用いられる場合は、デフォルトではアバター４１の画像を表示しないようにしておき、コマンドによってアバター４１の画像の不透過での表示、半透明での表示、および非表示を切り換えられるようにすればよい。
【０１３７】
〔手の動作〕
図１４は、把持部３６２を動作させる際のデータの流れの例を示す図である。
【０１３８】
オペレータ４０は、右手４０２を動かすことによって、把持部３６２を動かすことができる。以下、把持部３６２を動かす処理を、図１４を参照しながら説明する。
【０１３９】
オペレーションコンピュータ１０は、初期化後、マニピュレートモジュール１０６によって次の処理を行う。
【０１４０】
オペレーションコンピュータ１０は、三次元データ７Ｂを受信するごとに、オペレータ座標系における右手４０２の位置を算出し、位置に変化があったか否かを監視する。
【０１４１】
そして、右手４０２の位置に変化があったことを検知すると、オペレーションコンピュータ１０は、右手４０２の最新の位置の座標をパラメータとして示すマニピュレートコマンド７５をロボットコンピュータ３１に送信する。
【０１４２】
ロボットコンピュータ３１は、マニピュレートコマンド７５を受信すると、ロボットコントローラ３２に転送する。
【０１４３】
ロボットコントローラ３２は、ロボット座標系における、マニピュレートコマンド７５に示される座標の位置へ把持部３６２を動かすようにマニピュレータドライバ３７に指令する。
【０１４４】
すると、マニピュレータドライバ３７は、右手移動量だけ把持部３６２が移動するようにアクチュエータ３８を制御する。
【０１４５】
この処理を右手４０２の位置が変わるごとに行うことによって、把持部３６２が、右手４０２が動いた通りに動く。アーム部３６１は、オペレータ４０の右腕が動いた通りに動かなくてもよい。
【０１４６】
また、前に説明した通り、アバター４１の形状は、オペレータ４０の三次元形状の変化に伴って変化する。したがって、アバター４１の右手も、右手４０２が動いた通りに動く。
【０１４７】
よって、オペレータ４０が右手４０２を動かすと、アバター４１も同じように右手を動かし、さらに、ロボット３も同じように把持部３６２を動かす。つまり、右手４０２、アバター４１の右手、および把持部３６２それぞれの動きのベクトルが、一致する。
【０１４８】
オペレータ４０が把持部３６２を動作させたくないにも関わらず、オペレータ４０が足踏みするとき、および、自分の正面の向きを変えるときにも、右手４０２が動くことがある。すると、オペレータ４０の意思に反して把持部３６２が動作してしまう。
【０１４９】
そこで、オペレーションコンピュータ１０は、右足４０３および左足４０４が動いていない場合にのみ、右手４０２の位置の変化を監視するようにしてもよい。
【０１５０】
また、オペレーションコンピュータ１０は、右手４０２の位置の変化とともに、右手４０２の指の開閉を監視する。そして、指が閉じたことを検知した場合は、クローズコマンド７６をロボットコンピュータ３１に送信する。一方、指が開いたことを検知した場合は、オープンコマンド７７をロボットコンピュータ３１に送信する。
【０１５１】
ロボットコンピュータ３１は、クローズコマンド７６を受信すると、ロボットコントローラ３２に転送する。
【０１５２】
ロボットコントローラ３２は、クローズコマンド７６を受信すると、把持部３６２を閉じるようにマニピュレータドライバ３７に指令する。
【０１５３】
すると、マニピュレータドライバ３７は、把持部３６２の複数の指同士の距離が徐々に短くなるようにアクチュエータ３８を制御する。なお、いずれかの指に感圧センサを取り付けておき、感圧センサによって一定の圧力が検知されたら、これらの指の動作を停止させてもよい。
【０１５４】
一方、オープンコマンド７７を受信すると、ロボットコンピュータ３１は、把持部３６２を開くようにマニピュレータドライバ３７に指令する。
【０１５５】
すると、マニピュレータドライバ３７は、把持部３６２が完全に開いた状態になるようにアクチュエータ３８を制御する。
【０１５６】
マニピュレートモジュール１０６によると、以上のように、右手４０２の動作に合わせて把持部３６２の位置を変えたり把持部３６２を閉じたり開いたりすることができる。
【０１５７】
〔物体の取扱いの具体例〕
オペレータ４０は、第一の空間５１の中で足踏みしたり、向きを変えたり、ヘッドマウントディスプレイ１２に表示される画像を見たりしながら、仮想空間５３の中でペン６１およびパネル６２を探す。ペン６１およびパネル６２を見つけたら、足踏みしたり、向きを変えたりしながら、ペン６１およびパネル６２の近くに移動しようとする。オペレータ４０の動作に伴って、アバター４１は仮想空間５３の中を移動し、ロボット３は第二の空間５２の中を移動する。
【０１５８】
さらに、オペレータ４０は、右手４０２がペン６１に届くように思えたら、右手４０２を伸ばす。右手４０２がペン６１に届いたことを、ヘッドマウントディスプレイ１２に表示される画像によって確認したら、右手４０２を閉じる。すると、アバター４１は、ペン６１を掴もうとする。さらに、第二の空間５２の中で、ロボット３は、ペン６１を把持部３６２によって掴む。
【０１５９】
そして、オペレータ４０は、右手４０２を動かすことによって、ペン６１をパネル６２の表面のところまで移動させ、パネル６２の表面にペン６１の先が触れたように思えたら、円を描くように右手４０２を動かす。ハプテックスデバイスを用いて触覚や力覚をオペレータに提示することも可能である。すると、ロボット３は、右手４０２の動作に応じて把持部３６２を動作させる。これにより、パネル６２の表面にペン６１で円が描かれる。
【０１６０】
ヘッドマウントディスプレイ１２に表示される画像は、アバター４１の両目位置から見たものである。よって、オペレータ４０は、仮想空間５３に没入し、ロボット３の存在を意識することなく、自分自身の脚で移動し自分自身の手で物体を取り扱っている感覚を得ることができる。
【０１６１】
本例では、ペンを持って円を描くタスクを例に説明したが、組立て作業または加工作業の様なさらに複雑なタスク、あるいは特定の部位を単に動かすタスクのような簡単なタスクも、本発明における「タスク」に含まれる。また、オペレータ４０が右手４０２でシャッタを切る仕草をするのに応じて、ロボット３がロボット３に備わるデジタルカメラで写真を撮影するなど、ロボットの動作が見た目に現われないタスクも含まれる。
【０１６２】
〔障害物の対策〕
図１５は、障害物の対応の際にアバター４０の視点を変えるために仮想空間５３へ仮想ロボット３Ａを配置しアバター４１をシフトさせる例を示す図である。図１６は、ヘッドマウントディスプレイ１２に表示される画像の例を示す図である。図１７は、障害物の対策の際のデータの流れの例を示す図である。図１８は、ロボット３およびヘルプロボット３Ｘが協同する例を示す図である。
【０１６３】
ところで、移動中にロボット３が障害物に出会うことがある。オペレータ４０およびアバター４１ならば障害物を跨いで進むことができるが、ロボット３は進めないことがある。すると、アバター４１の移動先の位置へロボット３が追随することができないことがある。
【０１６４】
このような場合に、ロボット３は、自律的に迂回してアバター４１の移動先の位置へ移動することができる。
【０１６５】
しかし、ロボット３は、自律的に迂回する機能を用いてもアバター４１の移動先の位置へ移動することできないことがある。そこで、ソリューションモジュール１０７が用いられる。ソリューションモジュール１０７によると、ロボット３に障害物を乗り越えさせたり障害物から後退させたりすることができる。
【０１６６】
ロボット３は、アバター４１の移動先の位置へ移動することできない場合に、オペレーションコンピュータ１０へその旨を通知する。すると、ヘッドマウントディスプレイ１２にその旨のメッセージや画像情報が表示される。
【０１６７】
オペレータ４０は、足踏みしているにも関わらずロボット３が前進しないことを、そのメッセージや画像情報によって知ったら、ソリューションコマンド８１を入力する。
【０１６８】
または、前進コマンド７３を受信し続けているにも関わらず前進しないことをモバイルドライバ３４に検知させてもよい。そして、モバイルドライバ３４は、障害通知信号８２を、ロボットコンピュータ３１を介してオペレーションコンピュータ１０へ送信すればよい。
【０１６９】
オペレーションコンピュータ１０は、ソリューションコマンド８１が入力されまたは障害通知信号８２を受信したら、オペレータ４０およびアバター４１とロボット３とのリンクを切断するために、移動情報演算モジュール１０４、移動コマンドモジュール１０５、およびマニピュレートモジュール１０６を停止する。
【０１７０】
オペレーションコンピュータ１０は、仮想空間演算モジュール１０３によって、仮想空間５３におけるオブジェクトの配置の変更の処理を次のように実行する。
【０１７１】
オペレーションコンピュータ１０は、図１５に示すように、仮想空間５３の中の、第二の空間５２におけるロボット３の現在の位置に対応する位置に、ロボット３の三次元形状を仮想した仮想ロボット３Ａを配置する。仮想ロボット３Ａの向きも、ロボット３の現在の向きに合わせる。
【０１７２】
さらに、オペレーションコンピュータ１０は、アバター４１を配置する位置を仮想ロボット３Ａの真後ろへ所定の距離だけシフトさせる。例えば、仮想ロボット３Ａの背面から２０センチメートル後方へシフトさせる。なお、仮想ロボット３Ａの三次元データは、ロボット３を三次元計測することによって予め用意しておけばよい。ロボットのＣＡＤ（Computer-aided Design）データを用いてもよい。
【０１７３】
そして、オペレーションコンピュータ１０は、アバター生成モジュール１０２によってアバターデータ７Ｅが生成されまたは補正されると、ロボット３の現在の位置ではなく、シフト後の位置にアバター４１を配置する。
【０１７４】
その後、オペレーションコンピュータ１０は、アバター４１のシフト後の両目位置から視線方向を見た様子を表わす画像の画像データ７Ｆを生成し、ヘッドマウントディスプレイ１２へ送信する。
【０１７５】
そして、ヘッドマウントディスプレイ１２は、画像データ７Ｆを受信するごとに、画像データ７Ｆが表わす画像を表示する。ただし、アバター４１の位置がシフトしたので、図１６のような、仮想ロボット３Ａの背後から見た環境の様子の画像が表示される。
【０１７６】
オペレーションコンピュータ１０は、ソリューションモジュール１０７によって、ロボット３に障害物を乗り越えさせたり障害物から後退させたりする処理を行う。以下、この処理を、図１７を参照しながら説明する。
【０１７７】
オペレータ４０は、画像を見ることによって、ロボット３の周囲の様子を確認する。ロボット３が障害物を乗り越えられそうであれば、ロボット３の背面を押すために、右手４０２および左手４０７を自分の前方へ伸ばし始める。
【０１７８】
右手４０２および左手４０７を伸ばしている途中で、仮想空間演算モジュール１０３の処理によって、アバター４１の右手および左手が仮想ロボット３Ａの背面に触れる様子の画像がヘッドマウントディスプレイ１２に表示される。オペレータ４０は、右手４０２および左手４０７をさらに伸ばし続ける。
【０１７９】
オペレーションコンピュータ１０は、アバター４１の右手および左手が仮想ロボット３Ａの背面に達したことを検知すると、出力アップコマンド８３をロボットコンピュータ３１へ送信する。
【０１８０】
ロボットコンピュータ３１は、出力アップコマンド８３を受信すると、ロボットコントローラ３２へ転送する。
【０１８１】
ロボットコントローラ３２は、出力アップコマンド８３を受信すると、回転数を通常よりも上げるようにモバイルドライバ３４へ指令する。
【０１８２】
すると、モバイルドライバ３４は、右車輪３５１および左車輪３５２が通常より高速に回転するように、または、通常よりも高い加速度で回転するように、モータ３３を制御する。これにより、ロボット３が障害物を乗り越えられることもあれば、乗り越えられないこともある。あるいは、ロボット３が、フリッパーを備えるクローラ型ロボットの場合は、フリッパーの角度を障害物に合わせて調節し、障害物を踏破する。
【０１８３】
なお、右手４０２および左手４０７が伸びる速さに比例して右車輪３５１および左車輪３５２の回転数または加速度が高くなるように構成してもよい。この場合は、その速さをパラメータとして出力アップコマンド８３に加えておけばよい。そして、モバイルドライバ３４は、そのパラメータに応じた回転数または加速度で右車輪３５１および左車輪３５２が回転するようにモータ３３を制御すればよい。次に説明する、ロボット３を後退させる場合も同様に、右手４０２を曲げる速さに応じて右車輪３５１および左車輪３５２の回転数または加速度が高くなるように構成してもよい。
【０１８４】
または、ロボット３が障害物を乗り越えられそうでない場合、または、乗り越えることができなかった場合は、オペレータ４０は、筐体３０またはマニピュレータ３６を掴んでロボット３を後ろへ下げるために、右手４０２を自分の前方へ伸ばし始める。
【０１８５】
右手４０２を伸ばしている途中で、仮想空間演算モジュール１０３の処理によって、アバター４１の右手が仮想ロボット３Ａの筐体またはマニピュレータに触れる様子がヘッドマウントディスプレイ１２に表示される。ここで、オペレータ４０は、筐体またはマニピュレータを掴むように右手４０２を閉じ、筐体またはマニピュレータを自分のほうへ引っ張るように右手４０２を曲げ始める。
【０１８６】
すると、オペレーションコンピュータ１０は、バックコマンド８４をロボットコンピュータ３１へ送信する。
【０１８７】
ロボットコンピュータ３１は、バックコマンド８４を受信すると、ロボットコントローラ３２へ転送する。
【０１８８】
ロボットコントローラ３２は、バックコマンド８４を受信すると、後退するようにモバイルドライバ３４へ指令する。
【０１８９】
すると、モバイルドライバ３４は、右車輪３５１および左車輪３５２が逆回転するように、モータ３３を制御する。これにより、ロボット３が後退する。
【０１９０】
または、オペレータ４０は、足踏みしまたは方向を変えることによって、仮想ロボット３Ａの後方から前方へアバター４１を回り込ませ、仮想ロボット３Ａの前面を押すことによって、仮想ロボット３Ａを後退させてもよい。
【０１９１】
オペレータ４０は、ロボット３に障害物を乗り越えさせることができ、または、ロボット３に後退させることができたら、再開コマンド７８をオペレーションコンピュータ１０に入力する。
【０１９２】
すると、オペレーションコンピュータ１０は、仮想ロボット３Ａを仮想空間５３から削除し、ソリューションモジュール１０７の処理を終了する。そして、初期化モジュール１０１によって、再度、初期化の処理を行う。また、初期化後、アバター生成モジュール１０２、仮想空間演算モジュール１０３、移動情報演算モジュール１０４、移動コマンドモジュール１０５、およびマニピュレートモジュール１０６を再開する。これにより、オペレータ４０およびアバター４１とロボット３とが再びリンクするので、オペレータ４０は、仮想空間５３に没入して目的のタスクを再開することができる。ソリューションモジュール１０７を開始する前に仮想空間演算モジュール１０３によって算出された、仮想空間５３にある物体の位置および姿勢のデータは、削除せずに再使用されればよい。
【０１９３】
本例では、オペレーションコンピュータ１０は、右手４０２または左手４０７の動作に応じて出力アップコマンド８３またはバックコマンド８４をロボット３に送信することによって、ロボット３を動作させた。
【０１９４】
しかし、アバター４１の位置に対応する、第二の空間５２の位置に、ロボット３と同等の機能を有するヘルプロボットを出動させ、障害物を乗り越えたり障害物から後退したりするタスクをヘルプロボットに行わせてもよい。この場合は、オペレータ４０およびアバター４１を、ロボット３の代わりにヘルプロボットとリンクさせればよい。リンクの処理は、上述の通りである。そして、ヘルプロボットは、役割を終えたら、ロボット３のところから離れる。オペレーションコンピュータ１０は、初期化モジュール１０１によって、再度、初期化の処理を行う。
【０１９５】
このように、ソリューションモジュール１０７によると、オペレータ４０は、仮想空間５３に没入し、ロボット３または仮想ロボット３Ａに直接触れるような感覚で、障害物の対策を施すことができる。
【０１９６】
オペレーションコンピュータ１０は、障害物の対策の処理を、障害物への遭遇以外の特定のイベントが生じた場合にも同様に行ってもよい。例えば、把持部３６２が右手４０２の動きに連動しなくなった場合、または、筐体３０の内部を隠すためのパネルが開いてしまった場合に、同様の処理を行ってもよい。
【０１９７】
または、オペレーションコンピュータ１０は、アバター４１を仮想ロボット３Ａの後方ではなく、前方、左方、または右方にシフトさせてもよい。
【０１９８】
または、マニピュレータ３６の関節を曲げたり伸ばしたりする動作をオペレータ４０が行った場合は、オペレーションコンピュータ１０およびロボットコンピュータロボットコントローラ３２は、その動作にマニピュレータ３６を連動させるようにマニピュレータドライバ３７に指令してもよい。
【０１９９】
なお、ロボット３は、把持部３６２によって物体を持ち上げることができない場合にも、ヘルプロボットを自律的に登場させ、ヘルプロボットと協同して物体を持ち上げてもよい。例えば、オペレータ４０が椅子６３を持ち上げる動作をしたが、ロボット３だけでは椅子６３を持ち上げることができない場合に、ヘルプロボット３Ｘを出動させ、図１８に示すようにロボット３とヘルプロボット３Ｘとが協同して椅子６３を持ち上げればよい。ヘルプロボット３Ｘを呼び出す手段は、ロボットコンピュータ３１に設けてもよいし、オペレーションコンピュータ１０に設けてもよい。
【０２００】
ロボット３は、単独でまたはヘルプロボット３Ｘと協同して、組立てまたは加工などの作業をタスクとして実行してもよい。
【０２０１】
ヘルプロボット３Ｘは、ロボット３と異なる構造体であっても構わない。例えばアーム付のドローンであってもよい。
【０２０２】
〔全体の流れ〕
図１９〜図２１は、遠隔地のタスクを支援するための処理の流れの例を示すフローチャートである。
【０２０３】
次に、オペレーションコンピュータ１０の全体的な処理の流れを、フローチャートを参照しながら説明する。
【０２０４】
オペレーションコンピュータ１０は、タスク支援プログラム１０ｊに基づいて、図１９〜図２１に示す手順で処理を実行する。
【０２０５】
オペレーションコンピュータ１０は、開始コマンド７０が入力されると、初期化を次のように行う（＃８０１〜＃８０５）。
【０２０６】
オペレーションコンピュータ１０は、計測コマンド７１を色距離センサ１４１〜１４３へ送信することによって、オペレータ４０のＲＧＢＤの計測を開始するように色距離センサ１４１〜１４３に要求する（＃８０１）。
【０２０７】
すると、色距離センサ１４１〜１４３がＲＧＢＤを計測し始め、計測結果に基づいてモーションキャプチャコンピュータ１６がオペレータ４０の三次元形状を算出しその三次元形状を示す三次元データ７Ｂをオペレーションコンピュータ１０へ送信し始める。これにより、オペレーションコンピュータ１０は、三次元データ７Ｂを受信し始める（＃８０２）。
【０２０８】
オペレーションコンピュータ１０は、三次元データ７Ｂに基づいてオペレータ４０の右手４０２、右足４０３、および左足４０４などの位置を検出し始める（＃８０３）。
【０２０９】
そして、オペレーションコンピュータ１０は、初期化コマンド７２をロボット３へ送信する（＃８０４）。すると、ロボット３が第二の空間５２のＲＧＢＤの計測を開始し、オペレーションコンピュータ１０は、ＲＧＢＤデータ７Ｃをロボット３受信し始める（＃８０５）。なお、初期化後は、さらにステータスデータ７Ｄも受信し始める。
【０２１０】
オペレーションコンピュータ１０は、初期化が完了すると、オペレータ４０の動作に応じて、移動に関するコマンドを次のようにロボット３に与える（＃８２１〜＃８２８）。
【０２１１】
オペレーションコンピュータ１０は、右足４０３または左足４０４の位置の変化を監視し（＃８２１）、変化を検知するごとに（＃８２２でＹｅｓ）、距離Ｄstepを算出し（＃８２３）、その距離Ｄstepをパラメータとして示す前進コマンド７３をロボット３へ送信する（＃８２４）。
【０２１２】
また、オペレーションコンピュータ１０は、オペレータ４０の向きの変化を監視し（＃８２５）、変化を検知したら（＃８２６でＹｅｓ）、角度θhipを算出し（＃８２７）、その角度θhipをパラメータとして示す方向転換コマンド７４をロボット３へ送信する（図２０の＃８２８）。
【０２１３】
また、オペレーションコンピュータ１０は、仮想空間５３に関する処理を次のように行う（＃８４１〜＃８４５）。
【０２１４】
オペレーションコンピュータ１０は、ＲＧＢＤデータ７Ｃおよびステータスデータ７Ｄに基づいて第二の空間５２を再現することによって仮想空間５３を仮想する（＃８４１）。ＲＧＢＤデータ７Ｃおよびステータスデータ７Ｄが得られるごとに、再現される範囲が広がる。
【０２１５】
さらに、オペレーションコンピュータ１０、三次元データ７Ｂに基づいてアバター４１を生成しまたは補正する（＃８４２）。そして、仮想空間５３にアバター４１を配置する（＃８４３）。なお、既にアバター４１を配置済である場合は、最新の三次元データ７Ｂに示される三次元形状に合わせてアバター４１を更新する。
【０２１６】
オペレーションコンピュータ１０は、アバター４１の両目位置から見た、仮想空間５３の様子を表わす画像を生成し（＃８４４）、その画像の画像データ７Ｆをヘッドマウントディスプレイ１２へ送信する（＃８４５）。これにより、ヘッドマウントディスプレイ１２に画像が表示される。
【０２１７】
また、オペレーションコンピュータ１０は、把持部３６２を動作させるための処理を次のように行う（＃８６１〜＃８６３）。
【０２１８】
オペレーションコンピュータ１０は、右手４０２の位置の変化および指の開閉を監視する（＃８６１）。変化を検知したら（＃８６２でＹｅｓ）、変化に応じたコマンドをロボット３へ送信する（＃８６３）。具体的には、右手４０２の位置の変化を検知した場合は、変化量をパラメータとして示すマニピュレートコマンド７５を送信する。指が閉じるのを検知した場合は、クローズコマンド７６を送信する。指が開くのを検知した場合は、オープンコマンド７７を送信する。
【０２１９】
ステップ＃８２１〜＃８２４の処理、ステップ＃８２５〜＃８２８の処理、ステップ＃８４１〜＃８４５の処理、およびステップ＃８６１〜＃８６３の処理は、並行して適宜、実行される。
【０２２０】
また、オペレーションコンピュータ１０は、ソリューションコマンド８１が入力されまたはロボット３から障害通知信号８２を受信すると（＃８７１でＹｅｓ）、障害物の対策のための処理を次のように行う（＃８７２〜＃８８１）。
【０２２１】
オペレーションコンピュータ１０は、オペレータ４０およびアバター４１とロボット３とのリンクを切断し（＃８７２）、仮想空間５３の中の、第二の空間５２におけるロボット３の現在の位置に対応する位置に仮想ロボット３Ａを配置する（＃８７３）。仮想ロボット３Ａの向きも、ロボット３の現在の向きに合わせる。アバター４１を仮想ロボット３Ａの後方へシフトさせる（図２１の＃８７４）。
【０２２２】
オペレーションコンピュータ１０は、アバター４１のシフト後の両目位置から視線方向を見た様子を表わす画像の画像データ７Ｆを生成し（＃８７５）、ヘッドマウントディスプレイ１２へ送信する（＃８７６）。
【０２２３】
さらに、オペレーションコンピュータ１０は、アバター４１の右手などの部位の位置などを監視する（＃８７７）。そして、アバター４１の部位が仮想ロボット３Ａの特定の部位に触れたことを検知すると（＃８７８）、アバター４１の部位のその後の動作に応じたコマンドをロボット３へ送信する（＃８７９）。
【０２２４】
具体的には、アバター４１の右手および左手が仮想ロボット３Ａの背面に触れ、その後も仮想ロボット３Ａを押す方向へ右手および左手が動こうとすると、オペレーションコンピュータ１０は、出力アップコマンド８３をロボット３に送信する。または、アバター４１の右手が仮想ロボット３Ａのマニピュレータに触れ、右手をアバター４１の胴体の方向へ戻そうとすると、オペレーションコンピュータ１０は、バックコマンド８４をロボット３へ送信する。
【０２２５】
再開コマンド７８が入力されると（＃８８０でＹｅｓ）、オペレーションコンピュータ１０は、仮想ロボット３Ａを仮想空間５３から削除し（＃８８１）、ステップ＃８０１に戻って初期化を再度、行う。
【０２２６】
本実施形態によると、オペレータ４０は、アバター４１に乗り移るような感覚で仮想空間５３に没入し、しかも、人間の身体と異なる構造であるロボット３の存在を意識することなく、ロボット３を介して第二の空間５２でのタスクを行うことができる。
【０２２７】
本実施形態では、オペレータ４０の足踏みに応じてアバター４１が仮想空間５３の中を移動し、ロボット３が第二の空間５２の中を移動したが、オペレータ４０が第一の空間５１の中を歩いたり後ろに下がったりして移動するのに応じてアバター４１およびロボット３が移動してもよい。この場合に、遠隔タスク実行システム５の各部は、次のように処理を行えばよい。
【０２２８】
オペレーションコンピュータ１０の移動情報演算モジュール１０４は、オペレータ４０の初期の位置を第一の空間座標系の原点に定める。初期化の時点では、第一の空間座標系のＸ１’軸、Ｙ１’軸、およびＺ１’軸（図２参照）は、それぞれオペレータ座標系のＸ１軸、Ｙ１軸、およびＺ１軸に一致する。しかし、オペレータ４０が動くと、第一の空間座標系に対してオペレータ座標系も動く。
【０２２９】
移動情報演算モジュール１０４は、色距離センサ１４１〜１４３によって得られた値または位置センサによって得られた値に基づいて、オペレータ４０の第一の空間座標系における位置の座標を算出する。
【０２３０】
アバター生成モジュール１０２は、仮想空間座標系の、移動情報演算モジュール１０４によって算出された座標の位置へアバター４１を移動させる。
【０２３１】
移動コマンドモジュール１０５は、第二の仮想空間座標系の、移動情報演算モジュール１０４によって算出された座標の位置へ移動するようにロボット３へ指令する。すると、ロボット３は、移動コマンドモジュール１０５からの指令に従って移動する。
【０２３２】
または、足踏みモードおよび歩行モードをオペレーションコンピュータ１０に用意しておいてもよい。そして、オペレーションコンピュータ１０は、足踏みモードが指定された場合は、足踏みに応じてアバター４１およびロボット３を移動させ、歩行モードが指定された場合は、第一の空間座標系におけるオペレータ４０の位置に応じてアバター４１およびロボット３を移動させてもよい。
【０２３３】
〔制御対象の変形例〕
図２２は、パワーアシストスーツ３００が制御の対象である場合の、第一の空間５１、第二の空間５２、および仮想空間５３の例を示す図である。図２３は、パワーアシストスーツ３００が制御の対象である場合の、第一の空間５１、第二の空間５２、および仮想空間５３の第二の例を示す図である。
【０２３４】
本実施形態では、ロボット３が障害物に遭遇した場合に、オペレータ４０およびアバター４１とロボット３とのリンクを切断し、ソリューションモジュール１０７によってオペレータ４０の動作に応じて障害物をロボット３に乗り越えさせまたは障害物から後退させた。この際に、オペレータ４０は、仮想空間５３に没入し、ロボット３または仮想ロボット３Ａに直接触れるような感覚でロボット３を動作させることができた。
【０２３５】
ソリューションモジュール１０７による処理を、第二の空間５２にある他の物体を動作させるために適用してもよい。例えば、パワーアシストスーツ３００を動作させるために適用してもよい。
【０２３６】
以下、パワーアシストスーツ３００として、サイバーダイン社のＨＡＬ（Hybrid Assistive Limb）医療用下肢タイプまたはＨＡＬ福祉用下肢タイプのような、下肢をサポートするパワーアシストスーツが用いられ、オペレータ４０が熟練者としてゴルフのスイングの際の下半身の動作を初心者である人物４６に教える場合を例に、遠隔タスク実行システム５の各要素の構成について、説明する。上述の構成と重複する点は、説明を省略する。
【０２３７】
〔準備〕
第二の空間５２に、複数台の色距離センサ３９Ａ〜３９Ｃを配置する。人物４６が、パワーアシストスーツ３００を着用し、第二の空間５２の中に立つ。色距離センサ３９Ａ〜３９Ｃは、人物４６およびその周囲の物体のＲＧＢＤを計測し、計測結果をオペレーションコンピュータ１０に送信する。
【０２３８】
オペレーションコンピュータ１０は、色距離センサ３９Ａ〜３９Ｃそれぞれから計測結果を受信すると、仮想空間演算モジュール１０３によってこれらの計測結果に基づいて第二の空間５２を再現することによって、仮想空間５３を仮想する。これにより、人物４６のアバター４７が、パワーアシストスーツ３００が着用された状態で仮想空間５３に現われる。以下、仮想空間５３に現われるパワーアシストスーツ３００を「仮想パワーアシストスーツ３０１」と記載する。
【０２３９】
オペレーションコンピュータ１０は、アバター生成モジュール１０２によってアバター４１を生成し、仮想空間演算モジュール１０３によって仮想空間５３の中の、アバター４７の背中から所定の距離だけ離れた位置にアバター４１を配置する。例えば、５０センチメートル離れた位置に配置する。
【０２４０】
または、仮想パワーアシストスーツ３０１の三次元データを、パワーアシストスーツ３００を三次元計測することによって予め用意しておいてもよい。そして、この三次元データを用いて仮想パワーアシストスーツ３０１に配置してもよい。
【０２４１】
アバター４１およびアバター４７を仮想空間５３の中に配置した後、オペレーションコンピュータ１０は、アバター４１の両目位置から視線方向に仮想空間５３の中を見た画像の画像データ７Ｆを生成し、ヘッドマウントディスプレイ１２へ送信する。そして、ヘッドマウントディスプレイ１２は、画像データ７Ｆに基づいて画像を表示する。これにより、オペレータ４０は、自分が人物４６の背後にいるように感じることができる。
【０２４２】
一般のパワーアシストスーツは、生体の電位信号に応じて動作する。しかし、パワーアシストスーツ３００は、無線ＬＡＮの装置が設け、生体の電位信号の代わりに、オペレーションコンピュータ１０から送信されてくるコマンドに応じて動作するように構成されている。
【０２４３】
〔パワーアシストスーツ３００の制御〕
オペレータ４０は、仮想パワーアシストスーツ３０１を触るような感覚で、パワーアシストスーツ３００を動作させることができる。
【０２４４】
人物４６がスイングすると、アバター４７がスイングしている画像がヘッドマウントディスプレイ１２によって表示される。
【０２４５】
オペレータ４０は、その画像を見ることによって、人物４６のフォームを確認する。下半身の動作に問題点を見つけたら、人物４６にゆっくりとスイングしてもらう。この際に、どのように下半身を動作させればよいのかを、まるでパワーアシストスーツ３００を直接触って動かすように、右手４０２および左手４０７を動かして指導する。
【０２４６】
すると、オペレーションコンピュータ１０は、仮想空間５３においてアバター４１の右手および左手と仮想パワーアシストスーツ３０１とが接触したことを検知したら、右手４０２および左手４０７それぞれのその後の動きをパラメータとして示す動作コマンド８６をパワーアシストスーツ３００へ送信する。接触の検知および動作コマンド８６の送信は、例えばマニピュレートコマンドモジュール１０６によって行えばよい。または、マニピュレートコマンドモジュール１０６とは別のモジュールを用意し、それによって行ってもよい。
【０２４７】
パワーアシストスーツ３００は、動作コマンド８６を受信すると、動作コマンド８６に示される動作の通りに動作する。
【０２４８】
例えば、人物４６の右膝が伸びている問題点として見つけたら、オペレータ４０は、仮想パワーアシストスーツ３０１の右膝またはその付近の部分を持って人物４６の右膝を曲げるかのように、右手４０２および左手４０７を動かす。すると、この動きをパラメータとして示す動作コマンド８６がオペレーションコンピュータ１０からパワーアシストスーツ３００へ送信される。そして、パワーアシストスーツ３００は、動作コマンド８６に示される動きの通りに動作する。
【０２４９】
または、人物４６の腰の捻り方に問題があると思ったら、オペレータ４０は、仮想パワーアシストスーツ３０１の腰の部分を持って人物４６の腰を正しい捻り方で捻るかのように、右手４０２および左手４０７を動かす。すると、この動きをパラメータとして示す動作コマンド８６がオペレーションコンピュータ１０からパワーアシストスーツ３００へ送信される。そして、パワーアシストスーツ３００は、動作コマンド８６に示される動きの通りに動作する。
【０２５０】
なお、パワーアシストスーツ３００の上述の制御の仕方は、一例に過ぎない。例えば、予め、両手でパワーアシストスーツ３００のどの部位をどのように動かせばどのような電位信号を発生させるのかを実験によって求め、両手の動き、パワーアシストスーツ３００の部位、および電位信号の関係を示すデータをデータベースに登録しておいてもよい。
【０２５１】
そして、オペレーションコンピュータ１０は、アバター４１の両手が仮想パワーアシストスーツ３０１に接した後、接した部位、右手４０２および左手４０７の動き、およびこのデータに基づいて電位信号を算出し、パワーアシストスーツ３００へ通知してもよい。パワーアシストスーツ３００は、通知された電位信号に基づいて動作する。
【０２５２】
本実施形態の技術をパワーアシストスーツ３００に適用することによって、オペレータ４０は、人物４６から離れた場所にいながらリアルタイムで、従来よりも安全に人物４６にフォームを指導することができる。
【０２５３】
パワーアシストスーツ３００として、上半身をサポートするパワーアシストスーツを用いてもよい。また、ゴルフのスイング以外の技術を伝えるためにも、本変形例を適用することができる。例えば、陶芸、建築、もしくは彫刻などの匠の技術または舞踊、演劇、もしくは書画などの芸能の継承にも適用することができる。
【０２５４】
本変形例は、パワーアシストスーツ３００以外の機械にも適用することができる。例えば、自動運転の機能を有する乗物に適用することができる。
【０２５５】
または、図２３に示すようにオペレータ４０もパワーアシストスーツ３０２を着けてもよい。そして、パワーアシストスーツ３０２は、オペレータ４０の動作を検知すると、パワーアシストスーツ３００へ通知する。すると、パワーアシストスーツ３００は、オペレータ４０の動作に応じて動作する。または、パワーアシストスーツ３００は、人物４６の動作を検知すると、パワーアシストスーツ３０２へ通知してもよい。そして、パワーアシストスーツ３０２は、人物４６の動作に応じて動作すればよい。これにより、オペレータ４０は、人物４６の動作を体感し、人物４６の動作の癖または良し悪しを判断することができる。
【０２５６】
〔その他の変形例〕
本実施形態では、初期化モジュール１０１ないしソリューションモジュール１０７（図４参照）は、ソフトウェアモジュールであった。しかし、これらのモジュールの全部または一部をハードウェアモジュールによって実現してもよい。
【０２５７】
本実施形態では、オペレータ４０の三次元形状を色距離センサ１４およびＲＧＢＤをモーションキャプチャコンピュータ１６によって算出したが、三次元計測装置によって計測してもよい。
【０２５８】
本実施形態では、把持部３６２がペン６１を掴む場合を例に説明した。しかし、把持部３６２が持ち上げることができる重さよりも重い物を掴む場合は、オペレータ４０は、その物を思い通りに取り扱うことができない。そこで、このような場合は、ロボット３は、ロボット３のところへ補助のロボットを出動させ、補助のロボットと共同してその物を持ち上げたり移動させたりしてもよい。
【０２５９】
本実施形態では、オペレータ４０は、自分の思い通りにロボット３が進まない場合にソリューションコマンド８１を入力したが、いつ入力しても構わない。例えば、ロボット３の様子を確認したい場合に入力してもよい。これにより、オペレータ４０は、車輪３５およびマニピュレータ３６など、オペレータ４０およびアバター４１がロボット３とリンクしている際には確認しにくい部分を、容易に確認することができる。
【０２６０】
本実施形態では、オペレーションコンピュータ１０は、オペレータ４０およびアバター４１がロボット３とリンクしている際には、仮想ロボット３Ａを仮想空間５３に配置しなかったが、ロボット３の状態を確認するためにユーザが配置コマンドを入力した際に、一時的に、または、解除コマンドが入力されるまで配置してもよい。これにより、オペレータ４０は、右手４０２と把持部３６２とがきちんと連動しているか否かを確認することができる。これにより、オペレータ４０は常にロボット３の実際の動作を監視しながらタスクを実現できる。
【０２６１】
本実施形態では、第二の空間５２の様子が仮想空間５３の画像によってオペレータ４０へ伝えられたが、他の手段で様子を伝えてもよい。
【０２６２】
例えばロボット３が障害物に接触するなど物体に干渉した際に、オペレーションコンピュータ１０のスピーカ１０ｇから接触音を出力してもよい。障害物に接触したことは、ロボット３のセンサによって検知すればよい。または、仮想空間演算モジュール１０３によって算出される、ロボット３の位置および物体の位置に基づいて検知してもよい。接触音は、予め録音しまたは合成した音声であってもよいし、ロボット３にマイクを付けておき実際に接触した際に集音したものであってもよい。接触したことを示すメッセージを色距離センサ１４または液晶ディスプレイ１０ｆによって表示してもよい。障害物が壊れる様子を色距離センサ１４によって表示してもよい。
【０２６３】
または、把持部３６２の指に力覚センサを設けておき、物体を掴んだ際の力またはモーメントを測定させる。または、把持部３６２に触感センサを設けておき、物体の滑り感またはザラザラ感を検知させる。そして、オペレーションコンピュータ１０は、計測結果または検知結果をヘッドマウントディスプレイ１２または液晶ディスプレイ１０ｆによって表示させる。または、オペレータ４０の右手４０２に触覚グローブを嵌めておき、物体を掴んだ感覚を計測結果または検知結果に基づいて触覚グローブによってオペレータ４０に伝えてもよい。触覚グローブとして、Ｄｅｘｔａ  Ｒｏｂｏｔｉｃｓ社のＤｅｘｍｏまたはＳｅｎｓｏ  Ｄｅｖｉｃｅｓ社のＳｅｎｓｏ  Ｇｌｏｖｅなどが用いられる。
【０２６４】
本実施形態では、ペン６１でパネル６２に絵を描くためにロボット３を使用する場合を例に説明したが、ロボット３を災害現場、事故現場、または宇宙空間などで使用することもできる。
【０２６５】
オペレータ４０の動きに合わせてアバター４１は直ちに動くが、アバター４１の動きとロボット３の動きとの間に時差が生じる場合がある。例えば、ロボット３が月面に配置されオペレータ４０が地球上で作業する場合は、コマンドの到達に要する時間が経過してから、月面上でロボット３が動作する。また、ロボット３の動作速度がアバター４１の動作速度より遅い場合には、オペレータ４０またはアバター４１の動きに遅れてロボット３が動作することになる。例えば、ロボット３の移動速度がオペレータ４０の移動速度より遅い場合、オペレータ４０が移動して椅子を持ち上げると、ロボット３は移動に時間がかかる分遅れて椅子を持ち上げることになる。この場合は、オペレータ４０の動作のログを取っておき、ログに基づいてロボット３を制御する。
【０２６６】
あるいは、仮想空間では遅れがないように動作し、物理シミュレータでロボット３の運動をシミュレートし、シミュレーション結果を用いて仮想空間内ではオペレータ４０とアバター４１とを同期させ動作させる。そして、アバターの４１の動きを示すデータをメモリに入れておき、ロボット３に順次送信する。シミュレータ上のロボット３あるいは実空間のロボット３が作業に失敗した場合には、オペレータ４０にその旨を知らせ、メモリのデータによりアバター４１の状態を作業を失敗する直前の時点の状態に戻し、仮想空間の状況を戻すことにより、リカバリー動作を開始することができる。
【０２６７】
本実施形態では、ロボット３に移動手段として車輪３５が２つ設けられた場合を例に説明したが、車輪３５が４つまたは６つ設けられていてもよい。または、キャタピラが設けられていてもよい。または、ロボット３の底部にスクリューを設け、ロボット３が水上または水中を移動できるようにしてもよい。様々なロボットを用意し、災害現場または事故現場の状況に応じてロボットを使い分けてもよい。
【０２６８】
本実施形態では、オペレータ４０の右手４０２の動作にロボット３の把持部３６２を連動させたが、ロボット３にマニピュレータ３６が２本ある場合は、右のマニピュレータ３６の把持部３６２をオペレータ４０の右手４０２に連動させ、左のマニピュレータ３６の把持部３６２をオペレータ４０の左手４０７に連動させればよい。
【０２６９】
または、ロボット３に右足および左足が備わっている場合は、ロボットの右足および左足をそれぞれオペレータ４０の右足４０３および左足に連動させてもよい。
【０２７０】
本実施形態では、アバター４１を拡大することも縮小することもなく仮想空間５３に配置したが、拡大しまたは縮小して配置してもよい。例えば、ロボット３がネズミのような小動物と同じくらいの大きさならば、この大きさに合わせてアバター４１を縮小して配置してもよい。そして、アバター４１およびロボット３を、オペレータ４０の動きのうちの、オペレータ４０の大きさに対するアバター４１の大きさ割合に応じただけ、動かすようにすればよい。または、アバター４１の大きさを変更せず、アバター４１およびロボット３の動きのスケールを、その割合に応じて変更してもよい。
【０２７１】
本実施形態では、ロボット３は、第二の空間５２に存在する物体を、色距離センサ３９によって得られたＲＧＢＤデータ７Ｃなどに基づいて検知した。しかし、物体ごとに、各物体の位置、三次元形状、および特性などを記録したＩＣ（Integrated Circuit）タグを付けておき、ＩＣタグからのこれらの情報を読み取ることによって検知してもよい。
【０２７２】
〔実験の結果の例〕
図２４は、実験の結果の例を示す図である。
【０２７３】
次に、遠隔タスク実行システム５を用いて行った実験例について説明する。パネル６２には、外径が４００ミリメートル、内径が３００ミリメートルの帯状の円が予め描かれている。円の中心の床面からの高さは、約０．６メートルである。本実験のタスクは、パネル６２から約１．７メートル離れた位置からロボット３をパネル６２のところへ移動させ、ペン６１で円を描くことである。本実験では、ペン６１は、既に把持部３６２によって掴まれている。オペレータ４０は、予めヘッドマウントディスプレイ１２を装着している。
【０２７４】
オペレータ４０は、その場で足踏みすることによってロボット３をパネル６２の近くへ移動させ、パネル６２に右手４０２が届くと感じたら、予め描かれている円をなぞるように、パネル６２にペン６１を当てて右手４０２を動かす。なお、本実施形態では、パネル６２に接近したら、仮想ロボット３Ａを仮想空間５３に配置することによって、仮想ロボット３Ａの把持部の位置をオペレータ４０が把握しやすいようにした。
【０２７５】
本実験の比較実験として、次のような実験を行った。ヘッドマウントディスプレイ１２ではなく、２３インチの一般的な液晶ディスプレイに、仮想空間５３にアバター４１を配置せず仮想ロボット３Ａを配置して、仮想空間５３の様子を表わす画像を表示した。さらに、被験者つまりオペレータ４０は、この画像を見ながら、スティックおよびボタンを有するゲームコントローラを用いてロボット３を操作した。表示される画像すなわち仮想空間５３を見る視点は、マウスによってオペレータ４０がいつでも自由に変更できるようにした。そして、ゲームコントローラによって予め描かれている円をペン６１でなぞる。
【０２７６】
本実験および比較実験によって、図２４に示すような結果が得られた。図２４に示す星状のマークは、有意水準α＝０．０５とした対応のある場合の両側ｔ検定によって、本実験と比較実験とに有意差が認められたことを示している。
【０２７７】
図２４（Ａ）および（Ｂ）から、オペレータ４０は、アバター４１が自分自身の身体であるかのように感じることが分かる。図２４（Ｃ）および（Ｄ）から、比較実験の場合よりも本実験の場合のほうが、オペレータ４０は仮想空間５３にいるように感じることが分かる。図４（Ｅ）、（Ｆ）、および（Ｇ）から、比較実験よりも本実験例のほうが、オペレータ４０は普段通りの感覚が得られることが分かる。
【産業上の利用可能性】
【０２７８】
本発明は、ロボットなどの機械を介して、オペレータが遠隔的に作業したり熟練者の技能の初心者に伝えたりするために、用いられる。
【符号の説明】
【０２７９】
５  遠隔タスク実行システム（ロボット制御システム、機械制御システム）
１０ａ  ＣＰＵ
１０ｂ  ＲＡＭ
１０ｈ  スピーカ（報知手段）
１０３  仮想空間演算モジュール（表示手段）
１０４  移動情報演算モジュール（第二の制御手段）
１０５  移動コマンドモジュール（第二の制御手段）
１０６  マニピュレートコマンドモジュール（制御手段）
１０７  ソリューションモジュール（第三の制御手段）
１２  ヘッドマウントディスプレイ（ディスプレイ）
３  ロボット
３Ａ  仮想ロボット
３６２  把持部（第一の部位）
３００  パワーアシストスーツ（機械）
４０  オペレータ
４０２  右手（第二の部位）
４１  アバター
５２  第二の空間（空間）
５３  仮想空間
６１  ペン（物体）
６３  椅子（物体）
【図１】
2018097223.tif 000004
【図２】
2018097223.tif 000005
【図３】
2018097223.tif 000006
【図４】
2018097223.tif 000007
【図５】
2018097223.tif 000008
【図６】
2018097223.tif 000009
【図７】
2018097223.tif 000010
【図８】
2018097223.tif 000011
【図９】
2018097223.tif 000012
【図１０】
2018097223.tif 000013
【図１１】
2018097223.tif 000014
【図１２】
2018097223.tif 000015
【図１３】
2018097223.tif 000016
【図１４】
2018097223.tif 000017
【図１５】
2018097223.tif 000018
【図１６】
2018097223.tif 000019
【図１７】
2018097223.tif 000020
【図１８】
2018097223.tif 000021
【図１９】
2018097223.tif 000022
【図２０】
2018097223.tif 000023
【図２１】
2018097223.tif 000024
【図２２】
2018097223.tif 000025
【図２３】
2018097223.tif 000026
【図２４】
2018097223.tif 000027
【手続補正書】
【提出日】平成30年9月11日(2018.9.11)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
ディスプレイに表示された画像をオペレータに見せながら、タスクを実行するようロボットを制御するロボット制御システムであって、
前記オペレータが前記ロボットの存在する空間を仮想的に再現した仮想空間の中に前記オペレータの動きに合わせて動くアバターを配置し、前記空間に居るならば前記オペレータの視界に現われる様子を表わす視界画像として前記アバターの目から視線方向に見える様子を表わす画像を前記ディスプレイに表示させる表示手段と、
前記オペレータの動きに応じたタスクを前記ロボットに実行させるための制御命令を生成し、前記ロボットに送信する制御手段と、
を有するロボット制御システム。
【請求項２】
前記ロボットは、第一の部位を有し、
前記オペレータは、第二の部位を有し、
前記制御手段は、前記第二の部位の動きに基づいて前記第一の部位を動かす命令を前記制御命令として生成し前記ロボットに送信する、
請求項１に記載のロボット制御システム。
【請求項３】
前記制御手段は、前記オペレータが前記第二の部位を動かした際に、前記オペレータが前記空間に居るならば前記第二の部位が前記空間の中で動く軌跡に合わせて前記第一の部位が動くように前記ロボットを制御する、
請求項２に記載のロボット制御システム。
【請求項４】
前記ディスプレイは、前記オペレータに装着するためのヘッドマウントディスプレイである、
請求項１−３、１１のいずれかに記載のロボット制御システム。
【請求項５】
前記表示手段は、前記オペレータを計測することによって求められた三次元形状および前記ロボットに設けられた計測装置によって得られたデータに基づいて求められた三次元形状を用いて前記アバターを前記空間に配置する、
請求項１−４、１１のいずれかに記載のロボット制御システム。
【請求項６】
前記オペレータが足踏みするのに伴って前記ロボットを移動させる第二の制御手段、を有し、
前記表示手段は、前記ロボットが前記仮想空間において再現される位置に前記アバターを配置し、前記視界画像を前記ディスプレイに表示させる、
請求項１−５、１１のいずれかに記載のロボット制御システム。
【請求項７】
前記表示手段は、前記ロボットを仮想した仮想ロボットを前記仮想空間の中の前記位置に配置し、前記視界画像を前記ディスプレイに表示させる、
請求項６に記載のロボット制御システム。
【請求項８】
前記表示手段は、特定のコマンドが入力されまたは前記ロボットに特定のイベントが生じた場合に、前記ロボットを仮想した仮想ロボットを前記仮想空間の中の前記位置に配置し、前記アバターを前記位置の近傍に配置し直し、前記視界画像を前記ディスプレイに表示させる、
請求項６に記載のロボット制御システム。
【請求項９】
前記アバターが配置し直された後に前記オペレータが動作を行った場合に、前記オペレータと前記ロボットとの位置関係が前記アバターと前記仮想ロボットとの位置関係と同じであるならば前記動作によって前記ロボットに生じる変化が起きるように前記ロボットを制御する、第三の制御手段、を有する、
請求項８に記載のロボット制御システム。
【請求項１０】
前記空間の中の障害物に干渉した場合に、前記障害物に干渉したことを、力覚、触覚、または聴覚を前記オペレータを与えることによって知らせる報知手段、を有する、
請求項１−９、１１のいずれかに記載のロボット制御システム。
【請求項１１】
前記第一の部位によって物体を前記オペレータの所望する通りに取り扱うことができない場合に他のロボットと協同して当該物体を取り扱うための処理を行う協同手段、を有する、
請求項２または請求項３に記載のロボット制御システム。
【請求項１２】
前記表示手段は、前記オペレータの動きに応じたタスクを行うように前記アバターを動かしながら前記視界画像を前記ディスプレイに表示させる、
請求項１−９、１１のいずれかに記載のロボット制御システム。
【請求項１３】
機械を制御する機械制御システムであって、
オペレータが前記機械の存在する空間の中の前記機械の近傍の位置に居るならば前記オペレータの視界に現われる様子を表わす視界画像をディスプレイに表示させる表示手段と、
前記オペレータが前記位置で前記機械を触るような動作を行った場合に、前記オペレータが前記空間の中の前記位置に居るならば前記動作によって前記機械に生じる変化が起きるように、前記機械を制御する、制御手段と、
を有する機械制御システム。
【請求項１４】
前記ディスプレイは、前記オペレータに装着するためのヘッドマウントディスプレイであり、
前記機械は、パワーアシストスーツである、
請求項１３に記載の機械制御システム。
【請求項１５】
ディスプレイに表示された画像をオペレータに見せながら、タスクを実行するようロボットを制御するロボット制御方法であって、
前記オペレータが前記ロボットの存在する空間を仮想的に再現した仮想空間の中に前記オペレータの動きに合わせて動くアバターを配置し、前記空間に居るならば前記オペレータの視界に現われる様子を表わす視界画像として前記アバターの目から視線方向に見える様子を表わす画像を前記ディスプレイに表示させる表示処理を行い、
前記オペレータの動きに応じたタスクを前記ロボットに実行させるための制御命令を生成し前記ロボットに送信する制御処理を行う、
ロボット制御方法。
【請求項１６】
（削除）
【請求項１７】
（削除）
【請求項１８】
（削除）
【請求項１９】
（削除）
【請求項２０】
（削除）
【請求項２１】
（削除）
【請求項２２】
（削除）
【請求項２３】
（削除）
【請求項２４】
（削除）
【請求項２５】
ディスプレイに表示された画像を、第二の部位を有するオペレータに見せながら、タスクを実行するように、物体を取り扱う第一の部位を有するロボットを制御するロボット制御方法であって、
前記オペレータが前記ロボットの存在する空間に居るならば前記オペレータの視界に現われる様子を表わす視界画像を前記ディスプレイに表示させる表示処理を行い、
前記オペレータの動きに応じたタスクを前記ロボットに実行させるための制御命令として前記第二の部位の動きに基づいて前記第一の部位を動かす命令を生成し前記ロボットに送信する制御処理を行い、
前記第一の部位によって前記物体を前記オペレータの所望する通りに取り扱うことができない場合に、前記ロボットおよび他のロボットが前記制御命令に応じて協同して前記物体を取り扱うための処理を行う、
ロボット制御方法。
【請求項２６】
（削除）
【請求項２７】
機械を制御する機械制御方法であって、
オペレータが前記機械の存在する空間の中の前記機械の近傍の位置に居るならば前記オペレータの視界に現われる様子を表わす視界画像をディスプレイに表示させる表示処理を行い、
前記オペレータが前記位置で前記機械を触るような動作を行った場合に、前記オペレータが前記空間の中の前記位置に居るならば前記動作によって前記機械に生じる変化が起きるように、前記機械を制御する制御処理を行う、
機械制御方法。
【請求項２８】
（削除）
【請求項２９】
ディスプレイに表示された画像をオペレータに見せながら、タスクを実行するようロボットを制御するコンピュータに用いられるコンピュータプログラムを格納した、前記コンピュータによるアクセスが可能な記録媒体であって、
前記コンピュータプログラムは、
前記オペレータが前記ロボットの存在する空間を仮想的に再現した仮想空間の中に前記オペレータの動きに合わせて動くアバターを配置し、前記空間に居るならば前記オペレータの視界に現われる様子を表わす視界画像として前記アバターの目から視線方向に見える様子を表わす画像を前記ディスプレイに表示させる表示処理を前記コンピュータに実行させ、
前記オペレータの動きに応じたタスクを前記ロボットに実行させるための制御命令を生成し前記ロボットに送信する制御処理を前記コンピュータに実行させる、
記録媒体。
【請求項３０】
（削除）
【請求項３１】
（削除）
【請求項３２】
（削除）
【請求項３３】
（削除）
【請求項３４】
（削除）
【請求項３５】
（削除）
【請求項３６】
（削除）
【請求項３７】
（削除）
【請求項３８】
（削除）
【請求項３９】
ディスプレイに表示された画像を、第二の部位を有するオペレータに見せながら、タスクを実行するように、物体を取り扱う第一の部位を有するロボットを制御するコンピュータに用いられるコンピュータプログラムを格納した、前記コンピュータによるアクセスが可能な記録媒体であって、
前記コンピュータプログラムは、
前記オペレータが前記ロボットの存在する空間に居るならば前記オペレータの視界に現われる様子を表わす視界画像を前記ディスプレイに表示させる表示処理を前記コンピュータに実行させ、
前記オペレータの動きに応じたタスクを前記ロボットに実行させるための制御命令として前記第二の部位の動きに基づいて前記第一の部位を動かす命令を生成し前記ロボットに送信する制御処理を前記コンピュータに実行させ、
前記第一の部位によって前記物体を前記オペレータの所望する通りに取り扱うことができない場合に、前記ロボットおよび他のロボットが前記制御命令に応じて協同して当該物体を取り扱うための協同処理を前記コンピュータに実行させる、
記録媒体。
【請求項４０】
（削除）
【請求項４１】
機械を制御するコンピュータに用いられるコンピュータプログラムを格納した、前記コンピュータによるアクセスが可能な記録媒体であって、
前記コンピュータプログラムは、
オペレータが前記機械の存在する空間の中の前記機械の近傍の位置に居るならば前記オペレータの視界に現われる様子を表わす視界画像をディスプレイに表示させる表示処理を前記コンピュータに実行させ、
前記オペレータが前記位置で前記機械を触るような動作を行った場合に、前記オペレータが前記空間の中の前記位置に居るならば前記動作によって前記機械に生じる変化が起きるように前記機械を制御する制御処理を前記コンピュータに実行させる、
記録媒体。
【請求項４２】
（削除）
【請求項４３】
ディスプレイに表示された画像を、第二の部位を有するオぺレータに見せながら、タスクを実行するように、物体を取り扱う第一の部位を有するロボットを制御するロボット制御システムであって、
前記オペレータが前記ロボットの存在する空間に居るならば前記オペレータの視界に現われる様子を表わす視界画像を前記ディスプレイに表示させる表示手段と、
前記オペレータの動きに応じたタスクを前記ロボットに実行させるための制御命令として前記第二の部位の動きに基づいて前記第一の部位を動かす命令を生成し、前記ロボットに送信する制御手段と、
前記第一の部位によって前記物体を前記オペレータの所望する通りに取り扱うことができない場合に、前記ロボットおよび他のロボットが前記制御命令に応じて協同して前記物体を取り扱うための処理を行う協同手段、
を有するロボット制御システム。
【請求項４４】
前記表示手段は、前記オペレータが前記パワーアシストスーツの存在する空間を仮想的に再現した仮想空間の中に、前記オペレータの動きに合わせて動く第一のアバターと前記パワーアシストスーツを着用した人の第二のアバターとを配置し、前記空間に居るならば前記オペレータの視界に現われる様子を表わす視界画像として前記第一のアバターの目から視線方向に見える様子を表わす画像を前記ヘッドマウントディスプレイに表示させ、
前記動作は、前記オペレータの手の動作であり、
前記制御手段は、前記手が前記パワーアシストスーツに触れながら前記手の動作に合わせて動くように、前記パワーアシストスーツを制御する、
請求項１４に記載の機械制御システム。
【請求項４５】
前記ロボットが前記物体に触れた場合に、前記物体に触れたことを、力覚、触覚、または聴覚を前記オペレータを与えることによって知らせる報知手段、を有する、
請求項１−９、１１のいずれかに記載のロボット制御システム。
【国際調査報告】
2018097223.tif 000028
2018097223.tif 000029
2018097223.tif 000030
2018097223.tif 000031