자율·협력주행(Cooperative autonomous driving) 시스템은 V2X 통신을 통해 공유되는 기본 안전 메시지 'BSM(Basic Safety Message)'을 매개로 하여 동작합니다. 각 차량은 BSM 메시지를 통해 자신의 정보를 주기적으로 공유하고, 그 주변 차량들은 전달받은 BSM 내용을 분석하여 상황을 판단하는 거죠. 

하지만 BSM은 차량이 어째서 그렇게 움직이는지, 즉 기동 목적까지 알려주지는 않습니다. 아래 BSM 데이터 구성요소를 살펴보면 차량의 속도, 위치, 조향각 등 차량 운행의 한 순간에 대한 기본 정보만을 제공하는 것을 볼 수 있습니다. 

다시 말해 BSM은 단순한 현황 정보만 공유할 뿐 차량이 어떠한 목적을 가지고 움직이는지에 대한 내용은 포함하지 않습니다. 그러한 BSM만으로도 충분히 자율주행을 구현할 수 있긴 하지만, 더 나아가 상대의 이동 목적을 미리 알 수 있다면 급박한 상황에서 아주 큰 도움이 되지 않을까요? 

상황을 그려 봅시다. 이동 목적을 전달하려는 차를 'HV(Host Vehicle)'라고 하고, 그 목적 메시지를 전달받는 차를 'RV(Remote Vehicle)'라고 정의해 보죠. 도로에서 각 RV가 자신에게 전달되는 BSM 정보에 따라서 자율주행을 하고 있는 상황입니다. 

이때 만약 어떤 HV가 갑자기 자신의 차선으로 끼어든다면? 해당 HV가 보낸 BSM 정보를 종합해서 실시간으로 반응해야 하겠죠. 아주 급박한 일입니다. 그런데 만약 HV가 자신이 곧 차선 변경을 할 것이란 정보를 해당 차선에 있는 RV들에게 미리 공유했다면 어땠을까요? 

그랬다면 RV들은 HV의 이동 목적에 부합되게끔 자기 이동 경로를 재구성함으로써 참여자 모두 다 훨씬 더 안전하고 효율적인 주행을 할 수 있을 겁니다. 일이나 공부도 그걸 왜 해야 하는지를 알고 할 때 효율성이 훨씬 더 높아지는 것처럼 말이죠.

MSCS 

그래서 'MSCS(Maneuver Sharing and Coordinating Service)'라는 서비스가 제안되었습니다. '기동 공유 및 조정 서비스'쯤의 뜻이 되겠는데 아직 우리말로 확실히 정립되지 않은 듯하니 일단 원어 그대로 이해하시는 게 좋겠습니다.

MSCS는 V2X 통신이 가능한 차량끼리 서로의 이동 목적을 공유하도록 하는 서비스입니다. 앞서 보았듯 BSM 정보를 보낸 차량이 어떠한 목적으로 해당 정보를 보냈는지 알 수 있다면 보다 안전하고 효율적인 이동이 가능해질 것이라는 전제에 따른 시스템입니다. 

실시간으로 주변 정보를 계산하여 이후 동작을 계획하는 기존 BSM 기반 자율주행에서 한 걸음 더 나아가, MSCS는 다른 차량의 계획된 궤적 및 목적을 고려하여 주변 모든 차량들이 각자의 이동 궤적을 최적화하는 방법입니다.  

MSCS의 내용은 SAE J3186 표준에 나와 있습니다. J3186에서는 MSCS의 사용 사례를 크게 두 가지, 'Cooperative Lane Change'와 'Cooperative Lane Merge' 상황으로 정의하고 있습니다. 차량이 차선을 변경하려 할 때와 차량이 진입로를 통해 도로로 합류하려 할 때, 그 두 경우에 MSCS가 특히 유용하다는 뜻이죠. 이때 MSCS가 수행되어 모든 참여 차량에게 가장 안전한 방식으로 차선 변경 및 병합 절차를 제안하고 각 차량이 이를 수락함으로써 실행하게 됩니다. 

주의할 점은, 차량 이동의 목적성에 따라 동작하는 시스템인 만큼 MSCS는 1)일반 차량을 위한 프로토콜, 2)구급차나 경찰차 등 긴급 목적의 특수 차량을 위한 프로토콜로 나누어 두 가지 통신 프로토콜을 사용합니다. 1)일반 차량용 MSCS는 요청 및 응답 프로토콜로 구성되어 상호 간 협상을 통하여 동작하고, 1)특수 차량은 특수 차량을 우선하여 고려해야 하기 때문에 상호 간의 협상 없이 특수 차량의 목적을 우선하여 동작합니다. 

