마이크로프로세서 텀프로젝트

마이크로프로세서 프로젝트는 두 대의 라인트레이서를 규정된 맵 위에 올려두고 랜덤하게 배치될 장애물을 제외한 나머지 영역을
순회하는 내용입니다. 두 대가 함께 순회한다는 예외사항들과, 최대한 빠른 시간 내로 탐색하는 것에 따라 성적이 결정됩니다.
디지털 논리 실습을 거치면서 임베디드 기기에 포팅하고 다뤄보았지만 실제 포팅된 기기에 모터가 달려서 직접 운행되는 것을
보는 것- 무척 색다른 경험이었습니다. 그런만큼 애먹은 부분도 많았고요.
 


직접 부품에 대해 조립 및 포팅하고 알고리즘을 적용한 코드를 이용하여 최고 효율을 찾아내기 위한 작업들은,
여지껏 경험해본 컴퓨터정보공학 커리큘럼과는 조금 거리가 있는 내용이었기 때문에 더 느낀 바 많았던 것 같습니다.

사실 맵은 고정, 장애물 위치만 임의로 주어질 뿐 그 크기와 개수는 고정이었기 때문에 이를 예측하여 하는 방법이
있습니다. 대표적인 방법으로 맵을 분할하는 것입니다. 하지만 여기서 조심해야 하는 부분이 있습니다.
라인트레이서가 서로를 향해 바라보는 시점 혹은 다른 측면 센서가 다른 라인트레이서의 센서에 직선상에 위치할 경우
이를 반사한 적외선 센서로 인식해버려 장애물이 있다고 착각하는 점입니다.
치명적이게도 이 센서 자체에 대한 제어권 없이 Read만 되는 형태이기 때문에 더더욱 난감한 것이죠.

그러면 맵 분할은 불가능한가? 아닙니다. 두 대의 라인트레이서를 서로 엇갈려 순회할 알고리즘으로 4분할 하는 방법이
있습니다. 그래서 서로 맵 탐색 시간동안 두 라인트레이서를 대각 방향에 엇갈려두면 서로 마주칠 일이 없고, 두 대 모두
해당 Area의 탐색이 끝났을 때 맵의 끝 부분으로 돌아가 지나가도록 하는 방법이 있습니다. (뭐 조금 가까워진다면
다른 쪽 라인트레이서의 센서를 완벽히 감추는, 그러니까 거꾸로 돌린 형태로 두는 방법이 있습니다.)

하지만 이 방법은 일부이지만 Time lose가 발생합니다. 동시에 범용성 있는 알고리즘이라 하기 힘듭니다. 때문에,
우리 팀은 이 제약사항을 무시하고 어떤 환경에서도 인식할 수 있는 범용적 성격의 패턴을 구상하게 됩니다.
'개미'가 탐색하는 방법으로부터 고안한 인공지능적 접근으로 해결하였습니다. 때문에, 오히려 위 4분할 방법보다
 더 시간 손실이 큽니다. 하지만, 어디에나 적용될 수 있으니 이것으로 가자 - 라는 것이 팀의 판단이었습니다.

대부분의 팀들이 2분할 방법으로 이 문제를 해결하였습니다. 분명히 예외사항으로 장애물의 사이즈가 2분할의 한
영역을 모두 덮을 수 있습니다. 얼마든지 교수님께서 그렇게 지시하신다면 순회가 불가능해질텐데 - 하지만 교수님께서
그렇게까지는 안 하시더군요;;;

결과는 좋았습니다. 기록상에서 1등은 아니었지만 범용성에 대해 인정받았다 생각합니다.

'Track 1 (Senior) > Major : CE (Project)' 카테고리의 다른 글

Database 실습 프로젝트  (0) 2011.06.20
Software Engineering Project  (0) 2011.06.19
Computer Graphics Term Project  (0) 2011.06.19
DB 기초 최종 과제  (0) 2011.06.19
Network Term Project  (2) 2011.05.16