人工知能に関する断創録

このブログでは人工知能のさまざまな分野について調査したことをまとめています(更新停止: 2019年12月31日)

ロボットの教育的利用

人工知能とメディア・ゲーム・教育 (2)の続き。教育支援システムの話を聴いた。いわゆるe-Learningはコンピュータの画面を見て学習を進めるという形態がほとんどのようだ。

マインドストーム―子供、コンピューター、そして強力なアイデア

マインドストーム―子供、コンピューター、そして強力なアイデア

を読んでてふと思いついたのだけれどロボットの利用目的に教育を含めるのはよさそう。今はAIBOのようなエンターテインメントロボットが主だが遊んでばっかりはいられない。教育目的のものがあってもよさそう。

子供向けの戦略。

  1. 少子化(今ここ)
  2. 教育加熱
  3. 子供の教育支援ロボ
  4. 金持ちお受験ママが購入
  5. ロボット普及
  6. 価格下落
  7. 一般に普及

高齢者向けの戦略。

  1. 高齢化
  2. ボケたら困る
  3. 脳を鍛えるゲームがブーム(今ここ)
  4. ボケ予防ロボ
  5. 金持ち高齢者が購入
  6. ロボット普及
  7. 価格下落
  8. 一般に普及

か、完璧だ・・・あとはロボットの身体性を生かす教育法とボケ予防法を考えるだけだ。

ブルックスの知能ロボット論

ブルックスの知能ロボット論―なぜMITのロボットは前進し続けるのか?

ブルックスの知能ロボット論―なぜMITのロボットは前進し続けるのか?

Rodney Brooks氏のこれまでの仕事とロボット観が余すところなく語られている一冊。

Brooks氏の考える知能は、センサー(知覚系)とモーター(駆動系)の連動から生まれるものであり、従来の認知科学で一般的であった認識系はとっぱらってしまう*1

というこれ論文なの?というほどユニークな論文を書かれている*2

この考え方をさらに発展させた内容が知の創成―身体性認知科学への招待(2005/03/15)で詳しくまとめられている。私の中ではMinsky氏の『心の社会』と並んでバイブルだ*3

Minsky氏とBrooks氏は人工知能をめぐる考え方で激しく対立しているようだ。

知能観は違うのだろうけど、サブサンプション・アーキテクチャと心の社会は根幹部分で似ていると思う。私は強化学習に惹かれていたこともあって、Brooks氏の知能観に近い。

ただこれで達成できるのは動物の知能までで、人間の知能は不可能だと根拠はないけど思うなぁ。

Brooks氏の以前のホームページにロボットによりそった氏の写真が掲げてあってちょっとあこがれてたんだけど今はなくなってて残念。危ない人だと思われたのかな(笑)

関連リンク

*1:従来の認知科学では知覚 -> 認識 -> 行動、Brooks氏は知覚 -> 行動

*2:私も一生に一度は書いてみたい・・・

*3:人工知能で読むべき本を3つ挙げろと言われれば、『エージェントアプローチ人工知能』『心の社会』『知の創成』を挙げる。

leJOS

leJOSは、マインドストームで作ったロボットをJavaで制御するためのライブラリ。Cで制御できるlegOSのJava版だ。

マインドストームにはブロックを組み合わせるようにプログラムを作成できるツールが入っているがプログラマには結構使いにくい(特にループや変数の扱いが・・・)。

leJOSにはロボット制御に必要なさまざまなクラスライブラリが用意されている(センサーやモータークラスなど)。普通のJavaプログラムのようにロボットをプログラミングできるので使いやすい。

マインドストーム・プログラミング入門―LEGOでメカトロニクス/ロボティクスを学習する (COMPUTER TECHNOLOGY)

マインドストーム・プログラミング入門―LEGOでメカトロニクス/ロボティクスを学習する (COMPUTER TECHNOLOGY)

  • 作者: ブライアンバグナル,Brian Bagnall,長瀬嘉秀,二上貴夫,テクノロジックアート
  • 出版社/メーカー: CQ出版
  • 発売日: 2004/07
  • メディア: 単行本
  • 購入: 1人 クリック: 35回
  • この商品を含むブログ (10件) を見る

leJOSの基本から応用まで広くカバーされている。この本ではR. Brooksのサブサンプション・アーキテクチャまで解説されておりロボティクスの基礎を学ぶ上でよいと思った。

プログラムはこんな感じに書ける。

import josx.platform.rcx.*;  // leJOSのライブラリ

public class Tippy {
    public static void main(String[] args) {
        Motor.A.forward();  // モーターAを正転
        Motor.C.forward();  // モーターCを正転
        while (true) {
            if (Sensor.S2.readBooleanValue() == true) {
                // センサー2が反応したら
                backUpAndTurn();
            }
        }
    }
    
    public static void backUpAndTurn() {
        Motor.A.backward();  // モーターAを逆転
        Motor.C.backward();  // モーターCを逆転
        try {
            Thread.sleep(600);  // 600msそのまま
        } catch (InterruptedException e) {}
        Motor.A.forward();
        try {
            Thread.sleep(300);
        } catch (InterruptedException e) {}
        Motor.C.forward();
    }
}

これをロボットに転送して実行できる。

転送は赤外線(TVのリモコンと同じ)で行うので周囲が明るいとなかなかうまくいかない。その場合は、

  • 周囲を暗くする。
  • コントロールパネルで赤外線タワーの出力をLONGにする。
  • 同じくタイムアウト時間を長くする。

とよさそう。