基礎セミレポート
「サッカーシュミレーションについて」
前田 有里奈 1章
林 英典 1章
福嶋 雄基 2章
三木 麻理子 3章
松村 直和 4章
本レポートでは、改良したサッカーアルゴリズムを記述し、色センサーによる認識方法とCPUの説明及び自己PRを行う。
1.サッカーアルゴリズム(改良版)
図1
図1のように座標軸を設定する。
コートの横の長さを2a、縦の長さを2b、ゴールの奥行きをc、幅を2dとし、点P(a+c,d)、点Q(a+c,−d)をとる。
各プレーヤーをA(GK;キーパー)、B、C、D、Eとする。
x≦0を自陣とする。
@各プレーヤーの守備範囲
A: x=−a上かつ−d≦y≦d
B,D: −a≦x≦a、−d≦y≦bで囲まれる領域
C,E: −a≦x≦a、−b≦y≦dで囲まれる領域
A条件
・
天井にカメラ付きCPUを設置
・
CPUはボールと各プレーヤー(味方)の位置を座標で把握
・
各プレーヤーへの指令はCPUが行う
・ CPUはボールの位置を予測できない
BCPUによる各プレーヤーとボールの位置の把握方法
・
各プレーヤーは各々異なる電波を出す
・
CPUはその電波でA~Eの位置を把握
・
ボールの把握は色センサーで行う
CPUは定期的に(0.1秒間隔で)A~Eに指令を送る
C指令内容
(1)B~Eに対して
(イ)ボールがロボットよりもx軸正方向にあるとき
ボールの座標に向かって直進し、
ボールのy座標がy<0ならば点Pへ、y>0ならば点Qへ蹴る
(ロ)ボールがロボットよりもx軸負方向にあるとき
B,Dが−a≦x≦aかつ−d≦y≦bで囲まれる領域、C,Eが−a≦x≦aかつ−b≦y≦dで囲まれる領域を守備範囲とする。ボールの座標が以下の範囲にあるときを考える。
あ): −a≦x<−a
い): −a≦x<−
a
う): −a≦x<0
え): 0≦x<a
お): a≦x<
a
か): a≦x<a
また点R(−a,0)を設定する。ボールがロボットよりもx軸負方向にあるときB、C、D、Eは点Rに向かって直進するものとする。このときボールが あ)にあるときはx=−a、い)にあるときはx=−a、う)にあるときはx=−
a、え)にあるときはx=0、お)にあるときは x=
a、か)にあるときはx=
a上までロボットは直進するものとする。
改良点: ロボットはx軸負方向に向かって進んでいるときボールをx軸正方向に蹴ることはできないものとしているため、(ロ)の状況にあるときロボットはボールを相手ゴールに向かって蹴ることはできない。つまり攻撃できない。そのためディフェンスに回るほうが得策であるため、点Rに向かってロボットは直進するようにした。さらに(ロ)の状況にあったロボットがいち早く攻撃に回れるようにし、かつボールがx軸負方向に進んでいるときロボットが(イ)の動作を起こすにはある一定距離をおいてロボットがボールよりもx軸負方向になければならないため上記のようにロボットの動きを制限した。
(2) A(GK)に対して
−d≦y≦dの範囲で、ボールのy座標と同じx=−a上のy座標に直進する
(3)A~Eに対して
各々の守備範囲からは出ない
2.色センサー
まず、カメラによってコート全体の画像を取り込む。
次に認識部分の検討を行う。例としてテニスボールを用いる(図1)。この図では、人が見てここにボールがあるな、と一目で判断できるものであるが、実際のサッカーではボールの色から判断できる。このボールをソフトで認識した結果と比較が出来るようにすれば、認識アルゴリズムやパラメータの定量的な評価が出来る。そこでボールの位置と半径を座標で認識して、認識部分の検討は完了する(図2)。
最後に、認識アルゴリズムの検討である。その結果をXY方向それぞれに対して射影したデータ列を作成する。ボールがある場合にはXY方向共に、ある場所に認識された結果の分布が現れる。これを使ってボールの位置と半径を認識する(図3)。
以上の方法でボールは認識される。
図1 図2
図3
<参考文献>
テニスボールを認識する移動ロボット
センサと知能ロボット / 日本機械学会編
3.CPU
ここでは、CPUが本当にこのシステムに適しているか、また、このシステムでCPUを用いるには認識する間隔を何秒にすればよいのかについて調べた。
なお、ここで言う“プレーヤー”とは、シュミレーション上の選手のことを指す。
まず、CPUが本シュミレーションに向いているのかという問題についてだが、このサッカーシュミレーションにおいて、CPUの役割は
・ ボールやプレーヤー(動いているもの)の座標を認識する
・ プレーヤーがどちらの組のものなのかを区別して認識する
・ ボールとプレーヤーとの距離や方向を認識する
・ 認識したボールやプレーヤーのデータを、前もって与えたプログラムを用いて分析し、それによってプレーヤーを動かす
などである。
ところで、CPUのいいところは、
・ プログラム次第で多様な処理を行うことができる
・ プログラム制御命令も実行できるので自律動作が可能
などで、おおよそ全てのシステムに搭載されている。
以上のような特徴をもつので、CPUは本シュミレーションに向いていると考えた。
次に、CPUでボールやプレーヤーの位置を確認する間隔についてだが、0.1秒間隔で本当に機能するのかという点について考えてみたい。
まず、現実世界でのプレー中のサッカーボールの速度は約25m/sと考える。
現実世界でのコートの広さは国際基準で縦38〜42m、横18〜22mである。コンピュータ上でのコートの広さをおおよそ、縦25cm、横20cmとすると、だいたい100分の1の縮小であることがわかる。この時、25m/sのボールを現実世界のプレーで用いたとすると、0.1秒では2.5m進むことになるが、ボールの軌跡を描くうえでは0.05秒の間の1.25mくらいが適当なのではないかと思った。
4.PR
守備範囲の領域を拡げることによりロボットの動く範囲を広げた。それにより前回の試合の時にあった、相手のロボット四体に対し自分のロボット二体でボールを取り合うということが起こらないようにした。そしてある程度の領域に制約をつけることで、四体が団子になることを避けた。
また、ロボットがx軸負の方向に進んでいる時、改良前、ロボットはボールの方へ向かうだけで何もしなかったが、それを、ゴールに向かわせるように変えることでまずゴールを守り、そしてその後ボールを取りに行くようにさせた。しかも、ただ単にゴールに向かうのではなく、ボールとロボットの位置によってどこまでゴールの方へ戻るかを決めた。それにより、いったんゴールに戻ってからボールを取りに行く時間をできるだけ短くした。