Soccer Server 足球服务器(中):模型

Movement Models 运动模型

在每个模拟step中,每个对象的运动按以下方式计算:

$$ (u_x^{t+1},u_y^{t+1}) &= (v_x^t,v_y^t)+(a_x^t,a_y^t) : accelerate \ (p_x^{t+1},p_y^{t+1}) &= (p_x^t,p_y^t)+(u_x^{t+1},u_y^{t+1}) : move \ (v_x^{t+1},v_y^{t+1}) &= decay \times (u_x^{t+1},u_y^{t+1}) : decay\ speed \ (a_x^{t+1},a_y^{t+1}) &= (0,0) : reset\ acceleration

$$ 其中$(p_x^t,p_y^t)$, 和 $(v_x^t,v_y^t)$ 分别是时间步长 t 中物体的位置和速度。衰减是由 ball_decayplayer_decay 指定的衰减参数。$(a_x^{t},a_y^{t})$是对象的加速度,它是从冲刺(在对象是球员的情况下)或踢(在球的情况下)命令中的 Power 参数以下列方式派生的:

$$ (a_x^{t},a_y^{t}) = Power \times power_rate \times (\cos(\theta^t),\sin(\theta^t))

$$ $\theta^t$是timestep $t $中对象的方向,power_ratedash_power_rate或根据Section Kick Model 中所述的 kick_power_rate计算得出。对于球员来说,这只是球员所面对的方向。对于足球而言,它的方向以下列方式给出:

$$ \theta^t{ball} = \theta^t{kicker} + Direction

$$ Direction 是 kick 命令的第二个参数。

Movement Noise Model 运动噪声模型

为了反映现实世界中物体的意外运动,rcssserver 为物体的运动和命令的参数添加了噪声。

关于运动,噪声被添加到 Eqn.:ref:eq:u-t 中,如下所示:

$$ (ux^{t+1},u_y^{t+1}) = (v_x^{t}, v_y^{t}) + (a_x^{t}, a_y^{t}) + (\tilde{r}{\mathrm rmax},\tilde{r}_{\mathrm rmax})

$$ 在哪里$\tilde{r}_{\mathrm rmax}$是一个随机数,其分布在$[-\mathrm rmax,\mathrm rmax]$范围内是均匀的。 $\mathrm rmax$是一个参数,它取决于对象的速度量,如下所示:

$$ {\mathrm rmax} = {\mathrm rand} \cdot |(v_x^{t}, v_y^{t})|

$$ 其中 rand 是由 server::player_randserver::ball_rand 指定的参数。

噪声也被添加到命令的 Power 和 Moment 参数中,如下所示:

$$ argument=(1+\tilde{r}_{\mathrm rand})\cdot argument

$$

Collision Model 碰撞模型

如果在模拟周期结束时,两个对象重叠,则将对象向后移动,直到它们不重叠。然后速度乘以-0.1。请注意,只要球和球员在循环结束时不重叠,球就有可能穿过球员。

Copyright@Njupt-Apollo-2d-2021 all right reserved,powered by Gitbook该文件最新修订时间: 2022-02-26 09:05:41

results matching ""

    No results matching ""