3 min to read
Vision and GPS Data Integration Driving [Part 2]
Vision과 GPS 데이터를 통합해 주행해보기 [Part 2]
Vision - GPS 데이터 통합 주행 Part 2. [Mode Switching]
지난 이야기
Vision만을 이용한 차선 유지 시스템은 뭔가 부족하다.
사람과 다르게 카메라는 차선이 끊겨있는 것을 본다면 생각 또한 끊긴다.
그렇다면 중간중간에 끊겨 있는 차선이 있을 때는 어떤 방법을 써야할까?
도로의 상황과 관련 없이 하늘만 맑다면! GPS로 어디든 갈 수 있다.
그러면 맑은 날만 골라서 GPS를 이용해서 자율주행을 하면 되는 것 아닌가?
이것 또한 쉽지 않은 것이다.
왜냐하면, GPS가 경로 추적에 필요한 데이터를 가져오는 데에 시간이 오래 걸린다는 것이다.
실제로 GPS는 10fps 정도의 속도로 데이터를 받아온다. ? 빠른데?
의문이 생길 수 있지만 자율주행에서 10fps의 데이터 갱신 속도는 느린 편에 속한다.
본인도 10fps면 충분하다고 생각했지만 실제로 프로그램을 동작시켜보니 절대 아니다…
실제로 테스트를 해보면서 인간의 인지 및 판단 능력은 엄청 뛰어나다는 것을 느꼈다.
Vision과 GPS 통합의 중요
Vision과 GPS를 통합하여야 하는 이유를 다시 정리해보자.
- Vision(차선)의 데이터 갱신 속도는 약 20~40fps로 10fps인 GPS보다 빠르다.
- 하지만 실제로 차선이 끊겨 있는 곳(교차로 등)이 많기 때문에 차선만 믿기에는 한계가 있다.
- 차선이 안 보이는 경우(눈이 덮인 경우, 저녁인 경우)에는 GPS가, 날씨가 흐릴 때는 Vision이 강점을 보이며 서로를 대체할 수 있다.
- 일반적으로는 데이터 갱신 속도가 빠른 차선 데이터를 쓰고, 차선이 없는 경우에는 GPS 데이터를 쓴다.
위와 같은 이유로 Vision과 GPS 데이터를 통합해 상호보완적인 프로그램을 만들 수 있다.
HOW?
차선과 GPS 정보를 상황에 따라 쓰며 주행하는 것은 이해하겠다.
그러면 그 상황을 어떻게 판단할 것인가?
우리가 고안한 방법은 크게 두 가지이다.
하나는 데이터의 패턴을 보며 찾은 각 데이터의 약점을 기준으로 상황을 나누는 것이다.
나머지 하나는 교내에서 촬영한 영상에 딥러닝을 이용해 이미지에 따라 상황을 나눈다.
물론 위 방법들은 캠퍼스 내에서만 가능한 단편적인 해결책이다.
나중에 자율주행의 범위가 확장 되면서 새로운 방법을 고안할 필요가 있다.
Method 1
실제 주행 테스트를 해보면서 차선과 GPS가 각자 약점을 보이는 곳을 확인했으며, 패턴이 비슷한 것을 이용하였다.
[사진 1]
먼저 위 사진[사진 1]을 보자.
초록색 점은 차선에 의한 경로이고 빨간색 점은 GPS에 의한 경로이다.
그리고 원의 중심은 차의 위치라고 볼 수 있다.
[사진 1]은 차선, GPS 모두 인식이 잘 되는, 다시 말해서 Best인 경우이다.
이때는 위에서 언급했던 것처럼 데이터 갱신 속도가 높은 차선을 기준으로 주행한다.
또 다른 경우를 확인해보자.
[사진 2]
위 사진[사진 2]은 Vision이 약점을 가지는 차선이 끊긴 교차로 부분이다.
중간 차선을 의미하는 초록색 점이 원의 중심을 기준으로 많이 벗어나있는 것을 볼 수 있다.
이때는 GPS Mode로 변경하여 GPS에 의한 경로를 따라가는 것이다.
그렇다면 GPS는 대체 어디에서 약점을 보일까? 바로 하늘이 가려져있는 곳이다.
우리 학교 캠퍼스 같은 경우에는 터널이 그 예이다.
[사진 3]
위 사진[사진 3]은 터널을 막 지나는 상황인데 경로가 바른 차선에 비해서 GPS에 의한 경로는 이상하다.
이는 [사진 2]에서 차선과 마찬가지로 원의 중심으로부터 경로가 많이 벗어나있다.
이 상황을 보고 우리는 다음과 같은 기준을 세웠다.
“원의 중심으로부터 경로가 많이 벗어나있는 데이터는 믿지말자!”
“하지만 둘 다 적절한 상황에선 차선을 우선으로 주행한다.”
위 알고리즘을 Rosbag에 적용해보았을 때 사람이 보기에도 괜찮을 정도로 Mode 교체가 잘되었다.
[사진 1] ~ [사진 3]은 그 테스트 영상 중의 일부이다.
Method 2
Method 2는 어떤 방법인지 알아보자.
이 또한 정말 간단한 생각으로부터 고안한 방법이다.
우리는 상황을 구분하기 위해 다음과 같은 생각을 하였다.
“이미지 그대로 Vision or GPS로 Annotation하여 학습하면 되지 않을까?”
어떻게 보면 매우 간단한 방법인데, 단편적으로는 Best인 방법일 수 있다.
실제로 관준이가 만들었기에 난 잘 모름
학교 내에 주행 영상을 찍은 후에 사진마다 Vision 혹은 GPS를 기반으로 주행할 것인지 체크한다.
이를 사진 그대로 학습한다. 엄청 오래 걸리더라
Method 2 또한 Rosbag에 적용해보았을 땐 좋은 성능을 보였다.
여러 테스트를 거친 후에 Method 1 혹은 2를 사용하면 될 것 같다.
문제점
Method 1, 2를 보면서 개인적으로 생각하는 문제점이 있다.
공통적으로는 캠퍼스 내에서 적절한 방법이기 때문에 학교를 나가는 순간 쓸모 없어질 수 있다.
그 외에도 각자의 단점을 적어보면 다음과 같다.
- Vision, GPS 데이터 모두 믿을만하지 못한 상태라면 뭘 믿어야 하나? -> Method 1
- Vision, GPS 데이터가 예상치 못한 상황에서 오류가 생길 수 있다. -> Method 2
둘 중 하나의 방법을 쓰더라도 안정적인 자율주행이 성공하려면 위 단점을 보완할 필요가 있다.