以下、本発明の好ましい実施形態について、添付図面を参照して説明する。まず、図1を参照して、本実施形態における移動体1の構成を説明する。図1(a)は、移動体1およびユーザ2の外観図であり、図1(b)は、図1(a)の矢印Ib方向から見た移動体1の正面図である。移動体1は、ユーザ2の前方にて、ユーザ2に対し適切な位置に移動して、ユーザ2に追従できる装置として機能する。なお、移動体1の移動範囲である「ユーザ2の前方」とは、例えばユーザ2の前方であって、ユーザ2を中心とする180度の範囲である。或いは、ユーザ2の視界の範囲内としてもよい。
図1(a)に示すように、移動体1は、本体部11と、制御部12と、ユーザ認識センサ13と、周辺認識センサ14と、車輪15と、表示部16と、グリップ17と、ジョイスティック18とを有する。本体部11は、略直方体状に形成され、本体部11内には制御部12が格納される。
制御部12は、移動体1の各部を制御するための装置であり、ユーザ認識センサ13と、周辺認識センサ14とから取得した情報をもとに、移動体1の移動速度および移動方向を決定し、それに基づく移動指示を駆動部25(図2参照)を介して、各車輪15に対して行うものである。
ユーザ認識センサ13は、ユーザ2の画像を取得するカメラで構成され、本体部11の側面に設けられる。図1(a)における2点鎖線で描いた三角形のエリアが、ユーザ認識センサ13の検出範囲である。なお、ユーザ認識センサ13の上下位置は、必ずしも固定ではなく、例えば、表示部16と本体部11との間で変更可能に構成して、ユーザ2の身長によらず、ユーザ2全体の画像が適切に取得できるようにしてもよい。
ユーザ認識センサ13は、ユーザ2の画像を取得すると、これを制御部12へ送信する。制御部12は、ユーザ認識センサ13で取得された画像を解析し、ユーザ2の位置とユーザ2が向いている方向とを算出する。このユーザ2の位置およびユーザ2が向いている方向は、移動体1の中心Cを原点(0,0)とした座標系で示す値とされる(以下「移動体座標系」と称す)。なお、ユーザ認識センサ13の水平方向の位置は、移動体1の中心Cからズレているので、制御部12は、その距離差を補正した上でユーザ2の位置を算出する。また、制御部12は、ユーザ認識センサ13で取得された画像を解析してユーザ2の両肩を検出し、その両肩間の距離、即ち肩幅を算出する。
周辺認識センサ14は、移動体1の周辺画像を取得するものであり、複数のカメラで構成され(本実施形態では16個のカメラ)、本体部11の周囲に等間隔に設置される。制御部12は、周辺認識センサ14により取得された移動体1の周辺画像から、ユーザ2の進行経路up(図4参照)上に存在する障害物を検出し、その位置を算出する。
車輪15は、全方位への移動が可能な全方位車輪で構成され、移動体1の下部に設置される。これにより、移動体1は、全方位への移動をスムーズに行うことができる。車輪15は、駆動部25のモータ(図示せず)によって回転し、移動体1を移動させる。本実施形態では、3つの車輪15が設けられるが、車輪15の数は、必ずしも3つに限られず、適宜の数を採用できる。
表示部16は、LCD26と、タッチパネル27と、マイクロフォン28とを有して構成され(図2参照)、移動体1の上部に設けられる。LCD26とタッチパネル27とは、ユーザ2に対向する面に設けられる。即ち、ユーザ認識センサ13と同方向に向けて配設される。マイクロフォン28は、表示部16の内部に配設される。LCD26への表示によって移動体1の状態や移動経路などをユーザ2に視認可能とし、タッチパネル27への操作やマイクロフォン28への音声入力によって、ユーザ2からの指示を移動体1に入力できる。
図1(b)に示すように、グリップ17は、ユーザ2が把持するための取っ手であり、本体部11と表示部16との間に設けられる。グリップ17には、ジョイスティック18が配設される。足腰の弱ったユーザ2であれば、杖代わりにグリップ17を把持しながら、ジョイスティック18やタッチパネル27を操作することもできる。
ジョイスティック18は、ユーザ2によって、移動体1の手動操作を行うための装置であり、グリップ17の略中央部に配設される。移動体1がユーザ2の手動操作により移動する「被補助モード」である場合に、ユーザ2がジョイスティック18を操作すると、移動体1はジョイスティック18の倒された方向へ移動する。また、ジョイスティック18の倒された量が大きいほど、移動体1の移動速度は速くなる。
次に、図2を参照して、移動体1の電気的構成について説明する。図2は、移動体1の電気的構成を示すブロック図である。制御部12は、移動体1の各部を制御するための装置であり、図2に示す通り、CPU20、ROM21及びRAM22を備え、これらがバスライン23を介して入出力ポート24にそれぞれ接続されている。また、入出力ポート24には、ユーザ認識センサ13、周辺認識センサ14、駆動部25、LCD26、タッチパネル27、マイクロフォン28、ジョイスティック18がそれぞれ接続されている。
CPU20は、バスライン23により接続された各部を制御する演算装置である。ROM21は、CPU20により実行される制御プログラム(例えば、図3のメイン処理)や固定値データ等を格納した書き換え不能な不揮発性メモリである。
RAM22は、CPU20が制御プログラム実行時に各種のワークデータやフラグ等を書き換え可能に記憶するためのメモリであり、ユーザ位置情報メモリ22aと、移動体位置情報メモリ22bと、ユーザ幅メモリ22cと、ユーザ進行経路メモリ22dと、制御モードメモリ22eと、周辺環境情報メモリ22fとがそれぞれ設けられる。
ユーザ位置情報メモリ22aは、移動体1の移動制御で用いられるユーザ2の位置を記憶するメモリであり、X座標メモリ22a1とY座標メモリ22a2と方向メモリ22a3とを有する。X座標メモリ22a1、Y座標メモリ22a2、方向メモリ22a3の座標系は、いずれも前述した移動体座標系である。電源投入時に、X座標メモリ22a1、Y座標メモリ22a2、方向メモリ22a3の各値は、それぞれ「0」クリアされる。
ユーザ認識センサ13によるユーザ2の画像の取得が行われると、制御部12によってその画像が解析され、ユーザ2の位置およびユーザ2の向いている向きが算出される。X座標メモリ22a1にはユーザ2の位置のX座標が格納され、Y座標メモリ22a2にはユーザ2の位置のY座標が格納される。方向メモリ22a3には、ユーザ2が向いている方向(単位:度)が格納される。その後、X座標メモリ22a1、Y座標メモリ22a2及び方向メモリ22a3の各値は、必要に応じてユーザ2の位置を原点(0,0)とした座標系(以下「ユーザ座標系」と称す)に変換され(図3のS6)、移動体1の移動制御に用いられる。
移動体位置情報メモリ22bは、移動体1の移動制御で用いられる移動体1の位置を記憶するメモリであり、X座標メモリ22b1とY座標メモリ22b2とを有する。X座標メモリ22b1、Y座標メモリ22b2の座標系は、いずれも前述した移動体座標系である。電源投入時に、X座標メモリ22b1、Y座標メモリ22b2の値は、それぞれ「0」クリアされる。また、後述する図3のメイン処理の開始時(S1)に、X座標メモリ22b1、Y座標メモリ22b2の値に、それぞれ「0」が格納される。その後、X座標メモリ22b1、Y座標メモリ22b2の値は、必要に応じてユーザ2の位置を原点(0,0)としたユーザ座標系に変換され(図3のS6)、移動体1の移動制御に用いられる。
ユーザ幅メモリ22cは、ユーザ2の肩幅を記憶するメモリである。電源投入時に、ユーザ幅メモリ22cの値は「0」クリアされる。ユーザ認識センサ13によってユーザ2の画像が取得されると、制御部12によって、その画像が解析され、ユーザ2の両肩が検出される。そして、両肩間の距離が算出され、その値がユーザ幅メモリ22cに格納される。ユーザ幅メモリ22cの値は、ユーザ2の進行経路upの幅wpとして使用される(図4参照)。
ユーザ進行経路メモリ22dは、ユーザ2の進行経路upの帯状の領域を示す4つの頂点(Uplu,Upru,Upfl,Upfr)の座標(図4参照)を記憶するメモリである。電源投入時に、ユーザ進行経路メモリ22dの4つの頂点の座標には「0」が設定され、ユーザ2の進行経路upの領域が未だ算出されていないことを示す。ユーザ認識センサ13より、ユーザ2の位置がユーザ位置情報メモリ22aに格納され、ユーザ2の肩幅がユーザ幅メモリ22dに格納された後、制御部12によって、ユーザ位置情報メモリ22aの値とユーザ幅メモリ22cの値とから、ユーザ2の進行経路upの領域が算出される。その算出されたユーザ2の進行経路upの帯状の領域を示す4つの頂点の座標(Uplu,Upru,Upfl,Upfr)がユーザ進行経路メモリ22dに格納される。
制御モードメモリ22eは、移動体1の制御モードを記憶するためのメモリである。移動体1の制御モードとしては「追従モード」と、「被補助モード」とが設けられている。電源投入時に、制御モードメモリ22eには「被補助モード」が設定される。
「追従モード」は、移動体1がユーザ2の前方にて、ユーザ2に対して適切な位置に移動して、ユーザ2に追従させるモードである。移動体1の周辺画像、即ち、後述の周辺環境情報メモリ22fの値から、移動体1が、移動体1とユーザ2との追従走行が可能と判断された場合や、ユーザ2による「追従モード」への移行指示があった場合に、制御モードメモリ22eに「追従モード」が設定される。
「被補助モード」は、移動体1を停止させた後、ユーザ2の手動操作などによって移動体1を移動させるモードである。ユーザ2の前方に障害物があり、移動体1が前方に移動できないと判断された場合や、ユーザ2による「被補助モード」への移行指示があった場合に、制御モードメモリ22eに「被補助モード」が設定される。
周辺環境情報メモリ22fは、周辺認識センサ14によって取得された、移動体1の周辺画像を記憶するメモリ領域である。電源投入時に、周辺環境情報メモリ22fの全領域に「無効画像(具体的には「0」)」が設定される。周辺認識センサ14によって移動体1の周辺画像が取得されると、その周辺画像が周辺環境情報メモリ22fに格納される。
駆動部25は、移動体1を移動させるための装置であり、車輪15および車輪15の駆動源となるモータ(図示せず)などから構成される。制御部12から移動信号が駆動部25へ入力されると、入力された信号に基づいてモータが回転し、当該モータの回転が動力となって車輪15が駆動し、移動体1を動作させる。
次に、図3及び図4を参照して、制御部12のCPU20で実行されるメイン処理について説明する。図3は、メイン処理のフローチャートである。移動体1の前方の状況や、ユーザ2からの指示に基づいて、移動体1の制御モードがメイン処理により設定される。移動体1は、かかる設定された制御モードに基づいて、自身の移動制御を行う。メイン処理は、100ms毎のインターバル割り込み処理により繰り返し実行される。
メイン処理では、まず移動体位置情報メモリ22bのX座標メモリ22b1と、Y座標メモリ22b2とに、それぞれ「0」を設定する(S1)。次に、ユーザ認識センサ13からユーザ2の位置を取得し、そのX座標をユーザ位置情報メモリ22aのX座標メモリ22a1に、Y座標をY座標メモリ22a2に、ユーザ2が向いている方向を方向メモリ22a3に、それぞれ保存する(S2)。具体的には、ユーザ認識センサ13から、ユーザ2を含む画像を取得する。制御部12は、その画像をエッジ抽出およびパターン認識によってユーザ2を認識し、その位置と、ユーザ2が向いている方向とを取得する。このように取得されたユーザ2の位置を、ユーザ位置情報メモリ22aのX座標メモリ22a1、Y座標メモリ22a2に、ユーザ2が向いている方向を方向メモリ22a3にそれぞれ保存する。
次に、ユーザ認識センサ13からユーザ2の肩幅を取得し、ユーザ幅メモリ22cへ保存する(S3)。具体的には、ユーザ認識センサ13から、ユーザ2を含む画像を取得する。制御部12は、その画像をエッジ抽出およびパターン認識によって、ユーザ2の両肩を認識し、その両肩間の距離、即ちユーザ2の肩幅を算出し、その肩幅をユーザ幅メモリ22cへ保存する。なお、肩幅は、ユーザ位置情報メモリ22aの方向メモリ22a3の値に応じて、適宜補正した上で、ユーザ幅メモリ22cへ保存するようにしてもよい。
その後、周辺認識センサ14から移動体1の周辺画像を取得し、周辺環境情報メモリ22fへ保存する(S4)。また、ユーザ位置情報メモリ22aの値とユーザ幅メモリ22cの値とから、ユーザ2の進行経路upを算出し、ユーザ進行経路メモリ22dへ保存する(S5)。
ここで、図4(a)を参照して、ユーザ2の進行経路upの算出およびユーザ進行経路メモリ22dへの値の保存(4座標の保存)について説明する。図4(a)は、移動体1の制御モードが「追従モード」である場合の、移動体1とユーザ2との位置関係を示す図である。図4(a)において、ユーザ2の位置をPu(Xu,Yu)と表し、移動体1の位置をPm(Xm,Ym)と表す。図4(a)は、移動体1がユーザ2の前方にて、ユーザ2に対し適切な位置に移動して、ユーザ2に追従している状態である。
進行経路upは、経路の始点が位置Puで、幅wp、長さlpの矩形の領域として算出される。進行経路upの幅wpは、ユーザ幅メモリ22cに記憶されるユーザ2の肩幅とされる。この幅は、位置Puを中心に左右それぞれwp/2ずつ設けられる。進行経路upの方向は、ユーザ2が向いている方向、即ちユーザ位置情報メモリ22aの方向メモリ22a3の値の方向とされる。更に、進行経路upの長さlpとしては第1所定値が設定される。
なお、本実施形態において、第1所定値としては例えば2mを例示できる。しかし、必ずしもこれに限られるものではなく、第1所定値をユーザ2の歩行速度に応じて変化する値としても良い。具体的には、ユーザ2の歩行速度が速い場合には第1所定値を大きく、歩行速度が遅い場合には第1所定値を小さくしても良い。また、ユーザ2の歩行速度にある係数を乗じた値を第1所定値としても良い。
このように進行経路upは、位置Pu(ユーザ位置情報メモリ22aのX座標メモリ22a1、Y座標メモリ22a2の値)と、幅wp(ユーザ幅メモリ22cの値)と、ユーザ2が向いている方向(ユーザ位置情報メモリ22aの方向メモリ22a3)とによって算出される。これは、ユーザ2が、現在のユーザ2の向いている方向のまま移動した場合の、ユーザ2の進行経路upである。このように算出された、進行経路upの帯状の領域の4つの頂点(Uplu,Upru,Upfl,Upfr)の座標(4座標)が、ユーザ進行経路メモリ22dに保存される。
図3に戻る。S5の処理後、ユーザ位置情報メモリ22a、移動体位置情報メモリ22b、ユーザ進行経路メモリ22dの各値を、それぞれユーザ座標系に変換する(S6)。ユーザ座標系は、前述の通り、ユーザ2の位置Pu(Xu,Yu)を原点(0,0)とした座標系である。ユーザ座標系に変換するのは、後のS12及びS14の処理で行う移動体1の移動制御を、ユーザ2の位置を中心として行うためである。
S6の処理後、制御モードメモリ22eの値を確認する(S7)。制御モードメモリ22eの値が「追従モード」の場合は(S7:「追従モード」)、移動体1が追従走行が可能かを確認する(S8)。具体的には、周辺環境情報メモリ22fに保存された移動体1の周辺画像を、エッジ抽出およびパターン認識によって解析し、移動体1前方の障害物を検出し、その位置を算出する。算出された障害物の位置と、移動体位置情報メモリ22bの値との距離を算出し、その距離dom(図4(b)参照)が20cm以上の場合、移動体1は、追従走行が可能と判断される。なお、追従走行が可能か否かの境界距離domは、必ずしも20cmに限られるものではない。よって、例えばユーザ2などの状況から、境界距離domを20cm未満や20cm以上に設定するようにしても良いし、その都度、個別に設定可能に構成しても良い。
移動体1が追従走行が可能な場合は(S8:Yes)、ユーザ2からの「被補助モード」への移行指示があるかを確認する(S9)。具体的には、ユーザ2からの音声によって入力された制御信号が「被補助モード」への移行であるかどうか、またはタッチパネル27の操作によって「被補助モード」への移行指示が入力されたかどうかを確認する。ユーザ2からの「被補助モード」への移行指示がない場合は(S9:No)、移動体1の追従走行を行う(S14)。この移動体1の追従走行について、図4(a)を参照して説明する。
図4(a)において、制御モードが「追従モード」である場合、移動体1は、ユーザ2の前方にて、ユーザ2に対し適切な位置に移動して、ユーザ2の追従走行をする。具体的には、移動体1をユーザ2の進行経路upの外側に位置させながら、ユーザ2に追従走行させる。本実施形態では、例えば、移動体1とユーザ2との距離d1を1.5mに、かつ、移動体1とユーザ2との相対角度θ1を60度に保つように、移動体1の移動制御を行う。ここで、相対角度θ1は、前述のユーザ座標系を基準とした値である。これにより、移動体1は、ユーザ2の移動の妨げとならない位置を保ちながら、ユーザ2に追従した走行を行うので、ユーザ2の移動の邪魔にならない。
なお、距離d1及び相対角度θ1は、必ずしも1.5mや60度に限られるものではない。よって、例えばユーザ2などの状況から、これらの値を、それ以上の値に或いはそれ以下の値に設定するようにしても良いし、その都度、個別の値を設定可能に構成しても良い。
図3に戻る。移動体1が追従走行が不可能な場合(S8:No)、又はユーザ2からの「被補助モード」への移行指示がある場合は(S9:Yes)、制御モードメモリ22eに「被補助モード」が設定され(S10)、移動体1の追従走行を停止する(S11)。具体的には、ユーザ2からの音声によって入力された制御信号が「被補助モード」への移行である場合、またはタッチパネル27の操作によって「被補助モード」への移行指示が入力された場合は、制御モードメモリ22eに「被補助モード」を設定し、移動体1を停止させる。これにより、移動体1が追従制御中であっても、ユーザ2の指示に応じて移動体1を停止できる。
また、移動体1と、移動体1前方の障害物との距離domが20cmより小さい場合も、移動体1を停止させる。この移動体1の停止制御について、図4(b)を参照して説明する。
図4(b)は、移動体1の制御モードが「被補助モード」に設定された直後の、移動体1とユーザ2との位置関係を示す図である。図4(b)においては、移動体1と、ユーザ2とが、三方を壁に囲まれた領域を移動している。移動体1とユーザ2との距離d1を1.5mに、かつ、移動体1とユーザ2との相対角度θ1を60度に保つように、移動体1は追従走行を行う。その結果、移動体1が壁(即ち、障害物)に接近し、移動体1と障害物との距離domが20cmより小さくなった場合、移動体1は、移動体1前方の障害物により追従走行ができなくなったと判断し、制御部12によって移動体1を停止させる。よって、追従制御中の移動体1が、周囲に移動できる環境がない場合に、行き場を失ってユーザのそばでうろうろ動くなどの不安定な挙動を防止できる。
図3に戻る。S11の処理後は、即ち「追従モード」から「被補助モード」に設定された結果、移動体1の追従走行が停止された後は、移動体1をユーザ2に近づける。即ち「被補助モード」に設定された移動体1は、ユーザ2による操作を必要とするので、ユーザ2がその場にいながら移動体1を操作できるように、移動体1をユーザ2に近づける。具体的には、移動体1はユーザ進行経路メモリ22dの値が示す領域の外側に位置しつつ、移動体1とユーザ2との距離が1m、かつ、移動体1とユーザ2との相対角度が45度となるように、移動体1の移動制御を行う(S12)。この移動体1の移動制御について、図4(c)を参照して説明する。
図4(c)は、移動体1の制御モードが「被補助モード」に設定された後、移動体1がユーザ2に接近する動きを示す図である。S11の処理により停止した移動体1は、ユーザ2による操作を受け付け可能とするためにユーザ2の近くへ移動する。詳細には、移動体1とユーザ2との距離d2が1m、移動体1とユーザ2との相対角度θ2が45度となるように移動制御を行う。ここで、相対角度θ2は、前述のユーザ座標系である。即ち、移動体1は、ユーザ2がジョイスティック18やタッチパネル27を手動操作が可能な位置(距離:1m、相対角度:45度)になるように、移動制御を行う。これにより、ユーザ2は、その場に居ながら、停止した移動体1を手動操作できる。
なお、距離d2及び相対角度θ2は、必ずしも1mや45度に限られるものではない。よって、例えばユーザ2などの状況から、これらの値を、それ以上の値に或いはそれ以下の値に設定するようにしても良いし、その都度、個別の値を設定可能に構成しても良い。
図3に戻る。S12の処理後、移動体の向きが−30度になるように、回転移動を行う(S13)。この移動体1の回転移動について、図4(d)を参照して説明する。図4(d)は、移動体1の制御モードが「被補助モード」に設定され、移動体1がユーザ2に接近した後、移動体1が所定の角度となるように、移動体1が回転する動きを示す図である。S11の処理により、移動体1とユーザ2との距離d2が1m、移動体1とユーザ2との相対角度θ2が45度となった移動体1は、移動体1の向きθmが−30度になるように、その場で回転移動を行う。ここで、移動体1の向きθmは、前述のユーザ座標系である。即ち、移動体1は、移動体1のジョイスティック18及びタッチパネル27がユーザ2に正対する角度(−30度)になるまで、回転移動を行う。これにより、ユーザ2は、停止した移動体1への手動操作を容易に行うことができる。
なお、向きθmは、必ずしも−30度に限られるものではない。よって、例えばユーザ2などの状況から、向きθmを、それ以上の値に或いはそれ以下の値に設定するようにしても良いし、その都度、個別の値を設定可能に構成しても良い。また、S13の処理を、S12の処理と共に実行するようにしても良い。即ち、移動体1をユーザ2が操作可能な位置へ近づける場合に、その移動体1の接近移動中に、移動体1の向きを、S13の向きθmに回転するようにしても良い。
図3に戻る。S7の処理において、制御モードメモリ22eの値が「被補助モード」の場合は(S7:「被補助モード」)、ユーザ2からの「追従モード」への移行指示があるかを確認する(S15)。具体的には、ユーザ2からの音声によって入力された制御信号が「追従モード」への移行であるかどうか、またはタッチパネル27の操作によって「追従モード」への移行指示が入力されたかどうかを確認する。ユーザ2からの「追従モード」への移行指示がある場合は(S15:Yes)、制御モードメモリ22eに「追従モード」が設定される(S16)。
一方、ユーザ2からの「追従モード」への移行指示がない場合は(S15:No)、「被補助モード」であるので、ジョイスティック18の操作に応じた、移動体1の移動制御を行う(S17)。具体的には、ジョイスティック18が倒された方向から移動体1の移動方向が算出され、また、ジョイスティック18が倒された角度から、移動体1の移動速度が算出される。制御部12は、移動速度と移動方向とに応じた制御信号を駆動部25へ出力する。すると、移動体1は、かかる制御信号に基づいて移動動作を行う。これにより、ユーザ2は、停止した移動体1を手動操作により所望の場所へ移動できる。S13,S14,S16,S17の各処理の終了後は、このメイン処理を一旦終了する。
以上説明した通り、本実施形態の移動体1によれば、移動体1がユーザ2を追従しながら走行中であっても、所定条件下、即ち移動体1が追従走行ができなくなった場合や、ユーザ2の指示があった場合に、移動体1の追従走行を停止できるので、例えば行き場を失った移動体1がユーザ2のそばでうろうろ動くなどの不安定な挙動を防止して、ユーザ2に不快感や不信感を与えることなく、移動体1をユーザ2に追従させることができる。
また「被補助モード」に設定された移動体1は、ユーザ2へ近づき、ジョイスティック18などの操作部がユーザ2へ向くように移動するので、ユーザ2は、その場に居ながらにして移動体1を操作できる。即ちユーザ2は、「被補助モード」に移行された移動体1の手動操作を、容易に行うことができる。
以上、実施形態に基づき本発明を説明したが、本発明は上述した実施形態に何ら限定されるものではなく、本発明の趣旨を逸脱しない範囲内で種々の改良変更が可能であることは容易に推察できるものである。
本実施形態においては、「被補助モード」に設定された移動体1は、ジョイスティック18の操作に応じて、移動体1の移動方向と移動速度とを算出して、移動制御を行うようにした。しかし、必ずしもこれに限られるものではなく、例えば、ジョイスティック18に代えて、タッチパネル27によって手動操作してもよいし、荷重コントローラによって、ユーザ2の手動操作を行うようにしてもよい。
ここで、図5を参照して、この荷重コントローラについて説明する。図5は、本実施形態の変形例における、移動体3の外観図である。本実施形態の図1と同一の部分には、同一の符号を付して、その説明は省略する。この変形例は、前記した実施形態のグリップ17とジョイスティック18とに代えて、荷重コントローラ19を有し、これによって移動体3の手動操作を行うものである。
図5に示すように、荷重コントローラ19は、本体部11と表示部16との間の、表示部16の背面側に設けられる。また、荷重コントローラ19には、ユーザ2が荷重コントローラ19を把持するための取っ手が設けられている。この取っ手の付け根には、複数の荷重センサが備えられており、これらによって、取っ手が傾いた方向と、取っ手にかかる力の大きさとが検出される。移動体3が「被補助モード」に設定された後、ユーザ2は、荷重コントローラ19の取っ手を把持し、移動体3を移動させたい方向に傾斜させる。すると、取っ手の傾いた方向に対して移動体3が移動し、また、取っ手にかかる力が大きいほど、移動体3の移動速度が大きくなる。
また、前述した本実施形態の移動体1は、ユーザ2の前方にて、ユーザ2に対し適切な位置に移動して、ユーザ2に追従する装置とした。しかし、必ずしもこれに限られるものではなく、例えば、ユーザ2の後方、または左右いずれかの側方において、ユーザ2に追従する装置として構成してもよい。
ここで、図6を参照して、本実施形態の変形例である移動体3がユーザ2の後方を追従する場合について説明する。なお、図4と同一の部分には、同一の符号を付して、その説明は省略する。
図6(a)は、移動体3の制御モードが「追従モード」における、移動体3とユーザ2との位置関係を示す図である。この変形例において、移動体3は、グリップ17とジョイスティック18とに代えて、前述の荷重コントローラ19が表示部16の背面側に設けられている。移動体3は、荷重コントローラ19を移動体3の前方に向け、ユーザ2の後方にて、ユーザ2に対し適切な位置に移動して、ユーザ2の後方を追従している状態である。具体的には、移動体3は、移動体3とユーザ2との距離d1を1mに、かつ、移動体3とユーザ2との相対角度θ1を−45度に保つように、ユーザ2の後方にて追従走行を行う。
図6(b)は、移動体3の制御モードが「被補助モード」に設定された直後の、移動体3とユーザ2との位置関係を示す図である。移動体3とユーザ2との距離d1を1mに、かつ、移動体3とユーザ2との相対角度θ1を−45度に保つように、移動体3はユーザ2の後方にて追従走行を行う。その結果、移動体3が壁(即ち、障害物)に接近し、移動体3と障害物との距離domが1.5mより小さくなった場合、移動体3は、移動体前方の障害物により追従走行ができなくなったと判断し、制御部12によって移動体3を停止させる。
図6(c)は、移動体3の制御モードが「被補助モード」に設定された後、移動体3がユーザ2に接近する動きを示す図である。追従走行を停止した移動体3は、移動体3とユーザ2との距離d2が1m、移動体3とユーザ2との相対角度θ2が45度となるように、ユーザ2に接近する移動制御を行う。即ち、移動体3は、ユーザ2が荷重コントローラ19を手動操作が可能な位置(距離:1m、相対角度:45度)になるように、ユーザ2に接近する移動制御を行う。このように、移動体3がユーザ2の後方追従を行う場合においても、移動体3の制御モードが「被補助モード」に設定されると、ユーザ2への接近移動を行う移動体3は、ユーザ2の後方ではなく、ユーザ2の前方右(或いは前方左)の位置に移動する。よって、「被補助モード」に設定された移動体3の手動操作を容易に行うことができる。
図6(d)は、移動体3の制御モードが「被補助モード」に設定され、移動体3がユーザ2に接近した後、移動体3が所定の角度となるように、移動体3が回転する動きを示す図である。移動体3とユーザ2との距離d2が1m、移動体3とユーザ2との相対角度θ2が45度となった移動体3は、移動体3の向きθmが135度になるようにその場で回転移動を行う。即ち、移動体3は、移動体3の荷重コントローラ19がユーザ2に正対する角度(135度)になるまで、回転移動を行う。なお、図6(d)の回転移動は、図6(c)のユーザ2への接近移動時に同時に行うようにしても良い。
以上説明したように、図6の変形例に示す移動体3は、ユーザ2の後方を追従する場合においても、制御モードが「被補助モード」に設定された時点で、移動体3の移動制御を停止する。その後、移動体3をユーザ2が手動操作できる位置まで移動し(ユーザ2に接近し)、荷重センサ19をユーザ2に正対する角度に回転移動をする。これにより、移動体3が追従走行ができなくなった場合や、ユーザ2の指示があった場合に、移動体3の追従走行を停止できるので、例えば行き場を失った移動体3が、ユーザ2のそばでうろうろ動くなどの不安定な挙動を防止して、ユーザ2に不快感や不信感を与えることなく、移動体3をユーザ2に追従させることができる。また「被補助モード」に設定された移動体3は、ユーザ2へ近づき、荷重センサ19がユーザ2へ向くように移動するので、ユーザ2は、その場に居ながらにして移動体3を操作できる。即ちユーザ2は、「被補助モード」に移行された移動体3の手動操作を、容易に行うことができる。
なお、上記変形例において、距離d1,d2,dom及び相対角度θ1,θ2,θmは、必ずしもこれらの値に限られるものではない。よって、例えばユーザ2などの状況から、これらの値を、それ以上の値に或いはそれ以下の値に設定するようにしても良いし、その都度、個別の値を設定可能に構成しても良い。
更に移動体1,3は、移動体1,3の下部に設置された車輪15が、駆動部25のモータによって回転することで移動を行うものとした。しかし、必ずしもこれに限られるものではなく、例えば、移動体1,3にプロペラ等を設け、ユーザ2の頭上を飛行しながら、ユーザ2に追従移動するように構成してもよい。また、移動体1,3の下部に空気吹出口を設け、移動体1,3をホバークラフトのように浮遊させながら、ユーザ2に追従移動するように構成してもよい。