agenttestを別パッケージ化

rcssserver3dにはサンプルエージェントとして 'agenttest' というプログラムソースが付属しています。2004年時点のほとんどの参加者はこれをいじっていると思います。しかし、agenttestはシミュレータのライブラリに依存しているので、自分のエージェントを作るときにもrcssserver3dのパッケージを丸ごと使っているのが現状だと思います。これでは非常に不便です。というわけで、agenttestだけを切り分けて、開発しやすくなるように別パッケージ化してみました。

ただし、正しくパッケージ化されている保証はありません。また、将来rcssserver3dのライブラリに変更が加えられた時には、大幅な修正が必要になるかもしれません。要するに、あまり信用しないでください。

前提

  • rcssserver3dをインストールできていること。

Fedora Coreの場合は、3D/rcssserver3D-0.3 on Fedora Core 1の手順でインストールできます。Core2やCore3でも基本的に同じだと思います。

Gentooの場合は、久保さんが作成されたportageが使えます。http://rc-oz.sourceforge.jp/pukiwiki/?RoboCupPortage

知っておいた方がいいもの

GNU Autotoolsを多少は使えないと3Dのエージェントを独自開発するのはしんどそうです。何故なら、シミュレータ側でバリバリ使ってるので、ライブラリのチェックなどのためにシミュレータの設定を流用しないと面倒だから。libtoolはともかく、少なくともautomakeのためのMakefile.amくらいは書けないとちょっと無理かも。Autotoolsに関しては日本語の情報があんまり無いんですが(というか、英語でもイマイチ…)、一番分かりやすかったのはこのあたり http://www.spa.is.uec.ac.jp/~kinuko/slidemaker/autotools/ 。でも、最新の英語マニュアルを直接読むのが最終的には一番近道になると思います。

作成したファイル

  • bootstrap ソースファイル追加などの設定変更を行ったときに使用するスクリプト
  • configure.ac autoconfの入力ファイル
  • 各Makefile.am automakeの入力ファイル

ソースファイルは rcssserver3d-0.3/app/agenttest/*.{h,cpp} をそっくりコピーしてきました MLで久保さんから頂いたコメントを参考に、12/15/2004時点のsourceforgeのCVSからコピーしてきました。rcssserver3d-0.3付属のagenttestとの違いは、ReadBuffFD.{h,cpp}というファイルが追加されて、commserver.{h,cpp}に変更が加えられたことです。m4マクロはそのまま使うことにして、rcssserver3d-0.3/acinclude.m4をrcss3d.m4としてコピーしました。

構成は以下のようになっています。この他、ChangeLogやらNEWSやら必要なファイルを適当に作ります。

agent3d/
   Makefile.am
   bootstrap
   configure.ac
   config/
     rcss3d.m4
   src/
     Makefile.am
     *.h
     *.cpp

細かい説明は面倒なので省きます。最終的に出来たもの(agent3d-x.x.x.tar.gz)はこのページに添付しておきます。

configureのオプション

  • --enable-debug
    configureのオプションとして、'--enable-debug'を追加しておきました。これはrcssserver3dのconfigureオプションと対応しています。rcssserver3dのconfigure時に'--enable-debug=no'としているならば、agent3dパッケージでも同じオプションを指定しなければいけません。
  • RCSSSERVER3D
    rcssserver3dのインストールprefixを指定できます。/usr/local 以外の場所にインストールした場合に使用します。ホームディレクトリ直下のrobocupというディレクトリにインストールした場合は以下のようになります。
    ./configure RCSSSERVER3D=$HOME/robocup

その他、標準のオプションが使えます。詳しくは、./configure --helpを実行してください。

実行方法

まず、srcディレクトリ内のagentdb.xmlを編集します。exec_lineのところのパスを自分の環境に合わせて編集します。バイナリへの絶対パスが指定されていれば良いようです。

次に、rcsoccersim3D-testを編集します。これはagentdb.xmlへのパスを'--agent_db_fn'オプションの値で指定すれば良いだけです。rcssserver3dを /usr/local 以外の場所にインストールしている場合は、rcssserver3dへのパスの部分も編集してください。

正しく設定できていれば、./rcsoccersim3D-test を実行すると agenttest vs agent3dの状態で起動されます。本当に正しい設定方法は僕もまだ分かってなかったりしますが…

自分のエージェントを作るには

agent3dパッケージのソースを編集するだけなら、一度configureを実行するだけで充分です。ソースファイルを追加した場合は、Makefile.amを編集し、bootstrapを実行してから再びconfigureを実行します。 ちなみに、make dist を実行すると、*.tar.gzのパッケージファイルが作成されます。

また、agent3dでは$HOME/.rcssserver3d/agenttest.rbを読み込んでいます。独自のrubyスクリプトを使う場合は、それなりにzeitgeistライブラリの挙動を理解しておく必要があります。その上で、ソースファイルの該当個所(main.cppのInitなど)を編集してください。

感想

より高度なエージェントを開発するにはシミュレータのライブラリを多少は理解しないと話にならなさそうです。少なくとも、salt, oxygen, zeitgeistが何をするものなのか把握する必要はありそうです。僕もこれから読んでみます。saltはVector3fとかの基本的なものみたいなので分かりやすそうですが、zeitgeistは無駄に複雑で読むのがちょっと嫌です。特にScriptServerのRunInitScriptメソッドはその意図の理解に苦しみます…。もうちょっと上手く書けるんじゃないかなぁと。とりあえず、ライブラリ名にドイツ語を使うのは止めて…

コメント

  • CVSから取ってきたソースと置き換えました。 -- akiyama? 2004-12-15 (水) 14:30:53
  • 抜けていたファイルを補完しました。 -- akiyama? 2004-12-21 (火) 13:23:01
  • 3D開発/rcssserver3D on Fedora Core 1?にコメント欄がなかったので、こっちに書きます。Fedora Core 3では標準のgccでspadesのコンパイルが通らないようです。あとぼくが使っている環境は人がRH9を入れたものにFC2を、さらにFC3を上書きしたもので、boost{,-devel}とruby{,-devel}を入れないとダメみたいです。 -- n071316 (NOGUCHI, Takuya)? 2004-12-25 (土) 16:20:04
  • typoを修正したRoboCup2005(春季競技会2005)バージョンのソースを添付しました。 -- akiyama? 2005-08-09 15:54:16 (火)

添付ファイル: fileagent3d-0.1.1.tar.gz 430件 [詳細] fileagent3d-0.0.0.tar.gz 405件 [詳細] fileagent3d-0.3.0.tar.gz 2204件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2016-03-14 (月) 14:51:36 (1226d)
SourceForge.JP
Creative Commons License
RoboCup tools by Hidehisa Akiyama is licensed under a Creative Commons 表示-非営利 2.1 日本 License.