• [rcssserver] 議論開始 (akiyama) 19:38:07

まずはファーストドラフトをTCメンバに送りつけてみた. さて,今年の議論はどうなるかな. 早く終わればいいんだけど.

内容はこんな感じ.

Summary:
 - New dash model
 - New stamina model
 - Heterogeneous player settings
 - Backward tackle
 - Foul
 - Protocol version 13
 - Log format
 - Package redesign


========================================
  New dash model
========================================

- New parameters

 server::dash_rate_dec_per_angle = 0.006 (=0.54/90.0) // decrement per 1 degree
 server::min_dash_angle = -180
 server::max_dash_angle = +180

 server::back_dash_rate = 1.0 // rate for negative dash power
 server::back_dash_stamina_rate = -2.0 // stamina dec rate for negative dash power


- New dash algorithm

Player::dash( double power, double dir )

  power = NormalizeDashPower( power ); // [server::minpower, server::maxpower]
  bool back_dash = power < 0;
  double power_need = back_dash
                    ? power * server::back_dash_stamin_rate
                    : power );
  power_need = min( M_stamina + M_player_type->extraStamina(), power_need );
  M_stamina = max( 0.0, M_stamina - power_need );
  power = back_dash
          ? power_need / server::back_dash_stamina_rate
          : power_need;

  double power_rate = back_dash
                      ? M_player_type->dashPowerRate() * server::back_dash_rate
                      : M_player_type->dashPowerRate();

  dir = NormalizeDashAngle( dir ); // [server::min_dash_angle, server::max_dash_angle]
  double dir_rate = max( 0.0,
                         1.0 - server::dash_rate_dec_per_angle * fabs( dir ) );

  double effective_dash_power = fabs( M_effort * power * power_rate * dir_rate );
  M_accel += fromPolar( effective_dash_power,
                        body + ( back_dash ? dir + 180 : dir ) );


- Description

Players can add the dash angle as the second argument of dash
command. The dash angle is relative to player's body angle (or reverse
side angle if dash power is negative value).

The dash angle is restricted within [server::min_dash_angle,
server::max_dash_angle]. And, the effective dash power is influenced by
the magnitude of dash angle.
server::dash_rate_dec_per_rate defines the decrement value per 1
degree of dash angle. If this value is 0.006 and the dash angle value
is 90 degree, the effective dash power is multiplied by 0.54(=0.006*90).
Of course, it is necessary to adjust this parameter through a lot of
tests.


server::back_dash_rate and server::back_dash_stamina_rate are
introduced to generalize the backward dash model. The current backward
dash setting is very unrealistic. I hope these parameters helps us to
modify the backward dash model in future.



========================================
  New stamina model
========================================

- New parametsr

 server::stamina_capacity = 150000


- Changed parameters

 server::stamina_max = 8000
 server::recover_dec_thr = 0.1
 server::extra_stamina = 50  // extra stamina value for the default player type
 player::extra_stamina_delta_max = 50 // the range of extra stamina becomes [50,100].


- New stamina update algorithm

The new member variable, M_stamina_capacity, is added to the Player class
and initialized by server::stamina_capacity.


Player::updateStamina()

  double stamina_inc = min( M_recovery * M_player_type->staminaIncMax(),
                            server::stamina_max - M_stamina );
  if ( stamina_inc > M_stamina_capacity )
    stamin_inc = M_stamina_capacity
  M_stamina += stamina_inc;
  M_stamina_capacity -= stamina_inc;


- Description

The aim of this change is to encourage teams to consider a long-term
strategy.

The new parameter server::stamina_capacity defines the maximum
recovery capacity for each player. If this capacity variable becomes
zero, player's stamina is never recovered and he can use only his
extra stamina.
server::extra_stamina is set to 50 in order to guarantee
that all players have enough extra stamina. Otherwise, if players
consume all stamina capacity, they cannot dash anymore and this is
unrealistic.


server::stamina_max is increased to 8000. This change enable players
to run 100m with their maximum power and encourges teams to introduce
more dynamic positioning strategy. But, the stamina management will be
still difficult because players must consider their stamina capacity.

server::recover_dec_thr is decreased to 0.1. This is because
server::stamina_max is increased and server::effort_dec_thr has not
been considered in almost all cases.

I prefer to change server::stamina_max and server::recover_dec_thr,
but it may not be necessary to change them.



========================================
 Heterogeneous player settings
========================================

I have no concrete proposal yet. But, I think the player's dash
speed should become slower. In the current settings, the fastest
player can run 100m in less than 9 seconds. This is very unrealistic.
Now, I am investigating the proper parameters.


In the last year's discussion, someone requested me to introduce the
heterogeneous goalie. But, I have no strong opinion about this
issue. So, if someone proposes the concrete and proper idea and it is
possible to implement, I want to introduce it.



========================================
 Backward tackle
========================================

- Changed parameter

server::max_back_tackle_power = 0.0


- Description

The backward tackle should be forbidden completely.



========================================
  Foul
========================================

This is also the topic raised in the last year's discussion.
I have no concrete proposal yet. If someone proposes the concrete and
proper idea and it is possible to implement, I want to introduce it.



========================================
  Protocol version 13
========================================

- see message

Since it is too difficult to determine the last ball kicker and to
avoid the back pass situation, the player's kicking state should be
observed by player's visual sensor as well as the tackling state.

When players can see another player's team, they can also see if that
player is kicking via a `k' flag as follows:

  `((p "<TEAMNAME>" <UNUM>) <DIST> <DIR> <DISTCHG> <DIRCHG>
                            <BDIR> <HDIR> [<POINTDIR>] [k])'

  `((p "<TEAMNAME>") <DIST> <DIR> [<POINTDIR>] [k])'


- sense_body message

If my stamina capacity model is accepted, the stamina capacity value
should be added to sense_body message as follows:

  '(stamina <STAMINA> <EFFORT> <CAPACITY>)'



========================================
  Log format
========================================

If my stamina capacity model is accepted, that value should be added
to each player data in the game log file.


The text log file should include the stoppage time information, in
order to enable us to analyze the command log exactly.

  old:  "1020		  Recv Teamname_1: (turn 100)(turn_neck 10)"

  new:  "1020,2		  Recv Teamname_1: (turn 100)(turn_neck 10)"



========================================
  Package redesign
========================================

I'd like to integrate rcssbase to rcssserver. This is because rcssbase
causes several maintenance difficulties.  If rcssbase is removed, it
becomes easier to maintain and distribute the packages and to port the
simulator to other environments (e.g. Windows).

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2016-03-14 (月) 14:51:38 (1920d)
SourceForge.JP
Creative Commons License
RoboCup tools by Hidehisa Akiyama is licensed under a Creative Commons 表示-非営利 2.1 日本 License.