next up previous contents index
Next: Moveモデル Up: アクションモデル Previous: Staminaモデル   Contents   Index


Kickモデル

バージョン6から7にかけて,キックモデルには基本的な変更は加えられなかっ た. よって,過去のキックスキルの実装は動作するだろう. しかし,サーバパラメータの変更のために,マルチキックの必要が無くなるこ とがあるだろう.

kickコマンドは2つのパラメータ kick powerangleを取る. kick powerはボールを蹴る力で,minpower から maxpowerの範囲の値を使える. angleはボールを蹴る方向で,値は度数で与える.値の範囲は minmoment から maxmomentである. (現在のパラメータ値については,表 4.6を参照).

kickコマンドがサーバに受理されると,そのプレイヤがボールを キック可能な状態であれば,キックが実行される. ボールとプレイヤの間の距離が $0$ 以上 kickable_margin以下で あれば,プレイヤはボールをキック可能である. ヘテロジニアスプレイヤはことなるキッカブルマージンを持つ. この節における距離の計算では,プレイヤとボールとの距離とは,プレイヤと ボールそれぞれの外周円の間の距離を意味する. よって,この節における距離とは,両物体の中心位置の距離からボールの半径 とプレイヤの半径を引いた値になる.

キックに関する計算では,まず最初に有効キックパワーepを計算する:

\begin{displaymath}
\mathrm{ep} = \mathrm{kick\ power} \cdot \mathrm{kick\_power\_rate}
\end{displaymath} (20)

有効キックパワーは,ボールがプレイヤの体の正面に密着している場合に最大 になり,ボールとプレイヤの位置関係(角度と距離)に応じて減少する.

プレイヤの体の方向に対するボールの相対角度が0° -- 例えば, ボールがプレイヤの正面にある -- であれば,有効キックパワーは変化する ことなくそのまま維持されるだろう. 角度が大きくなるほど,有効キックパワーは減少する. 最悪のケースは,ボールがプレイヤの真後ろ(角度 180°)となる 場合で,このとき,有効キックパワーは25%減少する.

有効キックパワーに関する次に重要な変数は,ボールとプレイヤとの距離であ る. キックが実行されるとき,ボールとプレイヤとの距離は $0$kickable_marginの間であることは明らかである. 距離が0であれば,やはり有効キックパワーは全く減少しない. ボールがプレイヤから離れるほど,有効キックパワーは減少する. 距離がkickable_marginであれば,有効キックパワーは25%減少す る.

ボールがプレイヤの真後ろで,距離がkickable_areaの時に最悪の ケースとなり,kick powerは50%しか効果を表さない. 有効キックパワーについては,公式 4.21 が得られる. (dir_diff は,ボールの絶対方向とプレイヤの体の絶対方向との角度差の絶 対値を意味する.dist_diff は,ボールとプレイヤとの距離の絶対値を意味 する.)
$0 \leq \mathrm{dir\_diff} \leq 180^\circ \quad\land\quad 0 \leq
\mathrm{dist\_diff} \leq \mathrm{kickable\_margin}$:

\begin{displaymath}
\mathrm{ep} = \mathrm{ep} \cdot \left(1- 0.25 \cdot \frac...
... \frac{\mathrm{dist\_ball}}{\mathrm{kickable\_margin}} \right)
\end{displaymath} (21)

有効キックパワーは, $\vec{a}_{{n}_{i}}$の計算に用いられる.この加速度 ベクトルは,サイクル$n$ におけるボールの絶対加速度 $\vec{a}_{n}$ に加 算される(ボールの近くにいる全てのプレイヤが同時にボールをキック 可能であることを覚えておくこと).

サーバパラメータ kick_rand が,ボール加速時のノイズ生成に関 するパラメータとして用いられる. デフォルトプレイヤに関しては,kick_rand は0であり,ノイズは 発生しない. ヘテロジニアスプレイヤに関しては,kick_rand の値は player.conf 内の kick_rand_delta_factor パラメータ と実際のキッカブルマージンに依存する. RoboCup 2000においては,通常のプレイヤにもkick_randを設定す ることで,evaluation sessionを実施した.

シミュレーションステップが $n$ から $n + 1$ に移る時,加速度 $\vec{a}_{n}$ が適用される:

  1. $\vec{a}_{n}$ は,大きさがbaccel_max以下になるように正 規化される.現在(サーババージョン9),最大加速度は有効キックパワーの 最大値と等しい.
  2. $\vec{a}_{n}$ が,現在のボール速度 $\vec{v}_{n}$ に加算される. $\vec{v}_{n}$ は,大きさがball_speed_max以下になるように 正規化される.
  3. ノイズ $\vec{n}$ と風の影響 $\vec{w}$ が,$\vec{v}_{n}$ に加算さ れる.ノイズと風の影響はいずれも,server.confによる設定変更が 可能である.風に関するパラメータは,wind_forcewind_dirwind_rand,ノイズに関するパラメータは, ball_randである.ノイズベクトルのXY成分の大きさは,いずれも $[ -\vert\vec{v}_{n}\vert \cdot \mathrm{ball\_rand} \ldots \vert\vec{v}_{n}\vert
\cdot \mathrm{ball\_rand}]$ の間の値である.
  4. ボールの新しい位置 $\vec{p}_{n+1}$ は,古い位置 $\vec{p}_{n}$ に 速度ベクトル $\vec{v}_{n}$ を加算した値である.(すなわち,連続したシ ミュレーションステップ間でのボールの最大移動距離は, ball_speed_maxである).
  5. ball_decay がボールの速度ベクトルに適用される: $\vec{v}_{n+1} = \vec{v}_{n} \cdot \mathrm{ball\_decay}$. 加速度 $\vec{a}_{n+1}$ の大きさは0にセットされる.

現在の設定では,ボールが最大速度で蹴り出された場合,ボールの最大移動距 離は45mである.この場合,キック後53サイクル経過した時点で,ボールの移 動距離は約43mとなり,ボールのスピードは $0.1$ 以下になる. キック後15サイクル経過した時点では,ボールの移動距離は27mから28mとなり, ボールのスピードは1.0よりわずかに大きい値を保っている.

現在のキックモデルとパラメータ設定では,連続したキックによってボール制 御を行なうと効果的である. 例えば,ボールを止め,キッカブルエリア内のより有利な位置へボールを運び, 望ましい方向へとキックを行うといったことが可能である. 連続したキックを行なうことで,相対位置 (0,0°)にボールを置 くこと無く,ボールを最大スピードへと加速することも可能になる.


Table 4.6: ボールとキックモデルに関するパラメータ
基本パラメータ ヘテロジニアスプレイヤのパラメータ
server.conf player.conf
名前 名前 範囲
minpower -100      
maxpower 100      
minmoment -180      
maxmoment 180      
kickable_margin 0.7 kickable_margin_delta_min 0.0 0.7
    kickable_margin_delta_max 0.2 -- 0.9
kick_power_rate 0.027      
kick_rand 0.0 kick_rand_delta_factor 0.5  
    kickable_margin_delta_min 0.0 0.0
    kickable_margin_delta_max 0.2 -- 0.1
ball_size 0.085      
ball_decay 0.94      
ball_rand 0.05      
ball_speed_max 2.7      
ball_accel_max 2.7      
wind_force 0.0      
wind_dir 0.0      
wind_rand 0.0      



next up previous contents index
Next: Moveモデル Up: アクションモデル Previous: Staminaモデル   Contents   Index
Hidehisa Akiyama 2004-11-21