공학

모형 자동차 주차 시뮬레이션

공대오빠 2017. 8. 30. 18:02

안녕하십니까. 공대오빠입니다.


자동차 관련 프로젝트 중에서 많은(?) 사람들이 하는 주차 시스템(알고리즘)입니다.

실제 자동차의 경우 제원이 정확하고, 차량 내부의 제어보드에 컴퓨터를 연결하면 자동차의 상태와 조향각 등을 정확하게 알 수 있어서 좀 더 정확한 구현을 할 수 있습니다. 

하지만 모형자동차(RC카)의 경우 스펙이 정확하지 않고, 조향각을 정확하게 알 수 없습니다. 무엇보다 모형자동차는 빠른 속도로 달리기 위한 용도입니다. 그래서 대부분의 사람들이 대충 주차공간을 만들고, 대충 주차알고리즘을 구현하게 됩니다.


하지만 저희는 최대한 실제 알고리즘과 실제 주차공간 비율에 맞춰서 구현하기위해 노력하였습니다. 그래서 주차 알고리즘 구현하는 과정에 대해 적어보려 합니다.


우선 저희 자동차입니다. 

저희가 개발한 것은 적외선과 초음파 센서만을 이용해서 주차공간을 찾고, 스스로 주차하는 것입니다.

이 자동차는 아우디 R8의 축소판입니다. 하지만 문제점이 하나 있는데 조향에 사용하는 서보모터의 조향 각도를 알 수 없다는 점과 실제 자동차의 조향각과 일치하지 않는다는 것입니다.


자동차 주차 알고리즘을 구현하기 위해 가장 중요한 것은 자동차의 회전반경을 계산해야합니다.

자동차 최소 회전반경은 자동차를 최대한 틀었을 때 회전하는 원의 반경입니다.

구글에 검색하면 이렇게 많은 자료들이 나옵니다.


사진을 보면 알 수 있듯이 오른쪽으로 돈다고 했을 경우 정해진 둘레의 원으로 도는 것은 좌측 앞바퀴와 우측 뒷바퀴입니다.

이 반경을 계산하는 공식은 인터넷 자료로 많이 있습니다. 하지만 이 계산은 자동차의 조향각과 타이어 둘레, 차 폭 등을 정확하게 알고있는 경우입니다. 저희가 갖고 있는 자동차로는 이론과 틀린 부분이 많이 있었습니다.


그래서 선택한 것이 직접 측정하는 방법입니다. 넓은 곳에 자동차를 두고, 회전각을 최대로 틀고 아주 낮은 속도로 돌립니다. 속도가 너무 빠르면 회전력에 의해 정확한 값이 나오지 않습니다.

그리고 자동차가 돈 지름을 측정합니다. 아까 말 했듯이 우측 뒷바퀴와 좌측 앞바퀴가 돈 원의 지름을 측정합니다. 그럼 우측 회전반경의 측정이 끝납니다.

하지만 모형자동차라 그런지 좌,우의 회전반경이 달랐습니다. 그래서 양 측 다 측정했습니다.



이렇게 측정한 것과 카티아를 이용해서 자동차가 최대각(최대각으로 설정하는 것이 코드 짜기에 쉽습니다.)으로 회전했을 경우 어떻게 움직이는지 그려봅니다.

주차공간은 실제 주차공간을 축소한 길이로 하고 싶었지만.. 그럼 너무 복잡해져서 저희가 주차할 수 있는 최소한의 공간으로 검은색으로 만들었습니다.


평행주차는 쉽게 구현할 수 있었습니다.

깔끔하게 정리한 모습입니다.



수직 주차는 앞으로 나갈 수 있는 거리를 제한하다보니 더 어렵게 구현되었습니다.

깔끔하게 정리한 그림입니다.


아래는 주차 알고리즘을 구현한대로 시뮬레이션 해 본 동영상입니다.



이렇게 구현한 것으로 실제 모형자동차에 적용해보니 약간의 오차가 있었지만 잘 주차할 수 있었습니다.

비록 자동차를 완성시키지는 못 했지만 주차 알고리즘에 대해서는 완벽하게 이해할 수 있었습니다.


이것에서 더 발전시켜서 카메라와 제어보드를 더 상위 등급의 보드로 이용한다면 어떤 공간이든 맞춰서 주차할 수 있는 시스템을 개발할 수 있을 것입니다.


감사합니다.