バージョン6から7にかけて,キックモデルには基本的な変更は加えられなかっ た. よって,過去のキックスキルの実装は動作するだろう. しかし,サーバパラメータの変更のために,マルチキックの必要が無くなるこ とがあるだろう.
kickコマンドは2つのパラメータ kick powerと angleを取る. kick powerはボールを蹴る力で,minpower から maxpowerの範囲の値を使える. angleはボールを蹴る方向で,値は度数で与える.値の範囲は minmoment から maxmomentである. (現在のパラメータ値については,表 4.6を参照).
kickコマンドがサーバに受理されると,そのプレイヤがボールを
キック可能な状態であれば,キックが実行される.
ボールとプレイヤの間の距離が 以上 kickable_margin以下で
あれば,プレイヤはボールをキック可能である.
ヘテロジニアスプレイヤはことなるキッカブルマージンを持つ.
この節における距離の計算では,プレイヤとボールとの距離とは,プレイヤと
ボールそれぞれの外周円の間の距離を意味する.
よって,この節における距離とは,両物体の中心位置の距離からボールの半径
とプレイヤの半径を引いた値になる.
キックに関する計算では,まず最初に有効キックパワーepを計算する:
有効キックパワーは,ボールがプレイヤの体の正面に密着している場合に最大 になり,ボールとプレイヤの位置関係(角度と距離)に応じて減少する.
プレイヤの体の方向に対するボールの相対角度が0° -- 例えば, ボールがプレイヤの正面にある -- であれば,有効キックパワーは変化する ことなくそのまま維持されるだろう. 角度が大きくなるほど,有効キックパワーは減少する. 最悪のケースは,ボールがプレイヤの真後ろ(角度 180°)となる 場合で,このとき,有効キックパワーは25%減少する.
有効キックパワーに関する次に重要な変数は,ボールとプレイヤとの距離であ
る.
キックが実行されるとき,ボールとプレイヤとの距離は と
kickable_marginの間であることは明らかである.
距離が0であれば,やはり有効キックパワーは全く減少しない.
ボールがプレイヤから離れるほど,有効キックパワーは減少する.
距離がkickable_marginであれば,有効キックパワーは25%減少す
る.
ボールがプレイヤの真後ろで,距離がkickable_areaの時に最悪の
ケースとなり,kick powerは50%しか効果を表さない.
有効キックパワーについては,公式 4.21 が得られる.
(dir_diff は,ボールの絶対方向とプレイヤの体の絶対方向との角度差の絶
対値を意味する.dist_diff は,ボールとプレイヤとの距離の絶対値を意味
する.)
:
有効キックパワーは,
の計算に用いられる.この加速度
ベクトルは,サイクル
におけるボールの絶対加速度
に加
算される(ボールの近くにいる全てのプレイヤが同時にボールをキック
可能であることを覚えておくこと).
サーバパラメータ kick_rand が,ボール加速時のノイズ生成に関 するパラメータとして用いられる. デフォルトプレイヤに関しては,kick_rand は0であり,ノイズは 発生しない. ヘテロジニアスプレイヤに関しては,kick_rand の値は player.conf 内の kick_rand_delta_factor パラメータ と実際のキッカブルマージンに依存する. RoboCup 2000においては,通常のプレイヤにもkick_randを設定す ることで,evaluation sessionを実施した.
シミュレーションステップが から
に移る時,加速度
が適用される:
現在の設定では,ボールが最大速度で蹴り出された場合,ボールの最大移動距
離は45mである.この場合,キック後53サイクル経過した時点で,ボールの移
動距離は約43mとなり,ボールのスピードは 以下になる.
キック後15サイクル経過した時点では,ボールの移動距離は27mから28mとなり,
ボールのスピードは1.0よりわずかに大きい値を保っている.
現在のキックモデルとパラメータ設定では,連続したキックによってボール制 御を行なうと効果的である. 例えば,ボールを止め,キッカブルエリア内のより有利な位置へボールを運び, 望ましい方向へとキックを行うといったことが可能である. 連続したキックを行なうことで,相対位置 (0,0°)にボールを置 くこと無く,ボールを最大スピードへと加速することも可能になる.