2018年10月
  1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31      

カテゴリー

ブログパーツ

無料ブログはココログ

« 何となくフリダシに戻る | トップページ | サブサンプション・エンジンを作る(その2) »

2014年10月 9日 (木)

サブサンプション・エンジンを作る(その1)

花岡ちゃんのウィークエンド:サブサンプション・エンジン

久しぶりのウィークエンドですが、今回はちょっと大物です。しばらく連載形式で投稿しようと思っています。

今回のテーマは「サブサンプション・エンジン」です。行動型人工知能といわれるサブサンプション・アーキテクチャを容易に実装できるフレームワークですが、そもそもサブサンプション・アーキテクチャについての説明が必要でしょう。ウィークエンドのカテゴリーですからね。

サブサンプション・アーキテクチャはアメリカのロドニー・ブルックスが提唱した人工知能の方式の一つです。
シェーキーのような「普通の」人工知能は、この投稿で分析しているように、センサで外界の情報を分析し、そのモデルを作って、行動を計画します。
これは、人間がやっていることと同じですね。僕らは室内を一瞥しただけで、どこを通って行けばいいかを知ることができます。ただし、ロボットがこれをするには、高精度のセンサーや、データ処理のための比較的高性能なコンピュータ、そして測定や処理にかかる時間が必要です。

一方サブサンプション・アーキテクチャを行動原理としたロボットは、モデルを持たず、従って中央集権的に行動を計画することはありません。下の図は、Wikipediaに出ているものですが、特徴を良く表しています。

Subsumption_architecture_abstract_2

真ん中の3つのボックスは上から「周囲を探検する」「うろうろする」「障害物を避ける」という行動を表しています。この実装で最終的に実現したいのは「周囲を探検する」という行動です。つまり、それがこのロボットの目的になります。

ボックスは、それぞれ独立のプログラムで、左側の「センサー情報」ボックスからの情報に基づいて行動を生成します。この結果、それぞれのボックスから、走行モーターを(右側のボックス)コントロールする信号が発生します。これが行動ボックスから出ている→です。

→をよく見ると、上の→が下の→を押さえ込む用に描かれていますが、これが重要です。これは「包摂」関係を表していて、例えば「障害物を避ける」という行動は「うろうろする」という行動に「包摂」されています。つまり、「障害物を避ける」行動は「うろうろする」行動の一部となっているのです。

これは簡単に思考実験できると思います。

例えば「障害物を避ける」行動とは障害物を発見すると、そこから離れるようにモーターへ信号を送ります。同様に「うろうろする」は一定時間前進し、ランダムに方向を変える信号をモーターに送ります。このような構造にすると、方向を変えて動き回りながら、障害物を回避する行動をプログラムすることが出来ます。

「包摂」関係を成り立たせるためには、「障害物を避ける」からの信号が、「うろうろする」信号を抑圧する、つまり、「障害物を避ける」からの信号が優先してモーターへ送られるようになっていればよい訳です。こうすれば「うろうろする」プログラムに従って行動中に、障害物を発見すると、回避行動の方が優先されるので、たとえそのとき「うろうろする」プログラムが、前進の信号をモーターに送っていたとしても、無事に障害物を回避できるのです。

ただし!上の説明はブルックスの有名な論文(下記)とはちょっと違っています。ブルックスの論文では、行動の優先順位はあくまで上になっているブロックにあるように見えます。つまり、上の説明とは逆です。それだとロボットはうっかりすると障害物にぶつかってしまいそうなものですが、ブルックスの仮想ロボットのブロック図を見ると確かにそうなっています。

ブルックスの仮想ロボットはかなり複雑で、さまざまなモジュールが相互に影響を及ぼすようになっています。また、優先信号には時間制限があり、これがどう影響するのかはよくわかりません。あるモジュールの信号と上位からの信号が交互にモーターに送られるということも考えられます。こうなると完全に下位のビヘィビアをブロックするのではなく、「効きを鈍くする」作用もでてくるでしょう。

ただ、ブルックスの「ビヘィビアを組み合わせて目的の行動を作る」という考え方からすると、上のような解釈が比較的合理性が高いのではないかと思います。もちろん、これは解釈の問題で、サブサンプションアーキテクチャの本質に関わるハナシではありません。この投稿のシリーズでは、この考え方で行こうと思います。

このようなアーキテクチャを使ったロボットは、シェーキーのような「正統派」の知能ロボットに比べ、単純なコンピュータで実現でき、また、反応速度が早くなります。実用的な作業ロボットを実現するには有効ということで、roombaの制御にも応用されています。もっとも、iRobotのスタートアップの一人がブルックスでしたが。

サブサンプション・アーキテクチャは昆虫の行動原理に似ています。たいしたことはできそうないという考え方もありますが、85年の有名なブルックスの論文には、結構複雑な行動をとるモデルへのアプローチもあり、研究しがいがありそうな技術です。

次回は、バンダイのロボットシリーズに使われている「サブサンプション・エンジン」について説明します。

« 何となくフリダシに戻る | トップページ | サブサンプション・エンジンを作る(その2) »

花岡ちゃんのウィークエンド」カテゴリの記事

コメント

コメントを書く

(ウェブ上には掲載しません)

トラックバック

この記事のトラックバックURL:
http://app.f.cocolog-nifty.com/t/trackback/1140145/57587945

この記事へのトラックバック一覧です: サブサンプション・エンジンを作る(その1):

« 何となくフリダシに戻る | トップページ | サブサンプション・エンジンを作る(その2) »