KMU-CS Alumni국민대학교 소프트웨어융합대학
인터뷰

“학교의 지원이 있었기에” · 자율주행대회 iCar 팀 인터뷰

21학번 동기 세 명, MPPI와 Rust·CUDA로 전국 2위에 오르다

“학교의 지원이 있었기에” · 자율주행대회 iCar 팀 인터뷰

이번 인터뷰는 iCar 팀 윤여민(소프트웨어학부 4학년) 학생의 서면 답변으로 진행됐다. 바쁜 졸업 학기에도 성실히 답해 준 덕분에, 팀이 어떻게 준비하고 어떤 고민 끝에 전국 2위에 올랐는지 생생하게 담을 수 있었다.

21학번 동기 세 명이 뭉친 ‘iCar’

iCar 팀은 소프트웨어학부 3·4학년 윤여민, 박윤재, 오정규 학생으로 구성됐다. 역할은 다음과 같이 나눴다.

  • 윤여민: MPPI 등 주행 핵심 코드와 전체 코드 아키텍처 설계
  • 박윤재: Rust 코드와 CUDA 커널 최적화
  • 오정규: 하드웨어 문제 해결과 미션 코드 설계

팀명 iCar는 ‘지능형 자동차’를 뜻한다. 세 사람은 입학 초기부터 알고 지낸 21학번 동기로, 이번 대회를 계기로 한 팀이 됐다.

팀은 대회 측 대여 차량으로 본선에 나섰다. 차량을 받은 뒤 휠 얼라인먼트를 맞추고 조향각과 속도를 측정했다. 이때 차량에 ArUco 마커를 부착해 눈대중이 아닌 정량적 수치로 확인했다. 대회 기간 중 한 차례 고장이 났지만, 자이트론 측이 신속하게 수리해 곧바로 복구됐다.

스탠리 대신 MPPI, ‘미래를 내다보는’ 제어

팀이 가장 공을 들인 부분은 제어다. 딥러닝은 신호등 인식에만 쓰고, 차선 인식과 제어, 미션 수행은 고전적인 알고리즘으로 구현했다. 제어기로는 이런 대회에서 흔히 쓰이는 스탠리(Stanley) 컨트롤러 대신 MPPI 컨트롤러를 택했다. 눈앞의 상황에만 반응하는 스탠리와 달리, MPPI는 앞으로의 주행을 미리 시뮬레이션해 대응한다. 그 결과 차량은 비틀거림 없이 주행했고, 라바콘 구간도 매끄럽게 통과했다. 여기에 임베디드 시스템의 성능을 최대한 끌어내기 위해 전체 코드를 Rust로 작성하고, 차선 인식과 MPPI에는 직접 작성한 CUDA 커널을 적용했다.

iCar 팀 차량이 라바콘 구간을 통과하는 모습
라바콘 구간 통과 장면

CPU에서 Vulkan, CUDA까지… 세 번의 재구현

가장 큰 고비는 MPPI를 실제 차량에서 실시간으로 구동하는 일이었다. 처음 CPU로 구현했을 때는 차량에 탑재된 AMD 미니PC로 충분한 샘플 수를 확보하기 어려웠다. 팀은 GPU를 활용하기 위해 Vulkan으로 다시 구현했다. 이후 대회 도중 NVIDIA Orin NX 16GB가 새로 지급되자, CUDA 커널을 직접 작성해 한 번 더 최적화했다. 하나의 알고리즘을 CPU에서 Vulkan, CUDA로 세 차례 옮겨 가며 제한된 하드웨어에서 필요한 성능을 끌어낸 셈이다.

1차 129.6초, 2차는 ‘모 아니면 도’

본선 1차 경주에서 iCar 팀은 129.6초를 기록했다. 1위 팀이 60초대를 기록한 상황이라 역전은 어렵다고 판단했다. 그래서 2차 경주에는 제어 파라미터를 더 공격적으로 조정한 코드를 투입했지만, 주행에 실패해 기권했다.

“2차 주행은 실험적인 코드라는 걸 알고 있었기에 덤덤했지만, 1차 주행 때는 팀원 모두가 긴장했습니다. 특히 신호등을 인식해 좌회전해야 하는 구간과 커브길에 진출입할 때 많이 긴장했습니다.”

단 다섯 번의 연습, 그 무대가 된 자율주행 스튜디오

iCar 팀은 학교의 지원을 여러 차례 언급했다. 가장 실질적인 도움으로는 대회장이기도 한 자율주행 스튜디오를 꼽았다. 실제 대회장에서 연습할 수 있었고, 냉방이 되는 실내 공간이라 무더위 속에서도 장시간 실험에 집중할 수 있었다는 설명이다. 다만 스튜디오가 평일에만 개방돼, 취업 준비로 바쁜 팀원들이 대회 기간 방문한 것은 다섯 차례에 그쳤다. 팀은 방문할 때마다 최대한 많은 실험을 진행했다. 그 밖의 시간에는 시뮬레이터로 각자 코드를 개선하며 부족한 연습 시간을 메웠다.

팀은 감사의 뜻도 전했다. 대회에 관심을 기울인 윤명근 처장, 스튜디오를 관리하며 학생들의 편의를 살핀 학과 사무실, 국민대 교수진, 그리고 대회를 운영하고 차량을 지원한 자이트론이다. 재학 중 도움이 된 수업으로는 윤상민 교수의 ‘컴퓨터비전’과 한재섭 교수의 ‘강화학습’을 꼽았다. 컴퓨터비전에서 배운 고전적 영상처리 기법은 차선 인식 알고리즘 설계의 밑거름이 됐다. 강화학습에서 다룬 제어·최적화 내용은 차량 제어 알고리즘을 이해하는 데 도움이 됐다.

“실제 차량은 제어에 딜레이가 있는 등, 시뮬레이션에서 잘 동작하던 코드도 예상하지 못한 문제가 생길 수 있다는 점을 경험했습니다. 임베디드 환경에서 수치 연산 코드를 최적화하는 법도 배웠습니다. 보통 AI 분야에서는 소프트웨어만 다룰 때가 많은데, 직접 하드웨어까지 조작할 수 있어 특히 재미있었습니다.”

남은 숙제는 차선 인식, 그리고 후배들에게

2등상 수상 소감을 묻자 팀은 “연습 횟수가 적었음에도 2등을 수상해 만족스럽다”고 답했다. 아쉬운 점으로는 차선 인식을 꼽았다. 연습장을 자주 찾지 못해 차선 인식 알고리즘을 충분히 개선하지 못했고, 2차 주행의 좌회전 실패 역시 차선 인식 오류에서 비롯됐다. 다음에 다시 대회에 나선다면 차선 인식부터 개선하고 싶다고 했다.

팀원 모두 내년 졸업을 앞두고 있어, 국민대학교 자율주행 경진대회 출전은 이번이 마지막이다. 이후의 구체적인 계획은 아직 정하지 않았다. 후배들에게는 이런 말을 남겼다.

“혹시 내년 대회에 참가할까 망설이고 계신다면 예선이라도 한번 도전해 보시길 추천드립니다. 저도 예선에 참여할 때는 자신이 없었지만 예선 과제를 수행하며 많이 배울 수 있었습니다. 화이팅!”