KR20230146220A - Computer graphic game programming system for artificial intelligence education - Google Patents

Computer graphic game programming system for artificial intelligence education Download PDF

Info

Publication number
KR20230146220A
KR20230146220A KR1020220044919A KR20220044919A KR20230146220A KR 20230146220 A KR20230146220 A KR 20230146220A KR 1020220044919 A KR1020220044919 A KR 1020220044919A KR 20220044919 A KR20220044919 A KR 20220044919A KR 20230146220 A KR20230146220 A KR 20230146220A
Authority
KR
South Korea
Prior art keywords
robot
ball
game
team
soccer
Prior art date
Application number
KR1020220044919A
Other languages
Korean (ko)
Inventor
이준서
Original Assignee
주식회사 아군
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 주식회사 아군 filed Critical 주식회사 아군
Priority to KR1020220044919A priority Critical patent/KR20230146220A/en
Publication of KR20230146220A publication Critical patent/KR20230146220A/en

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/38Creation or generation of source code for implementing user interfaces
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/30Interconnection arrangements between game servers and game devices; Interconnection arrangements between game devices; Interconnection arrangements between game servers
    • A63F13/35Details of game servers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/36Software reuse
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/447Target code generation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09BEDUCATIONAL OR DEMONSTRATION APPLIANCES; APPLIANCES FOR TEACHING, OR COMMUNICATING WITH, THE BLIND, DEAF OR MUTE; MODELS; PLANETARIA; GLOBES; MAPS; DIAGRAMS
    • G09B19/00Teaching not covered by other main groups of this subclass
    • G09B19/0053Computers, e.g. programming

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Business, Economics & Management (AREA)
  • Multimedia (AREA)
  • Data Mining & Analysis (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Artificial Intelligence (AREA)
  • Evolutionary Computation (AREA)
  • Medical Informatics (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Computer Hardware Design (AREA)
  • Human Computer Interaction (AREA)
  • Entrepreneurship & Innovation (AREA)
  • Educational Administration (AREA)
  • Educational Technology (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

사용자가 작성한 코딩블럭을 입력받는 입력모듈; 및 상기 코딩블럭을 미리 설정된 프로그래밍 언어로 변환하여 실행코드를 생성하고, 상기 실행코드에 포함된 환경정보 및 객체정보에 기초하여 게임 시뮬레이션 환경을 구축하고, 상기 게임 시뮬레이션 과정에서 생성되는 결과 데이터에 기초하여 학습 데이터를 생성하며, 미리 설정된 알고리즘에 기초하여 상기 학습 데이터를 학습하여 상기 시뮬레이션 환경을 업데이트하는 서버 시스템을 포함하는 인공지능 교육 목적의 컴퓨터 그래픽 게임 프로그래밍 시스템을 제공한다.An input module that receives coding blocks written by the user; and converting the coding block into a preset programming language to generate an executable code, constructing a game simulation environment based on environment information and object information included in the executable code, and based on result data generated during the game simulation process. Provides a computer graphics game programming system for artificial intelligence education, including a server system that generates learning data and updates the simulation environment by learning the learning data based on a preset algorithm.

Description

인공지능 교육 목적의 컴퓨터 그래픽 게임 프로그래밍 시스템 {COMPUTER GRAPHIC GAME PROGRAMMING SYSTEM FOR ARTIFICIAL INTELLIGENCE EDUCATION}Computer graphics game programming system for artificial intelligence education purposes {COMPUTER GRAPHIC GAME PROGRAMMING SYSTEM FOR ARTIFICIAL INTELLIGENCE EDUCATION}

본 발명은 프로그래밍 시스템에 관한 것으로서, 구체적으로는 인공지능(artificial intelligence: AI)에 대한 교육을 사용자가 경험할 수 있는 컴퓨터 그래픽 게임 프로그래밍 시스템에 관한 것이다.The present invention relates to a programming system, and specifically to a computer graphics game programming system that allows users to experience education on artificial intelligence (AI).

AI이란, 인간의 지능으로 할 수 있는 문장이해, 영상인식, 음성인식, 학습 등을 컴퓨터가 실행하는 영역이다. AI는 증강현실, 사물인터넷, 에지 컴퓨팅, 디지털트윈 등과 함께 이용되어 고도로 통합된 스마트 공간을 제공할 것이며, 궁극적으로, 애플리케이션의 기능적 측면과 비기능적 측면을 모두 자동화하는 매우 고도화된 인공지능 주도 개발 환경이 비전문가들도 인공지능 관련 도구를 이용하여 자동적으로 새로운 솔루션을 만들어낼 수 있는 시민 애플리케이션 개발자의 새 시대를 열 것이다. 비전문가들이 코딩 없이 애플리케이션을 만들 수 있게 해주는 툴은 새로운 것이 아니지만, 우리는 인공지능 주도 시스템이 새로운 수준의 유연성을 제공할 것이다.AI is an area where computers perform tasks that can be done with human intelligence, such as sentence understanding, image recognition, voice recognition, and learning. AI will be used in conjunction with augmented reality, the Internet of Things, edge computing, and digital twins to provide highly integrated smart spaces, and ultimately, a highly advanced artificial intelligence-led development environment that automates both functional and non-functional aspects of applications. This will usher in a new era of citizen application developers where even non-experts can automatically create new solutions using artificial intelligence-related tools. Tools that allow non-experts to create applications without coding are not new, but we believe that artificial intelligence-driven systems will provide a new level of flexibility.

본 발명의 실시예는 컴퓨터 그래픽 게임, 예를 들어 축구 게임에 AI를 접목시키고 당해 접목을 위해 사용자에게 프로그래밍 또는 코딩 환경을 제공함으로써 AI 프로그래밍 또는 코딩에 대한 교육 경험을 사용자에게 제공하는 시스템을 제공한다.An embodiment of the present invention provides a system that provides users with an educational experience in AI programming or coding by incorporating AI into a computer graphics game, for example, a soccer game, and providing a programming or coding environment to the user for the integration. .

본 발명의 실시예에 따르면, 사용자가 작성한 코딩블럭을 입력받는 입력모듈; 및 상기 코딩블럭을 미리 설정된 프로그래밍 언어로 변환하여 실행코드를 생성하고, 상기 실행코드에 포함된 환경정보 및 객체정보에 기초하여 게임 시뮬레이션 환경을 구축하고, 상기 게임 시뮬레이션 과정에서 생성되는 결과 데이터에 기초하여 학습 데이터를 생성하며, 미리 설정된 알고리즘에 기초하여 상기 학습 데이터를 학습하여 상기 시뮬레이션 환경을 업데이트하는 서버 시스템을 포함하는 인공지능 교육 목적의 컴퓨터 그래픽 게임 프로그래밍 시스템을 제공한다.According to an embodiment of the present invention, an input module that receives a coding block written by a user; and converting the coding block into a preset programming language to generate an executable code, constructing a game simulation environment based on environment information and object information included in the executable code, and based on result data generated during the game simulation process. Provides a computer graphics game programming system for artificial intelligence education, including a server system that generates learning data and updates the simulation environment by learning the learning data based on a preset algorithm.

본 발명의 실시예에 따르면 컴퓨터 그래픽 게임, 예를 들어 축구 게임에 AI를 접목시키고 당해 접목을 위해 사용자에게 프로그래밍 또는 코딩 환경을 제공함으로써 AI 프로그래밍 또는 코딩에 대한 교육 경험을 사용자에게 제공할 수 있다.According to an embodiment of the present invention, an educational experience in AI programming or coding can be provided to the user by incorporating AI into a computer graphics game, for example, a soccer game, and providing a programming or coding environment to the user for the integration.

도1은 인공지능, 머신러닝 및 딥러닝 간 상관관계를 나타내는 도면
도2는 상태, 행동, 보상을 포함한 Atari 게임 프레임워크를 나타내는 도면
도3은 화면에 표시된 Atari 게임의 상태에 따라 행동을 결정하는 심층 신경망을 나타내는 도면
도4는 게임 화면의 상태를 기준으로 Atari 게임의 행동을 선택하는 심층 신경망으로 대체된 Atari 게임의 구조를 나타내는 도면
도5는 게임 상태에 따라 로봇 동작을 선택하는 심층신경망으로 대체한 AI 축구 구조를 나타내는 도면
도6은 AI 축구 로봇 플레이 환경을 예시하는 도면
도7은 Cyberbotics Ltd.에서 제공하는 Webots 시뮬레이터의 다운로드 페이지를 나타내는 도면
도8은 Webots 시뮬레이터 Preferences 선택 창을 나타내는 도면
도9는 시스템 환경변수에 PYTHONPATH 추가하는 인터페이스를 예시하는 도면
도10은 AI 축구 시뮬레이터를 다운로드 페이지를 도시하는 도면
도11은 GPU를 사용하지 않는 심층 학습 라이브러리 설치의 경우 명령어를 예시하는 도면
도12는 AI 축구 시뮬레이터 구조를 예시하는 도면
도13은 Webots 시뮬레이터 실행 창을 예시하는 도면
도14는 청소년용 로봇을 위한 AI 축구 경기장 및 어른용 로봇을 위한 AI 축구 경기장을 예시한 도면
도15는 청소년용 AI 축구 로봇 및 어른용 AI 축구 로봇을 예시한 도면
도16은 Webots 시뮬레이터에 의해 내부적으로 수행되는 청소년용 AI 축구 로봇 및 어른용 AI 축구 로봇의 물리적인 모양을 단순화한 도면
도17은 AI 축구 로봇을 예시한 도면
도18은 로봇의 세가지 행동을 예시한 도면
도19는 드리블 영역을 예시한 도면
도20은 축구공을 예시한 도면
도21은 AI 축구 시뮬레이터와 게이머 코드 간의 통신 구조를 예시하는 도면
도22는 AI 축구 시뮬레이터와 게이머 코드가 송수신 하는 정보를 예시하는 도면
도23은 게이머에게 제공되는 이미지 정보를 예시하는 도면
도24는 로봇의 가능한 행동들을 예시하는 도면
도25는 웹-베이스 AI 축구 코드 생성기를 예시하는 도면
도26은 규칙 기반 AI 축구 코드 생성기를 예시하는 도면
도27은 규칙 기반 AI 축구 코드 생성기의 블록 카테고리를 예시한 도면
도28은 규칙 기반 AI 축구 코드 생성기의 블록 카테고리 중에서 ‘Environment indices’를 예시한 도면
도29는 규칙 기반 AI 축구 코드 생성기의 블록 카테고리 중에서 ‘Environment Constants’를 예시한 도면
도30은 규칙 기반 AI 축구 코드 생성기의 블록 카테고리 중에서 ‘Environment variables’를 예시한 도면
도31은 규칙 기반 AI 축구 코드 생성기의 블록 카테고리 중에서 ‘Environment fucntions’를 예시한 도면
도32는 규칙 기반 AI 축구 코드 생성기에 의한 코드를 예시한 도면
도33은 상위 레벨의 행동들로 정의된 규칙기반 예제 코드 도면
도34는 생성된 코드를 예시한 도면
도35는 경기용 좌표계와 각도 시스템을 예시한 도면
도36은 경기장의 필드 구역 명칭을 예시한 도면
도37은 킥오프 포메이션(공 소유팀: A)을 예시한 도면
도38은 수비시 코너킥 포메이션 1(공 소유팀: A)을 예시한 도면
도39는 수비시 코너킥 포메이션 2(공 소유팀: A)을 예시한 도면
도40은 공격시 코너킥 포메이션 1(공 소유팀: A)을 예시한 도면
도41은 공격시 코너킥 포메이션 2(공 소유팀: A)을 예시한 도면
도42는 페널티 킥 포메이션(공 소유팀: A)을 예시한 도면
도43은 골 킥 포메이션(공 소유팀: A)을 예시한 도면
Figure 1 is a diagram showing the correlation between artificial intelligence, machine learning, and deep learning
Figure 2 shows the Atari game framework including states, actions, and rewards.
Figure 3 is a diagram showing a deep neural network that determines actions depending on the state of the Atari game displayed on the screen.
Figure 4 is a diagram showing the structure of an Atari game replaced by a deep neural network that selects the behavior of the Atari game based on the state of the game screen.
Figure 5 is a diagram showing the AI soccer structure replaced by a deep neural network that selects robot actions according to the game state.
Figure 6 is a diagram illustrating an AI soccer robot play environment
Figure 7 is a diagram showing the download page of the Webots simulator provided by Cyberbotics Ltd.
Figure 8 is a diagram showing the Webots simulator Preferences selection window
Figure 9 is a diagram illustrating an interface for adding PYTHONPATH to system environment variables.
Figure 10 is a diagram showing the AI soccer simulator download page
Figure 11 is a diagram illustrating commands in case of installing a deep learning library without using GPU
Figure 12 is a diagram illustrating the structure of an AI soccer simulator
Figure 13 is a diagram illustrating the Webots simulator execution window
Figure 14 is a diagram illustrating an AI soccer stadium for youth robots and an AI soccer stadium for adult robots
Figure 15 is a diagram illustrating an AI soccer robot for youth and an AI soccer robot for adults
Figure 16 is a simplified diagram of the physical shape of the youth AI soccer robot and the adult AI soccer robot performed internally by the Webots simulator.
Figure 17 is a diagram illustrating an AI soccer robot
Figure 18 is a diagram illustrating three actions of the robot
Figure 19 is a diagram illustrating a dribble area
Figure 20 is a diagram illustrating a soccer ball
Figure 21 is a diagram illustrating the communication structure between the AI soccer simulator and gamer code
Figure 22 is a diagram illustrating information transmitted and received between the AI soccer simulator and gamer code
Figure 23 is a diagram illustrating image information provided to gamers
Figure 24 is a diagram illustrating possible actions of the robot
Figure 25 is a diagram illustrating a web-based AI soccer code generator
Figure 26 is a diagram illustrating a rule-based AI soccer code generator
Figure 27 is a diagram illustrating block categories of the rule-based AI soccer code generator
Figure 28 is a diagram illustrating 'Environment indices' among the block categories of the rule-based AI soccer code generator.
Figure 29 is a diagram illustrating 'Environment Constants' among the block categories of the rule-based AI soccer code generator.
Figure 30 is a diagram illustrating 'Environment variables' among the block categories of the rule-based AI soccer code generator.
Figure 31 is a diagram illustrating 'Environment fucntions' among the block categories of the rule-based AI soccer code generator.
Figure 32 is a diagram illustrating code by a rule-based AI soccer code generator
Figure 33 is a rule-based example code diagram defined by high-level actions.
Figure 34 is a diagram illustrating the generated code
Figure 35 is a diagram illustrating the coordinate system and angle system for competition
Figure 36 is a diagram illustrating the names of field areas of the stadium
Figure 37 is a diagram illustrating a kickoff formation (ball possession team: A)
Figure 38 is a diagram illustrating corner kick formation 1 (ball possession team: A) during defense.
Figure 39 is a diagram illustrating corner kick formation 2 (ball possession team: A) during defense.
Figure 40 is a diagram illustrating corner kick formation 1 (ball possession team: A) during attack
Figure 41 is a diagram illustrating corner kick formation 2 (ball possession team: A) during attack
Figure 42 is a diagram illustrating a penalty kick formation (ball possession team: A)
Figure 43 is a diagram illustrating a goal kick formation (ball possession team: A)

이하, 본 발명의 다양한 실시예가 첨부된 도면을 참조하여 기재된다. 그러나, 이는 본 발명을 특정한 실시 형태에 대해 한정하는 것이 아니며, 본 발명의 실시예의 다양한 변경(modification), 균등물(equivalent), 및/또는 대체물(alternative)을 포함하는 것으로 이해되어야 한다. 도면의 설명과 관련하여, 유사한 구성요소에 대해서는 유사한 참조 부호가 사용될 수 있다.BRIEF DESCRIPTION OF THE DRAWINGS Various embodiments of the present invention are described below with reference to the accompanying drawings. However, this does not limit the present invention to specific embodiments, and should be understood to include various modifications, equivalents, and/or alternatives to the embodiments of the present invention. In connection with the description of the drawings, similar reference numbers may be used for similar components.

본 문서에서, “가진다”, “가질 수 있다”, “포함한다”, 또는 “포함할 수 있다” 등의 표현은 해당 특징(예: 수치, 기능, 동작, 또는 부품 등의 구성요소)의 존재를 가리키며, 추가적인 특징의 존재를 배제하지 않는다.In this document, expressions such as “have,” “may have,” “includes,” or “may include” refer to the presence of the corresponding feature (e.g., a numerical value, function, operation, or component such as a part). , and does not rule out the existence of additional features.

본 문서에서, “A 또는 B”, “A 또는/및 B 중 적어도 하나”, 또는 “A 또는/및 B 중 하나 또는 그 이상” 등의 표현은 함께 나열된 항목들의 모든 가능한 조합을 포함할 수 있다. 예를 들면, “A 또는 B”, “A 및 B 중 적어도 하나”, 또는 “A 또는 B 중 적어도 하나”는, (1) 적어도 하나의 A를 포함, (2) 적어도 하나의 B를 포함, 또는 (3) 적어도 하나의 A 및 적어도 하나의 B 모두를 포함하는 경우를 모두 지칭할 수 있다.In this document, expressions such as “A or B,” “at least one of A or/and B,” or “one or more of A or/and B” may include all possible combinations of the items listed together. . For example, “A or B”, “at least one of A and B”, or “at least one of A or B” (1) includes at least one A, (2) includes at least one B, or (3) it may refer to all cases including both at least one A and at least one B.

다양한 실시 예에서 사용된 “제1”, “제2”, “첫째”, 또는 “둘째” 등의 표현들은 다양한 구성요소들을, 순서 및/또는 중요도에 상관없이 수식할 수 있고, 해당 구성요소들을 한정하지 않는다. 예를 들면, 제1 사용자 기기와 제2 사용자 기기는, 순서 또는 중요도와 무관하게, 서로 다른 사용자 기기를 나타낼 수 있다. 예를 들면, 본 발명의 권리 범위를 벗어나지 않으면서 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소도 제1 구성요소로 바꾸어 명명될 수 있다.Expressions such as “first,” “second,” “first,” or “second” used in various embodiments may modify various elements regardless of order and/or importance, and refer to the elements. It is not limited. For example, a first user device and a second user device may represent different user devices regardless of order or importance. For example, the first component may be renamed to the second component without departing from the scope of the present invention, and similarly, the second component may also be renamed to the first component.

어떤 구성요소(예: 제1 구성요소)가 다른 구성요소(예: 제2 구성요소)에 “(기능적으로 또는 통신적으로) 연결되어((operatively or communicatively) coupled with/to)” 있다거나 “접속되어(connected to)” 있다고 언급된 때에는, 상기 어떤 구성요소가 상기 다른 구성요소에 직접적으로 연결되거나, 다른 구성요소(예: 제3 구성요소)를 통하여 연결될 수 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소(예: 제1 구성요소)가 다른 구성요소(예: 제2 구성요소)에 “직접 연결되어” 있다거나 “직접 접속되어” 있다고 언급된 때에는, 상기 어떤 구성요소와 상기 다른 구성요소 사이에 다른 구성요소(예: 제3 구성요소)가 존재하지 않는 것으로 이해될 수 있다.A component (e.g., a first component) is “(operatively or communicatively) coupled with/to” another component (e.g., a second component). When referred to as “connected to,” it should be understood that any component may be directly connected to the other component or may be connected through another component (e.g., a third component). On the other hand, when a component (e.g., a first component) is said to be “directly connected” or “directly connected” to another component (e.g., a second component), It may be understood that no other component (e.g., a third component) exists between other components.

본 문서에서 사용된 표현 “~하도록 구성된(또는 설정된)(configured to)”은 상황에 따라, 예를 들면, “~에 적합한(suitable for)”, “~하는 능력을 가지는(having the capacity to)”, “~하도록 설계된(designed to)”, “~하도록 변경된(adapted to)”, “~하도록 만들어진(made to)”, 또는 “~를 할 수 있는(capable of)”과 바꾸어 사용될 수 있다. 용어 “~하도록 구성(또는 설정)된”은 하드웨어적으로 “특별히 설계된(specifically designed to)”것 만을 반드시 의미하지 않을 수 있다. 대신, 어떤 상황에서는, “~하도록 구성된 장치”라는 표현은, 그 장치가 다른 장치 또는 부품들과 함께 “~할 수 있는” 것을 의미할 수 있다. 예를 들면, 문구 “A, B, 및 C를 수행하도록 구성(또는 설정)된 프로세서”는 해당 동작을 수행하기 위한 전용 프로세서(예: 임베디드 프로세서), 또는 메모리 장치에 저장된 하나 이상의 소프트웨어 프로그램들을 실행함으로써, 해당 동작들을 수행할 수 있는 범용 프로세서(generic-purpose processor: 예를 들어 CPU 또는 application processor)를 의미할 수 있다.The expression “configured to” used in this document means, for example, “suitable for,” “having the capacity to,” depending on the situation. ”, “designed to”, “adapted to”, “made to”, or “capable of”. The term “configured (or set) to” may not necessarily mean “specifically designed to” in terms of hardware. Instead, in some situations, the expression “device configured to” may mean that the device is “capable of” working with other devices or components. For example, the phrase “processor configured (or set) to perform A, B, and C” refers to a processor dedicated to performing those operations (e.g., an embedded processor), or executing one or more software programs stored on a memory device. By doing so, it may mean a general-purpose processor (for example, a CPU or application processor) capable of performing the corresponding operations.

본 문서에서 사용된 용어들은 단지 특정한 실시 예를 설명하기 위해 사용된 것으로, 다른 실시 예의 범위를 한정하려는 의도가 아닐 수 있다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함할 수 있다. 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명의 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가질 수 있다. 일반적으로 사용되는 사전에 정의된 용어들은 관련 기술의 문맥 상 가지는 의미와 동일 또는 유사한 의미를 가지는 것으로 해석될 수 있으며, 본 문서에서 명백하게 정의되지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다. 경우에 따라서, 본 문서에서 정의된 용어일지라도 본 발명의 실시 예들을 배제하도록 해석될 수 없다.Terms used in this document are merely used to describe specific embodiments and may not be intended to limit the scope of other embodiments. Singular expressions may include plural expressions, unless the context clearly indicates otherwise. All terms used herein, including technical or scientific terms, may have the same meaning as commonly understood by a person of ordinary skill in the technical field of the present invention. Terms defined in commonly used dictionaries can be interpreted as having the same or similar meaning as the meaning they have in the context of related technology, and unless clearly defined in this document, they are not interpreted in an ideal or excessively formal sense. . In some cases, even terms defined in this document cannot be interpreted to exclude embodiments of the present invention.

AI는 학습과 문제 해결 등 인간의 능력과 관련된 기능을 모방하여 실행하는 인공적인 인간의 지능을 가리킨다. AI는 규칙들을 지식으로 구성하는 전문가 시스템과 알고리즘을 스스로 학습하고 습득하는 기계학습 등으로 구분될 수 있다. 본 개시에서는 규칙기반의 AI 축구 예제코드와 학습기반의 예제코드를 제공한다.AI refers to artificial human intelligence that imitates and executes functions related to human abilities, such as learning and problem solving. AI can be divided into expert systems that consist of rules as knowledge and machine learning that learns and acquires algorithms on its own. This disclosure provides rule-based AI soccer example code and learning-based example code.

AI에서 머신러닝(Machine Learning)은 중요한 분야이다. AI는 도1과 같이 머신러닝을 포함하고, 머신러닝은 딥러닝(Deep Learning)을 포함한다고 할 수 있다. 머신러닝은 주어진 데이터를 분석하여 데이터의 규칙과 특징을 찾을 수 있도록 스스로 학습(훈련)하는 기법이다. 사람이 학습하듯 컴퓨터에 데이터를 제공하여 학습하게 함으로써 새로운 지식을 얻어내게 하는 분야이다. 머신러닝 알고리즘의 개발은 학습(learning = training), 시험(testing = validation), 추론(inference) 세 단계로 구성된다. 학습 단계에서는 주어진 입력 데이터를 바탕으로 원하는 작업(task)을 위한 매핑(mapping) 함수를 얻는다. 시험 단계에서는 아직 살펴보지 않은 데이터에 앞서 학습된 매핑 함수를 적용할 수 있는지 시험해본다. 추론 단계에서는 학습된 매핑 함수를 원하는 작업의 임의의 데이터에 적용해본다. 현재 머신러닝의 여러 가지 알고리즘들이 개발되어 있다. 머신러닝의 대표적인 기법으로 지도학습(Supervised Learning), 비지도 학습(Unsupervised Learning), 강화 학습(Reinforcement Learning)이 있다. 지도학습은 주어진 입력에 대해 이미 정해진 출력을 학습 단계에서 준다. 지도학습에 의해 훈련된 신경망은 매핑 함수의 역할과 같이 입력에 대한 출력값을 제공한다. 그러나 비지도 학습의 경우에는 입력만 주어진다. 비지도 학습은 다양한 입력 데이터를 그룹으로 분류하는 클러스터링 (Clustering)에 주로 사용된다. 강화학습은 누적 보상(Cumulative Reward)을 극대화하기 위해 에이전트(Agent)가 환경(Environment)에서 어떤 행동(Action)을 취해야 하는지에 대해 다룬다. 예를 들어, 체스를 두는 에이전트는 체스판 위의 말을 움직이는 행동을 취하고 나면 보상을 받게 된다. 이 경우 체스판과 말은 에이전트와 상호작용할 수 있는 환경(environment)으로 간주된다. 상태(State)는 체스판에 있는 말들의 현재 위치로 정의할 수 있다. 누적 보상은 상대편 말을 제거하거나 경기에서 승리하는 등의 기준으로 설계할 수 있다. 이 경우, 상대편 말이 제거되거나 승리를 거두면 양수(positive number)의 보상을 받는다. 누적되고 있는 보상(미래에 받게 되는 보상)을 최대화하기 위해, 에이전트의 목표는 상대편 말을 제거하면서 승리 가능성을 최대화하는 움직임을 취하게 될 것이다. 강화학습 알고리즘의 성능은 기본적으로 특정 환경에 대한 상태, 행동 및 보상을 어떻게 설계하는가에 따라 달라진다.Machine learning is an important field in AI. It can be said that AI includes machine learning, as shown in Figure 1, and machine learning includes deep learning. Machine learning is a technique that analyzes given data and learns (trains) itself to find rules and characteristics of the data. This is a field that allows computers to learn by providing data to them, just like humans learn, to gain new knowledge. The development of a machine learning algorithm consists of three stages: learning (learning), testing (validation), and inference. In the learning stage, a mapping function for the desired task is obtained based on the given input data. In the testing phase, we test whether the previously learned mapping function can be applied to data that has not yet been examined. In the inference stage, the learned mapping function is applied to arbitrary data for the desired task. Currently, various machine learning algorithms are being developed. Representative machine learning techniques include supervised learning, unsupervised learning, and reinforcement learning. Supervised learning gives a predetermined output for a given input at the learning stage. A neural network trained through supervised learning provides output values for input, similar to the role of a mapping function. However, in the case of unsupervised learning, only input is given. Unsupervised learning is mainly used for clustering, which classifies various input data into groups. Reinforcement learning deals with what actions an agent should take in the environment to maximize the cumulative reward. For example, an agent playing chess receives a reward after taking actions that move the pieces on the chessboard. In this case, the chessboard and pieces are considered an environment with which the agent can interact. State can be defined as the current position of the pieces on the chessboard. Cumulative rewards can be designed based on criteria such as eliminating the opponent's pieces or winning the game. In this case, if the opponent's piece is eliminated or wins, you will receive a positive number of rewards. To maximize the accumulated reward (the reward received in the future), the agent's goal will be to make moves that maximize the chance of winning while eliminating the opponent's pieces. The performance of a reinforcement learning algorithm basically depends on how the states, actions, and rewards are designed for a specific environment.

딥러닝은 다중 계층(Multiple-layer)을 가진 인공신경망(Artificial Neural Network)을 이용해 데이터의 특징을 추출해 스스로 다른 상황에 대처할 수 있게 하는 머신러닝의 한 종류이다. 인공신경망은 인간이나 동물 뇌의 신경망에 초점을 맞추어 구현되는 시스템의 총칭이다. 딥러닝을 활용한 응용 분야는 컴퓨터 비전(Computer Vision), 음성 처리(Speech Processing), 자연어 처리(Natural Language Processing) 등이 있다. 최근 딥러닝은 구글의 Youtube, 페이스북의 News feed 및 일반적인 이미지 분석 등에 사용되며 주목받고 있다. 심층학습이 획기적인 성과를 거두게 된 이유에는 빅데이터 수집이 가능해진 환경, GPU를 활용한 컴퓨터 계산 능력 향상, 새로운 알고리즘 개발 등이 꼽힌다. 효과적인 심층학습 알고리즘을 얻기 위해서는 대량의 데이터가 필요하다. 빅데이터가 있어도 컴퓨터의 연산 속도가 느릴 때는 이를 처리하기 어렵다. 최근에는 GPU를 사용하여 컴퓨터 연산의 병렬처리가 가능하게 되면서 단기간에 많은 데이터를 처리할 수 있게 되었다.Deep learning is a type of machine learning that extracts features of data using an artificial neural network with multiple layers, allowing it to cope with different situations on its own. Artificial neural network is a general term for systems implemented by focusing on the neural network of the human or animal brain. Application fields using deep learning include computer vision, speech processing, and natural language processing. Recently, deep learning has been attracting attention as it is used in Google's Youtube, Facebook's News feed, and general image analysis. The reasons why deep learning achieved groundbreaking results include an environment that enabled big data collection, improved computer calculation capabilities using GPUs, and the development of new algorithms. A large amount of data is required to obtain an effective deep learning algorithm. Even if there is big data, it is difficult to process it when the computer's calculation speed is slow. Recently, parallel processing of computer operations has become possible using GPUs, making it possible to process a lot of data in a short period of time.

인간의 언어와 같이 자연어로 표현된 언어를 컴퓨터가 이해할 수 있는 형태로 만드는 과정을 자연어 처리(Natural Language Processing, NLP)라고 한다. 문장 분류, 영상 제목작성, 기계 번역, 챗봇은 자연어 처리의 대표적인 예이다. NLP 응용 프로그램에서 주로 사용되는 인공신경망을 ‘Recurrent Neural Networks (RNN)’이라 한다. 순환신경망은 구글 번역과 같이 일상적으로 사용되는 응용프로그램에서 자연어 처리에 자주 사용된다. RNN을 사용하는 또 다른 응용 분야는 음성처리, 특히 음성 합성 및 음성 인식이 있다. 이 분야에서 많이 사용되고 있는 응용 프로그램으로는 애플 시리(Siri)와 구글 알렉사(Alexa)가 있다. 음성인식은 음성을 문자로 변환하고, 음성 합성은 문자를 음성으로 변환하는 것이다. 음성처리는 두 손을 자유롭게 움직일 수 있는 동시에 컴퓨터에 명령을 내릴 수 있기 때문에, 차세대 인간-컴퓨터 인터페이스로 주목받고 있다. 가정용 및 자율 주행 자동차용 AI 스피커와 음성 보조기는 음성 처리를 사용하는 응용 프로그램이다.The process of converting language expressed in natural language, such as human language, into a form that computers can understand is called Natural Language Processing (NLP). Sentence classification, video title creation, machine translation, and chatbots are representative examples of natural language processing. Artificial neural networks mainly used in NLP applications are called ‘Recurrent Neural Networks (RNN).’ Recurrent neural networks are often used in natural language processing in everyday applications such as Google Translate. Another application area that uses RNNs is speech processing, especially speech synthesis and speech recognition. Applications widely used in this field include Apple Siri and Google Alexa. Speech recognition converts voice into text, and speech synthesis converts text into speech. Voice processing is attracting attention as a next-generation human-computer interface because it allows both hands to move freely while giving commands to the computer. AI speakers and voice assistants for homes and self-driving cars are applications that use speech processing.

AI 연구 초기부터 게임은 AI 성능을 측정하는 데 널리 이용되었다. 1996년 개발된 AI 체스 프로그램인 딥블루는 세계 챔피언 카스파로프를 제치고 인간 수준 이상의 플레이를 선보였다. 체스와 Backgammon 게임에서 좋은 결과를 얻은 후, 연구자들은 AI의 바둑 게임 적용에 대해 생각하기 시작하였다. 바둑은 시작할 때 361(19x19)개의 착점이 있고 계속 진행됨에 따라 한쪽이 대략 [361-2(n-1)]!개(n=1,...,181)의 경우의 수를 모든 착점이 채워질 때까지 진행할 수 있기 때문에, 단순한 AI로는 프로기사를 이기는 것이 불가능하다고 여겨졌다. 2016년 딥마인드가 개발한 알파고는 최고의 바둑기사 이세돌을 4:1로 꺾고 AI의 위력을 입증했다. 알파고는 서로 다른 게임 전략을 가지고 자신과 경쟁함으로써 품질을 향상하는 것을 배우는 강화 학습 알고리즘을 사용한다. 알파고는 자기 자신과 계속해서 다른 전략을 시도하는 강화학습(Reinforcement Learning, RL) 알고리즘을 사용하였다. 강화학습 프레임워크의 장점은 유연성으로 보드게임과 비디오게임 등의 환경에도 효과적으로 적용된다. 최근에는 강화학습과 심층 학습을 결합한 방법인 ‘Deep Q Network (DQN)’가 Atari 게임에 적용되어 성공을 거두어 많은 관심이 집중되고 있다. 강화학습은 신경망을 이용해 딥러닝과 결합하여 상태와 행동사이의 매핑을 나타내는 정책(Policy)을 설계하는 것을 목표로 한다. DQN의 출력은 특정 상태에서 수행할 수 있는 각 행동의 Q-값(Q-value)이다. Q-값은 에이전트가 해당 행동을 취할 경우 받게 될 미래의 누적 보상을 나타낸다. 에이전트는 향후 최대의 누적 보상을 받을 행동을 취하기를 원하므로 Q-값의 최대치를 가지는 행동을 하려고 한다. 강화학습은 상태(State), 행동(Action) 보상(Reward)의 함수로 이루어져 있다. Atari 게임을 예로 들면, 상태(State)는 게임 화면이 되고, 보상(Reward)함수는 현재 점수로 대체 가능하며, 행동(Action)은 도2에 도시된 바와 같이 비디오 게임 컨트롤러에서 가능한 동작이 될 것이다. 사람이 게임을 하는 방식을 심층 신경망을 이용해 구성하면 도3과 같다. 도3에서 “컨볼루션(Convolution)” 계층은 영상의 특징들을 추출하고 “풀리 커넥티드(Fully connected): 계층은 이를 기반으로 행동을 결정한다. 따라서, 사람이 하던 게임을 도4에 도시된 바와 같이 인공신경망이 대신하게 된다. AI Soccer 알고리즘을 개발하기 위해서 심층 학습과 결합한 강화학습 프레임 워크를 사용할 수 있다. Atari, 바둑, 체스 게임과 AI 축구의 차이점은 축구에는 역동적으로 상호작용하는 여러 로봇이 존재한다는 점이다. Atari 게임과 비슷한 AI 축구는 도5와 같이 해석할 수 있다.From the beginning of AI research, games have been widely used to measure AI performance. Deep Blue, an AI chess program developed in 1996, beat world champion Kasparov and displayed play that was above human level. After achieving good results in chess and Backgammon games, researchers began thinking about applying AI to the game of Go. At the beginning of Baduk, there are 361 (19x19) landing points, and as the game continues, each side has approximately [361-2(n-1)]!(n=1,...,181) cases. Since the game can be played until it is filled, it was considered impossible to beat a professional player with simple AI. In 2016, AlphaGo, developed by DeepMind, proved the power of AI by beating the best Go player, Lee Sedol, 4:1. AlphaGo uses a reinforcement learning algorithm that learns to improve quality by competing against itself with different game strategies. AlphaGo used a reinforcement learning (RL) algorithm that continuously tries different strategies from its own. The advantage of the reinforcement learning framework is its flexibility, which allows it to be effectively applied to environments such as board games and video games. Recently, ‘Deep Q Network (DQN)’, a method that combines reinforcement learning and deep learning, has been successfully applied to Atari games and is attracting a lot of attention. Reinforcement learning aims to design a policy that represents the mapping between states and actions by using neural networks and combining them with deep learning. The output of DQN is the Q-value of each action that can be performed in a specific state. The Q-value represents the future cumulative reward that the agent will receive if it takes the corresponding action. The agent wants to take an action that will receive the maximum cumulative reward in the future, so it tries to take an action that has the highest Q-value. Reinforcement learning consists of functions of state, action, and reward. Taking an Atari game as an example, the state will be the game screen, the reward function can be replaced with the current score, and the action will be an action possible in the video game controller as shown in Figure 2. . The way a person plays a game is configured using a deep neural network, as shown in Figure 3. In Figure 3, the “Convolution” layer extracts the features of the image, and the “Fully connected:” layer determines actions based on this. Therefore, as shown in Figure 4, the artificial neural network replaces the game played by humans. To develop AI Soccer algorithms, a reinforcement learning framework combined with deep learning can be used. The difference between Atari, Go, and chess games and AI soccer is that soccer involves multiple robots interacting dynamically. AI soccer, similar to the Atari game, can be interpreted as shown in Figure 5.

도5에서 로봇들과 공의 좌표와 방향을 기반으로 게이머가 각 로봇의 동작을 결정해야 한다. 로봇이 어디로 어떻게 움직여야 하는지 등의 행동에 관련된 부분은 이하에서 자세히 설명될 것이다. Atari 게임의 예처럼 신경망은 각 시간 간격(time step)마다 상태정보를 동작으로 매핑하는 용도로 사용될 수 있다.In Figure 5, the gamer must determine the movement of each robot based on the coordinates and directions of the robots and the ball. Parts related to behavior, such as where and how the robot should move, will be explained in detail below. As in the example of Atari games, neural networks can be used to map state information to actions at each time step.

AI 축구는 각 팀에서 5 명의 로봇을 제어하여 상대팀을 이기는 알고리즘을 개발하는 5:5 로봇축구게임이다. 제공된 프로그램을 사용하여 Python 프로그래밍 언어로 게이머 프로그램을 개발할 수 있다. 게이머 프로그램은 로봇과 공 좌표를 기반으로 각 로봇의 바퀴 속도를 조절하고, 킥 및 점프 동작을 조절하여 총 5 대의 로봇을 제어할 수 있다. AI 축구 로봇의 이동은 눈에 보이지 않지만 코드에 의해 제어할 수 있는 바퀴의 속도에 의해 결정된다. 자세한 내용은 이하에서 설명된다. Python에 대한 기초 지식을 갖춘 게이머는 자신만의 로봇 축구 전략을 만들 수 있다.AI Soccer is a 5:5 robot soccer game in which each team controls five robots to develop an algorithm to beat the opposing team. You can use the provided program to develop gamer programs in the Python programming language. The gamer program can control a total of five robots by adjusting the wheel speed of each robot and kick and jump movements based on robot and ball coordinates. The movement of the AI soccer robot is determined by the speed of the wheels, which are invisible but can be controlled by code. Details are described below. Gamers with basic knowledge of Python can create their own robot soccer strategies.

AI 축구 실행을 위해서는 예를 들어 다음과 같은 컴퓨터 하드웨어 사양이 요구된다.To run AI soccer, the following computer hardware specifications are required, for example:

- 최소 클록 속도가 2GHz 이상의 dual-core CPU 와 2GB 이상의 RAM- Dual-core CPU with a minimum clock speed of 2GHz or more and RAM of 2GB or more

- NVIDIA 또는 AMD OpenGL(version 3.3 이상) 지원이 가능한 그래픽 어댑터와 최소 512MB 이상의 그래픽 RAM을 가진 그래픽카드- A graphics adapter capable of supporting NVIDIA or AMD OpenGL (version 3.3 or higher) and a graphics card with at least 512MB of graphics RAM.

GPU를 사용한 심층학습을 이용하고자 한다면 NVIDIA 그래픽 카드를 사용하고, 제공되는 CUDA, cuDNN library를 설치하는 것이 바람직하다. GPU를 사용하지 않더라도 딥러닝 라이브러리 설치가 가능하다. 사용 가능한 컴퓨터의 운영체제(OS)는 예를 들어 다음과 같다.If you want to use deep learning using GPU, it is recommended to use an NVIDIA graphics card and install the provided CUDA and cuDNN libraries. Even if you do not use a GPU, you can install the deep learning library. Available computer operating systems (OS) are, for example:

- Windows 8.1 과 Window 10- Windows 8.1 and Windows 10

- Ubuntu Linux OS(16.04 이후)- Ubuntu Linux OS (16.04 or later)

AI Soccer simulator를 설치하기 위해서는 다음의 단계를 거쳐야 한다.To install AI Soccer simulator, you must go through the following steps.

1) Webots simulator를 설치한다.1) Install Webots simulator.

2) Python interpreter를 설치한다.2) Install Python interpreter.

