로보코드 코리아컵

Download Report

Transcript 로보코드 코리아컵

로보코드 코리아컵
16강 진출 로봇 전략 모음
한국IBM developerWorks
차례
















N_Gundam
GoldFrog
Bat
LinuxJoa
NoiR
FlySDK
ColdWindS
Nautilus
Drizzle
Su
Dotdog
JJRobot2
IrYoung
PapaBear
TheGameOfDeath
FangR
김동현
김춘복
김학년
김후림
문성호
서대관
반대걸
서동호
송정석
신인철
양인상
이진나
정일영
최문석
홍성준
황준식
N_Gundam 2.1
김동현


로봇의 전략은 크게 움직임과 조준으로 나눌 수 있다. 움직임에 있어
서는 두 가지 방식을 상황에 맞게 적용하도록 하였는데, 기본적으로
상대가 공격을 하는 순간 움직임에 변화를 주어서 상대의 공격을 피
하도록 하였다.
조준은 guess-factor, pattern-matching 이라는 전략을 virtual-bullet
시스템을 사용하여 적에 따라 최선의 방식을 선택하도록 하였다.
GoldFrog 1.0
김춘복


로봇의 주 전략은 상대적인 움직임이다. 타겟과 가까이에 있으면 적
당한 거리를 유지하기 위해 한 발 물러서고 타겟과 멀리 있으면 적당
한 거리를 유지하기 위해 한 발 다가가는 전략이다.
또 다른 전략은 적의 상황을 보아서 나보다 강한지 혹은 약한지 판단
하는 전략이다. 약하면 처음의 방법을 계속 유지하고 강하면 다른 패
턴을 사용한다.
Bat 1.0
김학년


Bat의 골격은 공격, 움직임, 적에 대한 정보, 라이브러리, 상수로 구
성되어 있다.
움직임은 반중력을 기본으로 채택하고 있으며 반중력의 단점인 양
쪽 코너로 몰리는 현상을 막기위해 근접해 있는 코너에 반발력을 두
었으며, 적과 조우시 적을 중심으로 원운동을 한다(여기서 로봇의 이
름을 딴 것). 단순한 원운동이 아니라 반중력과 결합을 시켜서 랜덤
하게 움직인다. 단체전일 경우는 레이더를 360도 회전하고 움직임
을 작게 하므로써, 가장 가까운 적에게 분사 공격을 하였다. 개인전
인 경우는 레이더를 적을 중심으로 짧게 돌리면서 적과의 거리를 판
단하여 예측사격과 분사를 병행하였으며, 움직을 많게 해서 적에 대
한 공격에 대비를 하게 하였다. 적에 대한 정보는 거리, 변화, 시간을
중심으로 데이터를 구성하였다. 하지만 정확한 예측 정보를 가지고
있지는 못한다. 차후 버전에 추가하고자 한다.
LinuxJoa 1.47
김후림

전투를 하면서 상황에 따라 로봇의 움직임과 사격 방법을 바꾸도록
하는 것이 전략이다. 6개의 로봇 움직임과 3개의 사격 방법이 있는
데, 로봇의 회피율 and 사격 적중률이 일정 이하로 떨어지면 다른 방
법을 사용하여 전투를 한다. 그리고, 경기 결과를 다음 라운드에서
이용 하여 가장 적절한 로봇의 움직임과 사격방법을 선택한다.
NoiR 1.0
문성호


NoiR와 DaNoiR, 그리고 BloodyNoiRinParis는 모두 같은 방식으로
만들어졌다. 반중력이동이 그 중심이며, 회피와 접근 등 모든 움직임
을 반중력 움직임 내에 넣었다.
회피


상대방이 총알을 발사하면 상대방의 발사위치와 나의 움직임을 쏘았다
고 가정했을때의 GunBearing 그리고 발사된 총알의 무게 를 배열에 넣
고 그 각각에 따라 반중력 가중치를 주었다. 그리고 내 에너지가 적다면
반중력 가중치를 늘렸다.
공격


상대방의 위치 예측을 우선으로 하였으며 만약 내가 쏜 총알이 많이
miss되면 상대방의 위치에 직접 사격한다. 계속 좌우로 흔들어주는 분
들에게는 두번째 사격방법이 꽤 잘먹히는 것을 알 수 있다.
반중력의 가중치가 로봇의 생명이다. 그리고, 공격 방법에 있어서 NoiR
는 저 방식을 채용하지 않았다. 저 방법을 쓴 로봇은 BloodyNoiRinParis
이다.
FlySDK 1.0
서대관

FlySDK의 가장 큰 특징은 적 로봇이 다음 움직임을 예상하기 어렵
게 하기위해 'S'자형 움직임을 기본적으로 가진다. 이것은 파리의 움
직임을 모방하였다. 다음 움직일 장소는 배틀 필드를 총 16개의 부
분으로 나눈 후 적 로봇의 위치를 바탕으로 최적의 장소를 결정한다.
공격은 타겟 로봇의 거리에 반비례하여 총알 파워를 결정하며, 세번
의 공격이 연속으로 실패하였을때 발사각을 조금씩 변형시킨다.
ColdWindS 1.0
반대걸




