自分で泳ぎを勉強する海中ロボット


 泳ぎ終わって水の中からプールサイドに上がると、何と体の重いことか。な おさら、力の弱い人間にはどんなに立派な翼をつけてもイカロスのように羽ば たいて空を自由に飛ぶことはできなさそうに思える。重力加速度の呪縛から逃 れられない陸上の動物は、浮力で重力をキャンセルし、3次元世界に遊ぶ生物 のセンスをなかなか理解できない。ただ、安全性が高まって誰でも使えるスクー バダイビング装置を使って海に潜れば、そのセンスの一端をなんとか垣間見る ことができる。

 海で活躍すべきロボットもこうした動作環境のために地上のロボットとは本 質的な差がある。重力を忘れることができるので、多様な形をとりうるのが工 学のターゲットとして面白い。また、超音波で通信する以外には手だてのない 深海は、自立的でかつ自律性の高いロボットが要求されるフィールドであるこ とを忘れてはならない。マーケットのあるなしは別にして、真の意味での自律 性が必要なフィールドは、惑星と深海の2つであると言っても過言ではない。

 海中のロボットは、そのミッションが何であるかにより分類される。内容は、

  1. 海底で作業する
  2. 海中の人工物に働きかける
  3. 海中を泳ぎ回る
  4. 長時間にわたって作業する
  5. 力を必要とする
  6. 速度を必要とする
などの多くの項目がマトリックス状になる。また、海中での交通手段が確立 されていないので、どのような手段で仕事の場所にでかけていくかも問題にな る。すなわち、ロボットのサポート体制が、
  1. 大がかりな母船
  2. 小型の母船
  3. 海中基地
  4. 特に無し
なのかによってロボットのデザインは異なってくる。すなわち多種多様なロ ボットを想定することができる。


図1 泳ぐミノカサゴ。かざりのような鰭を多数持つ。

 図1はミノカサゴの一種である。多数の鰭と体を動かして珊瑚礁を泳いでい る。これら制御装置をどのように動かせばよいのか彼らは勿論知っている。し かし、同じような形の模型を作って動かそうとするときに、その制御系を作る のは多くの手間と長い時間とを必要とする。


図2 水の中で体を動かし、その効果を確かめながらだんだん と思ったように泳げるようになる水中ロボット。

 ある海中ロボットを作ったときに、図2に示すように、それが自分で制御装 置を動かし、その効果を認識して、やがて自分で泳げるようになる、という仕 組みを持てば、極めて楽しい。通常のやり方にしたがって、流体力微係数を実 験により求め、それを基に制御系を構築し、水槽試験でチューニングするのは 手間と時間が掛かり、かつ暗い地道な実験を要する。これでは、大学で海中ロ ボットを作り上げて研究する楽しみが少なくなってしまう。また、ミッション の多様性や設計の多様性に追い付いていくことができず、せっかく重力から解 放されていても、自由な設計ができないことになる。(深海になると浮力材の 強度の関係で、重力からの解放が楽におこなえるわけでないことに注意してお く。)

 東京大学生産技術研究所では、海中ロボットの研究開発をおこなっている。 これを通じて開発された、自分で学習して泳ぎを覚える自己生成型のニューラ ルネットワーク制御システム:SONCS(Self-Organizing Neural-Net-Controller System)を紹介して、海中ロボットの研究の楽しさを 提示したい。


PTEROA計画


図3 PTEROA150のプロトタイプ。水槽で性能試験を している様子。長さ150cm,空中重量220kgであるが、水中では中性 浮力とすることができる。このロボットは2000mの深さまで潜り、ミッショ ンを遂行することができる。

 PTEROA計画は深海底の調査をミッションとした航行型の海中ロボット の研究開発を目的として1984年より開始された。図3は1988年度に試 作され、実海域で航行可能なプロトタイプの1号機「PTEROA150」で ある。その行動は、

  1. 海面から海底までの往復で、グライディングして水平方向に長距離移動 することができる。位置エネルギを利用するので電池を無駄に使用しない。
  2. 海底面の凹凸を計測しながら、一定高度を維持して海底面の写真等を撮 影したり、温度や酸素濃度を計測する。