3) AI Soccer simulator 파일을 다운로드한다.3) Download the AI Soccer simulator file.

4) 심층학습 라이브러리 설치4) Install deep learning library

만약 Python interpreter가 이미 설치되어 있다면, 단계 2)를 생략해도 무방하다. 게이머가 심층학습 예제 코드를 사용할 계획이라면 딥러닝 라이브러리를 설치하는 추가 단계가 필요하다. 심층학습 예제코드를 실행하려면, 2-3-4(WIDOWS) 또는 2-4-4(LINUX)의 “심층학습 라이브러리 설치”에 있는 심층학습 라이브러리의 설치를 따라야 한다. 심층학습 예제 코드에서는 PyTorch가 주요 딥러닝 라이브러리로 사용된다. 본 개시에서는 Tensorflow를 딥러닝 라이브러리의 또 다른 옵션으로 제시한다. GPU 지원 없이 딥러닝 라이브러리를 설치하려면, 2-3-4(WINDOWS) 또는 2-4- 4(LINUX)의 “GPU를 사용하지 않는 심층학습 라이브러리 설치” 절차를 따른다. NVIDIA 그래픽 카드가 있고, 심층학습 알고리즘을 교육할 수 있는 기능을 사용하려면 2-3-4(WINDOWS) 또는 2-4-4(LINUX)의 “GPU 를 사용하기 위한 심층학습 라이브러리 설치” 절차를 따른다.If the Python interpreter is already installed, you can skip step 2). If gamers plan to use the deep learning example code, an additional step is required to install the deep learning library. To run the deep learning example code, you must follow the installation of the deep learning library in “Installing the deep learning library” in 2-3-4 (WIDOWS) or 2-4-4 (LINUX). In the deep learning example code, PyTorch is used as the main deep learning library. This disclosure presents Tensorflow as another option for a deep learning library. To install the deep learning library without GPU support, follow the “Installing the deep learning library without GPU” procedure in 2-3-4 (WINDOWS) or 2-4-4 (LINUX). If you have an NVIDIA graphics card and want to use the ability to train deep learning algorithms, follow the “Installing deep learning libraries to use GPU” procedure in 2-3-4 (WINDOWS) or 2-4-4 (LINUX). .

