メッセージリファレンス
メッセージは emitter デバイスで送信し、receiver デバイスで受信します。例は通信のチュートリアルを参照してください。
以下の書式文字列は、Python の struct モジュールのものです。
ロボットが送信するメッセージ
Section titled “ロボットが送信するメッセージ”| メッセージ | 書式 | 長さ | 用途 |
|---|---|---|---|
| 壁のトークンの報告 | i i c: x, z, 種類 |
9 バイト | 位置はセンチメートル単位で、種類は H、S、U、F、P、C、O のいずれかです。ロボットは 1 秒以上停止している必要があります。 |
| 地図データ | 2i の後に UTF-8 テキスト: 行数、列数、カンマ区切りのセル |
それ以外の任意の長さ | 地図を保存します(評価はしません) |
M |
c |
1 バイト | 保存した地図を評価します。1 回しか行えません。 |
L |
c |
1 バイト | 競技進行停止を宣言します |
G |
c |
1 バイト | ゲームの情報を要求します |
E |
c |
1 バイト | ゲームを終了します。ロボットがスタートタイルにいて、壁のトークンを 1 つ以上識別していれば、脱出ボーナスが与えられます。 |
Erebus はこれらのメッセージを長さで区別するので、報告は必ずちょうど 9 バイトにしてください。
ロボットが受信するメッセージ
Section titled “ロボットが受信するメッセージ”| メッセージ | 書式 | 長さ | 用途 |
|---|---|---|---|
L |
c |
1 バイト | 競技進行停止が発生しました |
G |
c f i i: G、スコア、残りのゲーム時間、残りの実時間 |
16 バイト | G への返信です。時間は秒単位です。 |
上の struct 書式では float がアラインされるため、G のパケットにはパディングが含まれることに注意してください。スコアはオフセット 4 バイトの位置から、2 つの時間はオフセット 8 バイトと 12 バイトの位置から始まります。
よく使う Webots の関数
Section titled “よく使う Webots の関数”| 関数 | 説明 |
|---|---|
robot.getDevice(name) |
名前でデバイスを取得します。C++ では robot->getMotor(name)、robot->getCamera(name) などを使います。 |
robot.step(timeStep) |
シミュレーションを進めます。シミュレーションが終わると -1 を返します。 |
robot.getTime() |
シミュレーション時間を秒単位で取得します |
device.enable(timeStep) |
センサーを有効にします |
motor.setPosition(float("inf")) |
モーターが無制限に回るようにします |
motor.setVelocity(speed) |
モーターの速度をラジアン毎秒で設定します |
