The RoboCup Soccer Simulator documentation

Overview 概览

网页的谷歌机翻。有不少删节。

主要成分

主要关注服务器。可以找一下demo client.

The Server 服务器

比赛以“服务器-客户端”的形式进行。

服务器唯一的要求是用于开发团队的工具支持通过 UDP/IP 进行的客户端-服务器通信。这是因为服务器和每个客户端之间的所有通信都是通过 UDP/IP 套接字完成的。每个客户端都是一个独立的进程,通过指定的端口连接到服务器。球员连接到服务器后,所有消息都通过此端口传输。球员向服务器发送关于他们想要执行的动作的请求(例如踢球、转身、奔跑等)。服务器接收这些消息,处理请求,并相应地更新环境。此外,服务器还为所有玩家提供感官信息(例如,有关场上物体位置的视觉数据,或有关玩家资源(如耐力或速度)的数据)。

值得一提的是,服务器是一个使用离散时间间隔(或周期)工作的实时系统。每个周期都有一个指定的持续时间,需要在给定周期内执行的操作必须在正确的时间间隔内到达服务器。因此,球员表现缓慢导致错过行动机会对整个团队的表现产生重大影响

The Monitor 监视器

rcssmonitor 基于 Artur~Merke 的框架视图,通过几个特性扩展了经典监视器的功能。

  • 可以放大该区域。这对于调试目的特别有用。
  • 所有球员和球的当前位置和速度可以随时打印到控制台。
  • 显示器上可以显示各种信息,例如玩家的视锥、耐力或(在异类玩家的情况下)玩家类型。
  • 球员和球可以用鼠标四处移动。

监视器不是比赛运行必须的。

The Logplayer 日志播放器

它是一种用于重播比赛的工具。

很像视频播放器,日志播放器配备了播放、停止、快进和快退按钮。

您可以将一场比赛(或几场比赛)中的有趣场景保存到另一个日志文件中,从而轻松创建演示文稿。

The Demo Client 样例客户端

与 RoboCup 足球模拟器捆绑在一起的是一个名为 rcssclient 的程序,它实现了一个非常原始的基于文本的模拟客户端。该程序的目的是让您初步了解整个事件的运作方式。

当 rcssclient 启动时,它会连接到服务器。您将看到一个简单的基于 ncurses 的界面。然后,您可以输入由服务器执行的命令。客户端收到的任何信息都将根据其类型(视觉、感官或其他)显示在屏幕的不同部分。通过输入命令并查看会发生什么,您可以初步了解模拟中的工作方式。即使您不再是新手,该程序对于简单的测试也很方便,例如掌握添加到模拟中的新命令。

比赛规则

Kick-Off 开球

开球前(半场开始前或进球后),所有球员都必须在自己的半场。开球前(半场开始前或进球后),所有球员都必须在自己的半场。为了允许这种情况发生,在进球后,裁判暂停比赛 5 秒。在此期间,玩家可以使用移动命令传送到自己身边的位置,而不是跑到这个位置,这会慢很多,而且会消耗体力。如果球员在 5 秒间隔结束后仍留在对方半场,或在间隔期间试图传送到对方半场,裁判会将球员移动到本方半场内的随机位置。

Goal 进球

当一支球队得分时,裁判会执行多项任务。

  • 最初,它通过向所有玩家广播消息来宣布目标。它还会更新得分,将球移动到中心标记,并将播放模式更改为 kick_off_x(其中 x 为左或右)
  • 最后,它会暂停比赛 5 秒,让球员回到自己的半场(如上文“开球”部分所述)。

Out of Field 出界

当球出界时,裁判将球移动到适当的位置(边线、角球或球门区),并将比赛模式更改为 kick_in、corner_kick 或 goal_kick。在角球的情况下,裁判将球放在场地适当角落内的(1m,1m)处。

Player Clearance