AI 축구는 다른 게임과 달리 Webots(Web에서 동작하는 Robot들을 가리킴) 시뮬레이터를 게임 환경의 기반으로 한다. 따라서 Webots 시뮬레이터를 설치하여야 AI 축구를 실행할 수 있다. 도7은 Webots 시뮬레이터의 예시로서 Cyberbotics Ltd.에서 제공하는 Webots 시뮬레이터의 다운로드 페이지를 도시한다.Unlike other games, AI soccer uses Webots (referring to robots that operate on the web) simulators as the basis of the game environment. Therefore, you must install the Webots simulator to play AI soccer. Figure 7 shows the download page of the Webots simulator provided by Cyberbotics Ltd. as an example of the Webots simulator.

Webots 시뮬레이터 설치 완료 후 Webots 시뮬레이터에 ‘Tools’ → ‘Preferences’ → ‘General’ → ‘Startup mode’ 과정을 따르고 Start mode는 ‘Pause’로 설정한다. Python command는 ‘python’으로 설정한다. Python command는 Python interpreter 설치에 따라 달라진다. 도8은 Webots 시뮬레이터 Preferences 선택 창을 도시한다.After completing the installation of the Webots simulator, follow the process of ‘Tools’ → ‘Preferences’ → ‘General’ → ‘Startup mode’ in the Webots simulator and set the Start mode to ‘Pause’. Set the Python command to ‘python’. Python commands vary depending on Python interpreter installation. Figure 8 shows the Webots simulator Preferences selection window.

Webots 시뮬레이터에 AI 축구 시뮬레이터를 구동하려면 환경변수(System Properties → Environment Variables → System Variables → New)에 Webots의 PYTHONPATH를 추가한다. Python 인터프리터를 설치한 후 컴퓨터에 설치된 Python 버전에 맞춰 PYTHONPATH를 한다. 예를 들어 다음과 같다.To run the AI soccer simulator on the Webots simulator, add Webots' PYTHONPATH to the environment variables (System Properties → Environment Variables → System Variables → New). After installing the Python interpreter, set PYTHONPATH to match the version of Python installed on your computer. For example:

“PYTHONPATH = ${WEBOTS_HOME}/lib/controller/python3X”“PYTHONPATH = ${WEBOTS_HOME}/lib/controller/python3X”

“python3x”는 설치된 파이썬 버전과 관련되어 있다. 이 과정은 도9에 도시된 바와 같다.“python3x” is related to the installed version of Python. This process is as shown in Figure 9.

Windows 상에서 AI 축구를 실행시키기 위해선 Python (interpreter)이 필요하다. 추천 버전은 Python 3.7이다. Python을 수동으로 설치하거나, Anaconda(기계 및 심층학습 프로그램 개발을 위한 numpy 등 필수 라이브러리를 포함함)를 이용하여 설치하는 것이 가능하다. Python 수동 설치에 익숙하지 않은 경우, Anaconda를 이용하여 Python을 설치하길 권장한다.To run AI soccer on Windows, Python (interpreter) is required. The recommended version is Python 3.7. It is possible to install Python manually or using Anaconda (which includes essential libraries such as numpy for developing machine and deep learning programs). If you are not familiar with installing Python manually, we recommend installing Python using Anaconda.

AI 축구 시뮬레이터는 AI 축구 게임 구현과 예제 코드가 담긴 패키지이다. AI 축구 시뮬레이터는 Webots 시뮬레이터에 World(환경)형태로 탑재된다. https://github.com/aisoccer/aisoccer-3d/releases에 접속하여 AI 축구 시뮬레이터를 다운로드한다. 도10은 AI 축구 시뮬레이터를 다운로드 페이지를 도시한다. Windows에서 AI 축구 시뮬레이터를 사용하려면 “v0.1 Release Windows”에 포함된 ‘aioccer-3d.zip’ 파일을 다운로드한다. AI 축구 시뮬레이터는 이미 규칙 기반 예제 코드에 대한 실행이 가능하다. 규칙 기반 예제 코드를 사용하여 설치를 테스트할 수 있다. 한편, 심층 학습 사례를 실행하려면 심층 학습 라이브러리를 설치한다. 심층 학습 라이브러리와 호환되는 NVIDIA 그래픽 카드가 있는 경우 다음과 같은 두 가지 옵션이 있다.AI Soccer Simulator is a package containing AI soccer game implementation and example code. The AI soccer simulator is installed in the Webots simulator in the form of a world (environment). Go to https://github.com/aisoccer/aisoccer-3d/releases and download the AI soccer simulator. Figure 10 shows the AI soccer simulator download page. To use the AI soccer simulator on Windows, download the ‘aioccer-3d.zip’ file included in “v0.1 Release Windows”. The AI soccer simulator is already capable of running rule-based example code. You can test your installation using rule-based example code. Meanwhile, to run deep learning examples, install the deep learning library. If you have an NVIDIA graphics card that is compatible with the deep learning library, you have two options:

- GPU 사용 없이 심층 학습 라이브러리 사용- Use deep learning libraries without using GPU

- GPU를 사용하여 심층 학습 라이브러리- Deep learning library using GPU

NVIDIA 그래픽 카드가 있는 경우 그래픽 카드를 사용하여 심층 학습 라이브러리를 사용하여 컴퓨터 성능을 향상할 수 있다. NVIDIA 드라이버와 소프트웨어인 CUDA 및 cuDNN을 설치한다. 만약 GPU 지원 라이브러리를 사용하지 않으려면 심층 학습 라이브러리를 CPU만을 이용하여 심층 학습을 실행할 수 있다. 다음과 같은 순서대로, 필요한 프로그램들을 설치할 것이다.If you have an NVIDIA graphics card, you can use your graphics card to use deep learning libraries to improve your computer's performance. Install NVIDIA drivers and software, CUDA and cuDNN. If you do not want to use the GPU support library, you can run deep learning using the deep learning library using only the CPU. We will install the necessary programs in the following order.

- NVIDIA DRIVER- NVIDIA DRIVER

- CUDA- CUDA

- cuDNN-cuDNN

- 심층 학습 라이브러리: Tensorflow, PyTorch- Deep learning libraries: Tensorflow, PyTorch

GPU를 사용하지 않는 심층 학습 라이브러리 설치의 경우, 터미널에서 ‘pip’패키지 관리자를 통해 도11에 도시된 바와 같이 명령어를 실행시켜 Tensorflow 및 PyTorch를 설치한다. 이 경우 PyTorch만 설치해도 무방하다.In the case of installing a deep learning library that does not use GPU, install Tensorflow and PyTorch by executing the command as shown in Figure 11 through the ‘pip’ package manager in the terminal. In this case, it is okay to just install PyTorch.

GPU를 사용하기 위한 심층 학습 라이브러리 설치의 경우, AI 축구 실행시 NVIDIA 드라이버가 설치되어 있어야 원활한 속도로 게임 시뮬레이터를 사용할 수 있다. 자신의 컴퓨터에 NVIDIA GPU가 없다면 드라이버를 설치할 수 없으며 NVIDIA 드라이버가 자신의 컴퓨터에 없어도 시뮬레이터를 사용할 수 있으나 낮은 속도로 축구가 실행된다.In the case of installing the deep learning library to use the GPU, the NVIDIA driver must be installed when running AI Soccer to use the game simulator at smooth speed. If you do not have an NVIDIA GPU on your computer, you cannot install the driver. Even if you do not have an NVIDIA driver on your computer, you can use the simulator, but soccer will run at low speed.

Webots Simulator는 GPU가 있을 경우 작동한다. 그렇지만 CUDA, cuDNN의 설치가 상대적으로 까다롭기 때문에 초보자는 PyTorch만 설치해도 무방하다. PyTorch 만으로도 학습 기반 코드의 작성이 가능하다. Tensorflow, PyTorch 등의 딥러닝 라이브러리를 사용하기 위하여 NVIDIA 드라이버 설치와 함께 CUDA, cuDNN를 설치한다. 학습 기반 코드를 사용하기 위하여 NVIDIA 드라이버, CUDA, cuDNN을 설치한 후에 명령 프롬프트(cmd) 창이나 Anaconda 프롬프트를 사용하여 자신이 사용할 Tensorflow 나 PyTorch를 명령어로 설치한다.Webots Simulator works if you have a GPU. However, since installing CUDA and cuDNN is relatively difficult, beginners can just install PyTorch. It is possible to write learning-based code with PyTorch alone. To use deep learning libraries such as Tensorflow and PyTorch, install CUDA and cuDNN along with the NVIDIA driver. To use learning-based code, install the NVIDIA driver, CUDA, and cuDNN, then use the command prompt (cmd) window or Anaconda prompt to install the Tensorflow or PyTorch you want to use with the command.

Ubuntu 18.04는 Windows 10처럼 컴퓨터 환경을 조성하는 운영 체제(OS) 중 하나이며 로봇 시뮬레이터 및 프로그래밍 개발에 최적화된 운영체제이다. Ubuntu 18.04는 안정적 장기 지원(LTS) 버전이다. Windows와 달리 운영체제 자체가 Python 언어로 되어 있기 때문에 별도로 Python을 설치하지 않아도 되며 대부분의 설치가 터미널 창에서 명령어를 통해 가능하다. Ubuntu 에서는 터미널에 명령어: webots을 통하여 프로그램 실행이 가능하다. Webots 시뮬레이터 설치 후에 Webots 시뮬레이터 메뉴의 ‘Tools’ → ‘Preferences’ → ‘General’ → ‘Startup mode’ 로 이동하여 pause 모드로 설정한다. 또한, ‘Python command’를 ‘python’으로 설정한다. Webots 시뮬레이터에서 AI 축구 시뮬레이터를 사용하려면 환경변수에 Webots의 PYTHONPATH를 추가한다. Python 설치 후 Python 버전(‘python3x’ )에 맞춰서 PYTHONPATH를 설정한다. Ubuntu에서는 Webots 시뮬레이터 실행 전 매번 PYTHONPATH를 불러와야 한다. 터미널을 이용하여 별도의 페이지를 열지 않아도 아래의 명령어를 사용하여 불러오는 작업을 수행할 수 있다. 만약 Webots를 실행할 때마다 PYTHONPATH를 매번 추가하지 않으려면, ‘~/.bash_profile’ 파일에 PYTHONPATH 변수를 추가한다.Ubuntu 18.04 is one of the operating systems (OS) that creates a computer environment like Windows 10, and is an operating system optimized for robot simulator and programming development. Ubuntu 18.04 is a stable long-term support (LTS) version. Unlike Windows, the operating system itself is written in the Python language, so there is no need to install Python separately, and most installations can be done through commands in a terminal window. In Ubuntu, you can run the program through the terminal command: webots. After installing the Webots simulator, go to ‘Tools’ → ‘Preferences’ → ‘General’ → ‘Startup mode’ in the Webots simulator menu and set it to pause mode. Also, set ‘Python command’ to ‘python’. To use the AI soccer simulator in the Webots simulator, add Webots' PYTHONPATH to the environment variables. After installing Python, set PYTHONPATH according to the Python version (‘python3x’). In Ubuntu, PYTHONPATH must be loaded every time before running the Webots simulator. Even without opening a separate page using the terminal, you can perform the loading task using the command below. If you do not want to add PYTHONPATH every time you run Webots, add the PYTHONPATH variable to the ‘~/.bash_profile’ file.

일반적으로 Ubuntu OS에는 기본적으로 Python interpreter가 설치되어 있다. PIP 패키지 관리자를 통해 필요한 라이브러리를 설치한다.In general, Ubuntu OS has a Python interpreter installed by default. Install the necessary libraries through the PIP package manager.

- numpy- numpy

- opencv-python- opencv-python

Windows의 Anaconda Python 환경과 달리 Ubuntu에서는 터미널에 명령어를 사용하여 pip, Python 필수라이브러리들을 설치하여야 한다. 학습 기반 코드를 사용하기 위하여 NVIDIA 드라이버, CUDA, cuDNN을 설치한 후에 터미널에 명령어를 사용하여 Tensorflow 와 PyTorch를 설치한다.Unlike the Anaconda Python environment on Windows, in Ubuntu, you must install pip and Python essential libraries using a command in the terminal. To use learning-based code, install NVIDIA drivers, CUDA, and cuDNN, then install Tensorflow and PyTorch using commands in the terminal.

다운로드하여 압축을 푼 AI 축구 시뮬레이터는 도12와 같은 구조를 가지고 있다. ‘controllers’ 폴더는 supervsor의 기능이 들어가 있고, 게이머 코드의 작성과는 무관하다. ‘pluggins’ 폴더는 게임 진행상화에서 발생하는 로봇간 충돌의 감지에 관련된 코드들이 있다. ‘protos’ 폴더는 게임의 로봇 및 경기장 등의 상세 내역이 있다. ‘reports’ 폴더는 게임 기사작성과 관련된 것이다. 게이머에게는 ‘worlds’와 ‘examples’ 폴더들이 중요하다. ‘worlds’ 폴더에는 Webots 시뮬레이터에서 열어야 하는 청소년 및 어른 로봇의 경기를 위한 환경이 모두 포함되어 있다. ‘examples’ 폴더에는 자신의 전략을 개발하기 위해 참고하여 사용하는 예제 코드가 포함되어 있다. ‘worlds’ 폴더에는 ‘aisoccer_1.wbt’ 및 ‘aisoccer_2.wbt’의 2개 world 파일이 있다. world 파일 ‘aisoccer_1.wbt’는 청소년 로봇들을 사용하여 경기를 하는 환경이고, world 파일 ‘aisoccer_2.wbt’는 어른 로봇들을 사용하여 경기를 하는 환경이다. 설치를 확인하려면 Webot 시뮬레이터를 열고 ‘Ctrl + O’를 눌러 월드 파일을 열 수 있다. ‘Worlds’ 폴더에서 실행하려는 World 파일을 선택하면 도13에 도시된 바와 같이 시뮬레이터가 실행된다. AI 축구 시뮬레이터의 root 폴더에 있는 ‘config.json’ 파일을 열고 e-mail 및 라이센스를 입력하면, 규칙 기반 두 팀 간의 경기가 진행된다.The downloaded and unzipped AI soccer simulator has the same structure as Figure 12. The ‘controllers’ folder contains the supervsor function and has nothing to do with writing gamer code. The ‘pluggins’ folder contains codes related to detection of collisions between robots that occur during game progress. The ‘protos’ folder contains detailed information about the game’s robots and stadiums. The ‘reports’ folder is related to writing game articles. The ‘worlds’ and ‘examples’ folders are important to gamers. The ‘worlds’ folder contains all the environments for youth and adult robot competitions, which must be opened in the Webots simulator. The ‘examples’ folder contains example code to use as a reference to develop your own strategy. There are two world files in the ‘worlds’ folder: ‘aisoccer_1.wbt’ and ‘aisoccer_2.wbt’. The world file ‘aisoccer_1.wbt’ is an environment where games are played using youth robots, and the world file ‘aisoccer_2.wbt’ is an environment where games are played using adult robots. To check the installation, you can open the Webot simulator and press ‘Ctrl + O’ to open the world file. When you select the World file you want to run in the ‘Worlds’ folder, the simulator runs as shown in Figure 13. If you open the ‘config.json’ file in the root folder of the AI soccer simulator and enter your e-mail address and license, a rules-based match between two teams will be played.

Webots 시뮬레이터 편집기를 사용하여 ‘config.json’ 파일을 열어 게임 옵션을 구성하고 라이센스(e-mail 주소 및 시그니처 키)를 삽입하고 게이머 strategy codes를 설정하면 된다. 기본 구성만을 사용하면 로봇을 임의로 이동하는 팀이 A팀, 간단한 규칙 기반에 따라 로봇을 작동시키는 팀이 B팀으로 경기가 진행될 것이다. 게이머가 작성한 코드는 path를 정해서 사용할 수 있다. AI Soccer 게이머와 관련된 부분은 rule, team_a, team_b, tool이다. rule의 game_time 은 전후반 각각의 게임시간으로 게이머가 원하는 대로 바꿀 수 있다. 예를 들어 ‘config.json’ 파일은 다음의 표1과 같이 구성될 수 있다.Using the Webots simulator editor, open the ‘config.json’ file to configure game options, insert license (e-mail address and signature key), and set gamer strategy codes. Using only the basic configuration, Team A will be the team that moves the robot randomly, and Team B will be the team that operates the robot according to a simple rule base. Code written by gamers can be used by specifying a path. The parts related to AI Soccer gamers are rule, team_a, team_b, and tool. The game_time in the rule is the game time for the first and second halves and can be changed as desired by the gamer. For example, the ‘config.json’ file can be structured as shown in Table 1 below.

