Skip to main content
Summary

계획은 아직 움직임이 아니다

앞 장에서 살펴본 경로 계획은 차량이 앞으로 어디를, 어떤 속도로 지나갈지 정한다. 하지만 계획된 궤적은 지도 위의 선에 가깝다. 실제 차량은 무게가 있고, 타이어가 있고, 브레이크와 조향 장치가 있으며, 노면과 날씨의 영향을 받는다. 좋은 판단도 바퀴와 브레이크가 정확히 실행하지 못하면 안전한 주행이 될 수 없다.

차량 제어는 계획을 실제 움직임으로 바꾸는 단계다. 예를 들어 시스템이 "3초 뒤 정지선 앞에 부드럽게 멈춘다"는 궤적을 만들었다고 하자. 제어기는 이를 가속 페달, 브레이크 압력, 조향각 명령으로 바꾼다. 동시에 차량이 정말 계획대로 움직이는지 계속 확인한다. 속도가 예상보다 빠르면 제동을 늘리고, 차선 중심에서 오른쪽으로 밀리면 조향을 왼쪽으로 보정한다.

이 과정은 짧은 주기로 반복된다. 자율주행차는 한 번 명령을 내리고 끝내지 않는다. 센서와 차량 내부 신호로 현재 속도, 조향각, 바퀴 회전, 가속도, 요레이트를 측정하고, 계획과 실제 움직임의 차이를 줄인다. 여기서 요레이트는 차량이 수직축을 중심으로 얼마나 빠르게 회전하는지를 뜻한다. 쉽게 말해 차가 코너를 돌 때 몸체가 얼마나 돌아가고 있는지 보는 값이다.

차량 제어와 실제 움직임AI 생성 이미지

종방향 제어: 얼마나 빠르게 가고 멈출 것인가

종방향 제어는 차량의 앞뒤 방향 움직임을 다룬다. 속도를 유지하고, 가속하고, 감속하고, 정지선에 맞춰 멈추는 일이 여기에 속한다. 고속도로에서 앞차와 일정 거리를 유지하는 기능, 교차로 신호가 빨간불로 바뀌었을 때 부드럽게 멈추는 기능, 내리막에서 속도가 과하게 붙지 않도록 제동하는 기능이 모두 종방향 제어의 예다.

종방향 제어가 보는 핵심 값은 목표 속도와 실제 속도의 차이다. 목표가 시속 50km인데 실제 속도가 시속 46km라면 가속이 필요하다. 반대로 정지선까지 남은 거리가 짧은데 속도가 높으면 감속해야 한다. 단순해 보이지만 실제로는 고려할 것이 많다. 승객이 불편하지 않게 가속도를 제한해야 하고, 뒤차가 가까운 상황에서는 급제동을 피해야 하며, 보행자가 갑자기 나타나면 제한된 거리 안에서 최대한 빨리 멈춰야 한다.

브레이크 명령도 즉시 결과로 이어지지 않는다. 유압식 브레이크나 전자식 브레이크 시스템에는 반응 지연이 있고, 타이어와 노면 사이의 마찰력에 따라 실제 감속 성능이 달라진다. 같은 브레이크 압력을 줘도 마른 아스팔트와 젖은 노면, 눈길에서 멈추는 거리는 크게 다르다. 그래서 자율주행 제어기는 단순히 "브레이크를 몇 퍼센트 밟는다"가 아니라, 현재 노면에서 이 명령이 어느 정도 감속을 만들 수 있는지 추정해야 한다.

횡방향 제어: 차선을 따라 어떻게 돌 것인가

횡방향 제어는 차량의 좌우 방향 움직임을 다룬다. 차선 중심을 따라가고, 곡선을 돌고, 차선을 변경하고, 장애물을 피하는 조향 제어가 여기에 속한다. 경로 계획이 "오른쪽 차선으로 4초에 걸쳐 이동하라"고 정하면, 횡방향 제어는 실제 조향각을 계산해 차량이 그 궤적을 따라가도록 만든다.