当比赛模式为 kick_off、free_kick、kick_in 或corner_kick 时,裁判会将位于以球为中心的圆圈内的所有防守球员移走。这个圆的半径是服务器内部的一个参数(通常为 9.15 米)。被移除的球员被放置在该圆圈的外围。

当比赛模式越位时,所有违规球员都被移回非越位位置。在这种情况下,犯规球员是越位区域内的所有球员,以及距离球半径9.15米的圆圈内的所有球员。

当比赛模式为goal_kick 时,所有违规球员都被移出禁区。球门球发生时,犯规球员不能重新进入禁区。球离开禁区后,比赛模式立即变为 play_on。

Play-Mode Control

当比赛模式为 kick_off、free_kick、kick_in 或corner_kick 时,裁判通过踢球命令在球开始移动后立即将比赛模式更改为 play_on。

Offside 越位

一名球员被标记为越位,如果该球员

  • 在对方半场,
  • 比至少两名防守球员更接近对方球门,
  • 比球更接近对方球门,
  • 距离球比 2.5 米以内(这可以通过服务器参数 server::offside_active_area_size 进行更改)

Backpasses 回传

就像在真正的足球比赛中一样,守门员不允许接住队友传给他的球。如果发生这种情况,裁判会调用 back_pass_l 或 back_pass_r 并向对方球队分配任意球。由于这样的回传只能在禁区内进行,因此将球放在禁区内最接近守门员试图接球的位置的角落。请注意,如果守门员不尝试接球,将球传给守门员是完全合法的。

Free Kick Faults 任意球失误

在踢任意球、角球、守门员任意球或任意球时,球员不得将球传给自己。如果一名球员在执行其中一次任意球后再次踢球,裁判将判罚 free_kick_fault_l 或 free_kick_fault_r,并判给对方任意球。

由于一名球员可能需要多次踢球才能将球加速到所需的速度,因此只有在球员满足以下要求开出任意球时才会判罚任意球失误:

  1. 是第一个再次踢球的球员
  2. 球员在踢球之间移动、冲刺

因此,发出诸如 kick-kick-dash 或 kick-turn-kick 之类的命令序列是完全合法的。另一方面,kick–dash–kick 的顺序会导致任意球失误。

Half-Time and Time-Up 中场和终场

上半场或下半场结束时,裁判暂停比赛。每半场的默认长度为 3000 个模拟周期(约 5 分钟)。如果比赛在下半场之后打成平局,则比赛延长。加时赛继续进行,直到进球。在加时赛中率先进球的球队赢得比赛。这也被称为“黄金目标”规则或“突然死亡”。

Rules Judged by the Human Referee 人工裁判规则

像“阻碍”这样的犯规很难自动判断,因为它们关系到球员的意图。为了解决这种情况,服务器提供了人工干预的接口。这样,人工裁判可以暂停比赛并向任何一支球队提供任意球。以下是在 RoboCup 2000 比赛之前商定的指导方针,但从那时起就一直在使用:

  • 包围球
  • 用太多球员挡住球门
  • 在给定的循环次数后未将球投入比赛。到目前为止,这条规则也由自动裁判处理。如果球队在 servr::drop_ball_time 周期内未能将球重新投入比赛,裁判将发出 drop_ball。但是,如果一支球队多次未能将球投入比赛,则人类裁判可能会过早地丢球。
  • 故意阻挡其他玩家的行动
  • 滥用守门员接球命令(守门员不得反复踢球和接球,因为这提供了在禁区内任意位置移动球的安全方式)
  • 向服务器发送消息:玩家在每个模拟周期中向足球服务器发送的命令不应超过 3 或 4 个。如果服务器被卡住,或者在游戏后请求,可以检查滥用情况。
  • 不当行为:如果观察到一名球员以不当方式干扰比赛,人工裁判可以暂停比赛并向对方球队开出任意球。
Copyright@Njupt-Apollo-2d-2021 all right reserved,powered by Gitbook该文件最新修订时间: 2022-02-26 09:05:41

results matching ""

    No results matching ""