마이크로마우스. 드디어 뛴다!!!1!!!직진가속 :: 찬찬히 로봇 메이커
반응형

(내 생각엔) 마이크로마우스의 꽃이라 불리는 직진 가속이다.

어떻게 직진 가속을 하는가?

일단 직진 가속을 하려면 맵을 탐색을 하여 골인 지점까지의 경로를 파악해야 한다. 그러면, 일단 탐색을 1번 했다고 하면 모든 길을 다 아는 것은 아니지만, 시작 지점과 골인지점은 인식할 수 있다. 그러면 내가 아는 길을 제외하고는 전부 막아버린다. 내가 가 보지 않은 길은 모두 벽이 있다고 만들어 버리는 것이다. 그런 후에, 알고리즘을 이용해 내가 가야 할 길을 배열로 저장을 한다. 그러면 거기서 내가 가야 할 마우스의 턴을 알 수 있다. 그러면 턴은 3가지로 나뉜다. 직진(F), 오른쪽 턴(R), 왼쪽 턴(L)이다.

턴을 4개씩 끊어서 보면, ffff나 frlr나 frrl같은 순서가 나올 것이다. 이 모든 경우에 대해서 턴을 짜면 그것이 대각이 되는 것이다. 예를 들어 rlrl이면, 오른쪽 턴, 왼쪽 턴의 반복이기 때문에 대각으로 갈 수 있는 길이 만들어지는 것이다. 대신 그것에 대한 마우스의 포지션에 대해 잘 설정해 주어야 한다. 사실상 (위치상으로만 보면) 길을 뚫고 가는 것이기 때문에 생각을 해주어야 한다.

어쨌든 모든 턴을 구분하면 그것으로 대각을 짜게 되지만 일단은 직진 가속만을 넣었다. 직진 가속은 ff나 fff나 ffff인 경우이기 때문에 그럴 때에는 마치 기다란 한 블럭처럼 인식을 해서 속도를 높여 주는 것이다. 탐색에서는 모든 1칸 1칸을 보며 속도를 일정하게 해야 한다면, 가속에서는 직진으로 연결된 구간에서는 1블록으로 인식을 해서 빠르게 달리면 된다.

처음으로 직진 가속을 하는 것을 보니 마음이 뿌듯할 뿐이었다. 아직 턴 속도는 660에다가 직진가속일때 속도는 1650으로 했었는데 무난하게 가는 것 같았다. 에초에 턴 속도가 중요하지 직진 가속의 속도를 높이는 것은 잘 모르겠다. 앞으로 이것저것 테스트를 해가면서 봐야 할 것 같다.

반응형

+ Recent posts