횡방향 제어에서 중요한 값은 차선 중심이나 목표 궤적에서 얼마나 벗어났는지, 차량의 방향이 목표 방향과 얼마나 다른지다. 이를 각각 횡방향 오차와 헤딩 오차라고 부른다. 횡방향 오차는 차가 목표 선의 왼쪽이나 오른쪽으로 얼마나 밀렸는지를 뜻하고, 헤딩 오차는 차의 앞머리가 목표 진행 방향과 얼마나 어긋났는지를 뜻한다.

곡선 도로에서는 조향 제어가 더 어려워진다. 차량은 조향각을 주는 순간 바로 원하는 곡률로 움직이지 않는다. 속도가 높을수록 같은 조향각도 더 큰 횡가속을 만들고, 승객은 몸이 바깥쪽으로 밀리는 느낌을 받는다. 너무 급하게 조향하면 타이어가 버틸 수 있는 마찰 한계를 넘어 미끄러질 수 있다. 따라서 제어기는 차선 중심만 바라보지 않는다. 현재 속도, 도로 곡률, 타이어 접지력, 차량의 회전 속도까지 함께 보며 조향 명령을 제한한다.

종방향 제어와 횡방향 제어는 서로 독립적이지 않다. 빠르게 달릴수록 급격한 조향은 위험해지고, 강하게 제동하는 중에는 타이어가 좌우 방향 힘을 충분히 내기 어렵다. 위급한 상황에서 "세게 브레이크를 밟으면서 동시에 급하게 꺾는" 행동이 항상 좋은 답이 아닌 이유가 여기에 있다.

차량은 점이 아니라 무거운 물체다

경로 계획에서는 차량을 일정한 크기의 박스나 단순한 운동체로 표현할 수 있다. 하지만 제어 단계에서는 차량의 물리적 특성이 더 중요해진다. 차량 질량, 무게중심, 타이어 상태, 노면 마찰, 경사도, 서스펜션 움직임이 실제 제어 성능을 바꾼다.

차량이 무거울수록 같은 제동력으로 멈추기 어렵다. 승객이나 화물이 많이 실린 차량은 빈 차량보다 관성이 크다. 내리막에서는 중력이 차량을 앞으로 밀기 때문에 더 많은 제동력이 필요하고, 오르막에서는 같은 가속 명령에도 속도가 잘 붙지 않을 수 있다. 전기차처럼 회생제동을 사용하는 차량은 배터리 상태와 온도에 따라 사용할 수 있는 제동량이 달라지기도 한다.

타이어 마찰은 제어의 한계를 정한다. 타이어는 노면과 맞닿은 작은 면적을 통해 가속, 제동, 조향 힘을 모두 만들어 낸다. 이 힘에는 한계가 있다. 흔히 이를 마찰 원 또는 마찰 한계로 설명한다. 타이어가 앞뒤 방향 제동에 대부분의 힘을 쓰고 있으면, 좌우 방향으로 꺾을 여유가 줄어든다. 반대로 급격히 코너링하는 중에는 추가 제동을 많이 걸기 어렵다.

노면 상태도 계속 바뀐다. 마른 아스팔트에서 잘 작동하던 제어 값이 빗길에서는 과격할 수 있다. 눈길에서는 작은 조향이나 제동 명령에도 미끄러짐이 발생할 수 있다. 포트홀을 밟으면 바퀴가 순간적으로 충격을 받고 접지력이 흔들린다. 도로 공사 구간의 임시 포장, 맨홀 뚜껑, 낙엽, 모래, 살얼음도 제어 안정성을 떨어뜨린다. 자율주행차가 실제 도로에서 어려운 이유는 판단 문제가 끝난 뒤에도 물리적 실행 문제가 남아 있기 때문이다.

PID 제어: 오차를 줄이는 기본 언어

대표적인 제어 방식 중 하나가 PID 제어다. PID는 비례, 적분, 미분 제어를 뜻한다. 이름은 어렵지만 직관은 간단하다. 목표와 실제의 차이를 보고, 그 차이를 줄이기 위해 명령을 조정하는 방식이다.

