(第1の実施形態)
以下、本発明を実施するための第1の実施形態について、図面を用いて具体的に説明する。図1は、本発明の第1の実施形態である履帯式走行体100aの外観図であり、図1(a)は、履帯式走行体100aの外観斜視図である。図1(b)は、履帯式走行体100aの側面図(P矢視図)である。図1(c)は、履帯式走行体100aの上面図(Q矢視図)である。
図1(a)に示すように、履帯式走行体100aは、本体10と、起動輪12a、12bと、転輪14a、14b、14c、14dと、履帯18a、18bと、サスペンション20a、20bと、テンショナー部22a、22bと、支持体28と、を備える。
起動輪12a、12bは、履帯式走行体100aに対して、移動するための駆動力を伝達する。起動輪12aの内部にはインホイールモータ13aが設置されている。インホイールモータ13aの回転軸は起動輪12aの回転軸と直結しており、インホイールモータ13aの回転力によって起動輪12aが回転する。そして、インホイールモータ13aの回転力が、駆動力として履帯式走行体100aに伝達される。
転輪14a、14b、14c、14dは、回転自在に本体10に取り付けられている。
履帯18a、18bは、クローラとも呼ばれて、金属またはゴムで形成されている。履帯18aは、起動輪12aと転輪14a、14bに掛け回される。履帯18bは、起動輪12bと転輪14c、14dに掛け回される。履帯18aは、起動輪12aの回転方向に従って移動しながら、転輪14a、14bを従動させることによって、履帯式走行体100aを移動させる。また、履帯18bは、起動輪12bの回転方向に従って移動しながら、転輪14c、14dを従動させることによって、履帯式走行体100aを移動させる。
サスペンション20a、20bは、転輪14a、14b、14c、14dを本体10に懸架する。サスペンション20a、20bは、本発明における懸架部の一例であり、車重を支えて地面からの衝撃を吸収するスプリングと、スプリングの振動を減衰するショックアブソーバと、を備える。サスペンション20a、20bは、履帯式走行体100aが不整地を走行するときに、地面の凹凸に応じて伸縮することによって振動を吸収する。なお、サスペンション20a、20bの形式は問わない。また、サスペンション20a、20bは、転輪14a、14b、14c、14dを本体10に懸架する代わりに、転輪14a、14b、14c、14dを、後述する支持体28に懸架してもよい。
テンショナー部22a(22b)は、バネ等の弾性部材で形成されて、後述する支持体28に支持されている。テンショナー部22a(22b)は、履帯18a(18b)の裏面側に押し当たるように設置されて、履帯18a(18b)にテンションを与える。テンショナー部22a(22b)は、履帯18a(18b)の弛みを調整することによって、履帯18a(18b)による正常な駆動力の伝達を維持する。なお、前述したサスペンション20a(20b)は、転輪14a、14b(14c、14d)を履帯18a(18b)に押し当てているため、サスペンション20a(20b)をテンショナー部22a(22b)の代替えとしてもよい。
本体10は、後述する走行体30a(図1(b)参照)を走行可能な状態で支持する支持部材であるとともに、前述したインホイールモータ13aを駆動する走行用モータドライバおよびインホイールモータ13aに電力を供給するバッテリー等を搭載する。
支持体28は、本体10に設置されて、前述したサスペンション20a、20b、テンショナー部22a、22b等を支持する支持部材である。
図1(b)は、履帯式走行体100aのP矢視図である。図1(b)に示す起動輪12aと、インホイールモータ13aと、転輪14a、14bと、履帯18aと、サスペンション20aと、テンショナー部22aと、は走行体30aを形成する。走行体30aは、本発明における走行ユニットの一例である。走行体30aは、インホイールモータ13aが起動輪12aに伝達した駆動力(回転力)を、履帯18aを介して、転輪14a、14bに伝達する。履帯式走行体100aは、図1(c)に示すように、2つの走行体30a、30bを備える。なお、走行体30bは、図1(c)に示す起動輪12bと、インホイールモータ13bと、転輪14c、14dと、履帯18bと、サスペンション20bと、テンショナー部22bと、を備える。
図1(b)に示すように、走行体30aにおいて、起動輪12aは、転輪14a、14bの上方に配置されている。そして、起動輪12aと、転輪14aと、転輪14bと、によって三角形が形成される。履帯18aは、起動輪12aと、転輪14aと、転輪14bと、に掛け回されて、転輪14aと、転輪14bと、の間の範囲が接地する。すなわち、インホイールモータ13aが内蔵された起動輪12aは、地面に接地しない。したがって、水溜まりを走行した場合であってもインホイールモータ13aが浸水することはないため、インホイールモータ13aに対して特別な防水機構を設置する必要はない。なお、図1(b)には図示しないが、走行体30bを形成する起動輪12bおよび転輪14c、14dも同様のレイアウトで配置されている。なお、図1(b)の例は、2個の転輪14a、14bを備えているが、これは2個に限定されるものではなく、履帯18aを掛け回せる状態で、より多くの転輪を備えても構わない。
図1(c)は、履帯式走行体100aのQ矢視図である。図1(c)に示すように、2つの走行体30a、30bは、本体10を挟んで、履帯18a、18bが略平行になるように、すなわち履帯式走行体100aが走行可能な状態で設置される。本体10は、インホイールモータ13a、13bを駆動する、いずれも後述する、走行制御用モータドライバ70(図2参照)と、走行制御用モータドライバ70とインホイールモータ13a、13bとに電力を供給するバッテリー90(図2参照)と、バランス制御機構92(図3参照)と、を備えている。なお、走行体の数は2つに限定されるものではなく、例えば3つの走行体を平行に3列に整列させる等、履帯式走行体100aが走行可能な状態であれば、走行体の数は問わない。
(履帯式走行体のハードウェア構成の説明)
次に、図2を用いて、第1の実施形態の履帯式走行体100aのハードウェア構成について説明する。図2は、第1の実施形態の履帯式走行体100aのハードウェア構成を示すハードウェアブロック図である。
図2に示すように、履帯式走行体100aは、ラジコン送信機50と、ラジコン受信機52と、CPU54と、メモリ56と、MEMSセンサ58と、ステレオカメラ60と、走行制御用モータドライバ70と、インホイールモータ13a、13bと、姿勢制御用モータドライバ80と、姿勢制御用モータ82a、82bと、バッテリー90と、を備える。なお、ラジコン受信機52と、CPU54と、メモリ56と、MEMSセンサ58と、ステレオカメラ60と、走行制御用モータドライバ70と、姿勢制御用モータドライバ80と、はシステムバス62を介して接続されている。
ラジコン送信機50は、履帯式走行体100aに対して動作指示を与える。
ラジコン受信機52は、ラジコン送信機50から送信される履帯式走行体100aの動作指示を受信する。
CPU54は、後述するメモリ56が記憶したプログラムP1を読み出して実行する。
メモリ56は、CPU54が実行するプログラムP1をはじめ、履帯式走行体100aを動作させるのに必要な各種データを記憶する。
プログラムP1は、メモリ56に予め組み込まれて提供される。また、プログラムP1は、インストール可能な形式、または実行可能な形式のファイルでCD−ROM、フレキシブルディスク(FD)、CD−R、DVD(Digital Versatile Disc)等のCPU54(コンピュータ)で読み取り可能な記録媒体に記録して提供するように構成してもよい。さらに、プログラムP1を、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由で履帯式走行体100aにダウンロードさせることにより提供するように構成してもよい。また、プログラムP1をインターネット等のネットワーク経由で提供または配布するように構成してもよい。プログラムP1を外部から提供するときは、CPU54には、図2に非図示の通信I/Fを介してプログラムP1を読み込む。なお、履帯式走行体100aは、CPU54をプログラムP1に従って動作させる代わりに、プログラムP1が実行するのと同じ演算機能および制御機能を有する専用のASIC(Application Specific Integrated Circuit)を実装することによって、ハードウェア的に動作させてもよい。
MEMSセンサ58は、xyz座標系の3軸方向の動きを計測するセンサである。より具体的には、3軸方向の角速度および加速度を計測する。なお、MEMS(Micro Electro Mechanical Systems)とは、機械要素部品、センサ、アクチュエータ、電子回路を一つのシリコン基板、ガラス基板、有機材料等の上に集積化したデバイスである。本実施形態で用いるMEMSセンサ58は、シリコン基板上に作成した片持ち梁構造によって形成されるジャイロスコープによって、前述した3軸方向の動きを計測する。なお、MEMSセンサ58は、さらに3軸方向の地磁気を計測する機能を加えた構成としてもよい。
ステレオカメラ60は、互いの光軸が略平行になるように配置された2台のカメラで構成されており、本体10に設置される。ステレオカメラ60は、履帯式走行体100aの前方の走行環境を監視して、本体10の傾きの算出および履帯式走行体100aの周囲の障害物の検出を行う。ステレオカメラ60は、ジンバル(Gimbal)を備えており、履帯式走行体100aの姿勢によらずに、ステレオカメラ60の向きを常に一定に保持する。なお、ジンバルを備える代わりに、前述したMEMSセンサ58の出力を用いて、ステレオカメラ60の向きを補正してもよい。
なお、履帯式走行体100aをラジコン操縦するときには、操縦者は履帯式走行体100aの周囲の障害物を視認することができるため、履帯式走行体100aは、必ずしも障害物を検出する機能を備える必要はない。さらに、本体10の傾きはMEMSセンサ58によって計測することができる。したがって、ステレオカメラ60がなくても、操縦者は、自ら視認した結果に基づいて履帯式走行体100aを操縦することができる。しかし、ステレオカメラ60を用いることによって、履帯式走行体100aが行う姿勢制御の精度をより一層向上させることができる。
前述したMEMSセンサ58は、現在の本体10の傾きを計測する。これに対して、ステレオカメラ60は、履帯式走行体100aの進行方向前方の路面を撮像するため、履帯式走行体100aの前方の路面の傾斜を予め予測することができる。すなわち、ステレオカメラ60を用いることによって、履帯式走行体100aの将来の姿勢を予測することができる。したがって、MEMSセンサ58の出力を用いた場合と比べて、履帯式走行体100aの姿勢制御の精度をより一層向上させることができる。詳しくは後述する。
再び図2に戻って、走行制御用モータドライバ70は、インホイールモータ13a、13bに対して、後述するモータ駆動信号76a、76bをそれぞれ供給することによって、インホイールモータ13a、13bを駆動する。
インホイールモータ13a、13bは、前述した起動輪12a、12bに回転力を伝達する。より具体的には、インホイールモータ13a、13bは、起動輪12a、12bに対して、履帯式走行体100aを前進させる正方向の回転、または履帯式走行体100aを後退させる負方向の回転を与える。さらに、インホイールモータ13a、13bは、一方の起動輪12aまたは12bのみを正方向または負方向に回転させて、他方の起動輪12bまたは12aを停止させることによって、履帯式走行体100aを信地旋回させる。また、インホイールモータ13a、13bは、一方の起動輪12aまたは12bを正方向に回転させて、他方の起動輪12bまたは12aを負方向に回転させることによって、履帯式走行体100aを超信地旋回させる。
姿勢制御用モータドライバ80は、姿勢制御用モータ82a、82bに対して、後述するモータ駆動信号86a、86bをそれぞれ供給することによって、姿勢制御用モータ82a、82bを駆動する。
姿勢制御用モータ82a、82bは、本体10の姿勢を制御することによって、履帯式走行体100aの転倒を防止する。
バッテリー90は、インホイールモータ13a、13bおよび姿勢制御用モータ82a、82bに対して電力を供給する。
(バランス制御機構の構造の説明)
次に、図3を用いて、履帯式走行体100aが備えるバランス制御機構92について説明する。図3は、履帯式走行体100aが備えるバランス制御機構92の概略構造を示す三面図である。図3に示すバランス制御機構92は、履帯式走行体100aの本体10の内部または本体10の上部に設置されて、本体10を水平に保つことによって履帯式走行体100aの姿勢制御を行う。
バランス制御機構92は、本発明におけるバランス機構の一例である。バランス制御機構92は、Xステージ94と、Yステージ96と、姿勢制御用モータ82a、82bと、Xシャフト95と、Yシャフト97と、錘98と、を備えている。
姿勢制御用モータ82aは、例えばステップモータである。姿勢制御用モータ82aは、前述した姿勢制御用モータドライバ80(図2)によって駆動されて、Xステージ94をx方向に沿って移動させる。
Xシャフト95は、姿勢制御用モータ82aの回転軸に直結している。Xシャフト95は、姿勢制御用モータ82aの回転に応じた向きに回転する。Xシャフト95の外面にはねじ切り加工がなされて、雄ねじが形成されている。
図3に示すように、Xステージ94の裏面側には、Xステージ支持部94eが設置されている。Xステージ支持部94eには、x方向に沿って孔部94hが延設されている。孔部94hの内面には、Xシャフト95に螺合された、ボールネジを形成する雌ねじ(ナット)が形成されている。したがって、Xステージ94は、x方向に沿って、Xシャフト95の回転に応じた方向に、Xシャフト95の回転量に応じた量だけ摺動する。なお、図3に示すように、Xステージ94の前端部および後端部には、それぞれ、x方向に沿うリブ94a、94bが形成されている。これらのリブ94a、94bは、本体10の前端部および後端部に、それぞれx方向に沿って形成された溝部10a、10bとそれぞれ係合している。したがって、Xステージ94は、Xシャフト95の回転に応じて、x方向に沿ってがたつくことなく円滑に摺動する。
姿勢制御用モータ82bは、例えばステップモータである。姿勢制御用モータ82bは、前述した姿勢制御用モータドライバ80(図2)によって駆動されて、Yステージ96をy方向に沿って移動させる。
Yシャフト97は、姿勢制御用モータ82bの回転軸に直結している。Yシャフト97は、姿勢制御用モータ82bの回転に応じた向きに回転する。Yシャフト97の表面にはねじ切り加工がなされて、雄ねじが形成されている。
図3に示すように、Yステージ96には、y方向に沿って孔部96hが延設されている。孔部96hの内面には、Yシャフト97に螺合された、ボールネジを形成する雌ねじ(ナット)が形成されている。したがって、Yステージ96は、y方向に沿って、Yシャフト97の回転に応じた方向に、Yシャフト97の回転量に応じた量だけ摺動する。なお、図3に示すように、Yステージ96の左右端部には、それぞれ、y方向に沿うリブ96a、96bが形成されている。これらのリブ96a、96bは、Xステージ94の左右端部に、それぞれy方向に沿って形成された溝部94c、94dとそれぞれ係合している。したがって、Yステージ96は、Yシャフト97の回転に応じて、y方向に沿ってがたつくことなく円滑に摺動する。
錘98は、Yステージ96上に設置されている。錘98は、Yステージ96の移動に応じて、図3のx方向およびy方向に沿って移動する。そして、錘98の移動に応じて本体10の重心位置が移動する。したがって、傾斜地等を走行したときに履帯式走行体100aの姿勢が崩れた場合には、錘98の位置を移動させることによって、本体10の重心位置を移動させて、履帯式走行体100aの転倒を防止することができる。
(履帯式走行体の機能構成の説明)
次に、図4を用いて、履帯式走行体100aの機能構成について説明する。図4は、第1の実施形態の履帯式走行体100aの機能構成を示す機能ブロック図である。
図4に示すように、履帯式走行体100aは、操作信号デコード部64と、姿勢推定部66と、インホイールモータ回転制御部74と、姿勢制御用モータ回転制御部84と、を備える。
操作信号デコード部64は、ラジコン送信機50(図2)が送信した履帯式走行体100aの操作信号をラジコン受信機52で受信した後で復号(デコード)して、履帯式走行体100aに対する操作者の操作指示を解読する。操作信号デコード部64は、CPU54(図2)がメモリ56上のプログラムP1を実行することによって実現される。
姿勢推定部66は、MEMSセンサ58の出力、またはステレオカメラ60の出力に基づいて、本体10の姿勢(左右傾き、前後傾き)を推定する。姿勢推定部66は、CPU54(図2)がメモリ56上のプログラムP1を実行することによって実現される。なお、詳しくは後述するが、姿勢推定を行う際にMEMSセンサ58の出力を用いるか、ステレオカメラ60の出力を用いるか、によって姿勢推定部66が行う処理の内容は異なる。
インホイールモータ回転制御部74は、操作信号デコード部64がデコードした操作指示に基づいて、インホイールモータ13a、13bをそれぞれ駆動するためのモータ駆動信号76a、76bを生成する。より具体的には、インホイールモータ回転制御部74は、CPU54(図2)がメモリ56上のプログラムP1を実行して、走行制御用モータドライバ70と協働することによって、モータ駆動信号76a、76bを生成してインホイールモータ13a、13bに供給し、履帯式走行体100aの走行制御を行う。なお、モータ駆動信号76aは、インホイールモータ13aを駆動する信号であり、モータ駆動信号76bは、インホイールモータ13bを駆動する信号である。
姿勢制御用モータ回転制御部84は、本発明におけるバランス制御部の一例である。姿勢制御用モータ回転制御部84は、姿勢推定部66が推定した本体10の姿勢に基づいて、姿勢制御用モータ82a、82bをそれぞれ駆動するためのモータ駆動信号86a、86bを生成する。より具体的には、姿勢制御用モータ回転制御部84は、CPU54(図2)がメモリ56上のプログラムP1を実行して、姿勢制御用モータドライバ80と協働することによって、モータ駆動信号86a、86bを生成して姿勢制御用モータ82a、82bに供給し、履帯式走行体100aの姿勢制御を行う。なお、モータ駆動信号86aは、姿勢制御用モータ82aを駆動する信号であり、モータ駆動信号86bは、姿勢制御用モータ82bを駆動する信号である。なお、詳しくは後述するが、姿勢推定を行う際にMEMSセンサ58の出力を用いるか、ステレオカメラ60の出力を用いるか、によって、姿勢制御用モータ回転制御部84が行う制御の内容は異なる。
(バランス制御の流れの説明)
次に、図5を用いて、バランス制御機構92が行うバランス制御の流れについて説明する。図5は、バランス制御機構92が行うバランス制御の流れを示すフローチャートである。
姿勢制御用モータ回転制御部84は、本体10の左右傾きθxを0にするためのXステージ94の移動量を算出する(ステップS12)。具体的には、姿勢推定部66が、MEMSセンサ58の出力に基づいて本体10の姿勢推定を行ったときには、姿勢制御用モータ回転制御部84は、MEMSセンサ58の出力に基づいて、本体10の左右傾きθxを算出して、左右傾きθxを0にするための錘98のx方向位置を算出する。
一方、姿勢推定部66が、ステレオカメラ60の出力に基づいて本体10の姿勢推定を行うときには、姿勢制御用モータ回転制御部84は、履帯式走行体100aが予測される走行経路に沿って走行したときの本体10の左右傾きθxの時間変化に基づいて錘98のx方向移動量を算出する。すなわち、予測される左右傾きθxの時間変化θxi(i=0、1、…、n)に対して、予測される左右傾きθxiをできるだけ0に保つための錘98のx方向位置Xi(i=0、1、…、n)を計算する。
姿勢制御用モータ回転制御部84は、錘98のx方向位置Xiを、時刻t0においてX0、時刻t0+ΔtにおいてX1、…、時刻t0+nΔtにおいてXnと移動させるための制御問題を、所定のコスト関数が最大または最小になるように解く。コスト関数としては様々なものが考えられ、そのいずれを用いてもよい。例えば、最も忠実に錘98が動くように錘98のx方向位置のエラーをコスト関数とすることができる。他には、錘98の移動による履帯式走行体100aへの影響が最も少なくなるように加速度(及び減速度)の大きさをコスト関数としてもよい。コスト関数の設定によって、例えば、加速度が大きくなり過ぎないように、錘98のx方向位置のエラーはある程度(転倒しない程度)まで許容する解などを抽出することが可能となる。このような制御方法をとることによって、制御が急になり過ぎてかえって安定性を失う、或いは、制御が遅すぎて間に合わない等のリスクを軽減することができる。なお、制御問題を解く際に使用するソルバーについては、提案されている様々なアルゴリズム(例えば、非線形プログラミングソルバーであるSNOPT)を利用することができる。
なお、姿勢推定部66における本体10の姿勢推定精度を向上させるために、ステレオ画像と本体10の傾きとを取得しながら、履帯式走行体100aを実際に走行させて、本体10の傾きの正解を得ながら、機械学習を行う。そして、機械学習によるトレーニングを行うことによって、履帯式走行体100aは、姿勢推定部66における姿勢推定のルール、判断基準等を学習する。なお、本体10の傾きはステレオカメラ60の傾きと等しいものとみなせるが、ジンバル等でステレオカメラ60の傾きをゼロ補正しておくことができれば、傾きの取得は不要である。
姿勢制御用モータ回転制御部84は、決定した錘98のx方向位置、または錘98のx方向位置Xiに従って姿勢制御用モータ82aを制御する(ステップS14)。具体的には、姿勢制御用モータ回転制御部84は、目標値と制御量との偏差に応じて、比例動作と、積分動作と、微分動作と、を組み合わせたPID(Proportional Integral Differential)制御を行う。PID制御は広く一般に用いられている制御方法であるため、詳しい説明は省略する。
姿勢制御用モータ回転制御部84は、Xステージ94の制御が完了したかを判定する(ステップS16)。Xステージ94の制御が完了したとき(ステップS16;Yes)はステップS20に進み、それ以外のとき(ステップS16;No)はステップS12に戻る。
姿勢制御用モータ回転制御部84は、前後傾きθyを0にするためのYステージ96の移動量を算出する(ステップS20)。具体的には、姿勢推定部66が、MEMSセンサ58の出力に基づいて本体10の姿勢推定を行ったときには、MEMSセンサ58の出力に基づいて、本体10の前後傾きθyを算出して、前後傾きθyを0にするための錘98のy方向位置を算出する。
一方、姿勢推定部66が、ステレオカメラ60の出力に基づいて本体10の姿勢推定を行うときには、姿勢制御用モータ回転制御部84は、履帯式走行体100aが予測される走行経路に沿って走行したときの本体10の前後傾きθyの時間変化に基づいて錘98のy方向移動量を算出する。すなわち、予測される前後傾きθyの時間変化θyi(i=0、1、…、n)に対して、予測される前後傾きθyiをできるだけ0に保つための錘98のy方向位置Yi(i=0、1、…、n)を計算する。
姿勢制御用モータ回転制御部84は、錘98のy方向位置Yiを、時刻t0においてY0、時刻t0+ΔtにおいてY1、…、時刻t0+nΔtにおいてYnと移動させるための制御問題を、所定のコスト関数が最大または最小になるように解く。このy方向制御は、前述した錘98のx方向位置Xiの制御と同様にして解くことができる。
姿勢制御用モータ回転制御部84は、決定した錘98のy方向位置、または錘98のy方向位置Yiに従って姿勢制御用モータ82bを制御する(ステップS22)。
姿勢制御用モータ回転制御部84は、Yステージ96の制御が完了したかを判定する(ステップS24)。Yステージ96の制御が完了したとき(ステップS24;Yes)は図5の処理を終了し、それ以外のとき(ステップS24;No)はステップS20に戻る。
(履帯式走行体が行う制御の全体の流れの説明)
次に、図6を用いて、MEMSセンサ58の出力を用いた際に履帯式走行体100aが行う走行制御および姿勢制御の全体の流れを説明する。図6は、MEMSセンサ58の出力に基づいて本体10の現在の傾きを算出して、算出した傾きに基づいて履帯式走行体100aの制御を行う際の制御の流れを示すフローチャートである。
操作信号デコード部64は、ラジコン受信機52が受信した信号をデコードする(ステップS30)。
インホイールモータ回転制御部74は、インホイールモータ13a、13bを駆動するモータ駆動信号76a、76bを生成する(ステップS32)。
走行制御用モータドライバ70は、インホイールモータ13a、13bを駆動する走行制御を実行する(ステップS34)。
姿勢推定部66は、MEMSセンサ58の出力に基づいて、本体10の左右傾きθxおよび前後傾きθyを推定する(ステップS35)。
姿勢推定部66は、本体10の左右傾きθxおよび前後傾きθyがともに0になるように本体10の姿勢を制御する姿勢制御を実行する(ステップS36)。具体的な姿勢の制御方法は前述(図5)した通りである。ステップS36が完了すると、図6の処理を終了する。
ステップS36で行うフィードバック制御は、路面の傾斜が徐々に変化している場合などには有効な手法である。しかし、不整地を走行したときには、地面の起伏や、地盤状況の変化によって、履帯式走行体100aの姿勢が急激に変化する場合がある。このようなときにフィードバック制御を用いて姿勢制御を行うと、制御が間に合わずに、履帯式走行体100aが転倒してしまうおそれがある。そのため、事前に履帯式走行体100aの将来の姿勢を予測することによって、予め姿勢制御を開始する、いわゆるオープンループ制御を行うのが望ましい。本実施形態にあっては、ステレオカメラ60が取得した画像の中から、ラジコンの操作信号によって特定できる履帯式走行体100aの進行方向に対応する領域を抽出することができる。したがって、履帯式走行体100aが進行する方向の路面の傾斜を予め予測することができる。そのため、前述したオープンループ制御を行うことができる。
以下、図7を用いて、ステレオカメラ60が取得した画像を用いた際に履帯式走行体100aが行う走行制御および姿勢制御の全体の流れを説明する。図7は、ステレオカメラ60が取得した画像に基づいて本体10の将来の傾きを予測して、予測した傾きに基づいて履帯式走行体100aの制御を行う際の制御の流れを示すフローチャートである。
操作信号デコード部64は、ラジコン受信機52が受信した信号をデコードする(ステップS40)。
インホイールモータ回転制御部74は、インホイールモータ13a、13bを駆動するモータ駆動信号76a、76bを生成する(ステップS42)。
走行制御用モータドライバ70は、インホイールモータ13a、13bを駆動する走行制御を行う(ステップS44)。
ステレオカメラ60は、ステレオ画像を取得する(ステップS46)。
姿勢推定部66は、ステップS46で取得したステレオ画像の中から、履帯式走行体100aが将来走行すると予想される走行経路に対応する領域を切り出す(ステップS48)。なお、将来走行すると予想される走行経路は、操作信号デコード部64がデコードした信号に基づいて予測する。
姿勢推定部66は、ステップS48で切り出したステレオ画像に基づいて、予測される本体10の左右傾きθxの時間変化θxi(i=0、1、…、n)と、予測される本体10の前後傾きθyの時間変化θyi(i=0、1、…、n)を推定する(ステップS49)。
姿勢制御用モータ回転制御部84は、予測される本体10の左右傾きθxの時間変化θxiおよび前後傾きθyの時間変化θyiに基づいて、錘98のx方向位置Xiとy方向位置Yiを制御する姿勢制御を行う(ステップS50)。具体的な姿勢の制御方法は前述(図5)した通りである。ステップS50が完了すると、図7の処理を終了する。
(第2の実施形態)
次に、本発明を実施するための第2の実施形態について、図面を用いて具体的に説明する。図8は、本発明の第2の実施形態である履帯式走行体100bの上面図である。なお、第1の実施形態と同じ構造を有する部位は、同一符号を用いて示し、その詳細説明は省略する。
第2の実施形態の履帯式走行体100bは、走行体30a、30bの間隔(距離)を変更できるものである。具体的には、図8に示すように、走行体30aは、本体10との間に伸縮自在な伸縮シャフト32a、32cを備える。伸縮シャフト32a、32cは、本発明における走行ユニット接続部の一例である。伸縮シャフト32a、32cは、後述するように、それぞれ伸縮用モータ34a、34bの回転軸と接続されており、伸縮用モータ34a、34bの回転に応じて伸縮する。なお、2本の伸縮シャフト32a、32cは平行に配置されている。伸縮シャフト32a、32cの走行体30a側の端部は、支持体28に固定されている。伸縮シャフト32a、32cの具体的な構造については後述する。
同様に、走行体30bは、本体10との間に伸縮自在な伸縮シャフト32b、32dを備える。伸縮シャフト32b、32dは、本発明における走行ユニット接続部の一例である。伸縮シャフト32b、32dは、後述するように、それぞれ伸縮用モータ34a、34bの回転軸と接続されており、伸縮用モータ34a、34bの回転に応じて伸縮する。2本の伸縮シャフト32b、32dは平行に配置されている。伸縮シャフト32b、32dの走行体30b側の端部は、支持体28に固定されている。
次に、図9を用いて、伸縮用モータ34aによって伸縮を制御される伸縮シャフト32a、32bの機能について説明する。図9(a)は、伸縮シャフト32a、32bが伸びた状態を示す履帯式走行体100bの正面図(R矢視図)である。図9(b)は、伸縮シャフト32a、32bが縮んだ状態を示す履帯式走行体100bの正面図(R矢視図)である。
図9(a)、図9(b)に示すように、伸縮シャフト32a、32bは、伸縮用モータ34aによって、ともに同じ長さになるように伸縮する。これによって、履帯式走行体100bにおける走行体30a、30bの間隔Wは、最も広い間隔Wa(図9(a))と、最も狭い間隔Wb(図9(b))と、の間で任意に変更することができる。なお、図9には図示しないが、伸縮シャフト32c、32dも同様の機能を有する。したがって、走行体30aと、走行体30bと、は平行な状態を保ったまま、その間隔Wを変更することができる。
(履帯式走行体のハードウェア構成の説明)
次に、図10を用いて、第2の実施形態の履帯式走行体100bのハードウェア構成について説明する。図10は、第2の実施形態の履帯式走行体100bのハードウェア構成を示すハードウェアブロック図である。
履帯式走行体100bは、履帯式走行体100aのハードウェア構成(図2)に加えて、伸縮制御用モータドライバ82と、伸縮用モータ34a、34bと、を備える。伸縮用モータ34a、34bには、バッテリー90から電力が供給される。
伸縮制御用モータドライバ82は、伸縮用モータ34a、34bに対して、モータ駆動信号をそれぞれ供給することによって、伸縮用モータ34a、34bを駆動する。なお、伸縮制御用モータドライバ82に対する操作指示は、ラジコン送信機50からの送信によって行われる。
伸縮用モータ34a(34b)は、前述した伸縮シャフト32a、32b(32c、32d)の長さを変更することによって、走行体30aと走行体30bとの間隔Wを変更する。
なお、履帯式走行体100bにおいて、CPU54は、メモリ56に記憶されたプログラムP2を読み出して実行することによって、履帯式走行体100bの全体の動作を制御する。
(履帯式走行体の機能構成の説明)
次に、図11を用いて、履帯式走行体100bの機能構成について説明する。図11は、第2の実施形態の履帯式走行体100bの機能構成を示す機能ブロック図である。
図11に示すように、履帯式走行体100bは、第1の実施形態で説明した履帯式走行体100aの構成要素(図4)に加えて、伸縮用モータ回転制御部88を備える。
伸縮用モータ回転制御部88は、本発明における走行ユニット接続制御部の一例である。伸縮用モータ回転制御部88は、操作信号デコード部64がデコードした操作指示に基づいて、伸縮用モータ34a、34bをそれぞれ駆動するためのモータ駆動信号89a、89bを生成する。より具体的には、伸縮用モータ回転制御部88は、CPU54(図10)がメモリ56上のプログラムP2を実行して、伸縮制御用モータドライバ82と協働することによって、モータ駆動信号89a、89bを生成して伸縮用モータ34a、34bに供給し、伸縮シャフト32a、32b、32c、32d(図8)の伸縮を制御する。なお、モータ駆動信号89aは、伸縮用モータ34aを駆動する信号であり、モータ駆動信号89bは、伸縮用モータ34bを駆動する信号である。
(伸縮シャフトの構造と動作の説明)
次に、図12を用いて、伸縮シャフト32a、32b(32c、32d)の構造および動作について説明する。図12は、伸縮シャフト32a、32bの構造を示す構造図であり、図8に示した履帯式走行体100bの正面図(R矢視図)である。図12に示すように、2本の伸縮シャフト32a、32bは、それぞれ、ベベルギア40(傘歯車)を介して、伸縮用モータ34aの回転軸36aと接続している。そして、伸縮用モータ34aの回転軸36aの回転力が、2本の伸縮シャフト32a、32bに伝達される。
伸縮シャフト32a(32b)は、ねじ軸37a(37b)と、ねじ軸37a(37b)に螺合されてボールネジを形成するナット38a(38b)と、シャフト部39a(39b)と、を備える。ねじ軸37a(37b)の一端は、ベベルギア40に接続されており、ねじ軸37a(37b)は、ベベルギア40とともに回転する。ねじ軸37a(37b)は、ナット38a(38b)に螺合されて、ボールネジを形成している。そして、シャフト部39a(39b)の一方の端部は、ナット38a(38b)に固定されており、シャフト部39a(39b)の他方の端部は、支持体28(28)に接続されている。なお、回転軸36aと、ベベルギア40と、ねじ軸37a(37b)と、ナット38a(38b)と、シャフト部39a(39b)と、はハウジング35aに内包されている。
伸縮用モータ34aの回転に伴って回転軸36aが矢印Pa方向に回転すると、ベベルギア40を介して、ねじ軸37a(37b)が回転する。すると、ねじ軸37a(37b)に螺合されたナット38a(38b)が矢印Ra(Rb)方向に移動する。これにより、ナット38a(38b)に固定されたシャフト部39a(39b)も、矢印Ra(Rb)方向に移動する。また、回転軸36aが矢印Pb方向に回転すると、シャフト部39a(39b)は、矢印Qa(Qb)方向に移動する。すなわち、伸縮シャフト32a(32b)は、伸縮用モータ34aの回転方向に応じた方向に、伸縮用モータ34aの回転量に応じた量だけ伸縮する。そして、伸縮シャフト32a(32b)の伸縮に応じて、左右の支持体28の間隔、すなわち、図9に示した走行体30a、30bの間隔Wが変更される。
なお、ベベルギア40に接続したねじ軸37aとねじ軸37bの回転方向は互いに異なる。そのため、回転軸36aが回転したときに、ナット38a(38b)が互いに異なる方向に移動するように、ねじ軸37aとねじ軸37bとは、互いに逆ねじになるようにねじ切り加工されている。
(第3の実施形態)
次に、本発明を実施するための第3の実施形態について、図面を用いて具体的に説明する。図13は、本発明の第3の実施形態である履帯式走行体100cの概略構造を示す上面図である。なお、第1の実施形態および第2の実施形態と同じ構造を有する部位は、同一符号を用いて示し、その詳細説明は省略する。
図13に示すように、履帯式走行体100cは、本体10の左右にそれぞれ2個ずつの走行体30c、30e(30d、30f)(走行ユニット)を備える。各走行体30c(30e、30d、30f)には、それぞれ2本の伸縮シャフト32e、32f(32i、32j、32g、32h、32k、32l)が、支持体28a(28b、28c、28d)を介して接続されている。
伸縮シャフト32e、32f(32g、32h、32i、32j、32k、32l)は、それぞれ、伸縮用モータ34c、34d(34e、34f、34g、34h、34i、34j)と接続されている。伸縮シャフト32e、32fは、伸縮用モータ34c、34dの回転方向に応じた方向に、伸縮用モータ34c、34dの回転量に応じた量だけ伸縮する。伸縮シャフト32e、32fが伸び縮みする構造は、第2の実施形態で説明した通りである。なお、伸縮用モータ34c、34d(34e、34f、34g、34h、34i、34j)は、それぞれ、伸縮制御用モータドライバ82(図10)によって駆動制御される。
伸縮シャフト32eと伸縮シャフト32fと、は互いに連動して伸縮する。そして、図13に示すように、伸縮シャフト32eが縮んで、伸縮シャフト32fが伸びることによって、走行体30cは方向ωを右に変える。逆に、伸縮シャフト32eが伸びて、伸縮シャフト32fが縮むことによって、走行体30cは方向ωを左に変える。すなわち、伸縮制御用モータドライバ82(図10)は、同一の走行体30c(30d、30e、30f)に接続された2本の伸縮シャフト32e、32f(32g、32h、32i、32j、32k、32l)の長さを、互いに連携させて伸縮させることによって、走行体30c(30d、30e、30f)の進行方向を変更する。なお、各伸縮シャフト32e、32fの伸縮状態は、ラジコン送信機50から送信された履帯式走行体100cに対する動作指示に応じて、伸縮用モータ回転制御部88(図11)が決定して、伸縮制御用モータドライバ82が伸縮用モータ34c、34dに対して回転方向と回転量を指示することによって制御される。
なお、伸縮シャフト32e、32f(32g、32h、32i、32j、32k、32l)は、走行体30c(30d、30e、30f)の向きを変更させるだけでなく、第2の実施形態で説明したように、走行体30cと走行体30dとの間隔W(図9)、および走行体30eと走行体30fとの間隔Wを変更する機能も有している。
以上説明したように、本実施の形態に係る履帯式走行体100aは、履帯18a(18b)と、インホイールモータ13a(13b)を内蔵して、履帯18a(18b)に駆動力を与える起動輪12a(12b)と、少なくとも2つの転輪14a、14b(14c、14d)と、を備えて、上方に配置した起動輪12a(12b)と下方に配置した転輪14a、14b(14c、14d)との間に履帯18a(18b)を掛け回した、少なくとも2つの走行体30a(30b)(走行ユニット)と、走行体30a(30b)を、走行可能な状態で支持する本体10と、を有する。したがって、走行体30a(30b)に対するインホイールモータ13a(13b)の突出を無くすことによって、走行体30a(30b)の配置の自由度を向上させることができる。また、起動輪12a(12b)と、転輪14a(14c)と、転輪14b(14d)とで形成される三角形の上方、すなわち、起動輪12a(12b)の内部にインホイールモータ13a(13b)を配置することによって、水溜りの走行時でも泥水の浸入を阻止することができるため、特別な防水機構の設置が不要となる。
また、本実施の形態に係る履帯式走行体100aは、転輪14a、14b(14c、14d)を支えるサスペンション20a(20b)(懸架部)と、履帯18a(18b)にかかるテンションを調整するテンショナー部22a(22b)と、を備える。したがって、不整地を走行したときの走行体の揺れが低減できるため、本体10の姿勢を安定させることができる。また、テンショナー部22a(22b)を備えることで、履帯18a(18b)に適正なテンションをかけておくことができるとともに、履帯18a(18b)の着脱が容易になる。
また、本実施の形態に係る履帯式走行体100aは、本体10の安定性を保持するバランス制御機構92(バランス機構)と、バランス制御機構92の傾きを制御する姿勢制御用モータ回転制御部84(バランス制御部)と、を備える。したがって、不整地を走行したときに履帯式走行体100aの安定性を向上させることができる。
そして、本実施の形態に係る履帯式走行体100aは、姿勢制御用モータ回転制御部84(バランス制御部)が、ステレオカメラ60が取得したステレオ画像に基づいて、履帯式走行体100aの予測経路の傾きを推定して、推定された予測経路の傾きに基づいて本体10の姿勢を制御するオープンループ制御を行う。したがって、本体10の現在の姿勢をフィードバックすることによって本体10の姿勢の制御を行う場合と比較して、急な段差の発生等によって、本体10の姿勢制御の遅れを招くことがない。すなわち、履帯式走行体100aが転倒するリスクをより一層低減することができる。
また、本実施の形態に係る履帯式走行体100aは、姿勢制御用モータ回転制御部84(バランス制御部)が、機械学習によって予め生成された、本体10の姿勢(傾き)を推定する姿勢推定部66の推定結果に基づいて、本体10の姿勢制御を行う。したがって、例えば、ステレオカメラ60で取得した地面の凹凸の情報に基づいて、履帯式走行体100aの将来の姿勢を物理的に推定する場合と比較して、より一層外乱に対して安定な(ロバストな)姿勢制御を行うことができる。
さらに、本実施の形態に係る履帯式走行体100bは、走行体30a(30b)(走行ユニット)と本体10との距離を変更可能な伸縮シャフト32a、32b(32c、32d)(走行ユニット接続部)と、伸縮シャフト32a、32b(32c、32d)の伸縮を制御する伸縮用モータ回転制御部88(走行ユニット接続制御部)と、を備える。したがって、走行体30aと走行体30bとの間隔Wを変更することができるため、通常は間隔Wを広げることによって、履帯式走行体100bの安定性を向上させることができるとともに、間隔Wを狭くすることによって、狭い経路の走行も可能とすることができる。
また、本実施の形態に係る履帯式走行体100cによれば、伸縮用モータ回転制御部88(走行ユニット接続制御部)は、伸縮シャフト32e、32f(32g、32h、32i、32j、32k、32l)(走行ユニット接続部)の伸縮を制御することによって、走行体30c(30d、30e、30f)(走行ユニット)の方向ωを変更する。したがって、履帯式走行体100cをより一層スムーズに転回させることができる。
以上、実施の形態について説明したが、その各部の具体的な構成、処理の内容等は、実施の形態で説明したものに限るものではない。