이 가이드에서는 자율주행 차량의 캘리브레이션부터 AI 모델 학습, 객체 탐지, ChatDrive 모드까지 모든 과정을 쉽게 따라할 수 있도록 설명합니다.
주행을 시작하기 전 차량의 주행성능을 점검하는 단계입니다. 직진과 후진은 잘 되는지, 조향을 직접 해보며 직진 시 차가 휘어서 가는 경향이 있다면 중립을 맞춰야 합니다.
먼저 모터 속도는 "30" 정도를 기본으로 시작해보고, 조작이 익숙해지면 단계적으로 출력을 올립니다. 0 = 저속, 100 = 고속 입니다. 처음부터 100으로 하면 차의 제어가 어려울 수 있으니 유의해주세요!
아래쪽 "방향" 탭에서는 서보 모터의 캘리브레이션을 진행할 수 있습니다. 앞서 서술한대로 중립(M) 값을 조절하여 차가 직선으로 움직이도록 설정해 주세요. 왼쪽으로 휘어서 간다면 0 이상의 값으로 설정하고, 오른쪽으로 휘어서 간다면 0 미만의 값으로 설정하면 됩니다.
차량이 우회전을 하는데 언더스티어 (의도했던 궤도보다 작게 도는 현상)가 발생한다면, 우회전 값을 더 크게 설정하고, 오버스티어 (의도했던 궤도보다 크게 도는 현상)가 발생한다면 값을 낮춰주시면 됩니다. 음수로 설정할 경우 차량의 우회전이 불가능해질 수 있습니다.
좌회전 값도 마찬가지로, 언더스티어가 발생할 시 값을 더 낮추어 주시고, 오버스티어가 발생할 시 0에 가깝도록 설정해 주세요. 일반적으로 좌회전 -30, 우회전 30 정도면 테스트맵을 완주하는데 무리는 없습니다.
왼쪽 하단에, 하드웨어 연결 여부와 Ping을 표시합니다.
↑,↓,→,← 키 입력도 실시간으로 확인할 수 있습니다.
자율주행 모델의 학습 상태를 나타내며, 학습 중, 학습 완료 총 세 가지의 상태를 확인해볼 수 있습니다.
AI 모델 저장 & 로드는 로그인 한 상태에서만 가능하며, 추후 설명할 AI 모델 관리에서 확인해볼 수 있는 AI 모델의 학습 여부 (과적합 등이 일어났는지)를 판단하여, 성공적인 모델을 저장하고 이를 불러올 수 있는 기능입니다. 수강생으로 하여금 모델 학습을 반복하게 되는 일을 방지해줍니다.
버튼을 누른 이후 다시 누를때까지의 이미지 정보를 저장합니다. 게임 모드 및 실제 하드웨어 주행 시 둘 다 사용 가능합니다. 버튼 활성화 시, 페이지 왼쪽 아래 "데이터 분류" 탭에 이미지가 수집되기 시작합니다.
취득한 이미지 정보를 바탕으로 AI 모델을 학습시킵니다. Progress bar를 통해 학습 진행률을 실시간으로 확인해볼 수 있습니다. 고성능 그래픽 카드가 탑재되어 있다면 학습 시간을 단축시킬 수 있습니다.
학습이 완료된 후 활성화되며, 클릭 시 자율주행을 시작합니다. 버튼을 눌러 활성화 시키면, 오른쪽 아래 "모델 예측 결과" 탭에서, 올바른 로직으로 차가 제어되고 있는지 확인해 볼 수 있습니다.
취득한 이미지 전체를 확인해 볼 수 있습니다. 이미지 퀄리티가 올라갈수록 학습의 성공률 및 좋은 모델이 완성될 확률이 올라가므로, 취득된 이미지를 계속 확인해보며 해상도가 떨어지는 이미지나 각 판단 상황에 맞지 않는 이미지 등을 제거해주며 "필터링" 작업을 거쳐주세요.
이미지의 비율은 1:1:1로 가져가는 것이 좋습니다. (예: 직진83 좌회전86 우회전85개)
하단에 있는 "데이터 저장" 버튼을 눌러 데이터셋을 *.zip 파일 형태로 저장할 수 있고, "불러오기" 버튼을 눌러 이미지를 불러올 수 있습니다.
우측 상단 대시보드 제어판의 "모델 예측" 버튼을 누르면 실시간으로 라즈베리파이가 내리는 주행 제어 결정을 확인해볼 수 있습니다. 직진, 좌회전, 우회전, 정지 등을 올바른 상황에, 올바른 기간동안 유지하는 등을 판별해보며 올바른 학습이 되었는지 확인할 수 있습니다.
학습이 완료되면 그래프가 표시됩니다. 이 때, 파란 라인의 "Train set"(학습 세트)와 주황 라인의 "Validation set"(검증 세트)의 loss값이 우하향 하는 것이 이상적이며, 증가했다면 "과적합"이 일어났다고 판단할 수 있습니다.
이 때는 에포크 수를 줄이거나, 왼쪽의 "데이터 분류" 탭에서 이미지 필터링 작업을 추가로 해주신 후, 우측 상단 대시보드 제어판의 "학습 시작" 버튼을 눌러 재학습을 진행해주도록 합니다.
이 기능을 사용하기 위해서는 먼저 YOLO 모델을 학습한 뒤 "저장"을 해야 합니다. YOLO 모델은 객체 탐지에서 학습할 수 있습니다. 이후 저장된 모델을 불러와서 여기서 활용할 수 있습니다.
로그인 되어있는 상태에서, 사전에 학습 완료된 모델이 있다면 "로드" 버튼을 통해 AI 모델을 불러올 수 있습니다. "객체 탐지" 버튼을 누르면 자율주행 중 정지, 가속, 감속 등 다양한 표지판에 따라 추가적인 제어가 실행됩니다.
신뢰도 임계값이 높을수록, 더욱 더 "확실한" 객체만 탐지하고, 낮을수록 오탐지율이 올라갑니다. 감속 속도와 가속 속도 제한치를 조절할 수 있습니다.
차량을 일반적인 키 입력값이 아닌 자연어를 통해 제어하는 모드입니다. 하단의 채팅 히스토리를 통해 차량을 제어해보세요!
ChatDrive에서는 이미지 데이터로 모델을 학습하여 사용하는 것이 아니라, 이미 수많은 데이터로 학습된 범용 모델인 LLM을 활용하여 주행을 해봅니다. 로봇 제어에서도 다양한 데이터로 학습된 이런 방식이 주로 활용되고 있습니다. 다만, 이런 모델은 반응이 느리기 때문에, 조금씩 움직이게 됩니다.
"가운데 차량이 중앙 흰선(white-dashed line) 보다 왼쪽에 위치해 있으면 "우회전" 출력해줘. 차량이 중앙 흰색 점선(white-dashed line) 보다 오른쪽에 있으면 "좌회전" 해줘. 차량이 중앙 흰선(white-dashed line) 위에 있거나 바로 붙어있으면 "직진" 출력해줘. 그리고 왜 그렇게 했는지 설명도 이후에 출력해줘."
"차량이 파란선위에 있는지 빨간선 위에있는지 회색 도로 위에있는지 알려줘. 차량이 파란선 위에있거나 파란선에 가까우면 우회전해줘. 차량이 빨간선 위에있거나 빨간선과 가까우면 좌회전 해줘. 차량이 회색 도로위에 있고 도로의 좌우 중앙에 있다면 직진 해줘."
"가운데 차량이, 파란선 흰색선, 빨간선 중에 어디와 가장 가까운지 파악해줘. 파란선과 가까우면 "우회전" 출력해줘. 빨간선이랑 가장 가깝다면 "좌회전". 흰 점선이랑 가장 가깝다면 "직진" 출력해줘. 그런데 흰선이랑 가장 가까워도 파란선이 안보이고 빨간선만 보인다면 "좌회전" 출력해줘. 마찬가지로 흰선이랑 가장가까워도 빨간선이 안보이고 파란선만 보인다면 "우회전" 출력해줘. 즉 도로의 곡률을 보고, 앞의 도로가 좌측으로 크게 꺾여있으면 "좌회전"출력해주고 우측으로 많이 꺾여있으면 "우회전" 출력해줘."
"너는 차량 운전자야. 직진 좌회전 우회전 중에 하나를 골라야하는데, 도로 밖으로 안나가게 해야해. 차량 주변의 흰선의 곡률을 보고 straight, left curved, right curved 인지 어디에 가까운지 판단해주고, straight인 경우 "직진", left curved 인 경우 "좌회전", right curved인 경우 "우회전" 출력해줘. 그런데 우선적으로 흰선이 차량 오른쪽에 있으면 "우회전" 출력을 해주고, 왼쪽에 있으면 "좌회전" 출력을 해줘."
"흰선 따라서 가줘. 조향을 어디로 해야할까. 직진 좌회전 우회전 중에 하나 선택해. 차량이 파란선위에 있는지 빨간선 위에있는지 회색 도로 위에있는지 알려줘. 차량이 파란선 위에있거나 파란선에 가까우면 우회전해줘. 차량이 빨간선 위에있거나 빨간선과 가까우면 좌회전 해줘. 차량이 회색 도로위에 있고 도로의 좌우 중앙에 있다면 직진 해줘. 그런데 차량이 도로 가운데 있더라도 정면에 바라보는 방향이 파란색이면 "우회전" 해줘. 차량이 도로 가운데 있더라도 정면에 바라보는 방향이 "빨간색"이면 "좌회전" 해줘. 차량이 바라보는 방향이 도로이거나, 점선인 경우에는 "직진" 해줘."