항목item 의미meaning rulerule Game_time(경기시간)과 deadlock(교착상태=공이 4초동안 로봇간의 접촉으로 인한 교착으로 움직이지 않을 경우 공이 재배치됨)으로 구성됨Consists of Game_time (game time) and deadlock (deadlock = if the ball does not move due to deadlock due to contact between robots for 4 seconds, the ball is relocated) Game_timeGame_time Game time (default: 300 seconds)Game time (default: 300 seconds) deadlockdeadlock False 로 설정하면 교착 상태에 대한 규칙이 무시된다 (default: True).If set to False, rules for deadlocks will be ignored (default: True). Team_a
Team_b
Team_a
Team_b
경기할 축구팀을 정함. name, executable, datapath, keyboard 로 구성됨Decide which soccer team will play. Consists of name, executable, datapath, keyboard
namename 팀 이름team name executableexecutable AI 축구 실행 파일 경로
(AI 축구를 실행하려면 두 팀 모두 올바르게 지정되어야 함)
AI Soccer Executable File Path
(Both teams must be correctly assigned to run AI soccer)
datapathdata path AI 가 일부 파일을 출력할 수 있는 경로Path where AI can output some files keyboardkeyboard True 로 설정하면 키보드를 통해 로봇 조작이 가능하다.If set to True, the robot can be operated using the keyboard. commentator
reporter
commentator
reporter
AI 축구 해설자와 리포터의 정보를 정한다 (다른 AI WorldCup 종목에서 사용)Set information for AI soccer commentators and reporters (used in other AI WorldCup sports)
tooltool True 로 설정하면 게임 종료 후 동일한 게임 옵션으로 게임이 반복된다. True 일 때 ‘reset_reason’의 ‘GAME_END’는 ‘EPISODE_END’로 대체된다 (default: False).If set to True, the game will repeat with the same game options after the game ends. When True, ‘GAME_END’ in ‘reset_reason’ is replaced with ‘EPISODE_END’ (default: False). multi_viewmulti_view True 로 두면 경기를 진행하는 동안 3 차원 카메라가 공을 따라 움직이고 몇몇 상황에서 사용되는 카메라가 바뀐다.
코드 개발 및 시험 단계에서는 False 로 두기를 권장한다.
If set to True, the 3D camera will follow the ball during the game and change the camera used in some situations.
It is recommended to leave it as False during the code development and testing stages.
recordrecord True 로 설정하면 경기를 녹화하고 게임이 끝났을 때 “record_path”에 저장된다. “repeat”과 함께 사용할 수 없다. “repeat”이 True이면 “record” 내부적으로 False 가 된다(default: False).
경기 종료 후 녹화된 비디오가 저장되는데 몇 분이 걸린다.
‘Video creation finished.’라는 메시지가 Webots Console (Ctrl + L)에 나올 때까지 기다려야 한다.
If set to True, the game will be recorded and saved in “record_path” when the game is over. Cannot be used with “repeat”. If “repeat” is True, “record” becomes False internally (default: False).
It will take a few minutes for the recorded video to be saved after the game ends.
You must wait until the message ‘Video creation finished.’ appears in the Webots Console (Ctrl + L).
record_pathrecord_path 녹화된 비디오를 저장할 경로 (default: “”). 비디오 파일 이름이 아니라 경로이다.
파일이름은 자동으로 ‘[{timestamp}]{team_a_name}_{team_b_name}. mp4’ 로 설정된다. 기본값으로 사용하면 루트 경로에 비디오를 저장한다. 비디오를 저장할 적절한 경로를 지정해야 한다.
Path to save the recorded video (default: “”). This is a path, not a video file name.
The file name is automatically '[{timestamp}]{team_a_name}_{team_b_name}. It is set to 'mp4'. If used as default, the video will be saved in the root path. You must specify an appropriate path to save the video.
replayreplay True 로 설정하면 골이 들어갔을 때 골이 들어가기 3초 전부터 골이 들어가고 난 후 3초까지의 영상이 재생된다. “multi_view” 옵션이 True이면 다른 각도의 리플레이 영상이 재생된다.If set to True, when a goal is scored, video is played from 3 seconds before the goal to 3 seconds after the goal is scored. If the “multi_view” option is True, replay videos from different angles are played. licenselicense 게이머의 정보를 확인.
email, signature 로 구성됨
Check the gamer's information.
Consists of email and signature
emailemail 게이머의 email 주소 입력Enter the gamer’s email address signaturesignature 관리자로부터 받은 시그니처 키 입력 (다른 값을 입력한 경우 게임이 진행되지 않는다.)Enter the signature key received from the administrator (if you enter a different value, the game will not proceed.)

config.json 파일 수정이 끝난 후, AI 축구를 ‘Ctrl + 2’ 키(Play Button)를 눌러 실행시킨다.청소년용 로봇을 위한 AI 축구 경기장 및 어른용 로봇을 위한 AI 축구 경기장은 도14에 도시된 바와 같다. 어른용 로봇을 위한 AI 축구 경기장이 청소년용 로봇을 위한 AI 축구 경기장보다 1.3 배 더 크다.After editing the config.json file, run AI soccer by pressing the 'Ctrl + 2' key (Play Button). The AI soccer stadium for youth robots and the AI soccer stadium for adult robots are shown in Figure 14. It's like a bar. The AI soccer stadium for adult robots is 1.3 times larger than the AI soccer stadium for youth robots.

AI 축구 로봇은 골키퍼(GK), 수비수(D1, D2), 공격수(F1, F2)의 세 종류로 나눌 수 있다. 도15는 청소년용 AI 축구 로봇 및 어른용 AI 축구 로봇을 도시한다. AI 축구 로봇 및 어른용 AI 축구 로봇의 차이점은 시각적 형태와 크기뿐이다. 도15에 도시된 시각적 모양은 로봇이 Webots 시뮬레이터 화면에서 보이는것과 일치한다. 시각적 형태는 팔, 다리, 머리를 포함한다. Webots 시뮬레이터에 의해 내부적으로 수행되는 물리적인 모양은 시각적 모양을 단순화한 형태인 도16 같다. 도16에 표시된 로봇의 키와 발 크기의 물리적인 크기는 도15에 제시된 시각적 형상의 키와 발의 크기와 같다. 그 외의 부분들은 게임 실행의 편의성을 위해 시뮬레이터 내부적으로 단순화된다. 단순화는 로봇이 어떻게 공, 벽, 그리고 다른 로봇과 접촉하게 되는 지와 관련이 있다. 로봇의 신체 사양은 머리와 몸통, 다리를 대신하는 상자 모양의 하체로 구성된다. 팔은 골키퍼의 경우에만 물리적인 모양에 포함된다. Webots 시뮬레이터에서 로봇을 클릭하여 로봇의 물리적인 사양을 확인할 수 있다. 로봇 안에는 도17에 도시된 바와 같이 2개의 바퀴와 추가적으로 2개의 슬라이더가 있다. 바퀴는 왼쪽과 오른쪽 바퀴가 각각 움직이며(차동) 로봇의 움직임에 사용된다. 차동 바퀴의 사용에 대한 자세한 내용은 이하에서 설명된다. 2개의 슬라이더는 로봇의 전면과 하단에 위치한다. 도17에서, 발 아래의 빨간색 부분은 하단 슬라이더에 해당한다. 발 앞쪽의 빨간 부분은 전면 슬라이더에 해당한다. 전면 슬라이더는 kick(cross, shoot, quickpass)에 사용된다. 크로스(cross) 또는 높게 공을 찰 때 각도 조정은 전면 (앞쪽) 슬라이더의 높이를 조정하여 수행할 수 있다. 하단 (아래쪽) 슬라이더는 헤딩을 할 경우 점프를 위해 사용된다. 골키퍼의 경우 슬라이더를 다르게 설계해 세이브 (Save) 기회를 만들어 낸다. 슬라이더는 골키퍼 하단에 위치하고 앞쪽, 왼쪽, 오른쪽의 세이브를 시도하기 위해 세가지 방향으로 슬라이딩 할 때 사용된다. 축구 로봇은 바퀴와 슬라이더의 속도를 변화시킴으로써 다양한 행동 특성을 달성할 수 있다. 그 특징의 예는 도18에 도시되어 있다. 도18에서 로봇은 이동 (move), 점프 (jump), 상대방 골대로 슛 (shoot)이 가능함을 보여준다. 로봇의 공 제어 능력을 높이기 위해 드리블 모드도 정의되었다. 드리블 모드는 로봇이 공을 점유하고 있을 때 활성화할 수 있다. 드리블 모드가 활성화되고 로봇이 공을 점유할 때 로봇과 함께 공이 움직인다. 드리블 모드가 활성화되어도 상대팀이 볼 점유상태로 돌입하는 것을 막지 못한다. 드리블 모드의 규칙은 다음과 같다. 첫째, 드리블 모드는 로봇 전방의 드리블 영역에 공이 있을 때 활성화할 수 있다. 드리블 영역은 정면 중앙선을 중심으로 좌우 45도 도합 90도의 부채 모양이며, 원으로 보이는 머리의 원주에서 5~20cm의 길이(로봇의 속도에 따라 다름)로 정의된다. 로봇이 정지한 상태이면 5cm이고 최대의 속도(maximum linear velocity)로 움직이면 20cm이다. 도19는 드리블 영역을 도시한다. 둘째, 다른 로봇의 드리블 지역과 공이 겹칠 경우 드리블 모드가 해제되고 두 로봇 모두 볼 점유를 할 수 있기 때문에, 다툼을 벌인다. 셋째, 드리블 중 shoot 또는 jump를 사용하면 드리블이 종료된다. 넷째, 로봇이 넘어진 경우 드리블이 종료된다. 게이머들의 편의를 위해 규칙 기반 예제 코드의 ‘action.py’ 파일에 kick (shoot)과 jump 동작이 미리 구현되어 있다. 게이머 코드는 각 시간 단계에서 각 로봇에 대해 바퀴, 슬라이더 및 드리블 모드 변수를 설정하고 그것들을 AI 축구 시뮬레이터로 전송해야 한다. 바퀴 및 슬라이더 사양에 대한 자세한 내용은 후술된다. 축구 로봇의 사양은 아래의 표2와 같으며, 역할에 따라 일부 사양은 다르다. 골키퍼가 다른 로봇보다 무거운 이유는 상대 팀 수비수와 공격수가 골키퍼를 골 지역 밖으로 밀어내는 상황을 피하기 위해서다. 공격수가 수비수보다 가벼운 이유는 공격수가 페널티지역에서 골대 바깥방향으로 수비수들을 밀어 넣어 득점 기회를 만드는 상황을 피하기 위해서다.AI soccer robots can be divided into three types: goalkeeper (GK), defender (D1, D2), and attacker (F1, F2). Figure 15 shows an AI soccer robot for youth and an AI soccer robot for adults. The only difference between AI soccer robots and AI soccer robots for adults is their visual shape and size. The visual appearance shown in Figure 15 matches how the robot appears on the Webots simulator screen. Visual forms include arms, legs, and head. The physical appearance performed internally by the Webots simulator is shown in Figure 16, which is a simplified form of the visual appearance. The physical height and foot size of the robot shown in Figure 16 are the same as the height and foot size of the visual shape shown in Figure 15. Other parts are simplified internally in the simulator for convenience in running the game. The simplification concerns how the robot comes into contact with the ball, the wall, and other robots. The robot's body specifications consist of a head, torso, and a box-shaped lower body that replaces the legs. Arms are included in the physical shape only for goalkeepers. You can check the physical specifications of the robot by clicking on it in the Webots simulator. Inside the robot, there are two wheels and additionally two sliders, as shown in Figure 17. The left and right wheels move separately (differentially) and are used for the movement of the robot. More details on the use of differential wheels are described below. Two sliders are located at the front and bottom of the robot. In Figure 17, the red part under the foot corresponds to the bottom slider. The red part on the front of the foot corresponds to the front slider. The front slider is used for kick (cross, shoot, quickpass). When kicking the ball cross or high, angle adjustment can be accomplished by adjusting the height of the front (front) slider. The bottom (bottom) slider is used for jumping when heading. For goalkeepers, the slider is designed differently to create save opportunities. The slider is located below the goalkeeper and is used to slide in three directions to attempt saves forward, left, and right. A soccer robot can achieve various behavioral characteristics by varying the speed of its wheels and sliders. An example of that feature is shown in Figure 18. Figure 18 shows that the robot can move, jump, and shoot into the opponent's goal. A dribbling mode was also defined to increase the robot's ball control ability. Dribbling mode can be activated when the robot is in possession of the ball. When dribbling mode is activated and the robot gains possession of the ball, the ball moves with the robot. Even if dribbling mode is activated, it does not prevent the opposing team from entering ball possession. The rules of dribble mode are as follows. First, dribbling mode can be activated when there is a ball in the dribbling area in front of the robot. The dribbling area is a fan shape with a total of 90 degrees left and right, 45 degrees centered on the front center line, and is defined as a length of 5 to 20 cm (depending on the speed of the robot) from the circumference of the head, which appears as a circle. When the robot is stationary, it is 5cm, and when it moves at maximum linear velocity, it is 20cm. Figure 19 shows the dribble area. Second, if the ball overlaps another robot's dribbling area, the dribbling mode is canceled and both robots can take possession of the ball, resulting in a fight. Third, if you use shoot or jump while dribbling, the dribbling will end. Fourth, if the robot falls, dribbling ends. For the convenience of gamers, kick (shoot) and jump actions are pre-implemented in the ‘action.py’ file of the rule-based example code. The gamer code must set the wheel, slider and dribble mode variables for each robot at each time step and transmit them to the AI soccer simulator. Details on wheel and slider specifications are described later. The specifications of the soccer robot are as shown in Table 2 below, and some specifications are different depending on the role. The reason the goalkeeper is heavier than other robots is to avoid situations where the opposing team's defenders and attackers push the goalkeeper out of the goal area. The reason the attacker is lighter than the defender is to avoid a situation where the attacker creates a scoring opportunity by pushing the defenders out of the penalty area toward the outside of the goal.

골키퍼goalkeeper 수비수defender 공격수striker 무게(Kg)Weight (Kg) 2.52.5 2.02.0 1.51.5 로봇 무게중심(Cm)Robot center of gravity (cm) 지상 1.5ground 1.5 좌동left side 좌동left side 바퀴 무게(Kg)Wheel weight (Kg) 각 0.150.15 each 좌동left side 좌동left side 슬라이더 무게(Kg)Slider weight (Kg) 각 0.50.5 each 좌동left side 좌동left side 최대속도(m/s)Maximum speed (m/s) 1.81.8 2.12.1 2.552.55 최대회전토크(N*m)Maximum rotation torque (N*m) 0.80.8 1.21.2 0.40.4

축구 공은 지름 10cm의 단순한 구 형태이고 무게는 18.4g이다. 도20에 도시된 바와 같이, 축구공에 있는 infinity 마크는 AI 축구에서 개발할 수 있는 무한한 종류의 전략을 나타낸다.AI 축구는 공격과 수비가 반복되면서 이루어진다. 이를 위해 공격과 수비에 해당하는 경기장 영역과 각 영역에 적합한 로봇의 행동들이 정의되어야 한다. 공격의 경우, 각 로봇들이 게임전략에 해당하는 포매이션을 유지하기 위해 정해진 위치를 적절한 속도로 이동해 크로스, 킥, 패스를 적당한 속도와 높이로 실행하는 것이 중요하다. 수비의 경우, 상대팀 공격수의 움직임에 대응한 위치선정과 패스가 중요하다. 이러한 경기진행을 위해 로봇과 경기장의 특징에 대한 정보가 필요하고, 매 시간단계마다 갱신되는 경기 상태 정보가 필요하다. 결국, 게이머의 코드는 이러한 정보를 이용해 로봇의 위치설정, 바퀴를 이용한 이동(move)의 속도 제어, 전면 슬라이더와 하단 슬라이더를 이용한 크로스/킥/패스를 적절한 시간에 효과적으로 실행하기 위한 것이다. 로봇과 경기장에 관한 정보는 게임 시작후 1 회만 수신하는 ‘info’ 딕셔너리 (Dictionary)와 50ms마다 수신하는 ‘frame’ 딕셔너리로 받고 게임 전략은 update() 함수를 중심으로 구현된다. 참고로 시간 단계와 프레임(frame)은 똑같이 50ms의 시간 경과후에 바뀐다. 도21은 AI 축구 시뮬레이터와 게이머 코드 간의 통신 구조를 예시하며, 도22는 AI 축구 시뮬레이터와 게이머 코드가 송수신 하는 정보를 예시한다. 도22에 도시된 바와 같이, AI 축구 시뮬레이터는 게임에 관련된 로봇 및 공의 위치, 게임 상태 (Game State), 스코어와 시간 등을 게이머 코드의 호출이 있을 때마다 알려준다. 게이머는 AI 축구 시뮬레이터로부터 게임에 관련된 데이터를 받는 3 가지 가상 함수를 이용하여 게임 상태에 맞게 바퀴속도 (wheel velocity)와 전면 슬라이더 등을 이용해서 로봇들을 제어할 수 있다. 세가지 가상 함수는 init(), update(), finish()이다. init()은 게이머가 시뮬레이터와 성공적으로 연결된 후에 호출된다. update()는 매 단위 시간 50ms마다 호출된다. 경기가 끝날때, finish()가 호출된다.A soccer ball is a simple sphere with a diameter of 10 cm and weighs 18.4 g. As shown in Figure 20, the infinity mark on the soccer ball represents the infinite types of strategies that can be developed in AI soccer. AI soccer is played by repeating attack and defense. For this purpose, the areas of the stadium corresponding to offense and defense and the robot's actions appropriate for each area must be defined. In the case of attack, it is important for each robot to move to a given location at an appropriate speed and execute crosses, kicks, and passes at an appropriate speed and height in order to maintain the formation corresponding to the game strategy. In the case of defense, positioning and passing in response to the movements of the opposing team's attackers are important. In order to proceed with such a game, information about the characteristics of the robot and the stadium is needed, and game status information that is updated at every time step is needed. Ultimately, the gamer's code uses this information to effectively set the robot's position, control the speed of movement using the wheels, and cross/kick/pass using the front and bottom sliders at the appropriate time. Information about the robot and the stadium is received through the ‘info’ dictionary, which is received only once after the game starts, and the ‘frame’ dictionary, which is received every 50ms, and the game strategy is implemented around the update() function. For reference, the time step and frame change after 50ms. Figure 21 illustrates the communication structure between the AI soccer simulator and the gamer code, and Figure 22 illustrates information transmitted and received between the AI soccer simulator and the gamer code. As shown in Figure 22, the AI soccer simulator informs the location of the robot and ball related to the game, game state, score and time, etc. whenever the gamer code is called. Gamers can control robots using wheel speed and front slider according to the game state using three virtual functions that receive game-related data from the AI soccer simulator. The three virtual functions are init(), update(), and finish(). init() is called after the gamer has successfully connected to the simulator. update() is called every 50ms. When the game ends, finish() is called.

AI Soccer 코드에서는 3 개의 가상 함수가 호출된다.In the AI Soccer code, three virtual functions are called.

가상 함수 ‘init()’은 게이머 코드가 시뮬레이터와 연결에 성공한 직후 한번만 호출된다. 도21에 도시된 바와 같이 AI 축구 시뮬레이터로부터 경기장 상황과 로봇의 상태에 대한 사전 정보(다음 시간 단계에서 쓰일 정보)를 수신하고 게이머 코드에 의해 게임 전략 구현에 필요한 변수를 초기화 하는데 사용된다. AI 축구 시뮬레이터의 ‘examples’ 폴더에 위치한 예제 코드에서 변수의 초기화 및 데이터 기록이 어떻게 작동하는지에 대한 것을 확인할 수 있다.The virtual function ‘init()’ is called only once immediately after the gamer code successfully connects to the simulator. As shown in Figure 21, preliminary information about the stadium situation and the state of the robot (information to be used in the next time step) is received from the AI soccer simulator and is used to initialize the variables needed to implement the game strategy by the gamer code. You can see how variable initialization and data recording work in the example code located in the ‘examples’ folder of the AI soccer simulator.

