Re: The history of "M&Y"

Team "M&Y" and "花鳥風月"
the soliloquy of the father
毎日更新!

Rescue Simulation AIプログラミング

2020-08-17 | RoboCup2020

前の記事はこちら いまさら Rescue Simulation を動かしてみる 続き

 

まあ、もう、あまり役に立たないでしょうけど・・・Rescue Simulation の AIプログラミングを自分の備忘録として記載しておきます。

大昔の(2010年の頃)AIは、全くのランダム走行や、壁に沿って一周するプログラムが普通でした。

しかし、時代が進み、現在の Rescue Simulation では、作戦を立てて、きちんとその位置に向かうようなプログラムを作り必要があります。

①オブジェクトを収集したら、オブジェクトコレクションボックスに入れる。

②スーパーオブジェクトやスーパープラスオブジェクトが発生したら、収集する。

③その他、オブジェクトが撒かれている特定の領域に向かう・・・

こんな感じです。

で、特定の場所に向かうのは 自分(ロボット)の座標が分かる WORLD_2 でのプログラミングになります。

自分(ロボット)の座標は PositionX、PositionY の変数で取得することができます。

また、自分が向いている方向も Compass という変数で取得できます。

 

では、向かうべき座標を(Xt,Yt)として、そこに向かうプログラムのサンプルです。

 

dX=Xt-PositionX;
dY=Yt-PositionY;

if((dX>0)&&(dY>0))
  if(dX>dY)
    T=300;
  else 
    T=330;
else if((dX<0)&&(dY>0))
  if(-dX>dY)
    T=60;
  else 
    T=30;
else if((dX<0)&&(dY<0))
  if(-dX>-dY)
    T=120;
  else 
    T=150;
else
  if(dX>-dY)
    T=240;
  else 
    T=210;

T=(T-Compass+540)%360;
if(PositionX==0)
  {WheelLeft=3;WheelRight=3;}
else if(T<30)
  {WheelLeft=-3;WheelRight=3;}
else if(T<=90)
  {WheelLeft=3;WheelRight=-1;}
else if(T<=160)
  {WheelLeft=3;WheelRight=1;}
else if(T<200)
  {WheelLeft=3;WheelRight=3;}
else if(T<270)
  {WheelLeft=1;WheelRight=3;}
else if(T<300)
  {WheelLeft=-1;WheelRight=3;}
else 
  {WheelLeft=-3;WheelRight=3;}

 

面倒なのは、ロボットが信号ブロック領域に入ると、自分の座標(PositionX、PositionY)が(0,0)になってしまうことです。

(この信号ブロック領域がどこに発生するか分からないところが、難しい・・・!)

コメント    この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« Simulation Demonstration Co... | トップ | LOOK 2つのこだわりチョコ... »
最新の画像もっと見る

コメントを投稿

ブログ作成者から承認されるまでコメントは反映されません。

RoboCup2020」カテゴリの最新記事