이 로봇은 자체제작한 모듈화된 로봇생성기를 통해 생성되었다.
크게 이동전략, 조준전략, 발사전략, 총알세기전략, 레이더전략, 타
겟선택전략의 6가지 부분에 대해 모듈화를 진행하고 각 부분별로
3~5가지 종류의 모듈을 만들어서 그것들을 조합하여 나오는 다양한
로봇들을 자동생성하는 방식이다.
현재 생성가능한 로봇의 조합의 경우의 수는 2천가지가 넘으나 세부
적인 테스트를 통해 성능좋은 모듈을 우선 선택하여 약 500가지 로
봇을 생성한 후 자체적으로 리그를 거쳐 상위 랭크에 선발된 로봇을
대회에 출전시켰다.
그중 이번에 16강에 진출한 ColdWindS의 전략을 소개하면 이동전
략은 반중력운동+총알회피기동이다. 기존 공개된 반중력운동의 전
략을 거의 그대로 사용하였지만 레이더 탐색방법이 달라 실제로는
반중력운동을 보이지 않고 특이한 곡선을 그린다. 거기에 적의 에너
지변화를 추적해 적이 총알을 발사하면 바로 피하는 전략을 사용하
였다.
ColdWindS 1.0
(continue)





조준전략은 선형예측된 각도에 현재까지의 명중률을 고려한 랜덤변
화를 가미한 것이다. 가상총알 등의 개념은 사용하지 않았다.
총알세기는 거리에 따라 가까우면 강하고 느리게, 멀면 약하고 빠르
게 발사하도록 했다.
레이더는 적 로봇을 중심으로 좌우 15도 정도의 각도 내에서 탐색을
진행한다.
여러 로봇과 대전할 경우에 타겟선택전략은 무조건 한번 잡은 것을
따라가도록 되어있지만 만약 다른 로봇에게 맞았을 경우에는 그쪽
으로 타겟을 돌릴수도 있도록 되어있다. 또 다른 로봇과 충돌할 경우
에도 역시 그쪽을 우선 타겟으로 전환하여 공격한다.
모듈화를 통한 제작을 하다보니 한 전략에 최적화는 되어있지 않고
불필요한 소스도 들어가있다. 다만 모듈화와 제작의 자동화를 통해
서 제작자의 의도대로만 만들어지는 로봇이 아닌, 미처 생각하지 못
한 전략들의 조합으로 새로운 로봇으로 진화해가는 로봇들을 만들
어보고 싶었다.
Nautilus 1.0
서동호


노틸러스의 메인 전략은 총알 피하기로서 공격 보다는 방어에 중점
을 두었다.
레이더를 통해 적로봇의 에너지 감소량을 측정하여 0.1~3 사이의 값
이면 적로봇이 총알을 발사했다고 가정하고 적로봇의 현재 위치와
추정한 총알의 위치를 반중력 이동 알고리즘의 반중력 포인트로 설
정하여 로봇이 랜덤하게 움직이면서 총알을 피하도록 하였다.
Drizzle 1.0
송정석



로봇 전략은 회피부부과 타겟팅 부분 두가지로만 이루어져 있다.
회피시에는 로봇의 레이더에 적이 총알을 쏜 시점을 파악하여 적과
내가 이루는 방향의 반대 방향으로 최대한 이동할려고 한다. 단 뒷면
에 벽이 있을시는 벽에 일정이상 가까울시는 벽과 반대반향으로 이
동한다.
타겟팅시는 기본적으로 선형 타켓팅을 사용하며 단지 내가 적을 맞
쳤을시 내가 맞춘 총알의 x,y의 변화량을 계산하여 일정계수를 변화
시킨다.
Su 1.0
신인철


기본적인 반중력 이동에 한곳에 오래 머무는 것을 막기위해, 벽에대
한 반발력을 벽의 수직에 반 시계방향으로 90도에 힘을 가해 전체적
으로 시계방향으로 돌게된다.
레이다와 이동을 위한 뱡향 회전은 최적 각 연산을 구하여 회전하고,
총알은 적의 이동과 총의 속도를 감안한 예상 각으로 발사를 하게 된
다.
Dotdog 1.3
양인상




로봇의 기본이라 할 수 있는 대표적인 알고리즘인 반중력운동이라
든지, 예측 사격알고리즘을 적용 하지 않았다.
반중력을 사용하지 않다보니 멀티에 약한 모습을 보였다. 그리하여
필드에 3개의 로봇이 남기 전까지 원운동을 하며 데미지 큰 사격을
하여 생존률을 높이고(아무나 맞을 확률이 크기 때문), 3명이 남으면
행동 패턴을 바꿔 1 on 1 용 로직을 태운다.
1 on 1 공격 패턴은 기타 로봇과 유사하게 상대 로봇을 중심으로 좌
우 운동을 하며 거리에 따라 알파각을 두어 사격을 한다. 물론 거리
에 따라 파워도 조절한다.
알고리즘을 뺀 나머지 부분은 로봇의 기본에 충실했으며, 부속 하나
하나 다른 사람 코드 없이 만들었다.
JJRobot2 1.01
이진나