가상 함수 ‘update()’는 시뮬레이터가 게이머 코드로 새 데이터를 전송할 때마다 호출된다. AI 축구에서는 단위 시간 단계가 50ms로 설정되어 있어 시뮬레이터도 50ms마다 새로운 데이터를 전송하고 ‘update()’도 50ms마다 호출된다. AI 축구 시뮬레이터가 게이머 코드에게 보낸 자료를 frame(프레임)이라고 한다. 게임의 각 프레임에 관한 정보가 수록된 프레임 데이터는 update() 함수의 인자인 ‘frame’에 들어있다. ‘frame’변수에는 도22에 도시된 바와 같이 게임의 현재 상태에 해당하는 이미지, 좌표, 재설정 이유(reset reason), 게임 상태, 점수 및 시간이 포함되어 있다. 게이머 코드는 수신된 현재 축구 경기 상태의 내용을 담은 프레임 데이터를 확인하고, 생성할 제어 신호(로봇의 동작)를 결정하고, 제어 신호를 다시 시뮬레이터로 전송한다. 따라서 게이머의 게임 전략이 구현된 함수이다. 제어 신호 전송 방법은 후술된다. 제어 신호를 생성하기 위한 규칙 또는 심층학습을 사용하는 예제 코드는 ‘examples’ 폴더에 제공된다.The virtual function ‘update()’ is called whenever the simulator sends new data to the gamer code. In AI soccer, the unit time step is set to 50ms, so the simulator also sends new data every 50ms and ‘update()’ is also called every 50ms. The data sent by the AI soccer simulator to the gamer code is called a frame. Frame data containing information about each frame of the game is contained in ‘frame’, the argument of the update() function. The ‘frame’ variable includes the image corresponding to the current state of the game, coordinates, reset reason, game state, score, and time, as shown in Figure 22. The gamer code checks the received frame data containing the contents of the current soccer game state, determines the control signal to be generated (robot motion), and transmits the control signal back to the simulator. Therefore, it is a function that implements the gamer's game strategy. The control signal transmission method is described later. Example code using rules or deep learning to generate control signals is provided in the ‘examples’ folder.

가상 함수 ‘finish()’는 게이머 코드가 종료되기 전에 한번 만 호출된다. 여기서 게이머 코드는 게임 내내 기록된 모든 데이터를 저장할 수 있고, 다음 게임에 유용하게 사용될 수 있다.The virtual function ‘finish()’ is called only once before the gamer code ends. Here, the gamer code can save all data recorded throughout the game and can be useful for the next game.

‘info’ 딕셔너리에는 경기장의 크기, 로봇 사양 등 경기 중 변하지 않는 값들과 기본 정보를 담고 있다. 이 딕셔너리는 게이머 코드의 ‘init()’ 함수에서 수신한 ‘info’ 변수를 통해 접근 가능하다(예: ‘info[‘Game_time’]’는 경기 시간을 나타낸다). 사용하고 싶은 변수가 있다면 ‘init()’에서 class 변수로써 저장해야 한다. 이 딕셔너리에 있는 정보들은 AI 축구 기본 사양에 있는 정보와 동일하다. ‘info’ 딕셔너리의 정보는 표3에서 보이는 바와 같다. 이러한 정보와 딕셔너리 값의 사용방법은 예제 코드의 general_check-variables.py’와 ‘general_image-fetch.py’을 통해서 확인 가능하다.The ‘info’ dictionary contains basic information and values that do not change during the game, such as the size of the stadium and robot specifications. This dictionary can be accessed through the ‘info’ variable received from the ‘init()’ function in the gamer code (e.g. ‘info[‘Game_time’]’ represents the game time). If there is a variable you want to use, you must save it as a class variable in ‘init()’. The information in this dictionary is the same as the information in the AI soccer basic specifications. The information in the ‘info’ dictionary is as shown in Table 3. This information and how to use dictionary values can be checked through ‘general_check-variables.py’ and ‘general_image-fetch.py’ in the example code.

Member VariableMember Variable Data TypeData Type 설명explanation fieldfield list of floats (length 2)list of floats (length 2) 경기장 크기 [x, y] (단위: m)Stadium size [x, y] (unit: m) goalgoal list of floats (length 2)list of floats (length 2) 골대 크기 [x, y] (단위: m)Goalpost size [x, y] (unit: m) penalty_areapenalty_area list of floats (length 2)list of floats (length 2) 페널티 구역 크기 [x, y] (단위: m)Penalty area size [x, y] (unit: m) goal_areagoal_area list of floats (length 2)list of floats (length 2) 골 구역 크기 [x, y] (단위: m)
※ 이 구역과 관련된 규칙은 없음.
Goal zone size [x, y] (unit: m)
※ There are no rules related to this area.
ball_radiusball_radius floatfloat 공 크기 (단위: m)Ball size (unit: m) ball_massball_mass floatfloat 공 무게 (단위: kg)Ball weight (unit: kg) robot_sizerobot_size list of floats (length 5)list of floats (length 5) 로봇 크기 [GK, D1, D2, F1, F2] (단위: m)
※ 로봇 하체 기준 (0.15m)
Robot size [GK, D1, D2, F1, F2] (unit: m)
※ Based on robot lower body (0.15m)
robot_heightrobot_height list of floats (length 5)list of floats (length 5) 로봇 높이 [GK, D1, D2, F1, F2] (단위: m)Robot height [GK, D1, D2, F1, F2] (unit: m) axle_lengthaxle_length list of floats (length 5)list of floats (length 5) 바퀴 사이 거리 [GK, D1, D2, F1, F2] (단위: m)Distance between wheels [GK, D1, D2, F1, F2] (unit: m) robot_body_massrobot_body_mass list of floats (length 5)list of floats (length 5) 로봇 무게 [GK, D1, D2, F1, F2] (단위: kg)Robot weight [GK, D1, D2, F1, F2] (Unit: kg) wheel_raiduswheel_raidus list of floats (length 5)list of floats (length 5) 바퀴 반지름 [GK, D1, D2, F1, F2] (단위: m)Wheel radius [GK, D1, D2, F1, F2] (unit: m) wheel_masswheel_mass list of floats (length 5)list of floats (length 5) 바퀴 무게 [GK, D1, D2, F1, F2] (단위: kg)Wheel weight [GK, D1, D2, F1, F2] (Unit: kg) max_linear_velocitymax_linear_velocity list of floats (length 5)list of floats (length 5) 바퀴 최대 선속 [GK, D1, D2, F1, F2] (단위: m/s)Wheel maximum linear speed [GK, D1, D2, F1, F2] (Unit: m/s) max_torquemax_torque list of floats (length 5)list of floats (length 5) 바퀴 최대 토크 [GK, D1, D2, F1, F2] (단위: N*m)Wheel maximum torque [GK, D1, D2, F1, F2] (Unit: N*m) resolutionresolution list of ints (length 2)list of ints (length 2) 이미지 크기 [가로, 세로] (단위: pixel)Image size [horizontal, vertical] (unit: pixel) number_of_robotsnumber_of_robots IntInt 로봇 개수Number of robots codewordscodewords list of ints (length 5)list of ints (length 5) 로봇 식별 이미지에 부여된 10 진수의 해밍 코드
[GK, D1, D2, F1, F2]
Decimal Hamming code assigned to robot identification image
[GK, D1, D2, F1, F2]
game_timegame_time FloatFloat 경기 시간 (단위: s)Game time (unit: s) team_infoteam_info DictionaryDictionary 두 팀의 정보 포함Includes information from both teams keykey StringString 랜덤 문자열 keyrandom string key KeyboardKeyboard BoolBool 키보드 조작 사용 여부Whether to use keyboard operation

‘frame’ 딕셔너리는 게임의 각 프레임의 정보를 가지고 있으며, 현재 게임 상태와 연관되어 있다. 게임이 진행됨에 따라 로봇과 공의 좌표 등 ‘frame’ 딕셔너리에서 수신되는 정보가 매 시간단계마다 다르다. ‘update()’가 호출될 때마다 업데이트 된 데이터와 함께 새로운 ‘frame’ 변수가 수신된다. 예를 들어, FRAME[‘coordinates’][MY_TEAM][GK][X]는 우리 팀 골키퍼의 x 좌표이다. frame에서 x 좌표로 순차적인 top-down 방식의 표현으로 좌표값을 얻는다. MY_TEAM, GK, X는 미리 정의되어 있어야 한다. ‘frame’ 딕셔너리의 정보는 표4에서 보이는 바와 같다. 표5는 좌표 정보를 나타낸다.The ‘frame’ dictionary contains information about each frame of the game and is related to the current game state. As the game progresses, the information received from the ‘frame’ dictionary, such as the coordinates of the robot and the ball, varies at each time step. Each time ‘update()’ is called, a new ‘frame’ variable is received with the updated data. For example, FRAME[‘coordinates’][MY_TEAM][GK][X] is the x coordinate of our team's goalkeeper. The coordinate value is obtained by sequential top-down expression from the frame to the x coordinate. MY_TEAM, GK, and X must be predefined. The information of the ‘frame’ dictionary is as shown in Table 4. Table 5 shows coordinate information.

변수variable 데이터 종류data type 설명explanation TimeTime floatfloat 현재 경기 시간 (단위: 초)Current match time (unit: seconds) ScoreScore list of ints (length 2)list of ints (length 2) 현재 점수 [자신 팀, 상대 팀]Current score [your team, opposing team] reset_reasonreset_reason intint 현재 프레임 직전 경기가 일시 정지된 이유.
이 값은 다음의 값들 중 하나이다:
NONE - 일시 정지되지 않음.
GAME_START - 경기 시작 직후, 킥오프로 경기 진행.
SCORE_MYTEAM - 자신 팀 득점, 킥오프로 경기 진행.
SCORE_OPPONENT - 상대 팀 득점, 킥오프로 경기 진행.
GAME_END - 경기 종료.
DEADLOCK - 공 재배치.
GOALKICK - 골 킥으로 경기 진행.
CORNERKICK - 코너 킥으로 경기 진행
PENALTYKICK - 페널티 킥으로 경기 진행
HALFTIME - 후반전 시작 직후, 킥오프로 경기 진행
EPISODE_END - 경기 종료 직후 (‘repeat’ 옵션이 켜져 있으면 GAME_END 로 대체).
The reason the game was paused just before the current frame.
This value is one of the following values:
NONE - No pause.
GAME_START - Immediately after the game starts, the game begins with kickoff.
SCORE_MYTEAM - Your team scores, and the game progresses with kickoff.
SCORE_OPPONENT - Opponent team scores, game progresses with kickoff.
GAME_END - End of game.
DEADLOCK - Ball relocation.
GOALKICK - Play is started with a goal kick.
CORNERKICK - Play begins with a corner kick.
PENALTYKICK - Play is played with a penalty kick.
HALFTIME - Immediately after the start of the second half, the game begins with kickoff.
EPISODE_END - Immediately after the game ends (replaced with GAME_END if 'repeat' option is on).
game_stategame_state intint 현재 경기 상태
이 값은 다음의 값들 중 하나이다:
STATE_DEFAULT - 기본
STATE_KICKOFF - 킥오프
STATE_GOALKICK - 골 킥
STATE_CORNERKICK - 코너 킥
STATE_PENALTYKICK - 페널티 킥
Current game status
This value is one of the following values:
STATE_DEFAULT - default
STATE_KICKOFF - kickoff
STATE_GOALKICK - Goal kick
STATE_CORNERKICK - corner kick
STATE_PENALTYKICK - penalty kick
ball_ownershipball_ownership BoolBool 킥오프, 코너 킥, 페널티 킥, 골 킥과 같은 상태에서 자신의 팀이 공을 소유하는지(True) 아닌지(False)를 나타내는 지표. 이 값은 기본 상태에서는 아무 의미가 없음.An indicator of whether your team has the ball (True) or not (False) in situations such as kickoff, corner kick, penalty kick, and goal kick. This value has no meaning in the default state. half_passedhalf_passed BoolBool 현재 경기의 전반전인지(False) 후반전인지(True)를 나타내는 지표Indicator indicating whether the current game is in the first half (False) or the second half (True) subimagessubimages list of itemslist of items 새 프레임을 얻으려면 이미지 파편을 이전 이미지 프레임과 병합해야 한다.
로봇과 공의 좌표가 주어지므로 중요하지 않음
To obtain a new frame, image fragments must be merged with the previous image frame.
Not important since the coordinates of the robot and the ball are given
coordinatescoordinates list of [my team coordinates list, opponent team coordinates list, ball coordinate
list]
list of [my team coordinates list, opponent team coordinates list, ball coordinates
list]
nested list. 현재 로봇들과 공의 위치
※ 세부 내용은 아래 표에 있음
nested list. Current positions of robots and ball
※ Details are in the table below
EOFEOF BoolBool 프레임의 끝을 의미하는 마커Marker indicating the end of the frame

‘my team coordinate list’/’opponent team coordinate list’의 정보Information on ‘my team coordinate list’/’opponent team coordinate list’ 번호number 데이터 종류data type 설명explanation 00 robot coordinate listrobot coordinate list GK 로봇의 좌표Coordinates of GK robot 1One robot coordinate listrobot coordinate list D1 로봇의 좌표Coordinates of D1 robot 22 robot coordinate listrobot coordinate list D2 로봇의 좌표Coordinates of D2 robot 33 robot coordinate listrobot coordinate list F1 로봇의 좌표Coordinates of F1 robot 44 robot coordinate listrobot coordinate list F2 로봇의 좌표Coordinates of F2 robot ‘robot coordinate list’의 정보Information from ‘robot coordinate list’ 번호number 데이터 종류data type 설명explanation 00 floatfloat 로봇의 x 좌표 (단위: m)Robot's x coordinate (unit: m) 1One floatfloat 로봇의 y 좌표 (단위: m)Robot's y coordinate (unit: m) 22 floatfloat 로봇의 z 좌표 (단위: m)Robot's z coordinate (unit: m) 33 floatfloat 로봇의 방향 (단위: rad)
※ [-π, π] 범위, 실제 값을 확인하여 원하는 범위로 변환할 수 있음.
Orientation of the robot (unit: rad)
※ [-π, π] range, you can check the actual value and convert it to the desired range.
44 BoolBool 로봇이 현재 움직일 수 있는지 여부를 나타내는 지표. 일부 로봇들은 킥오프, 코너 킥, 페널티 킥, 골 킥과 같은 특별한 상태에서 움직일 수 없음. 또한 퇴장되었을 때 움직일 수 없음.An indicator of whether the robot can currently move. Some robots cannot move in special states such as kick-off, corner kick, penalty kick, and goal kick. Also cannot move when ejected. 55 BoolBool 바로 전 프레임에서 로봇이 공과 접촉했는지 여부를 나타내는 지표.
좌표나 이미지를 통해 공과 로봇이 접촉하였는지 파악하기 어렵기 때문에 이 값을 제공함.
An indicator of whether the robot made contact with the ball in the previous frame.
This value is provided because it is difficult to determine whether the ball and the robot were in contact through coordinates or images.
66 BoolBool 바로 전 프레임에서 공이 로봇 앞 특정 범위에 들어왔는지 여부를 나타내는 지표. 이 지표를 공을 차는 기준으로 사용할 수 있음An indicator that indicates whether the ball entered a specific range in front of the robot in the previous frame. You can use this indicator as a basis for kicking the ball ‘ball coordinate list’의 정보Information on ‘ball coordinate list’ 번호number 데이터 종류data type 설명explanation 00 doubledouble 공의 x 좌표 (단위: m)x-coordinate of the ball (unit: m) 1One doubledouble 공의 y 좌표 (단위: m)Y coordinate of the ball (unit: m) 22 doubledouble 공의 z 좌표 (단위: m)z coordinate of the ball (unit: m)

로봇의 공 좌표, 방향 외에도 시뮬레이터에서 이미지를 제공할 수 있다. 도23의 상단 좌우에 도시된 바와 같이, 제공된 이미지는 640 x 480의 수정된 이미지인데 경기영상과 별개로 제공되어 이미지 기반의 로봇과 공의 인식이 가능하도록 하였다. 도23에 도시된 바와 같이, 게이머 코드에 전송된 이미지는 게임 프레임과 함께 표시된다. 검은색 배경은 경기장 바닥을, 주황색은 축구공을, 로봇은 특수 마커로 된 이미지가 제공된다. 왼쪽 상단 모서리의 이미지는 A 팀으로 전송되고 오른쪽 상단 모서리의 이미지는 B 팀으로 전송된다. 즉, 이미지를 사용하여 전략코드를 구현할 수도 있다. 이미지를 사용하여 전략 코드를 만들 수 있음에도 불구하고, 예제 코드는 게이머의 이해를 단수화 하기 위해 로봇과 볼의 좌표와 방향에 초점을 맞춰 진행된다. AI Soccer에 필요한 로봇과 공의 위치정보는 좌표값으로 제공되므로 이미지 데이터를 활용하여 알고리즘을 설계할 것이 아니라면, 게이머는 이미지 데이터를 사용할 필요가 없다.로봇은 아래 몸통 양 옆에 부착된 두 개의 바퀴로 움직일 수 있다. 또한 몸통 아래쪽과 앞쪽에 부착된 슬라이더를 이용하여 점프하거나 공을 찰 수 있다. 마지막으로 드리블 모드는 로봇이 드리블 기회를 가질 경우 활성화될 수 있다. 게이머 코드에서 바퀴, 슬라이더, 드리블 모드 제어는 각 시간 단계에서 ‘set_speeds()’를 호출하여 이루어진다. ‘set_speeds()’ 기능은 원하는 바퀴, 슬라이더, 드리블 속도 값을 시뮬레이터로 전송하기 위해 호출된다. 각 로봇은 6 개의 변수를 갖는다. 첫번째 변수는 로봇의 좌측 바퀴 속도와 관련이 있다. 두번째 변수는 로봇의 우측 바퀴 속도와 관련이 있다. 세번째와 네번째 변수는 각각 전면 슬라이더의 속도 및 높이와 관련이 있다. 다섯번째 변수는 하단 슬라이더 속도와 연관되어 있다. 여섯번째 변수는 드리블 모드와 관련이 있다. 표6 내지 표10은 로봇 제어 변수들을 나타낸다. 표6 내지 표10은 각각의 로봇에 필요한 6가지 제어 변수를 보여준다. 표6 내지 표10에서, GK는 골키퍼, D1은 수비수 1, D2는 수비수 2, F1은 공격수 1, F2는 공격수 2를 의미한다.In addition to the robot's ball coordinates and direction, the simulator can provide images. As shown on the top left and right of Figure 23, the provided image is a modified image of 640 x 480 and is provided separately from the game video to enable image-based robot and ball recognition. As shown in Figure 23, the image sent to the gamer code is displayed along with the game frame. The black background shows the stadium floor, the orange shows the soccer ball, and the robot shows an image with a special marker. The image in the upper left corner is sent to team A, and the image in the upper right corner is sent to team B. In other words, strategy code can be implemented using images. Although images can be used to create strategy code, the example code focuses on the coordinates and directions of the robot and ball to simplify the gamer's understanding. The location information of the robot and ball required for AI Soccer is provided as coordinate values, so unless the algorithm is designed using image data, gamers do not need to use image data. The robot has two wheels attached to both sides of the lower body. It can be moved with You can also jump or kick a ball using the sliders attached to the bottom and front of the body. Lastly, dribbling mode can be activated when the robot has the opportunity to dribble. In gamer code, wheel, slider, and dribble mode control is achieved by calling ‘set_speeds()’ at each time step. The ‘set_speeds()’ function is called to transmit the desired wheel, slider, and dribble speed values to the simulator. Each robot has 6 variables. The first variable is related to the speed of the robot's left wheel. The second variable is related to the speed of the robot's right wheel. The third and fourth variables are related to the speed and height of the front slider, respectively. The fifth variable is related to the bottom slider speed. The sixth variable is related to dribbling mode. Tables 6 to 10 show robot control variables. Tables 6 to 10 show the six control variables required for each robot. In Tables 6 to 10, GK means goalkeeper, D1 means defender 1, D2 means defender 2, F1 means attacker 1, and F2 means attacker 2.