비례 제어는 현재 오차가 클수록 더 강하게 반응한다. 목표 속도보다 많이 느리면 더 세게 가속하고, 차선 중심에서 많이 벗어나면 더 크게 조향한다. 적분 제어는 오차가 오래 남아 있는지를 본다. 예를 들어 약한 오르막 때문에 계속 목표 속도보다 조금 느리다면, 시간이 지나며 가속 명령을 더해 오차를 없앤다. 미분 제어는 오차가 얼마나 빠르게 변하는지를 본다. 오차가 급격히 줄거나 커질 때 반응을 완화해 흔들림을 줄인다.

PID 제어는 구조가 단순하고 계산이 빠르다. 그래서 속도 제어, 조향 보정, 액추에이터 제어 같은 여러 부분에서 널리 쓰인다. 액추에이터는 실제 물리 동작을 만드는 장치다. 조향 모터, 브레이크 장치, 구동 모터가 여기에 해당한다.

하지만 PID만으로 모든 상황을 해결하기는 어렵다. 급커브, 미끄러운 노면, 복잡한 회피 상황처럼 여러 제약을 동시에 고려해야 하는 경우에는 단순히 현재 오차만 줄이는 방식이 부족할 수 있다. 너무 늦게 반응하면 차선을 벗어나고, 너무 세게 반응하면 차량이 흔들린다. 그래서 고도 자율주행에서는 PID를 다른 제어 방식과 함께 사용하는 경우가 많다.

모델 예측 제어: 가까운 미래를 보며 조정한다

모델 예측 제어, 즉 MPC는 차량이 앞으로 몇 초 동안 어떻게 움직일지 예측하면서 제어 명령을 고르는 방식이다. 현재 오차만 보는 것이 아니라, 여러 후보 조향·가감속 명령을 넣어 보고 "이 명령을 따르면 1초 뒤, 2초 뒤 차량이 어디에 있을까"를 계산한다. 그런 다음 충돌 위험, 차선 이탈, 승차감, 조향 한계, 가속도 한계를 함께 고려해 가장 적절한 명령을 선택한다.

MPC의 장점은 제약 조건을 다루기 좋다는 점이다. 예를 들어 차량은 조향각을 무한히 크게 줄 수 없고, 브레이크도 물리적 한계가 있다. 승객 안전을 위해 가속도와 저크도 제한해야 한다. 저크는 가속도가 얼마나 갑자기 변하는지를 뜻한다. 급가속보다 더 불쾌하게 느껴지는 것이 갑작스러운 가속 변화일 때가 많다. MPC는 이런 제한을 계산 안에 넣어 "가능하면서도 안전한" 명령을 찾는다.

예를 들어 고속도로에서 앞차가 갑자기 속도를 줄였다고 하자. 제어기는 강한 제동만 생각하지 않는다. 현재 차간거리, 뒤차와의 거리, 옆 차선의 여유, 노면 마찰, 차량 속도, 승객에게 전달될 충격을 함께 본다. 충분히 멈출 수 있으면 직진 제동을 선택하고, 정지가 어렵고 옆 차선이 비어 있다면 회피 조향과 감속을 조합할 수 있다. 단, 이때도 타이어 마찰 한계를 넘지 않아야 한다.

MPC는 계산량이 많고 차량 모델의 정확도에 영향을 받는다. 모델이 현실과 다르면 예측도 빗나간다. 그래서 실제 시스템에서는 상세한 모델, 단순화한 모델, 규칙 기반 안전 제한, 하위 PID 제어가 계층적으로 결합된다. 중요한 것은 한 가지 알고리즘이 모든 것을 해결한다기보다, 각 방식이 맡는 역할을 나누어 안정성을 높인다는 점이다.

급제동과 급조향 사이의 선택

