2002年度冬学期 ソフトウェア演習

岡田 慧,西脇 光一,水内 郁夫


  1. 第一回:Cygwin/Meadow/Gccのインストール
  2. cygwin環境のインストールと設定
    cygwin環境のためのWindows環境変数の設定
    medow環境のインストールと設定
    gccのインストール

    Mechボードへのダウンロード方法
    課題:O:\soft-ensyu\board-example1.tgz を各自のホームにコピーし,展開してled.cをコンパイルしてみよ.

  3. 第二回:Java(JDK)のインストール
  4. JDKのインストールと設定
    kvmのインストール

    課題:Windows上のJava環境でHelloWorldを表示せよ.ボード上のJava環境でも同様のことを行え.

  5. 第三回:Java に慣れる
  6. 課題:ソフトウェア第三の11月13日までの宿題を行う. また,サンプルプログラム AnimationCar.java, Universe.java, AppletCar.javaをコンパイルし実行すること. (ソフトウェア第三の資料 10月30日分の一番最後に載っているもの)

    上記課題が終わっている学生は,第二回の特別演習課題を行うこと.
    それも終わった学生は,自分でサンプルプログラムを作成すること.
    例えば,Javaのチュートリアルにあるように,2つのソートプログラムを 同時に見せるようなインターフェースはどのようにしたら出来るか? そのためには,どのレベル(Java? KVM?)でどのようなプログラムを書けばよいか?
    ソート以外の有名なアルゴリズムを実装し演習ボードのLCDで分かりやすく表示するにはどうしたらよいか?

    ソフトウェア第三の課題の提出は softp@jsk.t.u-tokyo.ac.jp に .java を送ること.

      > javac ファイル名.java
      > appletviewer  ファイル名.java
    
    として起動できるようにすること.(http://www.itlb.te.noda.sut.ac.jp/~takuma/lecture/java/step1.htmlを参考に)
    またホームページを持っている学生はホームページにアプレットを置いてURLを知らせること.

  7. 第四回:Java Mech API
  8. native/Mech APIの解説
    native/Mech APIのサンプルプログラム

    課題:

    1. native/Mech APIのサンプルプログラム 1から5を読み実行してみよ。さらに、多少の修正を加え、その結果を確認せよ。
    2. native/Mech APIのサンプルプログラム 1 LedScroll.javaのキー入力部とLEDの点灯制御部を別のスレッドにすることにより、いつキーを押しても速度が変わるようにすること。
    3. プログラム例1から4で出てきたクラス timer, led, serial, leyの複数のクラスを使用した応用プログラムを作成し、実行せよ。
    4. 車輪付きのロボットを借りてきて、サンプルプログラム6から8を実行してみよ。
      ------以下は、オプション------
    5. 以下のようなルールのゲームを作成せよ。 ルールは、各自で適宜変更してよい。
      • LCDの表示された文字のキーを押す。
      • LCDに表示される文字はだんだん速くなる。
      • 次の表示になるまで正しいキーを押せなかったら、ゲームオーバー。
      • 何回正しいキーを押すことができたかをカウントし、スコアを表示。
      • 次に表示されるキーはランダムでもいいし、あらかじめ用意した配列でもいい。timerクラスを利用すると、リセットからの経過時間が得られるので、それを利用するとよい。

        ※乱数は、

                import java.util.Random;
        
        として、
            
                Random r = new Random();
                System.out.println(r.nextInt());
        
        のようにすると得られる。 詳しくは、
                work/MechKVM/j2me_cldc/api/src/java/util/Random.java
        
        を参照。

    6. バンパや赤外線距離センサーの値に応じて、何らかの動きをするプログムを作成せよ。(例:壁に近づいたりぶつかったら、方向転換して進む。等)

  9. 第五回:ロボットの行動プログラミング(1)
  10. サンプルプログラム1
    サンプルプログラム2
    ROM(ver 3)への対応

    課題:

    1. サンプルプログラム1を走らせてみよ.
    2. スレッドはどのように使われているか説明せよ.
    3. 赤外線距離センサを使ってサンプルプログラム1のタスク行動を増やしてみよ.
    4. サンプルプログラム2を走らせて見よ. josx.robotics.Behavior, josx.robotics.Arbitratorクラスは、既にROMに格 納されているので、その他のクラス(BumperCar, DriveForward, HitWall)のみを記述したファイルを作成しコンパイルしてダウンロードすればよい.
    5. 赤外線距離センサを使ってサンプルプログラム2でのタスク行動を増やしてみよ.

      【注意】:

    サンプルのプログラムは大きいので、 0x030000からではメモリが足りないので、
    % cd ~/work/MechKVM/utmech/kvm/build/
    % make DOWNLOAD="yourfile.java" download.srec
    
    としてできた MeckKVM.jar を、
    % ./scripts/jar2srec.pl -base 0x010000 MechKVM.jar > 0x010000.jar.srec
    
    などとして、0x010000 などのアドレスに置かれるように変更した srecファイルを、F4でダウンロードする。
    実行は、ダウンロード直後にF1を押すか、直後でなければ、 0 1 0 0 0 0 <ADRSET> F1 の順にキーを押すことにより、実行できる。

  11. 第六回:ロボットの行動プログラミング(2)
  12. Subsumption1 (LeJOS用プログラム)
    Subsumption2 (LeJOS用プログラム)
    ROM(Ver 4)への対応

    課題:

  13. 第七回:ロボットの行動プログラミング(3)
  14. 先週の課題の参考回答
    先週の課題の参考回答用テストプログラム

    課題:

  15. 第八回:ロボットの行動プログラミング(4)
  16. 課題:

  17. 自主プロジェクト:ROMのCライブラリの利用法
  18. ROMのCライブラリの利用法

参考資料
  1. Windows用の便利なツール
  2. Linux環境でのJAVAの使い方
  3. UNIXコマンド集

Last modified: Mon Jan 20 14:11:12 LMT 2003