기본 컨셉
 기본적인 움직임은 random으로 설정: 적에게 패턴을 읽히지 않
도록 하는 효과, 반중력 움직임을 활용한 움직임, 수비 패턴으로
직결됨
 상황에 따른 공격 패턴의 다양화: 명중률이 낮을 경우 유지하던
공격 패턴을 버리고 새로운 패턴 선택, 보다 정확한 targeting이
되는 효과
 스캔의 분리: turn을 놓치지 않고 적을 따라가면서 스캔1:1 모드
에서 매우 실용적인 스캔 방식, 최대한 메소드를 분리시켜서 turn
을 낭비하지 않도록 함
움직임
 반중력 움직임을 활용한 random 모드: 다양하고 유연성 있는 움
직임으로 적의 공격 회피, 특정한 수비 패턴을 주지 않고 이 움직
임이 바로 수비 패턴이 될 수 있다.
JJRobot2 1.01
(continue)

공격패턴
 targeting 활용한 예측사격: 기본적인 공격 패턴, 적의 다음 위치
를 파악하여 스캔과 공격의 시간차, 총알이 적에게 도착할 때까
지의 시간차 극복, 선형 targeting을 겸비한 원형 targeting 을 이
용하여 보다 효과적인 적의 위치 예측
 스캔한 적의 위치에 사격: 원형 targeting에 의한 공격의 명중률
이 떨어질 경우의 공격 패턴, 적이 random하게 움직일 경우 오히
려 targeting보다 더 정확한 공격이 될 수 있다.
 스캔한 적의 위치에서 조금 빗나간 곳에 사격: 사용한 다른 공격
패턴의 명중률이 약할 경우 마지막으로 대비한 공격 패턴
IrYoung 0.1
정일영




움직임 기본은 반중력(melee시 가까운 코너에서 랜덤으로 움직임)
Targeting은 기록해둔 적의 정보로 움직임 분석해서 그에 맞게
Stationery,원운동,선운동,패턴매칭,Ripple을 이용한 uessFactor중
선택한다.
회피는 적의 슈팅을 감지했을때 적의 총알 위치에 역중력을 줘서 해
결하였다.
스캐닝은 스캔한지 가장 오래된 로봇 쪽으로 레이더를 돌리는 것으
로 하였다.
PapaBear 1.0
최문석



움직임에 중점을 둔 변형된 반중력 로봇
기존 반중력 운동은 예측 가능하여 타겟이 되기 쉽다는 가정하에 움
직임에 변화를 주었다.
일정간격으로 반중력을 움직임에 적용하므로써 불규칙성을 추가하
고 1vs1시 적에 대한 수평움직임을 회피하기 위해 운동반경에 제약
을 가했음. 또한 적탄환을 예측, lifetime을 적용하여 회피하도록 하
였음. 타겟팅은 대부분의 적이 반복 운동을 한다는 가정하에 단순한
tracking 타겟팅을 적용했다.
TheGameOfDeath 1.0
홍성준



처음 교내 로보코드 대회를 위해 개발할 당시에는 상대 로봇의 움직
임 패턴을 인식하거나, 반대로 내 로봇의 움직임을 랜덤하게 구성하
고자 하여 이에 주력하였으나, 실제 이처럼 구현하는 경우 로봇을 제
어하는데 있어 많은 어려움을 겪었다.
매우 간결하지만 매우 정확하게. 레이더에 발견된 - 발견된 로봇의
경우 레이더를 중앙에 고정시켰다 - 상대 로봇의 총알 발사 여부를
확인함과 동시에 지그재그 형식으로 총알을 회피하고, 최대한 상대
로봇에 접근하여 예측 사격을 함으로써 강한 공격을 하는 것이다. 이
경우 상대 로봇의 움직임에 관계없이 접근하여 공격 성공률을 높일
수 있다.
한편 다수 로봇과의 전투의 경우 상대를 공격 중에 자신을 공격하는
위험 로봇을 감지하여 먼저 제거함으로써 효율을 높여 고득점을 예
상했다. 다양한 예제 로봇과 시뮬레이션을 한 결과 좋은 성능을 보였
다.
FangR 0.1
황준식




움직임 기본적으로 반중력 움직임 알고리즘을 사용하였으며, 밀리
시에는 가까운 코너에서 랜덤으로 움직이게하여 전장의 중앙을 피
하게 되어있다.
Targeting은 기록해둔 적의 정보로 움직임 분석및 명중률에 기반하
여 Stationery,원운동,선운동,패턴매칭,GuessFactor 중 선택하여 사
용한다.
회피는 적의 슈팅을 감지했을때 적의 총알 위치에 중력점을 두어서
회피한다.
스캐닝은 스캔한지 가장 오래된 로봇 쪽으로 레이더를 돌려서 가능
한 모든 로봇의 최신 정보를 유지하려 한다.