RoboCup小型機シミュレータ"wemu"利用の手引き

はこだて未来大・秋田純一
akita@is.t.kanazawa-u.ac.jp

wemuとは?

RoboCup小型機部門でのロボットの動作をシミュレートすることを目的としています。ここで想定しているチームは、画像フィードバック、いわゆるビジュアルサーボを採用しています。つまりチームのシステム構成は以下のようであることを仮定します。 最後の5.によって各ロボットが移動し、その結果が1.に反映されることで、全体で閉ループを構成することになります。
このwemuでは、このうちの1., 2., 5.をコンピュータ上に再現します。つまり、まず「各ロボットの動作コマンド」を入力として受け付けます。この受け付けた動作コマンドに従ってwemu内部のロボットを移動し、衝突等の物理現象を計算します。そしてその結果に基づく座標データを、ビジョンシステムの処理結果である「座標情報」として出力します。
従って、ロボットの動作のために必要な技術的な問題点を分離し、いわゆる「AIらしい」部分である3., 4.の部分のプログラム開発に専念できる環境を提供することができます。
なお各データの送受信はUDPによって行われます。
なおwemu(ver1.14)はここから入手できます。

想定されるシステム構成

通常の小型機部門のチームのシステムは以下のような構成をとっています。
座標データ-------[戦略システム]-------> ロボットの動作コマンド
この座標データを受信してとロボットの動作コマンドの生成する「戦略システム」が実現できれば、普段はこのwemuで計算機上でシミュレーションし、そのまま同一フォーマットのデータを送受信する実機システム(ビジョンシステムと無線システム)と差し替えることで、そのまま実機での動作を実現できることになります。
なおここでは、RoboCup99 Small-size Leagueに参加した"Linked99"のロボット(写真)を想定しています。

画面の構成

「Yロボット使用」グループ

黄色チームの各ロボットを使用するかどうかを選択します。

「Bロボット使用」グループ

青色チームの各ロボットを使用するかどうかを選択します。

「Y座標データ送信」グループ

黄色チームから見た座標データの送信先のホスト名・ポート番号を指定します。座標データは、後述のフォーマットにしたがってこの指定先にUDPで送信されます。

「Y動作コマンド受信」グループ

黄色チームの各ロボットの動作コマンドを受信するポート番号を指定します。動作コマンドは、後述のフォーマットにしたがってこの指定したポートにUDPで送信されなければなりません。ただしロボット#5はキーパーで左右しか動けないため、右の車輪の速度は常に左の車輪の速度と同一になります。

「B座標データ送信」グループ

青色チームから見た座標データの送信先のホスト名・ポート番号を指定します。座標データは、後述のフォーマットにしたがってこの指定先にUDPで送信されます。

「B動作コマンド受信」グループ

青色チームの各ロボットの動作コマンドを受信するポート番号を指定します。動作コマンドは、後述のフォーマットにしたがってこの指定したポートにUDPで送信されなければなりません。ただしロボット#5はキーパーで左右しか動けないため、右の車輪の速度は常に左の車輪の速度と同一になります。

「開始」ボタン

物理現象のシミュレーションを開始します。また、各ロボットの動作コマンドの受信、座標データの送信も開始します。

「停止」ボタン

動作を一時中断します。

入力(ロボット動作コマンド)のフォーマット

各味方ロボットの動作は、1行あたり1台のロボットの動作を以下のフォーマットで記述します。 N L R 各変数の意味は以下の通りです。 なお、各変数は半角スペースまたはタブで区切ります。

[例]

1 0.5 -0.5 ロボット#1の左車輪を最大速度の0.5倍で正転、右車輪を0.5倍で逆転します。従って、ロボット#1はその場で右回転を始めます。

出力(座標データ)のフォーマット

座標データは、1フレームあたり1行で以下のフォーマットで送信されます。 N Sx Sy Bx By Nrf NRe PF1x PF1y MF1x MF1y PF2x PF2y MF2x MF2y ... PE1x PE1y PE2x PE2y ... 各変数の意味は以下の通りです。 なお各変数は半角スペースで区切られます。 ここで用いる座標系は、以下のような通常の数学で用いる座標系です。 y



+−−−−−−−−→x
O また、各座標データは、およそビデオレート(33ms)ごとに送出されます。従ってゲーム開始からの経過時間は、 N×33[ms]で与えられます。ただしこの送出時間間隔は実行する計算機の演算性能に依存し、また実機においても画像処理系に依存して長くなる可能性があります。

[例]

120 300 150 150 75 1 2 200 150 200 140 200 50 200 100

使用条件等

このソフトウエアの著作権は、秋田純一(akita@is.t.kanazawa-u.ac.jp)が所有します。このソフトウエアは、利用者の責任のものとで利用してください。また、このソフトウエアは未完成のため、再配布等はご遠慮ください。お問い合わせ等は秋田純一(akita@is.t.kanazawa-u.ac.jp)までご連絡ください。

改変履歴

2000.1.8 wemu ver1.0:やや物理モデルに不備があるような気がしますが・・・
2000.1.11 wemu ver1.01:ロボットコマンドの受信バッファを常時最新まで読むように変更
2000.2.3 wemu ver1.10:ボール、ロボットの位置、向き設定を「つまむ」ように変更。ロボット#5(キーパー)を1輪駆動(左車輪へのコマンドのみ受け付け)。フィールドの寸法をルール通りに変更。相手ロボットも動作コマンドを受け付けられるように変更。相手チーム側からみた座標情報もUDPで送信できるように変更。「開始」「停止」ボタンの位置を変更。
2000.2.4 wemu ver1.11: データ送信先等の設定ボタンのバグをfix。
2000.5.24 wemu ver1.12:出力座標フォーマットの説明のバグをfix。
2000.5.28 wemu ver1.13:ボールの位置をときどき「飛ぶ」ように設定。ロボットのマーカー等の位置を±1画素の範囲で変動するように設定。メニューの一部バグfix。
2000.6.1 wemu ver1.14:実画像データを模擬するため、送信する座標のブレを設定可能に&座標データを1フレーム前のものを送信するように変更。