위험 회피 상황에서 제어기는 짧은 시간 안에 어려운 선택을 해야 한다. 보행자가 갑자기 도로로 들어오거나, 앞차에서 낙하물이 떨어지거나, 옆 차가 차선을 침범하는 상황을 생각해 보자. 이때 목표는 단순히 충돌을 피하는 것이 아니다. 피하려다 더 큰 위험을 만들지 않아야 한다.

급제동은 직관적인 대응이지만 뒤차 추돌 위험과 노면 미끄러짐을 고려해야 한다. 급조향은 앞의 장애물을 피할 수 있지만 옆 차선 차량, 보도, 중앙분리대와의 충돌 위험을 만들 수 있다. 또한 속도가 높거나 노면이 미끄러우면 조향 회피 자체가 불안정해진다.

따라서 제어 알고리즘은 몇 가지를 동시에 본다. 첫째, 현재 속도에서 남은 거리 안에 멈출 수 있는가. 둘째, 조향 회피를 할 공간이 있는가. 셋째, 타이어가 제동과 조향 힘을 동시에 감당할 수 있는가. 넷째, 명령을 내렸을 때 차량 자세가 안정적으로 유지되는가. 다섯째, 주변 차량과 보행자에게 예측 가능한 움직임인가.

자율주행차의 좋은 제어는 항상 부드럽기만 한 제어가 아니다. 평상시에는 승차감과 자연스러움을 우선하지만, 위험 상황에서는 강한 제동이 필요할 수 있다. 다만 그 강한 명령도 물리 한계 안에서 실행되어야 한다. 안전한 제어는 과감함과 제한을 함께 다룬다.

실제 도로는 제어기를 계속 시험한다

시험장에서는 노면이 균일하고 차선이 선명하며 상황을 반복하기 쉽다. 실제 도로는 다르다. 비가 오면 센서 인식도 어려워지지만, 제어 관점에서는 타이어 접지력도 낮아진다. 눈길에서는 바퀴가 잠기거나 헛돌 가능성이 커진다. 포트홀이나 요철은 차량의 자세를 순간적으로 흔들고, 물웅덩이는 한쪽 바퀴의 저항을 바꿔 차량을 한쪽으로 끌 수 있다.

불균일한 노면에서는 좌우 바퀴가 서로 다른 마찰을 경험한다. 한쪽은 마른 아스팔트, 다른 쪽은 얼음 위에 있을 수 있다. 이런 상황에서 제동하면 차량이 한쪽으로 돌아가려는 힘이 생긴다. 사람 운전자도 당황하기 쉬운 조건이며, 자율주행 제어기는 차체 자세 제어, ABS, 구동력 제어 같은 기존 차량 안전 시스템과 협력해야 한다.

결국 차량 제어의 핵심은 계획을 그대로 밀어붙이는 것이 아니라, 지금 차량이 실제로 해낼 수 있는 움직임으로 바꾸는 데 있다. 경로 계획이 "이렇게 가면 좋다"를 말한다면, 제어는 "이 차량이 이 노면에서 이 속도로 정말 그렇게 움직일 수 있는가"를 묻는다.

자율주행의 마지막 단계는 컴퓨터 화면 속 선이 아니다. 타이어가 도로를 붙잡고, 브레이크가 열을 견디고, 조향 장치가 차량의 자세를 바꾸는 물리적 과정이다. 이 실행 단계가 안정적일 때 비로소 인지, 예측, 경로 계획의 판단이 안전한 주행으로 완성된다.

책 목록

자율 주행 기술: 원리, 안전, 상용화까지 이해하는 입문서

전체 목차 보기

이 노트는 보도·비평·교육·연구 목적으로 작성되었습니다. 저작권 문의가 있으시면 에서 알려주세요.

틸노트는 사용자가 AI를 활용해 노트를 쉽게 작성하거나 편집할 수 있는 서비스입니다.

AI 스퀘어 단톡방에 함께해요

AI 활용과 틸노트 사용 팁을 나누는 오픈채팅방입니다. 입장 비밀번호는 tilnote입니다.

참여하기