という単純なものである(図4参照)。
図4 PTEROAの海中での行動。

グライディングのために胴体形状を偏平にして揚力を生み出すようにしてある。 同時に、余分な突起物を少なくして、母船上の作業中や海中で衝突時のダメー ジを少なくするよう考えられている。運動制御は、艇体後部の左右に取り付け てあるエレベータ、垂直舵、1対の推進器でおこなう。推進器は300W油漬 インダクションモータ2基で、制御面は油漬ステップモータ3基でそれぞれ駆 動され、航行する深度に影響を受けない。  PTEROA150は、水平面との角度が最小15度でグライディングでき、 推進器を駆動させて水平航行するときには、約2ノットで泳ぐことができる。

 このロボットをモデルにして、生まれたばかりのロボットが自分で左右のエ レベータを動かしながら泳ぎを学び、ついには思ったように泳げるようになる システムを構築する。


自己生成型の海中ロボット航行制御系


図5 自己生成型の運動制御システム。制御部、フォワードモ デル部、コントローラの評価部、コントローラの修正機構、フォワードモデル の修正機構より成り立ち、初期値を生成する無意識下のコントローラSCCを 備える。

 図5は自己生成型制御システムSONCSの全体構成である。主な構成部分 はニューラルネットワークよりできている。ニューラルネットワークを用いて 運動制御系を作ることはさほど困難でない。また、同時に、現在の状態量と制 御装置の作動状態から、一定時間の後の状態量を求める自己モデル(ここでは フォワードモデルと呼ぶ)もニューラルネットワークで作ることができる。こ の2つのサブシステムを組み合わせて、図5のようなシステムを作る。2つの ネットワークを組み合わせると、全体が一つのニューラルネットワークになっ ていることがわかる。このシステムに特徴的なことは、運動がミッションに適 合しているかどうかを評価するシステムが導入されていることである。

 例えば、Dを深度、θをロボットのピッチ角として、次式で定義される評価関数E

を用いれば、ロボットが一定のピッチ角θ0を保って一 定の深さD0で航行しているかどうかが評価できる。こ の評価関数が小さくなるようにシステムのシナプス荷重を修正する。Eを小さ くする手続きは、バックプロパゲーション法と同じ形をしていることに気が付 く。すなわち、評価関数Eを小さくすることは、全体システムのニューラルネッ トワークの出力誤差(教師データとの差)を小さくすることと同等である。評 価と修正を繰り返すことにより、ロボットは泳ぎを覚え、だんだんと上手になっ ていくことになる。(このとき、フォワードモデルは正確であると仮定してお いた方がやりやすい。)

 評価関数の定義を変えれば違う泳ぎ方を覚える。どういう場合にはどの評価 関数を使えばよいかを判断し、切りかえるシステムがロボットにあれば、場合 に応じた最上の泳ぎ方を訓練し、それを記憶できる。

 フォワードモデルをより良いものにする(自分の力学を詳しく学ぶ)には、 ロボットの運動データからシナプス荷重を修正する。また、流れの影響が出た り(動作環境が代わったり)、ロボットの形状を変えたりした場合には、フォ ワードモデルの誤差が大きくなるので、この修正作業を泳ぎながらおこなうこ とができる。


