以下、添付図面を参照し、本発明の好適な実施形態について説明する。なお、以下説明する実施形態は、本発明を具体的に実施した場合の一例を示すもので、特許請求の範囲に記載の構成の具体的な実施例の1つである。
[第1の実施形態]
図1は、駆動制御可能な可動部分を1以上有する産業用ロボットと、係る産業用ロボットの可動部分の位置や姿勢の操作制御を行うための操作装置(情報処理装置)とで構成されている、本実施形態に係るシステムの機能構成例を示すブロック図である。
図1において、500は、上記産業用ロボットで、上記の通り、外部から駆動制御可能な1以上の可動部分を有する。100は、係る産業用ロボット500が有する可動部分の位置姿勢の制御(移動方向の制御)を行う為の操作装置である。以下では、産業用ロボット500を単に「ロボット500」と呼称する。
ここで、可動部分の駆動制御指示(動作指示)は、操作者(ユーザ)が手に持っている後述の操作盤に備わっているボタンやレバーをユーザが操作することで、操作装置100に入力することができる。係る操作盤は、操作装置100に備わっている操作盤接続口201に接続される。操作装置100に対する操作盤の接続形態は、有線/無線の何れでも良い。
操作入力部200には、操作盤に備わっているボタンやレバーのそれぞれの動作機能が登録されている。操作盤側でボタンやレバーが操作されると、ボタンが押下されたことを示す信号や、レバーを傾倒した方向を示す信号などが、上記動作指示として操作盤接続口201を介して操作入力部200に入力される。操作入力部200は、操作盤接続口201を介して操作盤から受けた信号に基づいて、対応する動作機能を特定し、特定した動作機能を実行させるための指示信号を、操作座標変換部400に送出する。
一方、操作盤を手に持っているユーザの頭部の位置姿勢は、1以上のセンサを用いて計測される。係るセンサは、計測センサ接続口301に接続されている。センサによる計測結果を示す信号は、この計測センサ接続口301を介して操作者位置計測部300に入力される。
操作者位置計測部300は、計測センサ接続口301を介してセンサから受けた信号に基づいて、操作者の頭部の位置(視点の位置)を推定する(必要に応じて姿勢も推定する)。そして操作者位置計測部300は、推定した位置を、後述するワークスペース座標系における位置に変換する。ワークスペースは、ロボットとワークが干渉する領域を示しており、ワークスペース座標系としては、ワークに対してロボットが操作する範囲の中心を座標系原点としてとることができる。そして、変換した位置を示す信号を、操作座標変換部400に送出する。
操作座標変換部400は、操作入力部200から受けた信号と、操作者位置計測部300から受けた信号とに基づいて後述の処理を行うことで、操作者が操作盤を用いて移動指示した対象の可動部分の移動方向を、ロボット500を基準とする座標系に変換する。そして、変換した移動方向への移動指示を、ロボット制御接続口401を介してロボット500に送出する。
従って、ロボット500は、ロボット制御接続口401を介して操作座標変換部400から受けた移動指示に基づいて、移動指示された対象の可動部分を可動させる。なお、本実施形態では、ロボット500の可動部分の移動制御を行うためには、このように、ロボット500を基準とする座標系における移動指示を行うか、移動先の位置を数値で指定することで行う。即ち、本実施形態では、ロボット500は、数値制御型のロボットである。
また、本実施形態では、操作装置100は、操作盤、ロボット500、センサ、とは別個の装置であり、操作装置100に操作盤とロボット500とセンサとを接続する構成としているが、以下の説明は係る構成に限定するものではない。例えば、装置の簡便性などを考慮して、操作装置100が操作盤に内蔵された構成であっても良いし、操作者の頭部の位置姿勢を計測するセンサと操作装置100とが隣接していても良い。また、係るセンサが操作装置100に内蔵されていても良い。
即ち、操作装置100の構成は、以下のような構成を基本とするのであれば、図1に示した構成には限定しない。即ち、操作者とロボットとの相対位置を取得する構成、可動部分の動作指示を取得する構成、係る動作指示からロボットを基準とする座標系における動作指示に変換する構成、変換後の移動指示をロボットに対して送出する構成、である。
また、操作盤、ロボット500、センサ、操作装置100のうち、どの装置がどの装置に内蔵されていても、それぞれの装置間で通信可能であれば良い。
なお、操作者とロボットとの相対位置は、操作者とロボットとで同じ座標系における位置を得ることができれば、後はそれぞれの位置間の差分を相対位置として求めることができる。
図2は、本実施形態に係るシステムの外観例を示す図である。
操作者299は上述の通り、ロボット500に対する動作指示を操作装置100に入力するための操作盤210を手に把持している、更に、操作者299の頭部には、係る頭部の位置を検出するため赤外線LED320が取り付けられている。係る赤外線LED320は、計測センサ接続口301を介して操作装置100に接続されている赤外線カメラ310により撮像することで、操作者299の頭部の位置を検出するために用いられるものである。
赤外線カメラ310は、レンズを通してCCD若しくはCMOS等の光・電気変換素子により、発光中の赤外線LED320を撮像する。赤外領域に感度があるビデオカメラのレンズの前に可視光吸収フィルタを設置することで、同様な構成を実現することができる。
赤外線カメラ310によって検出される赤外線LED320の3次元位置は予め校正しておく必要がある。校正の手続きとしては、例えば次のようなものがある。即ち、ロボットを基準とする座標系上における校正参照位置に赤外線LED320を設置したときの、赤外線カメラ310の撮像画面上における輝度が高い領域を検出し、検出した領域の面積と重心位置を算出する。可視光はフィルタにより吸収されているため、輝度が高い領域は、赤外線LED320が映っている領域と解釈することができる。従って、輝度が高い領域の重心座標は、赤外線LED320の座標位置として検出する。また、輝度が高い領域の面積は、赤外線LED320と赤外線カメラ310との距離を表す。なお、校正参照位置を離散的に設定した場合は、校正参照位置間の区間内を線形補間により補間する。
また、本実施形態では、用いる赤外線カメラ310の台数を1台とするが、これに限定するものではない。即ち、2台以上の赤外線カメラ310を用いることで、写真計測分野で一般的なステレオ計測法を用いることができ、より高精度に赤外線LED320の3次元位置を計測することができる。
また、操作者299の頭部の位置を取得するための構成にはこれ以外にも様々なものが考えられ、本実施形態に適宜適用することができる。例えば、超音波の伝播時間の差を用いた距離計測を応用した3次元計測や、磁界中における磁場の強さを検出する3次元計測がある。また、非特許文献1に開示されているように、画像から特徴的な要素を検出し、その検出位置と、この要素の3次元位置と、の対応に基づいた3次元計測もある。
つまり、操作者299とロボット500との相対的な位置関係を求めることができればよいので、そのための構成には、既存の3次元位置検出技術を用いることができる。ただし、ロボット500は、アクチュエータとしてモータを用いているため、磁場や超音波へのノイズの混入が懸念される。そのため、光学式の計測方法を用いることが好ましい。
次に、操作盤210について説明する。図3は、操作盤210の構成例を示す図である。なお、図3には、本実施形態で用いる最低限のボタン、レバーを示しており、これ以外のボタン、レバーを操作盤210に備えるようにしても良い。
操作盤210には、ロボット操作装置接続用ケーブル220が備わっており、係るロボット操作装置接続用ケーブル220は、操作装置100が有する操作盤接続口201に接続されている。従って、操作盤210に備わっている後述するボタンやレバーを操作者299が操作した場合には、係る操作に対応する動作指示を示す信号が操作盤210からロボット操作装置接続用ケーブル220、操作盤接続口201を介して操作装置100に入力される。
一般的な産業用ロボットのティーチングペンダントは、動作教示におけるプログラムの指示を行うため、多くのボタンを有する。図3では、姿勢登録ボタン215、姿勢再生ボタン216、緊急停止ボタン214、方向指示入力スティック211、上方移動ボタン212、下方移動ボタン213が、操作盤210に設けられている。
姿勢登録ボタン215は、ロボット500の現時点での姿勢(各可動部位の姿勢)の登録を、操作装置100に対して指示するためのボタンである。姿勢再生ボタン216は、過去に姿勢登録ボタン215を押下して登録したそれぞれの姿勢を順次再生することで、ロボット500の各可動部位を、再生した姿勢に一致させるべく制御する為の指示を、操作装置100に対して入力するためのボタンである。
ここで、ロボット500が図2に示したようなアームのロボットである場合、姿勢登録ボタン215を押下する毎に、操作盤210は、押下した時点での各アームの姿勢の登録を、操作装置100に対して指示する。また、姿勢再生ボタン216を押下すると、操作盤210は、過去に登録した各姿勢をその登録順に操作装置100に再生させる為の指示を操作装置100に対して指示する。なお、それぞれの姿勢を再生することで、操作装置100は、ロボット500の各可動部位を、再生した姿勢に一致させるべく、可動部分の動作制御を行う。
ここで、ロボット500の手先部に接続されるものとしては、物体を把持するためのハンドや、ネジやボルトを締結するドライバ、さらには溶接のアークホルダなどが挙げられる。このようにロボット500の手先部に接続されるものはエンドエフェクタと呼ばれ、エンドエフェクタを接続するロボット500の手先部はメカニカルインターフェース部と呼ぶ。
ここで、エンドエフェクタの基準座標は、ワークとの作用点を想定した座標系とする。例えば、把持を行う2つ指のエフェクタであれば、物体と指との接触点間の中点を座標系とすることができる。エンドエフェクタは、ロボットのメカニカルインターフェースに設置されているので、ロボットの手先位置を制御することで、エンドエフェクタを移動させることができる。
方向指示入力スティック211は、エンドエフェクタ(メカニカルインターフェース部)の移動方向を指示するためのもので、奥・手前・右・左の4方向を、移動方向として指示することができる。エンドエフェクタの移動方向は、エンドエフェクタの基準座標を通る水平面での動きと、鉛直方向の動きに分解される。その水平面において、操作している人の奥方向・手前方向、そして右手方向、左手方向を指示するものとする。なお、方向指示入力スティック211を用いて指示する移動方向は、操作者299の頭部位置に常に依存することに注意されたい。また、方向指示入力スティック211はスティック形状のものに限定するものではなく、例えば、各方向に対応するボタンで構成しても良い。
方向指示入力スティック211による指示内容は、動作指示として操作装置100に送出される。
また、上方移動ボタン212を押下すると、エンドエフェクタ(メカニカルインターフェース部)の移動方向として、鉛直上向きを指示することができる。
また、下方移動ボタン213を押下すると、エンドエフェクタ(メカニカルインターフェース部)の移動方向として、鉛直下向きを指示することができる。
緊急停止ボタン214を押下すると、ロボット500に対してその動作を停止させるための指示を入力することができる。
上方移動ボタン212、下方移動ボタン213、緊急停止ボタン214による指示内容は、動作指示として操作装置100に送出される。
ここで、エンドエフェクタに対する移動方向指示は、操作者299の身体位置から観察されるロボット500に対して、右手方向、左手方向、奥行き方向、手前方向、鉛直上向き、鉛直下向き、で定義される8方向への動作指示が行えれば良い。そのため、スティックやボタンの形態、大きさ、色、接点条件等は、操作者299の動作入力作業が簡便に済む方が望ましいが、ここでは任意の形態で構わない。
次に、本実施形態で取り扱う様々な座標系について説明すると共に、係る座標系を用いた、ロボット500への動作指示について説明する。
図4は、本実施形態で取り扱う様々な座標系を示す図である。
先ず、ロボット500を基準とする座標系について説明する。ロボット500を基準とする座標系とは、例えば、ロボット500の据付面上におけるロボット500の位置を原点とし、係る原点で互いに直交する3軸をそれぞれ、X1軸、Y1軸、Z1軸とする座標系である。なお、Z1軸は、鉛直方向に沿った軸とする。以下では、ロボット500を基準とする座標系を「ベース座標系」と呼称する場合がある。ベース座標系は、ロボット500に対する動作指示を行う上で基準となる座標系である。また、ロボット500にはエンドエフェクタとして、物体を把持するハンド501が設けられている。ここで、ハンド501を基準とする座標系を設けるのであるが、係る座標系は、例えば、ハンド501の位置を原点とし、係る原点で互いに直交する3軸をそれぞれXm軸、Ym軸、Zm軸とする座標系である。以下では、ハンド501を基準する座標系を「メカニカルインターフェース座標系」と呼称する場合がある。
更には、ハンド501による把持対象としての現実物体499を配置する領域(ワークスペース)中にも座標系を設ける。例えば、ワークスペース中の1点を原点321とし、係る原点321から鉛直方向に延長する軸をZ2軸とし、更に、係る原点でZ2軸に直交する2軸(水平面内で直交する2軸)をそれぞれX2軸、Y2軸とする座標系を設ける。以下では係る座標系を「ワークスペース座標系」と呼称する場合がある。
作業対象にもよるが、なぞり作業のようにエンドエフェクタの位置指示が重要な場合は、メカニカルインターフェース座標系において指示することが良い。また、ワークに対してハンドの位置を調整する場合は、ワークとの干渉状態を確認しながら行うので、ワークスペース座標系で指示することが良いと思われる。ここでは、ワークの設置した付近に設定したワークスペース座標系での操作に関して説明する。
赤外線カメラ310は上述の通り、赤外線LED320を撮像する。操作装置100は、赤外線カメラ310による撮像画像に基づいて、ベース座標系における赤外線LED320の3次元位置(Xu,Yu,Zu)を求める。
本実施形態では、ロボット500の操作において、鉛直方向への動きを操作者299の位置に関係なく固定して操作する。一般に人の頭部の動きは、内耳の働きにより身体および頭部の傾斜角度を知覚することができる。そのため、人は、頭部を斜めに傾斜させた場合や前・後ろに反らせた場合でも、重力方向を正しく知覚することができるため、自分にとって上方というのは常に鉛直上方と一致することが知られている。
従って、ロボット500に対する動作指示を行う都度、操作者299の頭部の位置姿勢が変わっていても、操作者299の頭部の鉛直方向を重力軸と一致させることで、姿勢の変動による動作指示の誤差を抑えることができる。
図5は、方向指示入力スティック211、上方移動ボタン212、下方移動ボタン213のそれぞれが指示する移動方向と、それぞれの指示に応じた、ワークスペース座標系におけるハンド501(エンドエフェクタ)の移動方向と、を示す図である。
図5(a)は、方向指示入力スティック211、上方移動ボタン212、下方移動ボタン213のそれぞれによる移動方向指示を示す図である。
上方移動ボタン212を押下すると、鉛直上方へのハンド501の移動方向指示Bupが入力される。
一方、下方移動ボタン213を押下すると、鉛直下方へのハンド501の移動方向指示Bdownが入力される。
一方、方向指示入力スティック211を、紙面上方に傾倒すると、操作者299の正面向きに、ハンド501が離れていくような移動方向指示Bfarが入力される。
一方、方向指示入力スティック211を、紙面下方に傾倒すると、操作者299の正面向きに、ハンド501が近づいてくるような移動方向指示Bnearが入力される。
一方、方向指示入力スティック211を、紙面左方に傾倒すると、操作者299の左手側に、ハンド501が離れていくような移動方向指示Bleftが入力される。
一方、方向指示入力スティック211を、紙面右方に傾倒すると、操作者299の右手側に、ハンド501が離れていくような移動方向指示Brightが入力される。
図5(b)は、図5(a)に示した各移動方向指示に対応する、ハンド501のワークスペース座標系における移動方向を示す図である。ここで、操作者299は、ワークスペース座標系における原点を注視しているものとする。即ち、操作者299の頭部に装着している赤外線LED320の位置から、ワークスペース座標系における原点321に視線を向けているものとして考える。
なお、実際には操作者299の視線方向は、ロボット500のエンドエフェクタであったり、ワークの一部であったりする。ここでは、赤外線LED320が1つであるとしているので、頭部の姿勢については求めていないが、複数の赤外線LEDを用いるか、頭部の姿勢のみを検出するセンサを用いることで、姿勢を求めることも可能である。
上方移動ボタン212を押下することで鉛直上方への移動方向指示Bupが入力されると、エンドエフェクタの移動ベクトルは、鉛直上方への方向ベクトルΔd’upとなる。
一方、下方移動ボタン213を押下することで鉛直下方への移動方向指示Bdownが入力されると、エンドエフェクタの移動ベクトルは、鉛直下方への方向ベクトルΔd’downとなる。
一方、方向指示入力スティック211を紙面上方に傾倒すると、エンドエフェクタの移動ベクトルは、水平面内(X2−Y2平面内)で、ワークスペース座標系における赤外線LED320の位置から遠ざかる方向への移動ベクトルΔd’farとなる。
一方、方向指示入力スティック211を紙面下方に傾倒すると、エンドエフェクタの移動ベクトルは、水平面内(X2−Y2平面内)で、ワークスペース座標系における赤外線LED320の位置に近づく方向への移動ベクトルΔd’nearとなる。
一方、方向指示入力スティック211を紙面左方に傾倒すると、エンドエフェクタの移動ベクトルは、水平面内(X2−Y2平面内)でワークスペース座標系における赤外線LED320の位置から左手側にエンドエフェクタが離れる移動方向ベクトルとなる。係る移動ベクトルをΔd’leftと表す。
一方、方向指示入力スティック211を紙面右方に傾倒すると、エンドエフェクタの移動ベクトルは、水平面内(X2−Y2平面内)でワークスペース座標系における赤外線LED320の位置から右手側にエンドエフェクタが離れる移動方向ベクトルとなる。係る移動ベクトルをΔd’rightと表す。
ここで、各移動ベクトルを水平面内の動きに制限することで、構造物との干渉を容易に観察しながら指示を与えることができる。
また、図5(b)において、ワークスペース座標系における赤外線LED320の位置を(Xu’,Yu’,Zu’)とする。また、方向指示入力スティック211を傾倒することで移動するエンドエフェクタの単位時間あたりの移動量をkとする。
さらに、鉛直方向に対する移動をZ2軸に沿って固定すると、Δd’up、Δd’downはそれぞれ、ワークスペース座標系におけるZ2軸の上方、下方となる。
ここで、Δd’left、Δd’rightは、視線方向ベクトルとZ2軸に対して垂直になるように設定する。Δd’left、Δd’rightは、視線方向ベクトルとZ2軸との外積ベクトルにより求める。
ここで、Lは、ワークスペース座標系における原点321から、ワークスペース座標系における赤外線LED320の位置(Xu’,Yu’,Zu’)までの距離であり、以下のようにして計算される。
係る距離Lは、視線方向ベクトルを正規化するために用いられる。
さらに、Δd’nearはワークスペース座標系における位置(Xu’,Yu’,0)からワークスペース座標系における原点321の位置に向かう方向における移動ベクトルで、Δd’farはΔd’nearとは逆の向きの移動ベクトルとなる。それぞれの移動ベクトルΔd’near、Δd’farは以下の式で表される。
ただし、L2は、ワークスペース座標系における原点321の位置と、ワークスペース座標系における位置(Xu’,Yu’,0)との間の距離を表す。距離L2は以下の式に基づいて決まる。
ここで、ワークスペース座標系における赤外線LED320の位置(Xu’,Yu’,Zu’)を、ベース座標系における位置に変換する為には、以下に説明する変換処理が必要となる。以下では、係る変換処理について説明する。
先ず、ベース座標系からワークスペース座標系への変換行列をMbtとする。変換行列Mbtは、以下の式に示す如く、ベース座標系からワークスペース座標系への並進移動Tbtと、回転行列Rbtとで構成されている。
ここで、ベース座標系における赤外線LED320の位置(Xu,Yu,Zu)は、変換行列Mbtを用いて、ワークスペース座標系における赤外線LED320の位置(Xu’,Yu’,Zu’)に変換することができる。以下に、係る変換を示す式を示す。
従って、ワークスペース座標系における赤外線LED320の位置(Xu’,Yu’,Zu’)から、ベース座標系における赤外線LED320の位置(Xu,Yu,Zu)は、以下のようにして求めることができる。
ここで、ワークスペース座標系におけるエンドエフェクタの移動ベクトルを(Dx’,Dy’,Dz’)とする。この場合、係る移動ベクトルに相当する、ベース座標系における移動ベクトル(Dx,Dy,Dz)は、変換行列Mbtを用いて以下のようにして求めることができる。
更に、ロボットの制御装置は、メカニカルインターフェース部の座標系を指示することで、逆運動学を用いて各関節角度を制御することが可能となっており、メカニカルインターフェース座標系での移動量をロボットのコントローラへ指示することも可能である。ベース座標系での移動量(Dx,Dy,Dz)をメカニカルインターフェース座標系での移動量(Dmx,Dmy,Dmz)に変換する為にはベース座標からメカニカルインターフェース座標系への変換行列Mbmを用いて次のように演算を行う。
次に、移動方向指示のそれぞれに対応する、ベース座標系におけるエンドエフェクタの移動ベクトルを以下の式に基づいて求める。ここで、移動方向指示には、Bup、Bdown、Bleft、Bright、Bnear、Bfarがある。また、ベース座標系におけるエンドエフェクタの移動ベクトルには、Δdup、Δddown、Δdleft、Δdright、Δdnear、Δdfarがある。なお、係る演算処理には、ベース座標系からワークスペース座標系への変換行列Mbtと、ベース座標系からメカニカルインターフェース座標系への変換Mbmとを用いている。
このように、式1〜式11を用いて行った演算処理は、ユーザの視点の位置から、移動方向指示された方向への移動ベクトルを、ロボット500を基準として定義される座標系における移動ベクトルに変換する演算処理に等価である。
次に、ベース座標系におけるエンドエフェクタの位置をH(Xd,Yd,Zd)とする。また、移動方向指示Bupが入力された場合に、エンドエフェクタの移動先の位置をHupとする。同様に移動方向指示Bdown、Bnear、Bfar、Bleft、Brightが入力された場合に、エンドエフェクタの移動先の位置をそれぞれ、Hdown、Hnear、Hfar、Hleft、Hrightとする。この場合、それぞれの移動先の位置は以下の式に基づいて決まる。
これにより、操作盤210からの移動方向指示に対応する、ベース座標系における移動ベクトルを求めることができるので、結果として、係る移動ベクトルで指し示される移動先を求めることができる。なお、以上説明したように、移動方向指示に基づいて移動ベクトルを求めるための一連の処理は、操作座標変換部400により行われる。そして操作座標変換部400は、このようにして求めた移動先の位置を示す移動指示を、ロボット制御接続口401を介してロボット500に送出する。即ち、変換後の移動ベクトルに従って、制御対象の可動部分を移動させる為の指示を、ロボット500に対して出力する。
次に、操作装置100を構成する操作入力部200が行う処理について、図6のフローチャートを用いて、より詳細に説明する。図6は、操作入力部200が行う処理のフローチャートである。
操作者299が操作盤210に備わっている上記ボタンやスティックを操作すると、ボタンが押下されたことを示す信号や、スティックを傾倒した方向を示す信号などが、上記動作指示として操作盤接続口201を介して操作入力部200に入力される。従って、ステップS250では、係る動作指示を示す信号を、操作盤接続口201を介して操作盤210から取得する。
次にステップS251では、操作入力部200は、ステップS250で取得した信号が、緊急停止ボタン214が押下されたことを示すものであるのかを判断する。係る判断の結果、緊急停止ボタン214が押下されたことを示す信号をステップS250で取得していたのであれば、処理をステップS256に進める。一方、緊急停止ボタン214が押下されたことを示す信号以外の信号をステップS250で取得していたのであれば、処理をステップS254に進める。ステップS251における処理を、操作盤210から信号を取得してから最初に行う理由としては、ロボット500の動作を停止する命令が最優先で処理されなくてはならないからである。
ステップS256では、操作入力部200は、ロボット500の動作を緊急停止させるための制御信号(緊急停止信号)を、操作座標変換部400に対して送出する。係る制御信号は、操作座標変換部400を介してロボット500に送出される。
一方、ステップS254では、操作入力部200は、操作盤接続口201を介して操作盤から受けた信号に基づいて、対応する動作機能を特定する。上述の通り、操作入力部200には、操作盤210に備わっているボタンやスティックのそれぞれの動作機能が登録されている。ここでは、それぞれの動作機能は、テーブル形式で登録されているものとしている。これは、操作者299が操作しやすいようにボタンやスティックの配置を変更した場合にも対応できるようにするためである。しかし本実施形態は、テーブル形式の登録に限定するものではない。
次に、ステップS255では、操作入力部200は、ステップS254において特定した動作機能を実行させるための指示信号を、操作座標変換部400に送出する。
次に、操作者位置計測部300が行う処理について、図7のフローチャートを用いて、より詳細に説明する。図7は、操作者位置計測部300が行う処理のフローチャートである。
ステップS350では、操作者299の頭部の位置(赤外線LED320の位置)を示す信号を、計測センサ接続口301を介して取得する。
次に、ステップS351では、ステップS350で取得した信号が示す位置について妥当性をチェックする。赤外線センサを用いた場合、外光やリモコンなどに反応して操作者の位置を誤検出する場合がある。それを操作者の位置として処理を続けると、間違った指示をロボットに与えることになる。ここでは、操作者299の頭部の位置が既定した作業範囲内に位置するか否かをチェックすることで、ノイズによる誤検出であるかどうかを判断する。ここで、過去の計測結果などを保持しておき、カルマンフィルタなどを用いて計算される分散値の大小により判断することで、より誤検出を除外することができる。
ステップS351における判断処理の結果、ステップS350で取得した信号が示す位置が作業範囲内であると判断した場合には、ステップS354に処理を進める。一方、作業範囲外であると判断した場合には、処理をステップS356に進める。
ステップS356では、操作者299の頭部の位置は得られなかったとして、その旨を示す信号を操作座標変換部400に送出する。
一方、ステップS354では、ステップS350で取得した信号が示す位置、即ち、赤外線LED320の位置を、ワークスペース座標系における位置に変換する。ワークスペース座標系は、作業対象のワークやワークの搬送経路に応じて操作者299が設定する座標系である。ロボット500に対する動作指示は、ワークに対するロボット500の動作を指示ものであるので、ここでは、ベース座標系で計測された位置をワークスペース座標系における位置に変換する。なお、ベース座標系からワークスペース座標系への変換行列は、事前に設定されているものとする。従って、係る変換行列を用いれば、ステップS354における処理を行うことができる。
次に、ステップS355では、ステップS354で求めた、ワークスペース座標系における操作者299の頭部の位置(ワークスペース座標系における赤外線LED320の位置)を示す信号を、操作座標変換部400に対して送出する。
次に、操作座標変換部400が行う処理について、図8のフローチャートを用いて、より詳細に説明する。図8は、操作座標変換部400が行う処理のフローチャートである。
先ず、ステップS450では、操作入力部200から送出された指示信号、若しくは緊急停止信号を取得する。
ステップS451では、ステップS450で取得した信号が、緊急停止信号であるか否かを判断する。係る判断の結果、ステップS450で取得した信号が、緊急停止信号である場合には、処理をステップS453に進める。一方、ステップS450で取得した信号が、指示信号である場合には処理をステップS455に送出する。
ステップS453では、操作入力部200から取得した緊急停止信号を、ロボット制御接続口401(もしくは緊急停止用信号線)を介してロボット500に送出する。これにより、ロボット500を緊急停止させることができる。
一方、ステップS455では、基本的には、操作者位置計測部300から送出された、ワークスペース座標系における操作者299の頭部の位置を示す信号を取得する。しかし、本ステップでは、操作者299の頭部の位置は得られなかった旨を示す信号を取得する可能性もある。即ち、ステップS455では、操作者位置計測部300から送出された信号を取得する。
ステップS456では、ステップS455で取得した信号が、操作者299の頭部の位置は得られなかった旨を示す信号であるのか否かを判断する。係る判断の結果、操作者299の頭部の位置は得られなかった旨を示す信号をステップS455で受信していた場合には、本処理を終了させる。即ち、ロボット500への制御信号は、例え、操作盤210からの入力があったとしても送らない。これにより、誤った位置計測結果による誤動作が発生しないように防ぐことができる。
一方、ステップS456における判断の結果、ステップS455で取得した信号が、ワークスペース座標系における操作者299の頭部の位置を示す信号である場合には、処理をステップS459に進める。
ステップS459では、ワークスペース座標系における操作者299の頭部の位置から、ステップS450で取得した指示信号が示す移動方向指示で指示する方向Bへの移動ベクトルΔd’を算出する。方向Bは、Bup,Bdown,Bleft,Bright,Bfar,Bnearの何れかを想定している。また、移動ベクトルΔd’は、方向Bに対するΔd’up、Δd’down、Δd’left、Δd’right、Δd’far、Δd’nearを想定している。
ステップS460では、ワークスペース座標系において求めた移動ベクトルΔd’をベース座標系における移動ベクトルΔdに変換する。ベース座標系からワークスペース座標系への変換行列は、処理が行われる前に既定されているものとしている。
ステップS461では、ベース座標系における制御対象としての可動部分(上記例ではエンドエフェクタ)の位置Hに、Δdを加えることで、ベース座標系における移動先の位置を求める。
ステップS462では、ステップS461で求めた移動先の位置を示す信号を、移動指示として、ロボット制御接続口401を介してロボット500に送出する。
<変形例>
操作盤210からの入力に対して、操作座標変換部400ではワークスペース座標系における移動ベクトルΔd’を、図8のステップS459にて算出している。その際、方向指示入力スティック211を傾倒することで移動するエンドエフェクタの単位時間あたりの移動量をkとして、Δd’を算出した。
ロボット500に対する動作指示を与えるときの操作者299の視点位置については、ワーク(エンドエフェクタによる操作対象物)とロボット500のエンドエフェクタとの干渉および位置関係を把握する必要がある。操作者299は、ワークとエンドエフェクタとが良く観察できる位置から作業を行うことが一般的である。その際に干渉が確認しやすい左右方向への移動量と、干渉がわかりにくい前後方向の移動量に差を持たせることで、間違って方向を入力したときのロボット位置の変位を少なくする効果がある。
係る点について一例を挙げて説明する。路面において自分に向かって近づいてくる車と自分との距離は、車の相対的な大きさの変化によって認知される。そのため、ある程度の移動を伴わないと相対的な距離が知覚されにくい。一方、車が自分に対して横方向に移動する場合は、距離によらず認知しやすい。
このような知覚の性質により、移動が知覚されにくい方向への動きに対しては実際の入力単位よりも少なくすることで、間違った入力がなされたときにロボットのエンドエフェクタと他の物体との衝突による破損などの事故を抑える効果がある。
図9は、操作盤210から、移動方向指示Bup,Bdown,Bfar,Bnearのそれぞれが入力された場合における、ワークスペース座標系における可動部分の移動ベクトルΔd’up、Δd’down、Δd’far、Δd’nearを示す図である。
図9(a)のワークスペース座標系での赤外線LED320の位置を(Xu’,Yu’,Zu’)とする。この場合、ワークスペース座標系における原点と(Xu’,Yu’,Zu’)を含む平面で観察したものである。
先ず、Δd’left, Δd’rightについては、以下の式に示す如く、Z2軸と視線方向ベクトルの外積ベクトルから求める。この場合、視線位置の違いによる移動量の変化は無い。
ここで、Lは、(Xu’,Yu’,Zu’)からワークスペース座標系における原点までの距離を示し、以下の式によって求めることができる。
次に、ワークスペース座標系における原点と(Xu’,Yu’,Zu’)とを結ぶベクトルと、Δd’leftとの外積ベクトルをV1とする。外積ベクトルV1は以下の式に基づいて求めることができる。
一方、ワークスペース座標系における原点と(Xu’,Yu’,Zu’)とを結ぶベクトルと、X2−Y2平面とが成す角度θを用いてcosθを求める。cosθは、(Xu’,Yu’,Zu’)と、係る位置をX2−Y2平面に射影した(Xu’,Yu’,0)との内積から求めることができる。
そこで、Δd’upは、以下の式に示す如く、外積ベクトルV1のZ2軸への射影した結果とする。
|V1|は、V1のノルムであり、以下の式が示す内容に等価である。
Δd’downは、Δd’upとは対称ベクトルなので、以下の式で表される。
さらに、Δd’farは、外積ベクトルV1をX2−Y2平面に射影した結果としての射影ベクトルとすると、sinθを用いて、以下のように表すことができる。
同様にΔd’nearは、Δd’farと対称なので、以下の式で表される。
ただし、L2は、以下の式に示す如く、ワークスペース座標系における原点と(Xu’,Yu’,0)との距離とする。
以上の関係を用いると、図9(b)に示す如く、ワークスペース座標系における赤外線LED320の位置とワークスペース座標系における原点とを結ぶベクトルと、X2−Y2平面との成す角度が小さい場合には、次のようなことが明確になる。即ち、操作者がワークを水平面に近い位置から観察している場合は、Δd’farおよびΔd’nearは図9(b)に示す如く、図9(a)よりも小さくなる。これは、ワークを水平面近くから観察しているときには、ロボットのエンドエフェクタが操作者に対して遠ざかる方向および近づく方向への移動に対して知覚しづらいため、その方向への移動量を入力単位に対して小さく設定している。これにより、ワークの影により確認しずらい状態であるワークの奥の物体との接触を移動量を小さくすることで抑える効果が期待される。
[第2の実施形態]
図10には、操作者の頭部に設置したカメラ340と、ベース座標系で規定する空間中に貼り付けられた幾何学的な特徴を有する指標330と、を用いて、操作者の頭部位置を計測する為の構成を示している。図10は、本実施形態に係るシステムの外観例を示す図である。本実施形態では、指標330として、非特許文献1に開示されているように、幾何学的な特徴を有するものとして図形の辺が画像処理により検出しやすい特徴を有する四角形とする。四角形の頂点の3次元位置は既知とするので、カメラ340による撮像画像から四角形の頂点が検出されれば、周知の技術により、カメラ340の位置姿勢を推定することができる。
図10において、指標画像3次元計測装置341は、カメラ340による撮像画像を取得し、係る撮像画像に対する画像処理でもって、カメラ340の位置姿勢を計測する。そして、計測した位置姿勢を示す信号を、操作装置100に対して送出する。操作装置100は、第1の実施形態と同様に動作する。
なお、カメラ340の撮像範囲が操作者の視野と重なるように、カメラ340を操作者の頭部に装着することで、操作者が向いている方向の現実空間を撮像することができる。従って、操作者が指標330を観察している場合には、カメラ340もまた、この指標330を撮像していることになる。
ここで、カメラ340が指標330を撮像していないと、指標画像3次元計測装置341は指標330を含む撮像画像を得ることができないので、結果として、カメラ340の位置姿勢を求めることができなくなる。すると、操作装置100もまた、係る位置姿勢を取得することができなくなるため、ロボットの制御を行うことができなくなる。即ち、操作者の頭部がロボット側に向いていない時に操作者が操作盤に対して指示入力を行っても、係る入力は無効となってしまう。
これにより、操作者がよそ見をしているときに誤入力を行ってしまったことで、操作者の意図しない動きをロボットに与える指示を行ってしまったとしても、係る指示を無効化することができるため、作業の安全性がより確保される。また、操作者の位置姿勢の計測を行う上で、コストも低く抑えられる。
[第3の実施形態]
図11は、本実施形態に係るシステムの機能構成例を示すブロック図である。本実施形態では、単にロボット500の可動部分を制御するだけでなく、可動部分(駆動部)の動作確認シミュレートを行い、その結果を操作者に確認させるべく、かかる結果を表示する。
操作装置101は、図1の操作入力部200、操作者位置計測部300、操作座標変換部400、操作盤接続口201、計測センサ接続口301、ロボット制御接続口401に加え、動作出力切り替え部410、動作出力保持部420、接続口402を有する。
動作出力切り替え部410は、操作者の身体感覚に近い座標系で与えられた動作指示をベース座標系に変換する操作座標変換部400から出力された信号を、ロボット500、駆動部動作シミュレータ装置700、の何れか若しくは両方に出力する。
このような動作出力切り替え部410による出力先の切り替え制御は、操作盤210に設けられた切り替えスイッチに対する操作に応じて行われる。即ち、係る切り替えスイッチに対する操作結果を、操作盤210、操作盤接続口201、操作入力部200を介して動作出力切り替え部410が受けると、動作出力切り替え部410は、係る操作結果に応じて、出力先を切り替える制御処理を行う。
また、動作出力保持部420には、操作盤210から順次入力されるそれぞれの動作指示を一時的に保持しておくことができる。これにより、動作出力切り替え部410によって、一連の動作入力の結果をまとめて駆動部動作シミュレータ装置700、若しくはロボット500に対して出力することができる。
駆動部動作シミュレータ装置700は、操作座標変換部400からの信号に基づいて、ロボット500の動き(ロボット500の各関節の位置姿勢情報)をシミュレートする。係るシミュレートでは、操作装置101側で求めた各可動部分の移動先の位置に基づいて、実際のロボット500の各可動部分の各関節の位置姿勢情報を求める。
動作確認画像生成装置710は、駆動部動作シミュレータ装置700から得られたロボット500の各関節の位置姿勢情報に基づいて、各可動部分を表す仮想物体を配置することで、ロボット500を表す3次元グラフィックスを描画する。なお、3次元グラフィックスを描画する際の視点の位置姿勢は、指標画像3次元計測装置341から得られるカメラ340の位置姿勢を利用する。
画像提示装置600は、例えば、HMD(ヘッドマウントディスプレイ)であり、動作確認画像生成装置710が生成した画像を表示する。
操作者は、自身の視点の位置姿勢に応じて、ロボットへの入力を行うとどのようにロボットが動くのかをコンピュータグラフィックスにより検証することが可能となる。
さらに、観察したシミュレータの動作に対して、操作者が意図した動きであると判断した場合は、ロボットへの実際の動作指示として実行するように操作盤から切り替えスイッチを用いて入力すれば良い。即ち、ロボットの動きを一度シミュレータで確認し、目的の動作であることを確認した上で、実際のロボットを動作させることで、操作入力の間違いによる誤動作を抑えることができる。さらに、インチング動作による僅かな動作入力が低減するため、ロボットのアクチュエータへのダメージも軽減できる。
[第4の実施形態]
本実施形態では、制御対象のロボットが移動可能である場合に、係るロボットが有する可動部分についての制御を行う。
図12は、本実施形態に係るシステムの外観例を示す図である。
移動型ロボット550は、車輪により床面上を自由に移動することができる。また、移動型ロボット550は、可動部分としてのマニュピレータを有しており、係るマニュピレータにより物体を把持したり、移動させたりすることができる。この場合、移動型ロボット550のベース座標系は移動型ロボット550の移動に伴い変化する。本実施形態では、可動部分を有するロボットと、係るロボットを操作制御する操作者との相対位置関係が求められれば良いので、何らかの方法で係る移動型ロボット550の位置を取得できればよい。
例えば、移動型ロボット550に、幾何学的な特徴を有する指標334を貼付し、操作者の頭部には、その指標334を撮像するカメラ340を装着する。また、指標334とロボット550のベース座標系とのローカルトランスフォームは既定されているものとする。ローカルトランスフォームとは、指標を既定するローカル座標系と、ロボット550のベース座標系との変換行列である。
係る構成の場合、カメラ340による撮像画像中に指標334が含まれている場合は、指標画像3次元計測装置341により、指標334が貼付されている移動型ロボット550のベース座標系におけるカメラ340の位置姿勢を計測することができる。そして指標画像3次元計測装置341は、求めた位置姿勢を示す信号を、操作装置100に送出する。操作装置100の動作については第1の実施形態で説明したとおりである。なお、本実施形態では、操作装置100は、移動型ロボット550への指示を、無線装置404を介して、無線でもって移動型ロボット550に送信する。
これにより、操作者が観察するときの身体の座標系に近い操作が可能となる。これにより、障害物を回避するように操作者から右手方向へ移動させたい場合は、操作盤から右手方向への移動指示を入力することにより、移動型ロボット550の進行方向によらず、右手方向へ移動するように指示することができる。
[第5の実施形態]
図1,11にそれぞれ示した操作装置100、101を構成する各部はソフトウェアで実装しても良い。この場合、操作装置100、101として一般のPCを適用し、係るPCが有するメモリに上記ソフトウェアをインストールする。そして、係るソフトウェアを、係るPCが有する制御部が読み出して実行すれば、係るPCは、上記操作装置100、101と同様の動作を行うことになる。
図13は、操作装置100、101に適用可能なコンピュータのハードウェア構成例を示すブロック図である。
CPU1301は、RAM1302やROM1303に格納されているプログラムやデータを用いて、本コンピュータ全体の制御を行うと共に、操作装置100、101が行うものとして上述した各処理を実行する。
RAM1302は、外部記憶装置1306からロードされたプログラムやデータ、I/F(インターフェース)1307を介して外部から受信した様々なデータ、を一時的に記憶するためのエリアを有する。更に、RAM1302は、CPU1301が各種の処理を実行する際に用いるワークエリアを有する。即ち、RAM1302は、各種のエリアを適宜提供することができる。
ROM1303には、本コンピュータの設定データや、ブートプログラムなどが格納されている。
操作部1304は、キーボードやマウスなどにより構成されており、本コンピュータの操作者が操作することで、各種の指示をCPU1301に対して入力することができる。
表示部1305は、CRTや液晶画面などにより構成されており、CPU1301による処理結果を画像や文字などでもって表示することができる。
外部記憶装置1306は、ハードディスクドライブ装置に代表される大容量情報記憶装置である。外部記憶装置1306には、OS(オペレーティングシステム)や、操作装置100、101が行うものとして上述した各処理をCPU1301に実行させるためのプログラムやデータ等が保存されている。係るプログラムには、操作入力部200、操作者位置計測部300、操作座標変換部400、動作出力切り替え部410、動作出力保持部420のそれそれの機能をCPU1301に実行させるためのプログラムが含まれている。更に、係るデータには、上述の説明において、既知の情報として説明したものや、操作装置100、101が保持しているものとして説明した情報、更には、当業者であれば当然の如く用いるであろう情報が含まれている。外部記憶装置1306に保存されているプログラムやデータは、CPU1301による制御に従って適宜RAM1302にロードされ、CPU1301による処理対象となる。
I/F1307は、上記操作盤接続口201、計測センサ接続口301、ロボット制御接続口401、接続口402、に対応するものである。図13では、I/F1307は1つしか示しておらず、この1つのI/F1307でもって、操作盤接続口201、計測センサ接続口301、ロボット制御接続口401、接続口402、を兼ねている。しかし、操作盤接続口201、計測センサ接続口301、ロボット制御接続口401、接続口402のそれぞれに対応するI/F1307(即ち4つのI/F1307)を本コンピュータに設けても良い。I/F1307を介して受信した情報はRAM1302や外部記憶装置1306に送出される。
1308は上述の各部を繋ぐバスである。
[その他の実施形態]
また、本発明の目的は、以下のようにすることによって達成されることはいうまでもない。即ち、前述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記録媒体(または記憶媒体)を、システムあるいは装置に供給する。係る記憶媒体は言うまでもなく、コンピュータ読み取り可能な記憶媒体である。そして、そのシステムあるいは装置のコンピュータ(またはCPUやMPU)が記録媒体に格納されたプログラムコードを読み出し実行する。この場合、記録媒体から読み出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコードを記録した記録媒体は本発明を構成することになる。
また、コンピュータが読み出したプログラムコードを実行することにより、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているオペレーティングシステム(OS)などが実際の処理の一部または全部を行う。その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
さらに、記録媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張カードやコンピュータに接続された機能拡張ユニットに備わるメモリに書込まれたとする。その後、そのプログラムコードの指示に基づき、その機能拡張カードや機能拡張ユニットに備わるCPUなどが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
本発明を上記記録媒体に適用する場合、その記録媒体には、先に説明したフローチャートに対応するプログラムコードが格納されることになる。