(57)【要約】【課題】全方位移動が可能な走行装置において、速度指令値が駆動系の能力を超えてしまい、想定する動作とは異なる動作を示すことがあった。【解決手段】２つの駆動輪と従動輪を有する台車部と、台車部に載置される荷台部と、荷台部を台車部に対して旋回駆動する旋回駆動部と、制御部とを備え、制御部は、走行面方向の第１速度、第２速度、直交軸周りの角速度として与えられる速度指令値を、２つの駆動輪のそれぞれの回転角速度である第１駆動角速度、第２駆動角速度、および旋回駆動部の旋回角速度に変換し、これらのいずれかが駆動能力を上回る場合には、速度指令値として与えられた第１速度、第２速度、および角速度の相互の比率を変更することなく、それぞれが駆動能力に収まるようにこれらを修正して、２つの駆動輪および旋回駆動部を制御する。【選択図】図４
2018026047.tif 000002
【特許請求の範囲】
【請求項１】
互いに独立して回転駆動される２つの駆動輪および少なくとも１つの従動輪を有する台車部と、
前記台車部に対して旋回可能に載置される荷台部と、
前記荷台部を前記台車部に対して旋回駆動する旋回駆動部と、
前記２つの駆動輪および前記旋回駆動部を制御する制御部と
を備え、
前記制御部は、
走行面方向の第１軸方向の第１速度、前記走行面方向であって前記第１軸とは異なる第２軸方向の第２速度、および前記第１軸と前記第２軸に直交する第３軸周りの走行面に対する角速度として与えられる速度指令値を、前記２つの駆動輪のそれぞれの回転角速度である第１駆動角速度、第２駆動角速度、および前記旋回駆動部の旋回角速度に変換し、
変換された前記第１駆動角速度、前記第２駆動角速度、および前記旋回角速度の少なくともいずれかが、前記２つの駆動輪および前記旋回駆動部の駆動能力を上回る場合には、前記速度指令値における前記第１速度、前記第２速度、および前記角速度の相互の比率を変更することなく、それぞれが前記駆動能力に収まるように、前記第１駆動角速度、前記第２駆動角速度、および前記旋回角速度を修正して、前記２つの駆動輪および前記旋回駆動部を制御する移動装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、移動装置に関する。
【背景技術】
【０００２】
台車に一対の駆動輪と従動輪とを備えた全方位移動車両が知られている。例えば特許文献１によれば、全方位移動車両を電動車椅子に応用し、着座部の姿勢を変えることなく、車両本体を任意の方向へ移動させることができる。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００７−１５２０１９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
移動車両としては全方位に移動できる機構を有していても、移動を実現するために生成された速度指令値が駆動系の能力を超えてしまい、想定する動作とは異なる動作を示すことがあった。また、駆動系の能力を基準として生成する速度指令値を制限すると、極めて低速でしか動作しなくなることがあった。
本発明は、このような問題を解決するためになされたものであり、安全でかつ速度低下を抑えた全方位移動を実現する技術を提供するものである。
【課題を解決するための手段】
【０００５】
本発明の一態様における移動装置は、互いに独立して回転駆動される２つの駆動輪および少なくとも１つの従動輪を有する台車部と、台車部に対して旋回可能に載置される荷台部と、荷台部を台車部に対して旋回駆動する旋回駆動部と、２つの駆動輪および旋回駆動部を制御する制御部とを備え、制御部は、走行面方向の第１軸方向の第１速度、走行面方向であって第１軸とは異なる第２軸方向の第２速度、および第１軸と第２軸に直交する第３軸周りの走行面に対する角速度として与えられる速度指令値を、２つの駆動輪のそれぞれの回転角速度である第１駆動角速度、第２駆動角速度、および旋回駆動部の旋回角速度に変換し、変換された第１駆動角速度、第２駆動角速度、および旋回角速度の少なくともいずれかが、２つの駆動輪および旋回駆動部の駆動能力を上回る場合には、速度指令値における第１速度、第２速度、および角速度の相互の比率を変更することなく、それぞれが駆動能力に収まるように、第１駆動角速度、第２駆動角速度、および旋回角速度を修正して、２つの駆動輪および旋回駆動部を制御する。
【０００６】
このような制御により、駆動系の駆動能力を過度に制限することなく、かつ、もとの速度指令値で想定された動作姿勢と同様の動作姿勢で移動するので、高速かつ安全に全方位移動を実現できる。
【発明の効果】
【０００７】
本発明により、安全でかつ高速な全方位移動を実現した移動装置を提供できる。
【図面の簡単な説明】
【０００８】
【図１】本実施形態に係る移動ロボットの一部を分解して示す外観斜視図である。
【図２】移動ロボットの制御ブロック図である。
【図３】全方位移動制御を説明する説明図である。
【図４】駆動系の角速度を修正する概念を説明する説明図である。
【図５】制御の流れを示す機能ブロック図である。
【発明を実施するための形態】
【０００９】
以下、発明の実施の形態を通じて本発明を説明するが、特許請求の範囲に係る発明を以下の実施形態に限定するものではない。また、実施形態で説明する構成の全てが課題を解決するための手段として必須であるとは限らない。
【００１０】
図１は、本実施形態に係る移動ロボット１００の一部を分解して示す外観斜視図である。移動装置の一例としての移動ロボット１００は、大きく分けて台車部１１０と荷台部１２０によって構成される。図は、荷台部１２０を台車部１１０から少し持ち上げた状態を表している。
【００１１】
台車部１１０は、主に、上方から観察した場合におよそ四角形を成す台車ベース１１１と、台車ベース１１１に取り付けられた２つの駆動輪１１２と１つのキャスタ１１３とから構成される。台車ベース１１１は、台車部１１０の基体となる役割を担い、例えばフレーム構造を有する。２つの駆動輪１１２は、台車ベース１１１の対向する側方のそれぞれに、回転軸芯が一致するように配設されている。それぞれの駆動輪１１２は、不図示のモータによって独立して回転駆動される。キャスタ１１３は、従動輪であり、台車ベース１１１から鉛直方向に延びる旋回軸が車輪の回転軸から離れて車輪を軸支するように設けられており、台車部１１０の移動方向に倣うように追従する従動キャスタとして機能する。移動ロボット１００は、例えば、２つの駆動輪１１２が同じ方向に同じ回転速度で回転されれば直進し、逆方向に同じ回転速度で回転されれば重心を通る鉛直軸周りに旋回する。すなわち、移動ロボット１００は、２つの駆動輪１１２の回転方向、回転速度がそれぞれ制御されることにより、前進、後進、旋回することができる。
【００１２】
台車部１１０は、障害物検知や周辺環境認識のための各種センサが設けられている。カメラ１１４は、そのセンサ類の一つであり、台車ベース１１１の四隅に配置されている。カメラ１１４は、例えばＣＭＯＳイメージセンサを含み、撮影した画像信号を後述の制御部へ送信する。隣接する２つのカメラ１１４が同一の障害物を捉えれば視差画像を取得でき、当該障害物までの距離を算出することもできる。また、画角に占める障害物の割合と、算出した距離を利用して、障害物の大きさを算出することもできる。
【００１３】
台車ベース１１１の上面中央部には旋回機構１１９が設けられている。旋回機構１１９には荷台部１２０を構成する上体ベース１２５の噛合部（不図示）が嵌め込まれ、台車ベース１１１に上体ベース１２５が載置された状態となる。上体ベース１２５は、台車ベース１１１に設けられた不図示のモータにより、旋回機構１１９を介して鉛直軸周りに旋回駆動される。
【００１４】
荷台部１２０は、上体ベース１２５の他にも、主に、複数のアーム１２１と、ハンド１２４とを備える。複数のアーム１２１は、それぞれの端部で回動するように互いに接続されている。一連のアーム１２１の基端側は上体ベース１２５に固定されており、先端側はハンド１２４を回転自在に軸支している。ハンド１２４は、搬送物を把持できるように、把持機構を備える。アーム１２１とハンド１２４は、不図示のモータを介して駆動され、所定の姿勢をとったり、搬送物を把持したりする。
【００１５】
図２は、移動ロボット１００の制御ブロック図である。制御部２００は、例えばＣＰＵであり、台車部１１０に設けられている。駆動輪ユニット２１０は、駆動輪１１２を駆動するための駆動回路やモータを含み、台車部１１０に設けられている。制御部２００は、駆動輪ユニット２１０へ駆動信号を送ることにより、駆動輪１１２の回転制御を実行する。具体的な駆動信号については後に詳述する。
【００１６】
旋回駆動ユニット２１２は、上体ベース１２５を旋回駆動するための駆動回路やモータを含み、台車部１１０に設けられている。制御部２００は、旋回駆動ユニット２１２へ駆動信号を送ることにより、上体ベース１２５の旋回制御を実行する。なお、上体ベース１２５が旋回されると、ハンド１２４が把持する搬送物も含めて荷台部１２０の全体が鉛直軸周りに旋回されることになる。また、駆動輪１１２が駆動されることによって台車部１１０が路面に対して旋回する場合に、制御部２００が台車部１１０の旋回に同期させて上体ベース１２５を逆向きに旋回させれば、荷台部１２０の全体は、見かけ上は路面に対して鉛直軸周りに回転することはなく、相対的にその姿勢を維持できる。具体的な駆動信号については後に詳述する。
【００１７】
アームユニット２２０は、アーム１２１およびハンド１２４を駆動するための駆動回路やモータを含み、荷台部１２０に設けられている。制御部２００は、アームユニット２２０へ駆動信号を送ることにより、荷台部１２０の姿勢制御や把持制御を実行する。
【００１８】
センサユニット２３０は、周辺環境を探索したり荷台部１２０の姿勢を監視したりする各種センサを含み、台車部１１０および荷台部１２０に分散して配置されている。制御部２００は、センサユニット２３０に制御信号を送ることにより、各種センサを駆動してその出力を取得する。カメラ１１４は、センサユニット２３０に含まれ、制御信号に従って撮影動作を実行する。
【００１９】
メモリ２４０は、不揮発性の記憶媒体であり、例えばソリッドステートドライブが用いられる。メモリ２４０は、移動ロボット１００を制御するための制御プログラムの他にも、制御に用いられる様々なパラメータ値、関数、ルックアップテーブル等を記憶している。メモリ２４０は、移動ロボット１００が自律走行する環境を表現する環境地図を格納した環境地図ＤＢ２４１を含む。
【００２０】
制御部２００は、駆動輪ユニット２１０、旋回駆動ユニット２１２、アームユニット２２０、センサユニット２３０およびメモリ２４０との間で情報を送受信することにより、制御に関わる様々な演算を実行する機能演算部としての役割も担う。移動ロボット１００は、計画された移動経路を目標位置まで自律的に移動したり、ユーザから移動方向を適宜与えられつつも障害物については自律的に回避しながら移動したりする。このとき、移動ロボット１００は、計画された移動経路に沿って走行したり、カメラ１１４が捉えた障害物を回避したりするための速度指令を生成する。
【００２１】
次に、移動ロボット１００の全方位移動制御について説明する。移動ロボット１００は、荷台部１２０の姿勢を維持したまま、台車部１１０を全方位へ移動させることができる全方位移動制御を実行する。図３は、全方位移動制御を説明する図である。図示するように、キャスタ１１３を前側とした場合の右側の駆動輪を右駆動輪１１２ａとし、左側の駆動輪を左駆動輪１１２ｂとする。また、走行面方向の第１軸方向としてｘ軸を、走行面方向方向であってｘ軸とは直交する第２軸方向としてｙ軸を、ｘ軸およびｙ軸に直交する第３軸をｚ軸と定める。図の例は、荷台部１２０のうち旋回駆動される上体ベース１２５が、ｘ軸プラス方向を向く姿勢（ｚ軸周りの走行面に対する旋回角θが０度）の様子を表している。
【００２２】
図示するように、右駆動輪１１２ａの角速度をωＲ、左駆動輪１１２ｂの角速度をωＬ、それぞれの半径をr（同一）、右駆動輪１１２ａと左駆動輪１１２ｂの間隔（トレッド）をＷ、旋回中心と駆動輪車軸間のオフセット量をｓ、上体ベース１２５と台車ベース１１１の旋回角をθv、台車ベース１１１に対する上体ベース１２５の旋回角速度をωＳとする。
【００２３】
このとき、走行面に対するｘ軸方向の速度をｘドット、走行面に対するｙ軸方向の速度をｙドット、走行面に対するｚ軸周りの角速度をθドットで表すと、以下の関係式（１）が成立する。
【００２４】
【数１】
2018026047.tif 000003
【００２５】
ここで、変換行列Ｊは、θｖの関数となっているが、この角度がどのような値になっても逆行列Ｊ-１は計算可能である。このことから、この制御においては特異点が存在せず、順方向、逆方向の計算が常に可能であることがわかる。すなわち、全方位移動制御は、ホロノミック制御であることがわかる。
【００２６】
制御部２００は、環境地図ＤＢ２４１から取得した環境地図や、取得した障害物情報に基づいて次に移動する目標位置を定める。そして、その目標位置まで移動するために、現在の台車部１１０の位置と姿勢を考慮して速度指令値を生成する。この速度指令値が、上記のｘドット、ｙドット、θドットである。しかし、移動ロボット１００の駆動系は、右駆動輪１１２ａ、左駆動輪１１２ｂ、および旋回機構１１９であるので、制御部２００は、実際に駆動系を駆動するために、速度指令値をこれら駆動系の角速度にそれぞれ変換する必要がある。そのための変換行列が上記のＪ-１であり、変換されて得られる駆動系のそれぞれの角速度が、上記のωＲ、ωＬ、ωＳである。
【００２７】
制御部２００は、移動したい目標位置を初期値として駆動系の角速度（ωＲ、ωＬ、ωＳ）を算出するが、駆動系のモータにはそれぞれ駆動能力に限界があるので、算出された角速度が駆動能力の限界を超えている場合には、想定した制御を実行できなくなる。そのまま制御を実行すると、台車部１１０が想定した経路から外れたり、荷台部１２０が想定した姿勢にならなかったりする。その結果、移動ロボット１００の一部や把持した搬送物の一部が、経路の壁面や障害物に衝突することもあり得る。一方で、全方向移動のあらゆる状況を想定して、それぞれのモータの駆動能力から、速度指令値（ｘドット、ｙドット、θドット）の最大値を予め制限すると、著しく低速でしか移動できない状況が発生し得る。
【００２８】
そこで、本実施形態にかかる移動ロボット１００の制御部２００は、速度指令値から変換された駆動系の角速度（ωＲ、ωＬ、ωＳ）の少なくともいずれかが右駆動輪１１２ａ、左駆動輪１１２ｂ、および旋回機構１１９の駆動能力（ωＲ＿ＭＡＸ、ωＬ＿ＭＡＸ、ωＳ＿ＭＡＸ）を上回る場合には、速度指令値（ｘドット、ｙドット、θドット）の相互の比率を変更することなく、それぞれが駆動能力に収まるように、角速度（ωＲ、ωＬ、ωＳ）を修正して右駆動輪１１２ａ、左駆動輪１１２ｂ、および旋回機構１１９を制御する。この修正演算について説明する。図４は、速度指令値から変換される駆動系の角速度を修正する概念を説明する説明図である。図４は、右駆動輪１１２ａ、左駆動輪１１２ｂ、および旋回機構１１９の角速度（ωＲ、ωＬ、ωＳ）を三次元空間として表し、それぞれの軸上に、駆動能力（ωＲ＿ＭＡＸ、ωＬ＿ＭＡＸ、ωＳ＿ＭＡＸ）をプロットして示している。
速度指令値をベクトルｖとして式（２）で表すと、関係式（１）を用いて変換される角速度（ωＲ、ωＬ、ωＳ）のベクトルωは、式（３）で表される。
【００２９】
【数２】
2018026047.tif 000004
【数３】
2018026047.tif 000005
【００３０】
ここで、制御部２００は、変換された（ωＲ、ωＬ、ωＳ）のそれぞれが、対応する駆動能力（ωＲ＿ＭＡＸ、ωＬ＿ＭＡＸ、ωＳ＿ＭＡＸ）に対していずれか一つでも上回ったか否かを判断する。いずれも上回っていなければ、制御部２００は、ベクトルωによって駆動制御を行う。いずれか一つでも上回ったら以下の修正演算を行う。図４において太線で表すベクトルωは、ωＳがωＳ＿ＭＡＸを上回っている例を示している。
【００３１】
速度指令値のノルムτｄは、式（４）で表され、ノルムτｄを用いて速度指令のベクトルを単位ベクトル化すると、式（５）となる。
【００３２】
【数４】
2018026047.tif 000006
【数５】
2018026047.tif 000007
【００３３】
右駆動輪１１２ａ、左駆動輪１１２ｂ、および旋回機構１１９の駆動能力（ωＲ＿ＭＡＸ、ωＬ＿ＭＡＸ、ωＳ＿ＭＡＸ）に対する速度安全係数をそれぞれτＲ、τＬ、τＳとして、以下の式（６）で定義する。
【００３４】
【数６】
2018026047.tif 000008
そして、以下の式（７）により、速度安全係数の最小値をτＳＡＦＥと定める。
【００３５】
【数７】
2018026047.tif 000009
すると、右駆動輪１１２ａ、左駆動輪１１２ｂ、および旋回機構１１９の修正された角速度（ベクトルωＳＡＦＥ）は、以下の式（８）により算出される。
【００３６】
【数８】
2018026047.tif 000010
【００３７】
このような修正演算は、図４の三次元空間で幾何学的に表すと、太線で表すベクトルωの例で言えば、ベクトルωをその向きを変えないように、駆動能力を超えていたωＳの成分が駆動能力と等しいωＳ＿ＭＡＸとなるまで長さを縮めるものである。このような修正演算によれば、少なくとも１つの成分は駆動能力の最大値となるので、移動ロボット１００の移動が著しく低下することはない。また、ベクトルωＳＡＦＥの各成分の比率は、当初算出されたベクトルωの各成分の比率と等しく、つまり、速度指令値（ｘドット、ｙドット、θドット）の各成分の比率も保たれているので、ωＳＡＦＥで制御される移動ロボット１００の動作は、想定された動作に対して若干スローになっただけである。換言すれば、移動速度を除けば、もとの速度指令値で想定された動作姿勢と同様の動作姿勢で移動すると言える。したがって、想定された経路を外れたり障害物に衝突したりする可能性を低減することができる。
【００３８】
なお、上記の説明においては、一旦（ωＲ、ωＬ、ωＳ）を算出し、これらが駆動能力（ωＲ＿ＭＡＸ、ωＬ＿ＭＡＸ、ωＳ＿ＭＡＸ）を超えるかの判断を行ってから修正演算を実行したが、この判断を省くこともできる。具体的には、以下の式（９）により、τｄも対象に含めて速度安全係数の最小値τＳＡＦＥを定める。
【００３９】
【数９】
2018026047.tif 000011
【００４０】
この場合、（ωＲ、ωＬ、ωＳ）のいずれもが対応する（ωＲ＿ＭＡＸ、ωＬ＿ＭＡＸ、ωＳ＿ＭＡＸ）を下回っている場合には、τＳＡＦＥとしてτｄが選ばれ、式（８）によって計算されるベクトルωＳＡＦＥは、結局はベクトルωと等しくなる。
【００４１】
以上の制御を機能ブロックに対するパラメータの入出力で表すと、図５のように表される。図５は、制御の流れを示す機能ブロック図である。
【００４２】
制御部２００は、主に速度指令生成器２０１と変換器２０２の機能を担う。速度指令生成器２０１は、目標位置、台車部１１０の姿勢を取得すると、走行面に対する荷台部１２０の速度指令としてのベクトルｖを生成する。変換器２０２は、速度指令生成器２０１からベクトルｖを取得すると共に、各モータの駆動能力として最大角速度（ωＲ＿ＭＡＸ、ωＬ＿ＭＡＸ、ωＳ＿ＭＡＸ）を取得する。最大角速度（ωＲ＿ＭＡＸ、ωＬ＿ＭＡＸ、ωＳ＿ＭＡＸ）は、メモリ２４０に記憶されている。
【００４３】
また、変換器２０２は、旋回駆動ユニット２１２から現在の台車部１１０に対する荷台部１２０の角度θｖ、走行面に対する荷台部１２０の角度θを取得する。変換器２０２は、これらの取得情報に基づいて上述の演算を行い、角速度指令としてベクトルωＳＡＦＥを生成する。そして、駆動輪ユニット２１０へはωＲ＿ＳＡＦＥ、ωＬ＿ＳＡＦＥを指令信号として送信し、旋回駆動ユニット２１２へはωＳ＿ＳＡＦＥを指令信号として送信する。なお、変換器２０２によって修正演算を行わない場合には、角速度指令としてベクトルωを採用し、駆動輪ユニット２１０へはωＲ、ωＬを指令信号として送信し、旋回駆動ユニット２１２へはωＳを指令信号として送信する。
【００４４】
なお、以上の実施例においては移動ロボット１００を例として説明したが、上述の速度制御は移動ロボット以外にも様々な移動装置に適用し得る。例えば、荷台部に座席を設けた電動車椅子へ応用する場合には、椅子の向きを変えずに搭乗者が指示する位置や方向へ向かって移動する速度制御に適用し得る。
【００４５】
また、座標系の定義は上述した例に限らない。移動装置が利用される環境等に合わせて適宜三次元空間が定義されれば良い。例えば、走行面方向に定義されるｘ軸とｙ軸は、互いに直交していなくても良い。
【００４６】
また、従動キャスタの形式は、上述した例に限らない。従動輪であれば、オムニホイール、メカナムホイール、ボールキャスタなどであっても構わない。また、走行面と接触して移動装置の一部の荷重を支える、低摩擦部材で形成された突起などであっても良い。
【符号の説明】
【００４７】
１００  移動ロボット、１１０  台車部、１１１  台車ベース、１１２  駆動輪、１１３  キャスタ、１１４  カメラ、１１９  旋回機構、１２０  荷台部、１２１  アーム、１２４  ハンド、１２５  上体ベース、２００  制御部、２０１  速度指令生成器、２０２  変換器、２１０  駆動輪ユニット、２１２  旋回駆動ユニット、２２０  アームユニット、２３０  センサユニット、２４０  メモリ、２４１  環境地図ＤＢ
【図１】
2018026047.tif 000012
【図２】
2018026047.tif 000013
【図３】
2018026047.tif 000014
【図４】
2018026047.tif 000015
【図５】
2018026047.tif 000016