next up previous contents index
Next: sclient1 Up: クライアントの作り方 Previous: サンプルクライアントの全体構造   Contents   Index


シンプルクライアント

完全なサッカークライアントを開発するためにユーザがなすべき事は,`頭脳' 部分のコードを書くことである.頭脳部分は,前説で述べた sampleclient を使ってユーザが行ったのと同じことを実行する. 言い替えると,ユーザは,受信したセンサ情報に基づいてコマンド文字列を生 成するコードを書かなければならない,ということである.

もちろん,これは簡単な仕事ではない(多くの研究者が研究対象としてRoboCup に取り組んでいる).そして,その実装には様々な方法がある. 単純に言って,プレイヤクライアントを開発するためには,ユーザは次の関数 を実現する必要がある:

[Sensing]
センサ情報の解析: 前説で示したように,サーバは様々な情報をS式で送信する. そのため,クライアントはS式を構文解析する必要がある. そして,特定の内部表現を得るために,クライアントは情報を分析し なければならない. 例えば,プレイヤの位置やフィールドの状態を推測するために,クラ イアントは視覚情報を分析する必要がある.何故なら,視覚情報は 物体(フィールド上の目印となる物体や移動物体)の相対的な位置しか 含まないからである.
[Action Interval]
コマンド送信間隔の制御: 体の制御を行うコマンド(turn,dash,kickなど)は100msに一回しか サーバによって受けつけられない.そのため,クライアントはコマン ド送信前に適切な間隔を待つ必要がある.
[Parallelism]
センサと行動の並列実行: サッカーサーバはセンサ情報とコマンドを非同期に処理する.そのた め,クライアントはセンサプロセス(センサ情報の取扱い)と行動プロ セス(コマンド送信の制御)を並列に実行する必要がある.
[Planning]
プレイのプランの作成: クライアントは,センサ情報を用いて適切なコマンド列を生成する必 要がある.もちろん,これがサッカークライアント開発における最終 的な目標である!!

単独動作するプレイヤのシンプルな例,sclient1sclient2 をこ こで示す.これらはボールを追いかけて敵ゴールへとキックするだけである. ソースは次の場所から得られる:

ftp://ci.etl.go.jp/pub/soccer/client/noda-client-2.0.tar.gz
このサンプルでは,上で述べられた機能が次のように実現されている:



Subsections

Hidehisa Akiyama 2004-11-21