以下、発明の実施の形態を通じて本発明を説明するが、特許請求の範囲に係る発明を以下の実施形態に限定するものではない。また、実施形態で説明する構成の全てが課題を解決するための手段として必須であるとは限らない。
図1は、本実施形態に係る把持装置を備える移動ロボット100の外観斜視図である。図においてxy平面は移動ロボット100の走行面であり、z軸プラス方向は天頂方向を示す。移動ロボット100は、大きく分けて台車部110、本体部120と、把持装置を構成するアームユニット130およびハンドユニット140とによって構成される。
台車部110は、円筒形状の筐体内に、それぞれが走行面に接地する2つの駆動輪111と1つのキャスター112とを支持している。2つの駆動輪111は、互いに回転軸芯が一致するように配設されている。それぞれの駆動輪111は、不図示のモータによって独立して回転駆動される。キャスター112は、従動輪であり、台車部110から鉛直方向に延びる旋回軸が車輪の回転軸から離れて車輪を軸支するように設けられており、台車部110の移動方向に倣うように追従する。移動ロボット100は、例えば、2つの駆動輪111が同じ方向に同じ回転速度で回転されれば直進し、逆方向に同じ回転速度で回転されれば台車部110の2つの駆動輪111の中央を通る鉛直軸周りに旋回する。
本体部120は、アームユニット130を支持すると共に、ユーザインタフェースの一部を成す表示パネル123を有する。表示パネル123は、例えば液晶パネルであり、キャラクターの顔を表示したり、移動ロボット100に関する情報を提示したりする。表示パネル123は、表示面にタッチパネルを有し、ユーザからの指示入力を受け付けることができる。
本体部120は、アームユニット130およびハンドユニット140の動作範囲を見渡せる位置に第1撮像ユニット121を有する。第1撮像ユニット121は、例えばCMOSイメージセンサである撮像素子と画像データ生成部を含み、アームユニット130およびハンドユニット140の動作空間を撮像して生成した画像データを出力する。また、本体部120には、コントロールユニット190が設けられている。コントロールユニット190は、後述の制御部とメモリ等を含む。
本体部120に支持されたアームユニット130は、アーム部の一例であり、例えば図示するように2つのリンクを有し、それぞれのリンク基端に設けられた不図示のモータの駆動によって様々な姿勢を取り得る。アームユニット130の先端部にはハンドユニット140が接続されており、ハンドユニット140の全体は、アームユニット130の先端リンクの伸延方向と平行な旋回軸周りに、不図示のモータの駆動によって旋回し得る。ハンドユニット140は、ハンド部の一例であり、先端部に不図示のモータによって駆動される第1フィンガー140aと第2フィンガー140bを備える。第1フィンガー140aと第2フィンガー140bは、点線矢印で示すようにそれぞれが互いに接近するように動作して、対象物を挟持することにより把持を実現する。
ハンドユニット140のうち第1箇所として予め設定された位置に、第2撮像ユニット141が配設されている。また、ハンドユニット140のうち第2箇所として予め設定された位置に、指標142が配設されている。第1箇所は、設置する第2撮像ユニットによって指標142を観察可能な位置に設定される。第2箇所は、床面方向(図の座標軸においてz軸マイナス方向)を向く面に設定される。本実施形態においては、第1箇所は、第1フィンガー140aと第2フィンガー140bの支持基部の下面側に設定され、第2箇所は、第2フィンガー140bの下面側に設定されている。
第2撮像ユニット141は、観察部の一例であり、例えばCMOSイメージセンサである撮像素子と画像データ生成部を含み、指標142の近傍空間を撮像して生成した画像データを出力する。指標142は、例えば十字形状などの画像認識しやすいマーカーであり、マーカーが印刷されたシールが第2箇所に貼着されていても良いし、第2箇所に直接的に印刷されていても良い。指標142は、第2撮像ユニット141によって撮像され、画像認識可能な指標であれば構わない。
図2は、移動ロボット100の制御ブロック図である。制御部200は、例えばCPUであり、本体部120のコントロールユニット190に格納されている。駆動輪ユニット210は、駆動輪111を駆動するための駆動回路やモータを含み、台車部110に設けられている。制御部200は、駆動輪ユニット210へ駆動信号を送ることにより、駆動輪111の回転制御を実行する。
アームユニット130は、図1を用いて説明した構造体の他にも、モータを駆動する駆動回路や動作量を監視するためのエンコーダ等を備える。制御部200は、アームユニット130へ駆動信号を送ることにより、アームの動作や姿勢を制御する。ハンドユニット140は、図1を用いて説明した構造体の他にも、モータを駆動する駆動回路や動作量を監視するためのエンコーダ等を備える。制御部200は、ハンドユニット140へ駆動信号を送ることにより、ハンドの動作や姿勢を制御する。
センサユニット220は、移動中に障害物を検出したり、外部からの接触を検出したりする各種センサを含み、台車部110および本体部120に分散して配置されている。制御部200は、センサユニット220に制御信号を送ることにより、各種センサを駆動してその出力を取得する。
第1撮像ユニット121は、上述のように、アームユニット130およびハンドユニット140の動作範囲を観察するために利用され、制御部200の撮像指示に従って撮像を実行する。第1撮像ユニット121は、生成した画像データを制御部200へ引き渡す。第2撮像ユニット141は、上述のように、指標142の近傍空間を観察するために利用され、制御部200の撮像指示に従って撮像を実行する。第2撮像ユニット141は、生成した画像データを制御部200へ引き渡す。
メモリ240は、不揮発性の記憶媒体であり、例えばソリッドステートドライブが用いられる。メモリ240は、移動ロボット100を制御するためのロボット制御プログラムの他にも、制御に用いられる様々なパラメータ値、関数、ルックアップテーブル等を記憶している。ロボット制御プログラムは、把持装置を構成するアームユニット130およびハンドユニット140を制御するための把持制御プログラムを包含する。ユーザIF260は、表示パネル123や、例えば合成音声を発話するスピーカなどであり、制御部200の制御に従ってユーザに情報を提供したり、ユーザの指示を受け付けたりするためのユーザインタフェースである。
制御部200は、制御に関わる様々な演算を実行する機能演算部としての役割も担う。把持制御部201は、対象物を把持する把持動作を制御する。判定部202は、ハンドユニット140が対象物の把持に成功したか否かを判定する。それぞれの具体的な演算内容については、順に詳述する。
図3は、ハンドユニット140が把持動作を開始する様子を示す図である。ここでは、ハンドユニット140が把持を試みる把持対象を、テーブル910上に載置されたタオル900であるとする。タオル900は、把持すると重力の影響を受けて全体の形が変形する対象物の一例である。このような対象物としては、布類の他にも、紙、革、ケーブルなどが挙げられる。
ハンドユニット140は、第1フィンガー140aおよび第2フィンガー140bを開き、第2撮像ユニット141を配設した第1箇所および指標142を配設した第2箇所が床面方向(ここではテーブル上面方向)を向く姿勢で、タオル900へ接近する。具体的には、把持制御部201は、第1撮像ユニット121から得た画像データを用いて、タオル900のうち把持可能な部分を決定する。そして、ハンドユニット140を上記の状態に整え、アームユニット130を決定した把持可能部分へ向けて(図の太矢印方向)推進させる。
図4は、図3に続き、ハンドユニット140が対象物であるタオル900を把持する様子を示す図である。把持制御部201は、開いた第1フィンガー140aおよび第2フィンガー140bの間にタオル900の把持可能部分を収めたと認識したら、それぞれのフィンガーを太矢印の方向へ駆動して当該把持可能部分を挟み込む。
ここまでの動作は対象物を把持する把持動作であり、形状が変形するという対象物の性質から、制御部200は、この段階では実際に把持に成功しているか否かについては認識できていない場合が多い。そこで、本実施形態においては、制御部200は、対象物の把持に成功しているかを判定するための判定動作を実行する。判定動作は、把持動作を実行した後にハンドユニット140を静止させた状態で、ハンドユニット140に挟持されていない対象物の一部分が第2箇所を覆い得るようにアームユニット130を動作させてハンドユニットの全体を変位させるものである。以下に、判定動作のいくつかの例を説明する。
図5は、第1の判定動作を説明する図である。第1の判定動作は、ハンドユニット140の全体を持ち上げる動作である。判定部202は、把持動作が完了したハンドユニット140を、アームユニット130を制御して太線矢印で示す上方(z軸プラス方向)へ移動させる。ハンドユニット140がタオル900の把持に成功していれば、タオル900は、テーブル910の上面から持ち上げられ、フィンガー140aおよび第2フィンガー140bで挟持された部分よりも下の部分が垂れ下がる。すると、垂れ下がった部分が、第2撮像ユニット141と指標142の間に介在して、第2撮像ユニット141からは指標142が観察できなくなる。判定部202は、この現象を利用する。すなわち、判定部202は、第1の判定動作を行った結果、それまで観察できていた指標142が観察できなくなった場合に、ハンドユニット140がタオル900の把持に成功していると判定する。具体的には、判定部202は、判定動作行ってから第2撮像ユニット141に撮像信号を送信し、その結果取得された画像データを解析して、指標142が写り込んでいないことを確認する。なお、第1の判定動作は、真上に持ち上げる動作に限らず、周囲の状況等に応じて斜め上方へ持ち上げる動作であっても良い。
図6は、第2の判定動作を説明する図である。第2の判定動作は、ハンドユニット140の全体をアームユニット130に対して旋回させる動作である。判定部202は、把持動作が完了したハンドユニット140を、アームユニット130を制御して太線矢印で示す方向へ旋回させる。すなわち、ハンドユニット140がタオル900の把持に成功していれば、タオル900の垂れ下がった部分あるいは巻き付いた部分により指標142が覆われるようにハンドユニット140を旋回させる。判定部202は、第2の判定動作を行った結果、それまで観察できていた指標142が観察できなくなった場合に、ハンドユニット140がタオル900の把持に成功していると判定する。具体的には、判定部202は、判定動作行ってから第2撮像ユニット141に撮像信号を送信し、その結果取得された画像データを解析して、指標142が写り込んでいないことを確認する。なお、第2の判定動作は、指標142を第1フィンガー140aの下面に設けた場合には、図の太線矢印とは反対側へ旋回させると良い。また、テーブル910とハンドユニット140の距離が近いなどの状況によっては、ハンドユニット140を一旦テーブル910から離間させた後に旋回しても良い。
図7は、第3の判定動作を説明する図である。第3の判定動作は、ハンドユニット140の全体をテーブル910の表面と平行な方向へ振る動作である。判定部202は、把持動作が完了したハンドユニット140を、アームユニット130を制御して太線矢印で示す方向へ何度か往復運動させる。ハンドユニット140がタオル900の把持に成功していれば、タオル900の垂れ下がった部分が揺らいで断続的に第2撮像ユニット141と指標142の間に介在する。判定部202は、第3の判定動作を開始した後に、それまで観察できていた指標142が断続的にまたは継続して観察できなくなった場合に、ハンドユニット140がタオル900の把持に成功していると判定する。具体的には、判定部202は、判定動作開始後に第2撮像ユニット141に撮像信号を連続的に送信し、その結果取得された画像データを解析して、指標142が断続的にまたは継続して写り込んでいないことを確認する。
以上3つの判定動作について説明したが、判定部202は、判定動作を行って得られた画像データに指標142が写っていた場合は、把持不成功と判定しても良いし、把持状況不明と判定しても良い。把持不成功と判定する場合は、制御部200は、さらに把持動作をやり直しても良い。把持状況不明と判定する場合は、判定部202は、別の判定動作を実行して再判定を行っても良いし、より厳密な他の判定手法を用いて判定しても良い。また、判定動作は、上記の3つに限らず、把持動作を実行した後にハンドユニット140を静止させた状態で、ハンドユニット140に挟持されていない対象物の一部分が第2箇所を覆い得るようにアームユニット130を動作させてハンドユニットの全体を変位させるものであれば良い。
なお、以上の説明において、「下面」は、ハンドユニット140が把持動作を実行する場合に床面方向を向き得る面であることを意味し、常に床面方向を向いている場合を意味するものではない。上述のように、ハンドユニット140は、アームユニット130の先端リンクに対して旋回可能であるので、把持動作中や搬送中に第1箇所や第2箇所が床面方向ではない方向へ向いても構わない。また、「床面方向を向く面」は、床面と正対する面に限らず、面の法線が重力方向の成分を有するものであれば良い。いずれにしても、把持する対象物の一部が重力によって垂れ下がった場合に、第1箇所と第2箇所の間に当該対象物が介在する関係にあれば良い。
次に、移動ロボット100による搬送物の搬送処理について説明する。図8は、第1の搬送処理を説明するフロー図である。図示するフローは、搬送タスクのうち把持動作を含む一部分であり、移動ロボット100が、搬送対象物付近に到達した時点から開始する。搬送対象物は、把持すると重力の影響を受けて全体の形が変形するものである。
把持制御部201は、ステップS101で、搬送対象物に対して把持動作を実行する。具体的には、図3および図4を用いて説明した動作と同様の動作を実行する。把持動作が完了したら、ステップS102へ進み、制御部200は、搬送タスクに規定された搬送動作を開始する。
制御部200は、搬送動作を開始すると共に、規定時間以内の搬送動作に判定動作と一致する動作が含まれるか否かを判断する(ステップS103)。例えば、搬送対象物を持ち上げる動作は、一般的な搬送動作に含まれることが多い。この場合に判定部202は、搬送動作が上述の第1の判定動作と一致する動作を含むと判断して、搬送対象物を持ち上げるこの動作を判定動作として利用する。すなわち、判定部202は、規定時間以内の搬送動作に判定動作と一致する動作が含まれると判断した場合には、その動作を判定動作として利用することにより、別途判定動作を実行することを省略して、搬送タスク完遂の時間短縮を図る。一方、規定時間以内の搬送動作に判定動作と一致する動作が含まれないと判断した場合は、判定部202は、別途判定動作を実行する(ステップS104)。
判定部202は、ステップS105へ進み、把持判定を行う。具体的には、上述のように、それまで観察できていた指標142が観察できなくなったか否かを確認する。そして、ステップS106へ進み、指標142が観察できなくなった場合には搬送対象物の把持に成功していると判定し、ステップS107へ進む。そうでなければ、ステップS101へ戻って把持制御をやり直す。この場合は、強制的にステップS103からステップS104へ進み、前回とは異なる判定動作を実行するように制御しても良い。なお、ステップS101へ戻る処理が規定回数続いた場合には、一連の処理を停止させても良い。制御部200は、ステップS107へ進んだら、残りの搬送タスクを実行して一連の処理を終了する。
図9は、第1の搬送処理とは別の第2の搬送処理を説明するフロー図である。図示するフローは、搬送タスクのうち把持動作を含む一部分であり、移動ロボット100が、搬送対象物付近に到達した時点から開始する。
制御部200は、ステップS201で、搬送対象物の認識を行う。具体的には、第1撮像ユニット121の画像データを取得し、画像認識技術により搬送対象物を特定する。認識作業が完了したら、ステップS202へ進み、搬送対象物に対して把持動作を実行する。具体的には、図3および図4を用いて説明した動作と同様の動作を実行する。把持動作が完了したら、ステップS203へ進み、ステップS201の認識結果により搬送対象物が把持すると重力の影響を受けて全体の形が変形するものであるか否かを判断する。変形するものであると判断した場合にはステップS204へ進み、そうでないと判断した場合にはステップS206へ進む。
ステップS204へ進んだ場合は、判定部202は、判定動作を実行する。そして、ステップS205へ進み、第1の把持判定として、上述のようにそれまで観察できていた指標142が観察できなくなったか否かを確認する。観察できなくなっていれば把持に成功したと判定する。
ステップS206へ進んだ場合は、判定部202は、第2の把持判定を実行する。第2の把持判定は、剛体に対する把持判定である。剛体に対する把持判定は多く知られているが、例えば、フィンガー140aに設けられた圧力センサが所定値以上の値を示し、かつ、フィンガー140aと第2フィンガー140bが互いに離間している場合に、把持に成功したと判定する。
ステップS205またはステップS206からステップS207へ進むと、制御部200は、判定部202が搬送対象物の把持に成功していると判定した場合にはステップS208へ進み、そうでなければ、ステップS202へ戻って把持制御をやり直す。このとき、ステップS204へ進む場合には、前回とは異なる判定動作を実行するように制御しても良い。なお、ステップS202へ戻る処理が規定回数続いた場合には、一連の処理を停止させても良い。制御部200は、ステップS208へ進んだら、残りの搬送タスクを実行して一連の処理を終了する。
なお、搬送処理は上述の2つに限らず、さまざまに構成し得る。例えば、事前に搬送対象物の認識を行うことなく、搬送対象物が剛体であることを前提に剛体を対象とする判定手法を実行し、この手法で把持していると判定できなかった場合に、判定動作を実行して把持判定する上述の判定手法を実行するようにしても良い。
以上説明した実施形態において、ハンドユニット140に挟持されていない対象物の一部分が第2箇所を「覆う」とは、対象物の一部分と第2箇所が物理的に接触している場合に限らず、第1箇所と第2箇所の間の空間に対象物の一部分が介在することにより、第1箇所から第2箇所が観察できなくなる状態を表す。また、上述の実施形態においては、指標142をマーカーとして設けたが、観察部としての第2撮像ユニット141は、ハンドユニット140における第2箇所の形状そのものを指標に代替する認識対象としても良い。すなわち、第2箇所が対象物の一部に覆われていない場合に観察される輪郭を認識対象とし、この輪郭が画像データから抽出できなくなった場合に、第2箇所を観察できなくなったと判断する。認識対象をこのように定めれば、指標142を特別に設ける手間が省ける。
次にハンドユニットの変形例について説明する。図10は、他の例におけるハンドユニット340の外観斜視図である。ハンドユニット340は、上述のハンドユニット140と同様に第1フィンガー140aおよび第2フィンガー140bを備える。しかし、ハンドユニット140と異なり、第1箇所には第2撮像ユニット141に代えて受光センサ343が配設されており、第2箇所には指標142に代えて赤外光を発光するLED344が配設されている。なお、図においては、把持対象との相対的な位置関係がわかるように、図3等と同様にテーブル910とタオル900を示している。
受光センサ343は、観察部の一例であり、LED344は、発光部の一例である。受光センサ343は、LED344からの発光光を受光することにより第2箇所の状況を観察する。受光センサ343とLED344は、第2箇所に配設されたLED344が対象物に覆われると、受光センサ343がLED344からの発光光を受光できなくなるようにそれぞれ調整されている。
このように、受光部と発光部を第1箇所と第2箇所に設けることによっても、判定動作を通じて対象物の把持に成功したかを判定できる。このような受光部と発光部を設ける構成は、撮像ユニットを用いる構成よりも簡易であり、把持装置としてのコストを軽減できる。
図11は、更に他の例のハンドユニット440の外観斜視図である。ハンドユニット440は、三本爪で対象物を挟み込むクロー型のハンドユニットである。具体的には図示するように、ハンドユニット440は、第1クロー440a、第2クロー440b、第3クロー440cを有し、点線矢印で示すようにそれぞれの先端部が互いに接近するように動作して、対象物を挟むことにより把持を実現する。ハンドユニット440も、ハンドユニット140と同様に、アームユニット130の先端リンクの伸延方向と平行な旋回軸周りに、不図示のモータの駆動によって旋回し得る。ハンドユニット440は、把持対象物の姿勢などに応じて、クローを突き出しやすいように旋回される。なお、図においては、把持対象との相対的な位置関係がわかるように、図3等と同様にテーブル910とタオル900を示している。
ハンドユニット440のうち、3つのクローを動作可能に支持する基体部には、第1受光センサ445a、第2受光センサ445b、第3受光センサ445cが設けられている。第1受光センサ445aは第1クロー440aの基端部近傍に設けられており、第2受光センサ445bは第2クロー440bの基端部近傍に設けられており、第3受光センサ445cは第3クロー440cの基端部近傍に設けられている。また、第1クロー440aの先端部には第1LED446aが設けられており、第2クロー440bの先端部には第2LED446bが設けられており、第3クロー440cの先端部には第3LED446cが設けられている。第1受光センサ445aは、第1LED446aの発光光を受光し他のLEDからの発光光を受光しないように調整されている。第2受光センサ445bは、第2LED446bの発光光を受光し他のLEDからの発光光を受光しないように調整されている。第3受光センサ445cは、第3LED446cの発光光を受光し他のLEDからの発光光を受光しないように調整されている。
判定部202は、判定動作を実行するときに、どのLEDが把持対象物の一部によって覆われ得るのかを判断し、そのLEDが配設されている箇所を第2箇所であると再設定する。すなわち、ハンドユニット440は把持動作時に旋回され得るので、判定動作時にいずれのLEDが下面方向に向いているかを判断する。そして、判定部202は、そのLEDの発光光を受光するように調整された受光センサが、判定動作の開始後に発光光を受光できたかを確認することにより把持の成功を判定する。
このように、ハンドユニットに複数の発光部と受光部の組を設け、ハンドユニットの姿勢に応じてどの発光部と受光部の組を把持判定に利用するかを事前に決定するようにしても良い。なお、発光部と受光部の組に代えて、ハンドユニット140のように撮像ユニットと指標の組を設けても良い。このような構成を採用すれば、さまざまな形式のハンドユニットに対して、上述の判定手法を適用することができる。
以上説明した本実施形態においては、第1箇所と第2箇所は相対的な関係であるので、互いに位置を入れ替えて設定しても良い。例えば、指標142と第2撮像ユニット141の位置を入れ替えても良い。また、複数の指標を配設して、実行する判定動作に応じてどの指標を観察するかを変更しても良い。
また、以上説明した本実施形態においては、搬送物を搬送する移動ロボット100が把持装置を備える例を説明したが、把持装置は、移動機構などを備えない独立した装置であっても構わない。この場合、把持装置の制御に必要なコントロールユニットは、把持装置内に設けられる。