[0][0] [1][One] [2][2] [3][3] [4][4] [5][5] 데이터 종류data type floatfloat floatfloat floatfloat floatfloat floatfloat floatfloat 설명explanation GK, 왼쪽 바퀴 속도GK, left wheel speed GK, 오른쪽 바퀴 속도GK, right wheel speed GK, 전면 슬라이더 속도GK, front slider speed GK, 전면 슬라이더 높이GK, front slider height GK, 하단 슬라이더 속도GK, bottom slider speed GK, 드리블 모드 전환GK, switch to dribbling mode

[6][6] [7][7] [8][8] [9][9] [10][10] [11][11] 데이터 종류data type floatfloat floatfloat floatfloat floatfloat floatfloat floatfloat 설명explanation D1, 왼쪽 바퀴 속도D1, left wheel speed D1, 오른쪽 바퀴 속도D1, right wheel speed D1, 전면 슬라이더
속도
D1, front slider
speed
D1, 전면 슬라이더
높이
D1, front slider
height
D1, 하단 슬라이더
속도
D1, bottom slider
speed
D1, 드리블 모드 전환D1, dribbling mode switch

[12][12] [13][13] [14][14] [15][15] [16][16] [17][17] 데이터 종류data type floatfloat floatfloat floatfloat floatfloat floatfloat floatfloat 설명explanation D2, 왼쪽 바퀴 속도D2, left wheel speed D2, 오른쪽 바퀴 속도D2, right wheel speed D2, 전면 슬라이더
속도
D2, front slider
speed
D2, 전면 슬라이더
높이
D2, front slider
height
D2, 하단 슬라이더
속도
D2, bottom slider
speed
D2, 드리블 모드 전환D2, dribbling mode switch

[18][18] [9][9] [20][20] [21][21] [22][22] [23][23] 데이터 종류data type floatfloat floatfloat floatfloat floatfloat floatfloat floatfloat 설명explanation F1, 왼쪽 바퀴 속도F1, left wheel speed F1, 오른쪽 바퀴 속도F1, right wheel speed F1, 전면 슬라이더 속도F1, front slider speed F1, 전면 슬라이더 높이F1, front slider height F1, 하단 슬라이더 속도F1, bottom slider speed F1, 드리블 모드 전환F1, dribble mode switch

[24][24] [25][25] [26][26] [27][27] [28][28] [29][29] 데이터 종류data type floatfloat floatfloat floatfloat floatfloat floatfloat floatfloat 설명explanation F2, 왼쪽 바퀴 속도F2, left wheel speed F2, 오른쪽 바퀴 속도F2, right wheel speed F2, 전면 슬라이더 속도F2, front slider speed F2, 전면 슬라이더 높이F2, front slider height F2, 하단 슬라이더 속도F2, bottom slider speed F2, 드리블 모드 전환F2, toggle dribbling mode

표6 내지 표10을 예를 들어 설명하면, [24]과 [25]의 값을 바꾸면, F2가 움직이게 만들 수 있다. 이때, [24]와 [25]의 값은 각각 왼쪽 바퀴와 오른쪽 바퀴의 값을 변경한다. 두 값이 양수이고 크기가 같다면 로봇은 일정한 속도로 전진한다. 두 값이 모두 음수이고 크기가 같다면 로봇은 일정한 속도로 후진한다. 같은 절댓값의 숫자를 한쪽에는 음수값을 사용하고 다른 쪽에는 양수값을 사용한다면 로봇의 제자리 회전을 구현하여 각도 조절을 할 수 있다. [26]과 [27]의 값을 바꾸면, 슛의 세기와 높이를 각각 조절할 수 있다. 앞에서 슛은 크로스, 킥, 패스로 구성된다고 설명하였다. 도25의 두번째 그림에서 로봇 발 쪽에 있는 빨간색이 전면 슬라이더가 위치하는 부분이다. [28]의 값을 바꾸면 F2가 하단 슬라이더를 움직여 점프를 한다. 속도값들이 시뮬레이터에 보내지면, 시뮬레이터는 다음 중 하나가 발생할 때까지 동일한 속도들을 유지한다.(1) 게이머 코드가 새로운 속도들을 전송하였을 때. 이 경우 속도는 그에 따라 갱신된다.Taking Tables 6 to 10 as an example, by changing the values of [24] and [25], F2 can be made to move. At this time, the values of [24] and [25] change the values of the left wheel and right wheel, respectively. If the two values are positive and have the same size, the robot moves forward at a constant speed. If both values are negative and the magnitudes are the same, the robot moves backwards at a constant speed. If you use a negative number on one side and a positive number on the other side of the same absolute value number, you can control the angle by implementing rotation of the robot in place. By changing the values of [26] and [27], you can adjust the strength and height of the shot, respectively. It was explained earlier that a shot consists of a cross, kick, and pass. In the second picture of Figure 25, the red color on the robot's foot is where the front slider is located. If you change the value of [28], F2 jumps by moving the bottom slider. Once speed values are sent to the simulator, the simulator maintains the same speeds until one of the following occurs: (1) When the gamer code sends new speeds. In this case, the speed is updated accordingly.

(2) 경기가 킥오프, 코너킥, 페널티 킥, 골 킥과 같은 특수 상태로 들어간 경우, 모든 로봇의 속도는 0으로 설정된다. 그 다음 상태가 시작되면 그 상태에서 움직일 수 있는 로봇의 속도를 다시 업데이트할 수 있다. 그 상태가 끝나면 그 상태에서 움직일 수 없었던 로봇의 속도를 다시 갱신할 수 있다.(2) When the game enters a special state such as kick-off, corner kick, penalty kick, or goal kick, the speed of all robots is set to 0. Then, when the state starts, the speed of the robot that can move in that state can be updated again. When that state is over, the speed of the robot that was unable to move in that state can be updated again.

(3) 로봇이 퇴장한 경우. 로봇의 속도는 0으로 설정된다. 로봇이 경기장으로 복귀하면 속도의 갱신이 가능하다.(3) When the robot leaves. The robot's speed is set to 0. When the robot returns to the playing field, its speed can be updated.

게이머 코드에서 슬라이더의 속도에 0~10의 값을 줄 수 있는데 슬라이더들이 계속 나와있는 상황을 방지하기 위하여 시뮬레이터 프로그램에서 슬라이더의 속도가 한번 0 이상이 되면 일정 시간 후 0으로 되돌리고 1초 동안은 계속 0을 유지한다. 전면 슬라이더의 높이도 0~10의 값을 줄 수 있는데 높이 조절의 효과가 현재 프레임(50ms의 시간 단계)에서 바로 나타나지 않아서 높이 조절은 미리 해 두는 것을 권장한다. 상대 쪽 페널티 지역에서는 전면 슬라이더가 비활성화된다. 골키퍼만 패널티 구역에서 높이 찰 수 있다. 슬라이더는 경기 장면에 보이지 않지만 시뮬레이터는 슬라이더 위치를 인식하여 슬라이더가 공과 접촉할 경우 물리적 법칙에 의해 공이 움직이게 된다.In the gamer code, you can give the slider speed a value of 0 to 10. To prevent the situation where the sliders stay on, in the simulator program, once the slider speed is above 0, it returns to 0 after a certain period of time and remains at 0 for 1 second. maintain. The height of the front slider can also be set to a value between 0 and 10, but the effect of height adjustment does not appear immediately in the current frame (time step of 50ms), so it is recommended to adjust the height in advance. The front slider is disabled in the opponent's penalty area. Only goalkeepers can kick high in the penalty area. The slider is not visible in the game scene, but the simulator recognizes the slider's position, and when the slider contacts the ball, the ball moves according to physical laws.

블록 코딩은 특별한 소프트웨어 프로그래밍 기술이 없는 초급자를 위한 것이다. 블록 코딩에 의한 AI 축구 코드 생성기(generator)는 AI 축구의 규칙 기반과 딥러닝 기반 코드를 만들기 위한 웹 기반 프레임워크이다. 도25는 웹-베이스 AI 축구 코드 생성기를 예시한다. 코딩에 익숙하지 않고 로봇축구에 대해 배우기 시작하는 사람이 기본 전략을 쉽게 만들 수 있도록 만들어져 있다. AI 축구를 설계할 때 중요한 기능을 블록단위로 간략화 한 것이 블록 코딩이다. 규칙 기반 시스템은 구글 블록클리 (Google Blockly)를 기반으로 하여 구현된 프로그래밍 편집기이다. 딥러닝 시스템은 하나 또는 여러 개의 로봇이 게이머가 원하는 전략을 수행할 수 있도록 훈련할 수 있는 여러 종류의 강화 학습 알고리즘을 제공한다. AI 축구 코드 생성기를 사용하려면 도25에 도시된 바와 같이 규칙기반 코드 생성 또는 딥러닝 기반 코드 생성 메뉴 중에서 한가지를 선택한다. 추천하는 인터넷 브라우저는 구글 크롬이다.Block coding is for beginners without any special software programming skills. The AI soccer code generator using block coding is a web-based framework for creating rule-based and deep learning-based codes for AI soccer. Figure 25 illustrates a web-based AI soccer code generator. It is designed so that people who are not familiar with coding and are just starting to learn about robot soccer can easily create basic strategies. Block coding is a simplification of important functions into blocks when designing AI soccer. The rule-based system is a programming editor implemented based on Google Blockly. Deep learning systems provide several types of reinforcement learning algorithms that can train one or multiple robots to execute the gamer's desired strategy. To use the AI soccer code generator, select one of the rule-based code generation or deep learning-based code generation menu as shown in Figure 25. The recommended internet browser is Google Chrome.

도26은 규칙 기반 AI 축구 코드 생성기를 예시한다. 규칙 기반 전략에서는 5대의 로봇 각각에 대해 각 시간 단계에 적절한 행동을 하도록 할당해야 한다. 블록코딩의 경우 축구선수의 역할에 따라 GK, D1, D2, F1, F2 등 총 5대 로봇의 전략을 구현할 수 있는 탭으로 구성되었다. 블록코딩 시스템은 게임 환경변수와 기능을 나타내는 블록을 제공한다. 로봇을 제어하는데 사용되는 6 가지 변수(왼쪽 바퀴 속도, 오른쪽 바퀴 속도, 전면 슬라이더 속도, 전면 슬라이더 높이, 하단 슬라이더 속도, 드리블 모드)가 정의되어 있다. 로봇의 왼쪽 바퀴와 오른쪽 바퀴는 로봇이 이동해야 할 위치를 나타내는 ‘Robot X’와 ‘Robot Y’ 변수를 기준으로 정의된다. 전면 슬라이더의 속도와 높이는 킥, 크로스, 또는 퀵 패스 동작으로 정의된다. 하단 슬라이더는 점프 변수에 의해 정의된다. 드리블 모드는 드리블 변수를 사용하여 활성화된다. 사용자는 현재 필드의 상태에 따라 각 시간 단계에서 로봇별로 5개의 동작과 관련된 변수를 정의해야 한다.Figure 26 illustrates a rule-based AI soccer code generator. In a rule-based strategy, each of the five robots must be assigned an appropriate action at each time step. In the case of block coding, it consists of tabs that can implement the strategies of a total of five robots, including GK, D1, D2, F1, and F2, depending on the role of the soccer player. The block coding system provides blocks that represent game environment variables and functions. Six variables (left wheel speed, right wheel speed, front slider speed, front slider height, bottom slider speed, and dribble mode) used to control the robot are defined. The left and right wheels of the robot are defined based on the ‘Robot X’ and ‘Robot Y’ variables that indicate where the robot should move. The speed and height of the front slider is defined as a kick, cross, or quick pass movement. The bottom slider is defined by the jump variable. Dribble mode is activated using the dribble variable. The user must define five motion-related variables for each robot at each time step, depending on the current state of the field.

- 로봇의 X 위치 (필수): 로봇이 X 축에서 이동해야 하는 목적지- X position of the robot (required): Destination the robot should move to on the X axis.

- 로봇의 Y 위치 (필수): 로봇이 Y 축에서 이동해야 하는 목적지- Y position of the robot (required): Destination the robot should move to on the Y axis.

- 로봇의 슛, 크로스, 패스 변수(선택사항): 로봇이 현재 시간 단계에서 슛을 하거나, 공을 띄워 차거나, 패스를 하는지 여부를 결정한다. 슛을 하려면 “shoot” 변수를 True 로 설정한다. 크로스를 하려면 “cross” 변수를 True 로 설정한다. 패스를 하고 싶다면, “quickpass” 변수를 True 로 설정한다.- Robot's Shoot, Cross, Pass variable (optional): Determines whether the robot shoots, kicks, or passes the ball at the current time step. To shoot, set the “shoot” variable to True. To cross, set the “cross” variable to True. If you want to pass, set the “quickpass” variable to True.

- 로봇의 점프 변수(선택사항): 로봇이 현재 시간 단계에서의 점프 시도 여부- Robot's jump variable (optional): Whether the robot will attempt a jump in the current time step.

- 로봇의 드리블(선택사항): 로봇이 현재 시간 단계에서의 드리블 시도 여부- Robot dribbling (optional): Whether the robot will attempt dribbling at the current time step.

도27에 도시된 바와 같이, 블록 카테고리는 시스템의 좌하단에 표시된다. ‘Environment’ 카테고리는 로봇 축구 경기와 관련된 변수 및 기능을 정의할 수 있다. 다른 카테고리는 논리 블록, 루프, 연산, 변수 및 특수 함수를 생성하기 위한 옵션과 같은 프로그래밍 언어 블록으로 구성된다.As shown in Figure 27, block categories are displayed at the bottom left of the system. The ‘Environment’ category can define variables and functions related to robot soccer games. Another category consists of programming language blocks such as logic blocks, loops, operations, variables and options for creating special functions.

도28에 도시된 바와 같이, ‘Environment indices’항목에는 게임 상태(game state)와 게임 리셋 이유(reset_reason)를 포함한다. 각각의 시간 단계마다 받는 ‘frame’ 딕셔너리도 포함된다.As shown in Figure 28, the ‘Environment indices’ item includes game state and game reset reason (reset_reason). A ‘frame’ dictionary is also included for each time step.

도29에 도시된 바와 같이, ‘Environment Constants’는 AI 축구 게임 초기화(init()) 중 받은 상수를 포함한다. Init()함수는 경기장의 크기와 로봇의 사양과 관련이 있다.As shown in Figure 29, ‘Environment Constants’ includes constants received during AI soccer game initialization (init()). The Init() function is related to the size of the stadium and the specifications of the robot.

도30에 도시된 바와 같이, ‘Environment Variabales’는 AI 축구 경기를 위한 동적 변수를 포함한다. 여기에는 현재 시간 공의 위치, 미래에 예상되는(2 프레임후에 예상되는) 공의 위치, 그리고 자기팀과 상대팀 로봇들의 현재 위치도 포함된다. 또한 50ms 간격으로 update() 호출을 통해 ‘frame’ 딕셔너리에서 받는 정보와 관련된다.As shown in Figure 30, ‘Environment Variabales’ contains dynamic variables for AI soccer games. This includes the current position of the ball, the expected position of the ball in the future (expected two frames later), and the current positions of the own and opposing team's robots. It is also related to information received from the ‘frame’ dictionary through update() calls at 50ms intervals.

도31에 도시된 바와 같이, ‘Environment Functions’는 전략 구축에 필요한 기능을 포함한다.As shown in Figure 31, ‘Environment Functions’ includes the functions necessary to build a strategy.

- Distance: 두 점사이의 거리 계산- Distance: Calculate the distance between two points

- Degree in radians: 라디안을 도로 변환- Degree in radians: Convert radians to degrees

- Radians in degrees: 도를 라디안으로 변환- Radians in degrees: Convert degrees to radians

- ball_is_own: 공이 내 팀의 소유인 경우, 공이 내 구역에 있는 경우, 공이 내 페널티 구역에 있는 경우, 또는 공이 내 필드의 특정 구역에 있는 경우 True 혹은 False를 return(반환)한다.- ball_is_own: Returns True or False if the ball belongs to my team, if the ball is in my zone, if the ball is in my penalty zone, or if the ball is in a specific zone of my field.

- ball_is_opp: 공이 상대 팀의 소유인 경우, 공이 상대 구역에 있는 경우, 공이 상대 페널티 구역에 있는 경우, 또는 공이 상대방 필드의 특정 구역에 있는 경우 True 혹은 False를 반환한다.- ball_is_opp: Returns True or False if the ball is owned by the opposing team, if the ball is in the opponent's zone, if the ball is in the opponent's penalty zone, or if the ball is in a specific area of the opponent's field.

- Get attack angle: 공의 위치와 상대 골 사이의 각도를 계산한다.- Get attack angle: Calculate the angle between the ball's position and the opponent's goal.

- Get defense angle: 공의 위치와 우리 팀의 골 사이의 각도를 계산한다.- Get defense angle: Calculate the angle between the ball's location and our team's goal.

- Print: 디버깅을 위해 Webots 시뮬레이터 콘솔에 메시지를 인쇄한다.- Print: Prints messages to the Webots simulator console for debugging.