다시 말해 MSCS는 한 차량이 자신의 이동 목적을 주변에 알리고 그 목적을 수행하기 위하여 주변 차량들로 하여금 해당 목적을 이해하고 따라서 모두가 조화롭게 동작하기 위한 서비스입니다. 

MSCS와 MSCM

그럼 MSCS가 어떻게 동작하는지 살펴보겠습니다. 

MSCS에 참가한 차량들은 서로 'MSCM(Maneuver Sharing and Coordination Messages)' 메시지로 소통합니다. MSCS, MSCM이라 하니 왠지 복잡해 보이지만 'MSC 서비스(S)'가 'MSC 메시지(M)'로 소통하는 것으로 보면 간단합니다. 

아래 그림은 MSCM의 데이터 구조를 나타냅니다. 

어떤 이동 목적에 부합하는 주변 차량 전체의 움직임을 'Maneuver'라고 정의하고, 그러한 Maneuver을 수행하기 위한 각 차량의 동작을 'Sub-Maneuver'이라 정의합니다. 앞서 보았듯 그러한 Maneuver 합의를 요청한 차량은 HV가 되겠죠. 

Maneuver은 1개 이상의 여러 Sub-Maneuver를 통해 완성됩니다. Sub-maneuver는 이동 목적을 전달한 차량(Executant Vehicle)이 해당 목적에 영향을 받는 주변 차량(Affected Vehicle)을 선정하여, 아래와 같은 정보를 담고 있는 MSCM 메시지를 보냄으로써 수행됩니다. 각 Sub-maneuver은 Executant Vehicle이 수행해야 하며, 구급차 등의 특수 차량이 아니라면 Affected Vehicle의 동의를 얻어야 합니다. 

그러한 MSCM 메시지의 데이터 구성요소는 다음과 같습니다. 

MSCM 데이터 구성요소 중 'MSCM Type'은 MSCM 메시지의 유형을 나타냅니다. MSCM의 활용 목적에 총 8가지 유형이 사용됩니다. 각 MSCM 유형은 다음과 같습니다. 

그리고 MSCM 데이터 구성요소 중에서 Maneuver은 여러 개의 Sub-maneuver에 대한 리스트를 갖고 있습니다. 각 Sub-Maneuver의 데이터 구조는 다음과 같습니다. 

하나의 Maneuver에는 위 8가지 유형의 MSCM이 프로토콜로 활용됩니다.  

MSCS 동작 과정 

그럼 MSCS의 동작 과정을 알아보기 위하여 일반 차량의 MSCS 동작 과정을 보겠습니다. MSCS는 1)'Awareness State(인지 상태)', 2)'Maneuver Negotiation State(기동 협상 상태)', 3)'Maneuver Execution State(기동 실행 상태)' 순서로 동작하게 됩니다. 

 

 

'Awareness State'는 MSCS 동작과 관련된 것이 아니라 모든 차량들이 BSM을 통해서 주변을 인식하고 있는 일반적인 상태를 의미합니다. MSCM 'Type 0' 메시지를 보내어 의도를 알리는 것만 가능합니다. 

'Maneuver Negotiation State'는 MSCS를 실행하기 위한 상호 간의 협상을 진행하는 단계입니다. (주의! 특수 차량의 경우 협상 단계가 없습니다.) MSCM 'Type 1~3' 메시지를 활용하여 Maneuver을 요청하고, 그에 대한 응답과 예약을 하는 과정을 거칩니다. 만약 HV나 RV 측에서 취소가 필요하다고 판단할 경우 MSCM 'Type 4,5' 메시지를 활용하여 취소할 수 있습니다. 

마지막으로 'Maneuver Execution State'는 승인된 Maneuver에 대해 각 HV와 RV가 적절하게 이동하는 상태를 의미합니다. 이 상태에서 이동 목적을 전달한 차량은 MSCM 'Type 7' 메시지를 RV와 HV에 전송해야 합니다.  이로써 Maneuver Execution State를 마치고 모든 Sub-Maneuver이 완료될 때 하나의 Maneuver이 종료되는 것입니다. 

오늘은 MSCS가 무엇인지에 대해 알아보았습니다. 간단히 정리해 보면, MSCS는 기존의 BSM 시스템에 더하여 차량 이동의 의도를 전달함으로써 더욱 안전하고 효율적인 교통을 가능하게 하는 시스템이라 할 수 있겠네요. 

- 아우토크립트 기술기획팀 송호승 연구원