システムの起動

 初めに水の中に浮いたとき、ロボットの頭の中がからっぽでも泳ぐことはで きる。しかし、全くからっぽではどう動くかの予想がつかないので、しかるべ き初期状態を作っておいたほうがよい。つまり、溺れない程度の泳ぎ方は最初 に教えておく。これを教える先生は、人間が水の上を歩くことを教えてくれる 先生、すなわち「右足が沈む前に左足を出し、左足が沈む前に右足をだしなさ い」、としか教えない低レベルの先生で充分である。「ロボットが沈み過ぎた ら、浮くような動作を、上を向き過ぎたら下を向く動作をしなさい」と指示す るコントローラをニューラルネットワークとは別に持っておく。以後、このコ ントローラを「無意識下のコントローラ:SCC(Subconscious Controller)」 と呼ぶ。SCCは本能のようなもので、ロボットに先天的に内在しており、学 習を積んだあとの通常の生活には顕在的にはあらわれてこない。そのためにど のような形ででもSONCSの中に取り込んでもよい。

 SCCは直観的に作ることのできるファジールールで構成することが簡単で ある。先に述べたように、SCCとしてのファジールールは、充分に調整され ている必要がなく、未熟なものでよいので、これを「未熟なファジー制御系」 と呼んでおく。

 とにかく、まず最初に"本能"にしたがって水の中でもがく。その運動と制御 データを教師信号として、その「もがき方」をSONCSのニューラルネット ワークの制御部分が学び、同時にフォワードモデルが運動を学ぶ。これでSO NCSの初期値ができたことになる。そこで、運動制御をニューラルネットワー クに切り換え、あとは、訓練を実行してその行動を評価関数Eで評価して、制 御部分を修正する。

 本能である未熟なファジー制御系をチューニングして実用的なコントローラ とすることも考えられるが、そのデメリットは少なくない。SONCSのよう に、ニューラルネットワークをチューニングするとシステムは柔軟となり、か つ、出来上がった行動の評価を評価関数で直接できるので分かりやすい利点が ある。


P60を使ったSONCSの例


図6 制御系を試験するための小型機P60。全長60cm。 アンビリカルケーブルで水上と結ばれている。

 図6は、制御系を実験するための小型ロボットP60である。P60は、ア ンビリカルケーブルを通じて地上のコンピュータによって支援されているが、 これはシステムの研究のためであり、プロトタイプであるPTEROA150 には全システムを搭載できる。以下の例は、回流水槽の中でP60を実際に泳 がせている例である。


図7 未熟なファジー制御を無意識下コントローラSCCとし て使用し、とりあえずニューラルネットワークの制御下で泳いだP60。その 後、自分でおこなった行動を評価し、段々とまっすぐに泳げるようになるプロ セス。最後には外乱の多い回流水槽の中でも安定して水平に泳げる制御系が構 築される。

 図7の最上段は、SCCである先生の泳ぎ方をまねして、とりあえず泳いだ ところである。ただ泳ぐのみで、一定の深さを維持しよう努力していないので、 泳ぎはだらけている。溺れないようにはなった。この後SONCSのプロシジャー にしたがって、一定深度(0.5m)一定ピッチ角(0.1rad)を保って泳ご うと努力し、自分で泳ぎを評価して学習する。図7にはこの過程が深さに関す る軌跡として示されている。ロボットは段々と上手に0.5mの深度を保って まっすぐに泳げる能力を獲得していく。

将来展望

 海中ではロボットが経験したことのないような流れがある場所もある。そこ を泳ぎ渡ったりする場合など全ての海中環境を想定して予め制御系を構成して おくことは、フィールドロボットの開発作業としてはつらい場合が多い。SO NCSを搭載していれば、そのような場合にも評価関数を小さくする泳ぎ方を 自分で学習して切り抜けていくことができる。評価関数は自由に選べ、場合に よって切り換えることもできる。このような柔軟性に富んだシステムは海中ロ ボットの自律システムとして極めて魅力的である。

('90/9月脱稿)


さらに詳しく知りたい方への参考文献一覧

ニューラルネットワークについての古典

Last modified: Mon May 29 09:49:36 1995

URA Laboratory, IIS, The Univ. of Tokyo / auvlab@iis.u-tokyo.ac.jp