전략의 강화를 위해 사용되어지는 Python 프로그래밍 언어는 다음과 같다. Logic 카테고리는 if-else(or if-elif-else) statement, comparison statement, and/or statement, not statement, 그리고 boolean statement를 포함한다. Loops 카테고리 loop 와 while loop를 포함한다. Math 카테고리는 산술, 연산(+, -, ×, ÷, ^), 수학함수 (제곱근, 절대, 지수, 로그, 삼각함수, 역삼각함수), 그리고 다른 수학 블록들을 포함한다. Lists 카테고리는 list 생성을 위한 블록이 포함되며, list 연산을 위한 블록도 포함된다. Variables 카테고리는 자신의 변수를 정의하기 위해 응용된다. 게이머는 새로운 변수를 정의하거나 원하는 대로 설정하거나 변경할 수 있다. Functions 카테고리는 자신의 함수를 정의하기 위해 응용된다. 새로운 함수를 정의하고 자신의 전략에 응용할 수 있다.The Python programming language used to strengthen the strategy is as follows. The Logic category includes if-else(or if-elif-else) statement, comparison statement, and/or statement, not statement, and boolean statement. The Loops category includes loop and while loop. The Math category includes arithmetic, operations (+, -, The Lists category includes blocks for list creation and also includes blocks for list operations. The Variables category is used to define your own variables. Gamers can define new variables, set them or change them as desired. The Functions category is used to define your own functions. You can define new functions and apply them to your own strategies.

도32에 도시된 바와 같이, 예제 코드는 변수 ‘kick’ 과 ‘jump’를 False 로 세팅하는 것으로 시작한다. 로봇들이 특정한 상황에서 킥이나 점프, 코드를 변수 ‘kick’ 과 ‘jump’를 False 로 세팅하는 것으로 시작한다. 그리고 나서, 로봇은 게임에서 4 가지 다른 상황에 대한 규칙을 가지게 된다.As shown in Figure 32, the example code begins by setting the variables ‘kick’ and ‘jump’ to False. The robots kick or jump in a specific situation, and the code starts by setting the variables ‘kick’ and ‘jump’ to False. Then, the robot has rules for four different situations in the game.

1. 만약 공이 자기팀의 페널티 영역에 있을 때 로봇은 다른 로봇이 행동을 취할 때까지 경기장의 좌표(-0.5, -1)에서 대기한다.1. If the ball is in his team's penalty area, the robot waits at the stadium coordinates (-0.5, -1) until the other robot takes action.

2. 만약 공이 자신의 진영, 페널티 영역을 제외한 지역에 있을 시, 로봇은 공을 쫓기 위한 행동을 취하고, 공을 현재 위치에서 다른 곳으로 옮기는 행동을 시도한다.2. If the ball is in an area other than its own half or penalty area, the robot takes action to chase the ball and attempts to move the ball from its current location to another location.

3. 만약 공이 상대방 진영에 있을 시, 로봇은 공을 쫓기 위한 행동을 한다. 만약 BALL_POSSESSION(공 소유는 로봇이 공 가까이에 있고 성공적으로 킥 될 확률이 높다는 의미를 가지고 있다.)을 가지고 있다면 킥 모션을 시도한다. 규칙 기반 블록 코딩을 위해 다음 4 가지 상위레벨의 행동이 정의되어 있다.3. If the ball is in the opponent's camp, the robot takes action to chase the ball. If it has BALL_POSSESSION (ball possession means the robot is close to the ball and has a high probability of successfully kicking it), it attempts a kick motion. The following four high-level behaviors are defined for rule-based block coding.

1. ‘Kick’: True 로 설정하면 낮은 킥 동작을 수행.1. ‘Kick’: If set to True, perform a low kick motion.

2. ‘Cross’: True 로 설정된 경우 공을 뜨게 하는 높은 킥 동작을 수행2. ‘Cross’: If set to True, performs a high kick movement that makes the ball float.

3. ‘quickpass’: True 로 설정된 경우 패스 수행3. ‘quickpass’: Perform pass if set to True

4. ‘jump’: True 로 설정하면 점프 수행4. ‘jump’: If set to True, jump is performed.

게이머 코드에서 이러한 동작들을 사용하는 방법이 도33에 도시되어 있다.How to use these operations in gamer code is shown in Figure 33.

생성된 코드를 사용하는 경우, 도34에 도시된 바와 같이, 화면 하단의 ‘Generate Code’를 클릭하면 압축파일 ‘mystrategy.zip’이 다운될 것이다. 아카이브를 추출한 다음 시뮬레이터의 예제 폴더(또는 이전 전략을 구현한 폴더)로 이동한다. config.json 파일에서 team_a 또는 team_b 를 “executable” 로 변경한 다음 규칙 기반 “config/my strategy/main.py 또는 deep learning 기반 “examples/ mystrategy/train.py”를 바꾼다.When using the generated code, as shown in Figure 34, clicking 'Generate Code' at the bottom of the screen will download the compressed file 'mystrategy.zip'. After extracting the archive, navigate to the simulator's examples folder (or the folder where you implemented the previous strategy). In the config.json file, change team_a or team_b to “executable” and then change rule-based “config/my strategy/main.py” or deep learning-based “examples/mystrategy/train.py”.

로봇과 공의 위치 및 방향 값은 경기 시작 전 제공된다. 도35에 도시된 바와 같이, 모든 좌표는 데카르트 좌표계를 따라 m 단위로 표시된다. 방향 각도는 우측을 향할 때 0이고 시계반대 방향으로 라디안으로 표시된다. 모든 좌표 단위는 미터이고 방향을 나타내는 각도는 -π에서 π의 라디안으로 표현한다. 도35의 왼쪽 부분에서 보인 바와 같이 로봇의 방향은 로봇이 주시하는 화살표 방향으로 정의한다. 왼쪽 로봇은 90° 혹은 π/2 라디안 방향을 주시하고 있고, 오른쪽 로봇은 0° 혹은 0 라디안 방향을 주시하고 있다. 도36은 경기장의 필드 구역 명칭을 예시한다. AI 축구는 각 팀이 골키퍼 1 명, 수비수 2 명, 공격수 2 명으로 구성되는 5:5 로봇 축구 게임이며 A 팀은 빨간색 로봇으로 처음에 경기장 왼쪽에 위치하고 B 팀은 파란색 로봇으로 처음에 경기장 오른쪽에 위치한다. 경기는 전후반 각 5분으로 진행되고 전반전은 A 팀의 킥오프부터 시작된다. 후반전이 시작되면 A 팀이 오른쪽에, B 팀이 왼쪽에 있도록 위치가 바뀐다. 후반전은 B 팀의 킥오프부터 시작되는 방식이다. 골은 공의 중심이 골대를 통과할 때 발생하고 점수는 이에 따라 증가한다. 골이 들어간 후 로봇과 공의 포지션이 초기화되며 실점한 팀이 킥오프로 경기를 재개한다. 플레이어가 구현한 알고리즘으로 움직이는 로봇들은 공에 쉽게 접근하지 못하고 방황하는 형태를 보일 수 있다. 경기장에 있는 10명의 로봇 플레이어가 모두 공에 다가가지 못하는 경우를 교착상태라 한다. 즉, 경기장에 아무런 변화도 일어나지 않는 상태를 의미한다. 또한, AI 축구 경기장은 일반 경기장과는 달리 단단한 벽으로 둘러싸여 있기 때문에 로봇들은 공을 벽 쪽으로 밀 수 있으며 같은 시도를 하는 여러 로봇으로 인하여 공을 벽과 로봇들 사이에 끼는 상황이 연출될 수 있어 이런 상황으로 교착상태를 야기할 수 있다. 이러한 교착 상태를 방지하기 위하여, 시뮬레이터 프로그램은 교착 상태를 감지하도록 구성되어 있다. 참가자는 교착상태 규칙을 숙지하고 프로그래밍 하여야 한다. AI 축구에서 축구공이 4초간 0.4m/s 미만의 느린 속도로 것을 교착상태로 정의한다. 교착상태가 발생한 각 지역에 따라 교착상태를 다르게 처리한다. 4개의 코너 지역중 하나에서 교착상태가 발생하면, 코너 킥으로 경기를 재개한다. 코너 킥의 공 소유권은 다음과 같이 정한다. 코너 지역에 팀의 로봇 수가 많은 경우, 해당 팀이 공의 소유권을 가진다. 양 팀의 로봇 수가 동일한 경우, 공까지의 평균거리를 계산하고 평균거리가 작은 팀이 공의 소유권을 가진다. 평균거리도 같은 경우, 그 지역 반대쪽 골대의 팀이 공의 소유권을 가진다. 2 개의 페널티 지역 중 하나에서 교착상태가 발생하면 페널티 킥이나 골 킥으로 경기를 재개한다. 페널티 킥 또는 골 킥의 공 소유권은 다음과 같이 정한다. 해당 페널티 지역에 팀의 로봇 수가 많은 경우, 해당 팀이 공의 소유권을 가진다. 양 팀의 로봇 수가 동일한 경우, 공까지의 평균거리를 계산하고 평균거리가 짧은 팀이 공의 소유권을 가진다. 평균거리가 같은 경우, 그 지역 반대쪽 골대의 팀이 소유권을 가진다. 그 지역 반대쪽 골대 팀이 공 소유권을 가지면 경기는 페널티 킥으로, 그렇지 않으면 골 킥으로 진행한다. 코너 지역이나 페널티 지역이 아닌 곳에서 교착상태가 발생하면 중앙 위치에 공을 재배치하여 경기를 재개한다. AI 축구는 단순화를 위하여 페널티지역에서만 반칙을 적용한다. 이 지역 내부에 있을 수 있는 로봇 수를 제한하고, 해당 규칙은 수비팀이 골문을 완전히 봉쇄하거나 공격팀이 여러 로봇에 의하여 골문까지 공을 밀어 넣는 것을 막기 위한 것이다. 그리고 상대방 페널티 지역에 있을 수 있는 시간도 제한된다. 이 규칙은 수비팀이 공격 팀 골키퍼를 밀어내는 상황을 막기 위한 것이다. 수비팀의 반칙 관련, 공이 페널티 지역에 있는 경우, 수비팀의 로봇은 3개만 그 페널티 지역에 있을 수 있다. 4 개 이상의 로봇이 그 지역에 있다면 공격팀의 페널티 킥으로 경기를 재개한다. 공격팀의 반칙 관련, 공이 페널티 지역에 있는 경우, 공격팀의 로봇은 2개만 그 페널티 지역에 있을 수 있다. 3개 이상의 로봇이 그 지역에 있다면 수비팀의 골 킥으로 경기를 재개한다. 로봇은 상대팀의 페널티 지역에 1초만 있을 수 있다. 1초 이상 있는 경우 그 로봇의 기본 위치로 복귀한다. 그리고 GK는 페널티 지역밖에 1초만 있을 수 있다. 1초이상 있는 경우 GK 기본 위치로 복귀한다. 축구공이 골대 위 옆을 통해 경기장을 밖으로 나갈 수 있다. 공이 밖으로 나가면 경기는 골 킥이나 코너 킥으로 재개한다. 코너 킥이나 골 킥의 공 소유권은 다음과 같이 결정된다. 공이 나가기 전에 마지막으로 공을 터치한 로봇의 수가 적은 팀이 소유권을 가진다(2개 이상의 로봇이 마지막 터치를 하는 경우가 가끔 있음). 로봇의 수가 같은 경우, 그 골대 쪽 팀이 공의 소유권을 가진다. 그 골대 쪽 팀이 공 소유권을 가진다면 경기는 골 킥으로, 그렇지 않으면 코너 킥으로 진행된다. 킥오프는 경기 시작과 한 팀이 골을 넣은 후에 발생한다. 킥오프에서 공 소유권을 가진 팀의 F2 로봇이 공을 차는 것으로 경기가 시작된다. 킥오프 동안 소유권을 가진 팀의 F2 로봇을 제외한 다른 로봇은 다음 중 하나가 발생할 때까지 움직일 수 없다. 공이 센터서클을 벗어난 경우 및 공이 3초 동안 센터서클을 벗어나지 못한 경우. 도37은 킥오프 포메이션(공 소유팀: A)을 예시하며 표11은 킥오프의 위치 및 방향을 예시한다. 팀 B 가 공 소유권을 갖는 경우, 위치와 방향은 π만큼 회전되고 두 팀의 역할이 바뀐다.The position and direction values of the robot and ball are provided before the game starts. As shown in Figure 35, all coordinates are expressed in units of m along the Cartesian coordinate system. The direction angle is 0 when facing right and is expressed in radians counterclockwise. All coordinate units are meters, and directional angles are expressed in radians from -π to π. As shown in the left part of Figure 35, the direction of the robot is defined by the direction of the arrow that the robot is looking at. The left robot is looking in the 90° or π/2 radian direction, and the right robot is looking in the 0° or 0 radian direction. Figure 36 illustrates field section names of the stadium. AI Soccer is a 5:5 robot soccer game where each team consists of 1 goalkeeper, 2 defenders and 2 attackers, with Team A being a red robot initially positioned on the left side of the pitch and Team B being a blue robot initially positioned on the right side of the pitch. Located. The game lasts 5 minutes each in two halves, and the first half begins with Team A's kickoff. When the second half begins, the positions are switched so that Team A is on the right and Team B is on the left. The second half begins with team B's kickoff. A goal occurs when the center of the ball passes through the goalpost and the score increases accordingly. After a goal is scored, the positions of the robot and the ball are reset, and the game resumes with a kickoff for the team that conceded the goal. Robots that operate using algorithms implemented by players may not be able to easily approach the ball and may wander. If all 10 robot players on the field cannot reach the ball, it is called a stalemate. In other words, it means a state in which no changes occur in the stadium. Additionally, unlike regular stadiums, AI soccer stadiums are surrounded by solid walls, so robots can push the ball toward the wall, and multiple robots making the same attempt can create a situation where the ball gets caught between the wall and the robots. The situation can lead to a deadlock. To prevent such deadlocks, the simulator program is configured to detect deadlocks. Participants must understand and program deadlock rules. In AI soccer, a stalemate is defined as a soccer ball moving at a slow speed of less than 0.4 m/s for 4 seconds. Deadlocks are handled differently depending on the region where the deadlock occurs. If a stalemate occurs in one of the four corner areas, the game is restarted with a corner kick. Ball possession for corner kicks is determined as follows: If a team has a large number of robots in the corner area, that team has possession of the ball. If both teams have the same number of robots, the average distance to the ball is calculated, and the team with the smaller average distance has ownership of the ball. If the average distance is the same, the team on the opposite side of the area has possession of the ball. If a deadlock occurs in one of the two penalty areas, the game is restarted with a penalty kick or goal kick. Ball possession for a penalty kick or goal kick is determined as follows: If a team has a large number of robots in the penalty area, that team takes possession of the ball. If both teams have the same number of robots, the average distance to the ball is calculated, and the team with the shorter average distance takes ownership of the ball. If the average distances are the same, the team on the opposite side of the area has possession. If the team opposite the goal in the area has possession of the ball, the game is played as a penalty kick, otherwise, as a goal kick. If a deadlock occurs outside of a corner or penalty area, the game is restarted with the ball relocated to a central location. For simplicity, AI soccer applies fouls only in the penalty area. Limiting the number of robots that can be inside this area, this rule is intended to prevent the defending team from completely blocking the goal or the attacking team from having multiple robots push the ball into the goal. Also, the time a player can be in the opponent's penalty area is limited. This rule is intended to prevent situations where the defending team pushes the attacking team's goalkeeper. Regarding a foul by the defending team, if the ball is in the penalty area, only three robots of the defending team can be in the penalty area. If more than 4 robots are in the area, the game is restarted with a penalty kick for the attacking team. Regarding a foul by the attacking team, if the ball is in the penalty area, only two robots of the attacking team can be in the penalty area. If three or more robots are in the area, the game is restarted with a goal kick by the defending team. The robot can only be in the opposing team's penalty area for one second. If there is more than 1 second, the robot returns to its default position. And the GK can only be outside the penalty area for one second. If there is more than 1 second, the GK returns to the default position. The soccer ball can leave the field through the side of the top of the goal. If the ball goes out, the game is restarted with a goal kick or corner kick. Possession of the ball for a corner kick or goal kick is determined as follows: The team with the fewest robots to touch the ball last before it goes out takes possession (sometimes more than one robot makes the last touch). If the number of robots is the same, the team on that side of the goal has possession of the ball. If the team on that side of the goal has possession of the ball, the game is played with a goal kick, otherwise it is played with a corner kick. Kickoff occurs at the start of the game and after a team has scored a goal. The game begins with the F2 robot of the team that has possession of the ball kicking the ball at the kickoff. During kickoff, no robot other than the F2 robot of the team in possession may move until one of the following occurs: If the ball leaves the center circle or if the ball does not leave the center circle for 3 seconds. Figure 37 illustrates the kickoff formation (ball possession team: A) and Table 11 illustrates the location and direction of the kickoff. When Team B has possession of the ball, the position and direction are rotated by π and the roles of the two teams are swapped.

A 팀A team B 팀B team GKG.K. (-3.8, 0.0)(-3.8, 0.0) π/2π/2 (3.8, 0.0)(3.8, 0.0) -π/2-π/2 D1D1 (-2.25, 1.0)(-2.25, 1.0) 00 (2.25, -1.0)(2.25, -1.0) ππ D2D2 (-2.25, -1.0)(-2.25, -1.0) 00 (2.25, 1.0)(2.25, 1.0) ππ F1F1 (-0.9, 0)(-0.9, 0) 00 (0.65, -0.3)(0.65, -0.3) ππ F2F2 (0.4, 0)(0.4, 0) ππ (0.65, 0.3)(0.65, 0.3) ππ 축구공soccer ball (0, 0)(0, 0)

코너 킥은 코너 지역에서의 교착상태나 공 아웃 후에 발생하며, 코너 킥에서 공 소유권을 가진 팀의 F2 로봇이 공을 차는 것으로 경기가 시작된다. 코너 킥 동안 소유권을 가진 팀의 F2 로봇을 제외한 다른 로봇은 다음 중 하나가 발생할 때까지 움직일 수 없다.- 공 소유권을 가진 팀의 F2 로봇이 공을 찬 경우A corner kick occurs after a stalemate or ball out in the corner area, and the game begins with the F2 robot of the team that has possession of the corner kicking the ball. During a corner kick, no robot other than the F2 robot of the team in possession may move until one of the following occurs: - The F2 robot of the team in possession kicks the ball.

- 3초동안 공을 차지 못한 경우- If the ball is not kicked for 3 seconds

코너 킥이 발생한 위치와 어느 팀이 공의 소유권을 가졌는지 여부에 따라 다른 코너 킥 로봇 대형이 적용된다. 수비팀의 코너 킥의 경우, 코너 킥 발생 지역이 공 소유권을 가진 팀의 골대 쪽이면 수비형 코너 킥 로봇 대형을 사용한다. 도38은 수비시 코너킥 포메이션 1(공 소유팀: A)을 예시하며 표12는 수비시 코너킥 포메이션 1의 위치 및 방향을 예시한다.Different corner kick robot formations are applied depending on where the corner kick occurs and which team has possession of the ball. In the case of a corner kick by the defending team, if the corner kick occurrence area is toward the goal line of the team that has possession of the ball, a defensive corner kick robot formation is used. Figure 38 illustrates corner kick formation 1 when defending (ball possession team: A), and Table 12 illustrates the position and direction of corner kick formation 1 when defending.

A 팀A team B 팀B team GKG.K. (-3.8, 0.0)(-3.8, 0.0) π/2π/2 (3.8, 0.0)(3.8, 0.0) -π/2-π/2 D1D1 (-2.25, 1.0)(-2.25, 1.0) -π/2-π/2 (1.5, -0.45)(1.5, -0.45) ππ D2D2 (-3.25, 1.0)(-3.25, 1.0) -π/2-π/2 (1.5, 0.45)(1.5, 0.45) ππ F1F1 (-3.25, 0)(-3.25, 0) 00 (0.5, -0.8)(0.5, -0.8) ππ F2F2 (-2.75, 2.0)(-2.75, 2.0) -π/2-π/2 (0.5, 0.8)(0.5, 0.8) ΠΠ 축구공soccer ball (-2.75, 1.5)(-2.75, 1.5)

도39는 수비시 코너킥 포메이션 2(공 소유팀: A)을 예시하며 표13은 수비시 코너킥 포메이션 2의 위치 및 방향을 예시한다.Figure 39 illustrates corner kick formation 2 when defending (ball possession team: A), and Table 13 illustrates the position and direction of corner kick formation 2 when defending.

A 팀A team B 팀B team GKG.K. (-3.8, 0.0)(-3.8, 0.0) π/2π/2 (3.8, 0.0)(3.8, 0.0) -π/2-π/2 D1D1 (-3.25, 1.0)(-3.25, 1.0) π/2π/2 (1.5, -0.45)(1.5, -0.45) ππ D2D2 (-2.25, 1.0)(-2.25, 1.0) π/2π/2 (1.5, 0.45)(1.5, 0.45) ππ F1F1 (-3.25, 0)(-3.25, 0) 00 (0.5, -0.8)(0.5, -0.8) ππ F2F2 (-2.75, -2.0)(-2.75, -2.0) π/2π/2 (0.5, 0.8)(0.5, 0.8) ππ 축구공soccer ball (-2.75, -1.5)(-2.75, -1.5)

팀 B 가 공 소유권을 갖는 경우, 위치와 방향은 π만큼 회전되고 두 팀의 역할은 바뀐다.공격팀의 코너 킥의 경우, 코너 킥 발생 지역이 공 소유권을 가진 팀의 골대 반대쪽이면 공격형 코너 킥 로봇 대형을 적용한다. 도40은 공격시 코너킥 포메이션 1(공 소유팀: A)을 예시하며 표14는 공격시 코너킥 포메이션 1의 위치 및 방향을 예시한다. 도41은 공격시 코너킥 포메이션 2(공 소유팀: A)을 예시하며 표15는 공격시 코너킥 포메이션 2의 위치 및 방향을 예시한다. 팀 B 가 공 소유권을 갖는 경우, 위치와 방향은 π만큼 회전되고 두 팀의 역할은 바뀐다.When team B has possession of the ball, the position and direction are rotated by π and the roles of the two teams are reversed. In the case of a corner kick by the attacking team, if the corner kick occurrence area is opposite the goal of the team that has possession of the ball, the offensive corner kick robot formation Apply. Figure 40 illustrates corner kick formation 1 (ball possession team: A) during attack, and Table 14 illustrates the location and direction of corner kick formation 1 during attack. Figure 41 illustrates corner kick formation 2 during an attack (ball possession team: A), and Table 15 illustrates the location and direction of corner kick formation 2 during an attack. When Team B has possession of the ball, the position and direction are rotated by π and the roles of the two teams are swapped.

A 팀A team B 팀B team GKG.K. (-3.8, 0.0)(-3.8, 0.0) π/2π/2 (3.8, 0.0)(3.8, 0.0) -π/2-π/2 D1D1 (3.25, 1.0)(3.25, 1.0) -π/2-π/2 (3.25, -0.5)(3.25, -0.5) π/2π/2 D2D2 (2.25, 1.0)(2.25, 1.0) -π/2-π/2 (3.25, 0.5)(3.25, 0.5) π/2π/2 F1F1 (2.25, 0)(2.25, 0) 00 (2.25, -0.5)(2.25, -0.5) π/2π/2 F2F2 (2.75, 2.0)(2.75, 2.0) -π/2-π/2 (2.25, 0.5)(2.25, 0.5) π/2π/2 축구공soccer ball (2.75, 1.5)(2.75, 1.5)

A 팀A team B 팀B team GKG.K. (-3.8, 0.0)(-3.8, 0.0) π/2π/2 (3.8, 0.0)(3.8, 0.0) -π/2-π/2 D1D1 (2.25, -1.0)(2.25, -1.0) π/2π/2 (3.25, -0.5)(3.25, -0.5) -π/2-π/2 D2D2 (3.25, -1.0)(3.25, -1.0) π/2π/2 (3.25, 0.5)(3.25, 0.5) -π/2-π/2 F1F1 (2.25, 0)(2.25, 0) 00 (2.25, -0.5)(2.25, -0.5) -π/2-π/2 F2F2 (2.75, -2.0)(2.75, -2.0) π/2π/2 (2.25, 0.5)(2.25, 0.5) -π/2-π/2 축구공soccer ball (2.75, -1.5)(2.75, -1.5)

페널티 킥은 페널티 지역에서 교착상태나 페널티 지역 반칙 직 후에 발생한다. 페널티 킥에서 공 소유권을 가진 팀의 F2 로봇이 공을 차는 것으로 경기가 재개된다. 페널티 킥 동안 소유권을 가진 팀의 F2 로봇을 제외한 다른 로봇은 다음 중 하나가 발생할 때까지 움직일 수 없다.- 공 소유권을 가진 팀의 F2 로봇이 공을 찬 경우A penalty kick occurs immediately after a stalemate in the penalty area or a penalty area foul. In a penalty kick, the game is restarted with the F2 robot of the team that has possession kicking the ball. During a penalty kick, no robot other than the F2 robot of the team in possession may move until one of the following occurs: - The F2 robot of the team in possession kicks the ball.

- 3초 동안 공을 차지 못한 경우- If the ball is not kicked for 3 seconds

도42는 페널티 킥 포메이션(공 소유팀: A)을 예시하며 표16은 페널티 킥 포메이션의 위치 및 방향을 예시한다. 팀 B 가 공 소유권을 갖는 경우, 위치와 방향은 π만큼 회전되고 두 팀의 역할은 바뀐다.Figure 42 illustrates a penalty kick formation (ball possession team: A) and Table 16 illustrates the location and direction of the penalty kick formation. When Team B has possession of the ball, the position and direction are rotated by π and the roles of the two teams are swapped.

A 팀A team B 팀B team GKG.K. (-3.8, 0.0)(-3.8, 0.0) π/2π/2 (3.8, 0.0)(3.8, 0.0) -π/2-π/2 D1D1 (0.5, -0.8)(0.5, -0.8) 00 (1.5, 0.8)(1.5, 0.8) -π/2-π/2 D2D2 (1.0, -0.8)(1.0, -0.8) 00 (1.5, 1.05)(1.5, 1.05) -π/2-π/2 F1F1 (1.5, -0.8)(1.5, -0.8) 00 (1.25, 0.8)(1.25, 0.8) -π/2-π/2 F2F2 (2.0, 0)(2.0, 0) 00 (1.25, 1.05)(1.25, 1.05) -π/2-π/2 축구공soccer ball (2.95, 0)(2.95, 0)

골 킥은 페널티 지역에서 교착상태나 페널티 지역 반칙 또는 공 아웃 후에 발생하며, 골 킥에서 공 소유권을 가진 팀의 GK 로봇이 공을 차는 것으로 경기를 시작한다. 골 킥 동안 소유권을 가진 팀의 GK 로봇을 제외한 다른 로봇은 다음 중 하나가 발생할 때까지 움직일 수 없다.- 공 소유권을 가진 팀의 GK 로봇이 공을 찬 경우A goal kick occurs after a deadlock in the penalty area, a penalty area foul or the ball is out, and the game begins with the GK robot of the team in possession kicking the ball. During a goal kick, no robot other than the GK robot of the team in possession may move until one of the following occurs: - The GK robot of the team in possession kicks the ball.

- 3초 동안 공을 차지 못한 경우- If the ball is not kicked for 3 seconds

도43은 골 킥 포메이션(공 소유팀: A)을 예시하며 표17은 골 킥 포메이션의 위치 및 방향을 예시한다. 팀 B 가 공 소유권을 갖는 경우, 위치와 방향은 π만큼 회전되고 두 팀의 역할은 바뀐다.Figure 43 illustrates a goal kick formation (ball possession team: A) and Table 17 illustrates the location and direction of the goal kick formation. When Team B has possession of the ball, the position and direction are rotated by π and the roles of the two teams are swapped.

A 팀A team B 팀B team GKG.K. (-3.8, 0.0)(-3.8, 0.0) 00 (3.8, 0.0)(3.8, 0.0) -π/2-π/2 D1D1 (-2.5, 0.45)(-2.5, 0.45) 00 (0.5, -0.8)(0.5, -0.8) ππ D2D2 (-2.5, -0.45)(-2.5, -0.45) 00 (0.5, 0.8)(0.5, 0.8) ππ F1F1 (-1.5, 0.8)(-1.5, 0.8) 00 (-0.5, -0.45)(-0.5, -0.45) ππ F2F2 (-1.5, -0.8)(-1.5, -0.8) 00 (-0.5, 0.45)(-0.5, 0.45) ππ 축구공soccer ball (-3.25, 0)(-3.25, 0)

공 재배치는 나머지 지역에서 교착 상태 후 발생되며, 4개의 지정된 위치가 있다. 공은 4개의 위치 중 현재 위치와 가장 가까운 곳으로 재배치된다. 로봇들은 재배치되지 않는다. 공이 재배치되면 경기가 재개되고 모든 로봇은 즉시 움직일 수 있다. 표18은 공이 재배치되는 위치를 예시한다.Ball reallocation occurs after a stalemate in the remaining areas, and there are four designated locations. The ball is relocated to one of the four locations closest to its current location. Robots do not relocate. Once the ball is relocated, play resumes and all robots can move immediately. Table 18 illustrates where the ball is relocated.

Position APosition A Position BPosition B Position CPosition C Position DPosition D (-1.5, 1.0)(-1.5, 1.0) (-1.5, -1.0)(-1.5, -1.0) (1.5, 1.0)(1.5, 1.0) (1.5, -1.0)(1.5, -1.0)

때때로 로봇이 넘어지고 스스로 일어날 수 없는 경우가 발생한다. 로봇이 넘어지고 3초 안에 일어날 수 없는 경우 로봇은 경기장 밖으로 옮겨지고 5초간 활동을 할 수 없다. 또 로봇이 아주 드물게 경기장을 벗어날 수 있는데 이때도 밖으로 옮겨지고 5초간 활동정지 상태가 된다. 5초가 지나면 로봇은 다시 지정된 위치와 방향으로 경기장으로 복귀한다. 다른 로봇이나 공이 돌아올 위치에 있는 경우, 해당 위치가 사용가능 할 때까지 필드 밖에 있게 된다. 표19는 로봇이 복귀하는 위치 및 방향을 예시한다.Sometimes it happens that the robot falls and cannot get up on its own. If the robot falls and cannot get up within 3 seconds, the robot is taken out of the arena and cannot perform any activities for 5 seconds. Also, in rare cases, the robot may leave the stadium, and in this case, it will be moved outside and put into a state of inactivity for 5 seconds. After 5 seconds, the robot returns to the stadium in the designated location and direction. If another robot or a ball is in a return position, it will remain off the field until that position becomes available. Table 19 illustrates the robot’s return position and direction.

A 팀A team B 팀B team GKG.K. (-3.8, 0.0)(-3.8, 0.0) π/2π/2 (3.8, 0.0)(3.8, 0.0) -π/2-π/2 D1D1 (-2.25, 1.0)(-2.25, 1.0) 00 (2.25, -1.0)(2.25, -1.0) ππ D2D2 (-2.25, -1.0)(-2.25, -1.0) 00 (2.25, 1.0)(2.25, 1.0) ππ F1F1 (-0.65, 0.3)(-0.65, 0.3) 00 (0.65, -0.3)(0.65, -0.3) ππ F2F2 (-0.65, -0.3)(-0.65, -0.3) 00 (0.65, 0.3)(0.65, 0.3) ππ

일 실시예에서, 사용자 단말은 스마트폰(smartphone), 스마트패드(smartpad), 태블릿 PC(tablet personal computer), 데스크탑 PC(desktop PC), 랩탑 PC(laptop PC), 넷북 컴퓨터(netbook computer), 워크스테이션(workstation), 웨어러블 장치(wearable device)(예: 스마트 안경, 머리 착용형 장치(head-mounted-device(HMD)), 또는 스마트 와치(smart watch)), TV 박스(예: 삼성 HomeSync™, 애플TV™, 또는 구글 TV™), 또는 게임 콘솔(예: Xbox™, PlayStation™, Switch™) 중 적어도 하나를 포함할 수 있다. 본 발명의 다양한 실시 예에 따르면, 사용자 단말은 상기 객체, 상기 AI 알고리즘, 상기 입력 데이터 형식, 및 상기 행동 패턴을 사용자로부터 입력 받기 위한 UI(User Interface) 화면을 디스플레이 장치를 통해 사용자에게 제공할 수 있다. 사용자 단말은 상기 UI 화면을 자체적으로 가지고 있는 데이터를 이용하여 제공할 수도 있고, 서버 시스템으로부터 상기 UI 화면에 대응하는 데이터를 수신하여 제공할 수도 있다. 상기 객체, 상기 AI 알고리즘, 상기 입력 데이터 형식, 및 상기 행동 패턴 각각은 하나의 UI 화면에 포함될 수도 있고, 각각이 개별적인 UI 화면을 가질 수도 있다. 본 발명의 다양한 실시 예에 따르면, 상기 디스플레이 장치는, 예를 들어, 전자 장치에 일체형으로 구비된 디스플레이(예를 들어, 액정 디스플레이(LCD), 발광 다이오드(LED) 디스플레이, 유기 발광 다이오드(OLED) 디스플레이, 또는 마이크로 전자기계 시스템(microelectromechanical systems, MEMS) 디스플레이, 또는 전자 종이(electronic paper) 디스플레이 등), LED 모니터 및 LCD 모니터, IPTV, Smart TV, LED TV, 및 LCD TV, 또는 프로젝터 등을 포함할 수 있다. 네트워크는 단말들 및 서버들과 같은 각각의 노드 상호 간에 정보 교환이 가능한 연결 구조를 의미하는 것으로, 통신 네트워크(telecommunications network), 예를 들면, 컴퓨터 네트워크(computer network)(예: LAN 또는 WAN), 인터넷(Internet), 또는 전화 망(telephone network) 등을 포함할 수 있다. 본 발명의 다양한 실시 예에 따르면, 사용자 단말 및 서버 시스템은 무선 통신 또는 유선 통신을 통해서 네트워크에 연결되어 상호 통신을 수행할 수 있다. 무선 통신은, 셀룰러 통신 프로토콜로서, 예를 들어, LTE, LTE-A, CDMA, WCDMA, UMTS, WiBro, 또는 GSM 등을 포함할 수 있다. 또한 무선 통신은, 근거리 통신으로서, 예를 들어, Wi-Fi, Bluetooth, NFC(near field communication), 또는 GPS(global positioning system) 등 중 적어도 하나를 포함할 수 있다. 유선 통신은, 예를 들어, USB(universal serial bus), HDMI(high definition multimedia interface), RS-232(recommended standard 232), 또는 POTS(plain old telephone service) 등 중 적어도 하나를 포함할 수 있다.본 발명의 일 실시예는 컴퓨터에 의해 실행되는 프로그램 모듈과 같은 컴퓨터에 의해 실행 가능한 명령어를 포함하는 기록 매체의 형태로도 구현될 수 있다. 컴퓨터 판독 가능 매체는 컴퓨터에 의해 액세스될 수 있는 임의의 가용 매체일 수 있고, 휘발성 및 비휘발성 매체, 분리형 및 비분리형 매체를 모두 포함한다. 또한, 컴퓨터 판독가능 매체는 컴퓨터 저장 매체 및 통신 매체를 모두 포함할 수 있다. 컴퓨터 저장 매체는 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 또는 기타 데이터와 같은 정보의 저장을 위한 임의의 방법 또는 기술로 구현된 휘발성 및 비휘발성, 분리형 및 비분리형 매체를 모두 포함한다. 통신 매체는 전형적으로 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈, 또는 반송파와 같은 변조된 데이터 신호의 기타 데이터, 또는 기타 전송 메커니즘을 포함하며, 임의의 정보 전달 매체를 포함한다. In one embodiment, the user terminal is a smartphone, smartpad, tablet personal computer, desktop PC, laptop PC, netbook computer, workstation. Workstation, wearable device (e.g. smart glasses, head-mounted-device (HMD), or smart watch), TV box (e.g. Samsung HomeSync™, It may include at least one of Apple TV™, Google TV™), or a game console (e.g. Xbox™, PlayStation™, Switch™). According to various embodiments of the present invention, the user terminal may provide the user with a UI (User Interface) screen for receiving input of the object, the AI algorithm, the input data format, and the behavior pattern from the user through a display device. there is. The user terminal may provide the UI screen using its own data, or may receive and provide data corresponding to the UI screen from a server system. Each of the object, the AI algorithm, the input data format, and the behavior pattern may be included in one UI screen, or each may have an individual UI screen. According to various embodiments of the present invention, the display device may include, for example, a display (e.g., a liquid crystal display (LCD), a light emitting diode (LED) display, an organic light emitting diode (OLED) display provided integrally with an electronic device. Displays, or microelectromechanical systems (MEMS) displays, or electronic paper displays, etc.), LED monitors and LCD monitors, IPTV, Smart TV, LED TV, and LCD TV, or projectors, etc. You can. A network refers to a connection structure that allows information exchange between nodes such as terminals and servers, and includes a telecommunications network, for example, a computer network (e.g., LAN or WAN), It may include the Internet or a telephone network. According to various embodiments of the present invention, a user terminal and a server system may be connected to a network and communicate with each other through wireless or wired communication. Wireless communication may include, for example, LTE, LTE-A, CDMA, WCDMA, UMTS, WiBro, or GSM as a cellular communication protocol. Additionally, wireless communication is short-distance communication and may include, for example, at least one of Wi-Fi, Bluetooth, near field communication (NFC), or global positioning system (GPS). Wired communication may include, for example, at least one of universal serial bus (USB), high definition multimedia interface (HDMI), recommended standard 232 (RS-232), or plain old telephone service (POTS). One embodiment of the present invention may also be implemented in the form of a recording medium containing instructions executable by a computer, such as program modules executed by a computer. Computer-readable media can be any available media that can be accessed by a computer and includes both volatile and non-volatile media, removable and non-removable media. Additionally, computer-readable media may include both computer storage media and communication media. Computer storage media includes both volatile and non-volatile, removable and non-removable media implemented in any method or technology for storage of information such as computer-readable instructions, data structures, program modules or other data. Communication media typically includes computer readable instructions, data structures, program modules, or other data in a modulated data signal such as a carrier wave, or other transmission mechanism, and includes any information delivery medium.

전술한 본 발명의 설명은 예시를 위한 것이며, 본 발명이 속하는 기술분야의 통상의 지식을 가진 자는 본 발명의 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 쉽게 변형이 가능하다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다. 예를 들어, 단일형으로 설명되어 있는 각 구성 요소는 분산되어 실시될 수도 있으며, 마찬가지로 분산된 것으로 설명되어 있는 구성 요소들도 결합된 형태로 실시될 수 있다. The description of the present invention described above is for illustrative purposes, and those skilled in the art will understand that the present invention can be easily modified into other specific forms without changing the technical idea or essential features of the present invention. will be. Therefore, the embodiments described above should be understood in all respects as illustrative and not restrictive. For example, each component described as unitary may be implemented in a distributed manner, and similarly, components described as distributed may also be implemented in a combined form.

본 발명의 범위는 상세한 설명보다는 후술하는 특허청구범위에 의하여 나타내어지며, 특허청구범위의 의미 및 범위 그리고 그 균등 개념으로부터 도출되는 모든 변경 또는 변형된 형태가 본 발명의 범위에 포함되는 것으로 해석되어야 한다.The scope of the present invention is indicated by the claims described later rather than the detailed description, and all changes or modified forms derived from the meaning and scope of the claims and their equivalent concepts should be construed as being included in the scope of the present invention. .

Claims (1)

사용자가 작성한 코딩블럭을 입력받는 입력모듈; 및
상기 코딩블럭을 미리 설정된 프로그래밍 언어로 변환하여 실행코드를 생성하고, 상기 실행코드에 포함된 환경정보 및 객체정보에 기초하여 게임 시뮬레이션 환경을 구축하고, 상기 게임 시뮬레이션 과정에서 생성되는 결과 데이터에 기초하여 학습 데이터를 생성하며, 미리 설정된 알고리즘에 기초하여 상기 학습 데이터를 학습하여 상기 시뮬레이션 환경을 업데이트하는 서버 시스템
을 포함하는 인공지능 교육 목적의 컴퓨터 그래픽 게임 프로그래밍 시스템.

An input module that receives coding blocks written by the user; and
Converting the coding block into a preset programming language to generate an executable code, constructing a game simulation environment based on the environment information and object information included in the executable code, and based on the result data generated during the game simulation process A server system that generates learning data and updates the simulation environment by learning the learning data based on a preset algorithm.
A computer graphics game programming system for artificial intelligence education purposes, including:

KR1020220044919A 2022-04-12 2022-04-12 Computer graphic game programming system for artificial intelligence education KR20230146220A (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020220044919A KR20230146220A (en) 2022-04-12 2022-04-12 Computer graphic game programming system for artificial intelligence education

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020220044919A KR20230146220A (en) 2022-04-12 2022-04-12 Computer graphic game programming system for artificial intelligence education

Publications (1)

Publication Number Publication Date
KR20230146220A true KR20230146220A (en) 2023-10-19

Family

ID=88507907

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020220044919A KR20230146220A (en) 2022-04-12 2022-04-12 Computer graphic game programming system for artificial intelligence education

Country Status (1)

Country Link
KR (1) KR20230146220A (en)

Similar Documents

Publication Publication Date Title
US10839215B2 (en) Artificial intelligence for emulating human playstyles
Gregory Game engine architecture
US11110353B2 (en) Distributed training for machine learning of AI controlled virtual entities on video game clients
LaViola Jr Bringing VR and spatial 3D interaction to the masses through video games
Murray Building virtual reality with unity and steamvr
US11724191B2 (en) Network-based video game editing and modification distribution system
US20210366183A1 (en) Glitch detection system
KR20090000013A (en) Working robot game system in network
US20240161371A1 (en) Asystem for customizing in-game character animations by players
Aversa Unity Artificial Intelligence Programming: Add powerful, believable, and fun AI entities in your game with the power of Unity
CN113018862B (en) Virtual object control method and device, electronic equipment and storage medium
US20210026657A1 (en) System for managing user experience and method therefor
Pendit et al. Conceptual model of mobile augmented reality for cultural heritage
KR20230146220A (en) Computer graphic game programming system for artificial intelligence education
KR20230146221A (en) Rule-based and deep-learning-based artificial intelligence computer graphic game programming system
Gerini et al. Gamified virtual reality for computational thinking
Hu et al. Game-based platforms for artificial intelligence research
Whitlock Theatre and the video game: beauty and the beast
Hu et al. Games for Artificial Intelligence Research: A Review and Perspectives
Sato Cross-cultural game studies
Schrum et al. Constructing Game Agents Through Simulated Evolution
Chen The development of two-level cardboard game tool
Bodi Agency in and around videogames
Marquardt Inside Video Games
Aaliq Moin et al. Planet Adventures: An Augmented Reality Game using Facial Emotion Recognition