카운터스티어는 자전거로 왼쪽으로 돌기 직전에 핸들을 순간적으로 오른쪽으로 먼저 꺾는 동작이다. 이 동작은 몸에 밴 습관이 아니라 조향이 경로에 닿는 전달함수가 가진 우반평면(RHP) 영점이 시키는 반응이고, 같은 수학이 뒷바퀴로 조향하는 자전거를 아무도 못 타게 만든다.
왼쪽으로 가려면 먼저 오른쪽으로

자전거로 왼쪽으로 돌 때 핸들을 어느 쪽으로 먼저 꺾느냐고 물으면 대부분 왼쪽이라고 답한다. 그것도 아주 확신에 차서 답한다. 그런데 같은 사람의 주행을 슬로모션으로 찍어 보면 핸들은 언제나 오른쪽으로 먼저 꺾여 있다. 아주 짧게, 본인은 알아채지 못할 만큼이다.
몸은 이 동작을 정확히 해내는데 머리는 그런 적 없다고 말한다. 머리와 손의 이 불일치가 이 글의 출발점이다. 요령을 배운 사람만 하는 것도 아니고 개인차도 아니다 — 자전거라는 기계의 구조가 라이더에게 이 순서를 강요한다. 그 구조가 무엇이고, 같은 구조가 어떤 자전거를 아예 못 타게 만드는지를 순서대로 따라간다.
기울여야 돈다 — 역진자와 카운터스티어
자전거가 도는 원리는 자동차와 다르다. 자동차는 바퀴가 옆으로 미는 힘으로 돌지만, 자전거는 먼저 안쪽으로 기울어야 돈다. 곡선을 그리는 동안 몸이 바깥으로 밀리는 힘을 버티는 것이 이 기울기다.
그러면 무엇으로 기울일까? 자전거와 라이더를 합친 질량중심은 지면에서 1미터쯤 위에 있고, 이 계는 접지선 위에 세워 둔 역진자와 같다. 역진자를 왼쪽으로 넘어뜨리는 가장 확실한 방법은 받침을 오른쪽으로 빼는 것이다.
그 받침이 접지선이고, 접지선을 옆으로 빼는 조작이 핸들이다. 왼쪽으로 기울고 싶으면 바퀴를 오른쪽으로 내보내야 한다. 그러면 차체가 왼쪽으로 넘어가기 시작하고, 그때 비로소 핸들을 왼쪽으로 돌려 넘어짐을 회전으로 바꾼다. 순서는 이것으로 설명이 된다. 남은 것은 이 순서가 왜 선택의 문제가 아닌지다.
자전거를 아주 천천히 몰면서 손끝의 힘을 빼 보면 이 동작이 손에 잡힌다. 시속 5km 이하에서는 핸들이 좌우로 계속 잔진동을 하는데, 그게 계속 기울어지는 차체를 계속 되잡는 카운터스티어의 연속이다.
전달함수의 RHP 영점 — 자전거의 첫 반응
손이 아는 순서를 이제 식으로 옮겨 보자. 그 전에 용어를 둘만 깔아 둔다. 전달함수는 입력이 들어갔을 때 출력이 어떻게 나오는지를 $s$에 대한 분수식 하나로 적은 것이다. 분모를 0으로 만드는 $s$가 극(pole), 분자를 0으로 만드는 $s$가 영점(zero)이다. 극은 계가 스스로 움직이는 방식을 정하고, 영점은 입력이 출력에 닿는 경로를 정한다.
복소평면의 오른쪽 절반에 영점이 있는 계를 비최소위상(non-minimum phase) 시스템이라 하고, 그 영점을 우반평면 영점(right-half-plane zero), 줄여서 RHP 영점이라고 부른다. 이런 계의 표식이 역응답이다 — 계단 입력을 넣으면 출력이 최종 도달 방향과 반대로 먼저 움직였다가 되돌아온다.
Åström과 Klein, Lennartsson이 2005년에 정리한 자전거 모델에서 차체의 기울기 $\varphi$는 조향각 $\delta$에 대해 이렇게 움직인다(오른쪽을 양으로 잡았다).
$h$는 질량중심 높이 1.028m, $b$는 휠베이스 1.00m, $a$는 뒷바퀴 접지점에서 질량중심까지의 수평거리 0.492m다(논문 Table 1의 라이더 포함 값). 왼쪽 항이 역진자의 불안정 극을 만든다.
$m$은 라이더까지 합친 질량 87kg, $J$는 접지선을 축으로 한 관성모멘트다. 논문이 4차 모델로 실측한 극 3.05 rad/s와 식 2의 근사는 1.3% 차이다. 이 극의 시간 상수 $1/p$가 약 0.32초 — 손을 놓으면 자전거는 그 정도 빠르기로 넘어진다.
이제 식 1의 오른쪽 괄호를 다시 보자. 괄호 안의 두 항은 부호가 같다. 오른쪽으로 꺾으면 조향각도 조향 속도도 차체를 왼쪽으로 미는 쪽으로 함께 작동한다는 뜻이다. 그러니 첫 반응과 나중 반응의 방향이 갈리는 출력은 기울기가 아니다.
갈리는 쪽은 경로다. 핸들을 오른쪽으로 꺾는 순간 접지점은 곧바로 오른쪽으로 옮겨 가고, 자전거가 그리는 자국도 먼저 오른쪽으로 밀린다. 그렇게 만들어진 왼쪽 기울기가 잠시 뒤 회전을 왼쪽으로 데려간다. 앞포크가 기울기를 붙잡아 준 상태에서 조향 토크부터 경로까지의 전달함수를 쓰면, 그 분자의 영점이 $\sqrt{g/h}$ 자리에 앉는다(논문 식 21). 식 2의 근사값과 같은 크기의 우반평면 영점이다. 그래서 왼쪽으로 기울라는 명령을 받은 제어기는 먼저 오른쪽으로 꺾을 수밖에 없다.
말로는 어려우니 굴려 보자. 먼저 카운터스티어 없이 그냥 왼쪽으로 꺾고 버티는 경우다.
g, h, b, a = 9.81, 1.028, 1.00, 0.492
V = 5.0 # m/s
dt = 0.0002
# phi > 0 = 오른쪽 기울기, delta > 0 = 오른쪽 조향
delta = -0.02 # 핸들을 왼쪽으로 꺾고 그대로 유지
phi, dphi = 0.0, 0.0
t = 0.0
while abs(phi) < 0.5:
ddphi = (g / h) * phi - (V / (b * h)) * (V * delta) # delta는 상수 → adelta_dot = 0
dphi += ddphi * dt
phi += dphi * dt
t += dt
print(f"조향각 delta = {delta:+.3f} rad (왼쪽)")
print(f"기울기 phi 부호 = {'오른쪽' if phi > 0 else '왼쪽'}")
print(f"|phi| > 0.5 rad 도달 t = {t:.2f} s")조향각 delta = -0.020 rad (왼쪽)
기울기 phi 부호 = 오른쪽
|phi| > 0.5 rad 도달 t = 0.99 s왼쪽으로 꺾었는데 오른쪽으로 넘어간다. 그것도 1초 만에. 차체가 바깥으로 밀리는데 기울기가 그걸 받쳐 주지 않으니 당연한 결과다.
그럼 라이더를 붙여 보자. 기울기에 비례해(P) 되잡고 기울기의 변화 속도에도(D) 반응하는 PD 제어기에 조향 지연 0.08초를 붙였고, 명령은 왼쪽 기울기 0.10 rad — 정상적인 좌회전이다.
g, h, b, a = 9.81, 1.028, 1.00, 0.492
V, dt, T = 5.0, 0.0002, 8.0
Kp, Kd, tau = 6.0, 2.0, 0.08 # 라이더 PD + 조향 액추에이터 1차 지연
phi_ref = -0.10 # 왼쪽으로 기울여 왼쪽으로 돌라는 명령
phi = dphi = delta = 0.0
y = psi = 0.0 # 접지점 가로 위치, 진행 방향각
peak_d, peak_t, flip_t, peak_y, peak_yt = 0.0, 0.0, None, 0.0, 0.0
for i in range(int(T / dt)):
t = i * dt
delta_cmd = Kp * (phi - phi_ref) + Kd * dphi
ddelta = (delta_cmd - delta) / tau
ddphi = (g / h) * phi - (V / (b * h)) * (a * ddelta + V * delta)
dphi += ddphi * dt
phi += dphi * dt
delta += ddelta * dt
psi += (V * delta / b) * dt
y += (V * psi) * dt
if delta > peak_d:
peak_d, peak_t = delta, t
if flip_t is None and delta < 0:
flip_t = t
if y > peak_y:
peak_y, peak_yt = y, t
print(f"초기 조향 최대 delta = {peak_d:+.4f} rad @ t = {peak_t:.3f} s")
print(f"왼쪽으로 넘어간 시각 t = {flip_t:.3f} s")
print(f"경로 오른쪽 최대 이탈 y = {peak_y * 100:+.1f} cm @ t = {peak_yt:.2f} s")
print(f"정상상태 phi = {phi:+.3f} rad, delta = {delta:+.4f} rad")
print(f"검산 delta_ss = phi*g*b/V^2 = {phi * g * b / V ** 2:+.4f} rad")초기 조향 최대 delta = +0.0822 rad @ t = 0.032 s
왼쪽으로 넘어간 시각 t = 0.167 s
경로 오른쪽 최대 이탈 y = +4.9 cm @ t = 0.44 s
정상상태 phi = -0.107 rad, delta = -0.0420 rad
검산 delta_ss = phi*g*b/V^2 = -0.0420 rad이 제어기는 왼쪽으로 돌라는 명령만 받았다. 카운터스티어를 하라는 지시는 코드 어디에도 없다. 그런데 첫 조향은 오른쪽으로 4.7도까지 갔다가 0.167초에 왼쪽으로 넘어가고, 자전거는 그동안 오른쪽으로 4.9cm 밀렸다가 좌회전에 들어간다. 최종 조향각은 검산식 $\delta_{ss} = \varphi gb/V^2$과 소수 넷째 자리까지 맞는다.
그림 1에서 두 곡선 모두 0선 위쪽에서 출발한다. 게인을 바꾸면 봉우리 높이와 전환 시각은 달라지지만 첫 부호는 그대로다. 제어기가 그 부호를 고른 게 아니라 식 1가 그렇게 생겼기 때문이다. 요령이 아니라 식이 시킨 동작이라는 말은 여기까지로 증명이 끝난다.
뒷바퀴로 조향을 뒤집으면
여기까지가 앞바퀴 자전거다. 이제 조향을 뒤로 옮겨 보자. 지게차처럼 뒷바퀴로 방향을 잡는 기계는 흔하니 자전거에서도 안 될 이유가 없어 보인다.
모델 위에서는 바뀌는 게 하나뿐이다. 조향 바퀴가 질량중심 뒤로 가면서 $\dot{\delta}$ 항의 부호가 뒤집힌다.
식 3의 분모는 그대로다. 극은 여전히 $\pm p$이고 오른쪽 극 $p = 3.09$ rad/s는 속도와 무관하다 — 자전거는 서 있든 달리든 같은 빠르기로 넘어진다. 달라진 건 분자다. 영점 $z = V/a$는 앞의 마이너스 부호 때문에 이번에도 우반평면에 있는데, 자리가 속도에 따라 그대로 움직인다. 정지 상태에서 원점에 붙어 있다가 속도를 올리면 그만큼 오른쪽으로 미끄러진다.
그림 2가 그 이동을 보여 준다. 극은 자리를 지키고 영점만 움직이니, 정지에서 출발해 속도를 올리는 동안 둘이 겹치는 순간이 반드시 온다. $z = p$가 되는 속도는 $a \cdot p = 1.52$ m/s, 시속 5.5km다. 걷는 속도다.
이 지점에서 계가 도달 불가능(unreachable) 상태가 된다는 표현은 Åström의 KTH 강연 자료에 나온다. 극과 영점이 같은 자리에서 상쇄되면 입력이 그 모드에 닿지 못한다 — 넘어지는 방향을 조향으로 건드릴 수 없다는 뜻이다. 핸들이 멀쩡히 붙어 있고 라이더가 아무리 빨리 반응해도, 그 속도에서는 핸들이 넘어짐과 무관한 장치가 된다.
어떤 컨트롤러도 못 넘는 부등식
$z = p$ 한 점만 문제라면 그 속도를 빨리 지나가면 된다. 그런데 걸리는 것은 점이 아니라 구간이다. 되먹임 제어에는 민감도 함수 $S$라는 지표가 있다. 외란이 출력에 얼마나 남는지를 주파수별로 잰 값이고, 1보다 크면 제어기가 외란을 오히려 키운 것이다. RHP 극과 RHP 영점을 동시에 가진 계에서는 최대 모듈러스 정리가 이 값의 하한을 못 박는다.
식 4의 오른쪽에는 제어기가 없다. 게인도, 구조도, 설계자의 실력도 들어가지 않는다. 극과 영점의 위치만으로 정해지는 벽이라 어떤 컨트롤러를 붙여도 왼쪽 값을 이 밑으로 내릴 수 없다. 쓸 만한 강건성의 눈대중 기준을 $\|S\|_\infty < 2$로 잡으면 두 갈래의 좁은 조건이 나온다.
식 5를 속도로 옮겨 보자. $z = V/a$이고 $p$는 3.09 rad/s다. 두 값을 넣으면 $z/p$가 1/3에서 3 사이인 구간이 $V \in (0.51, 4.56)$ m/s, 시속으로 1.82km에서 16.41km로 나온다. 걷는 속도부터 자전거 통근 속도까지가 통째로 이 안에 들어간다. 이 부등식과 대역을 명시한 것도 위의 KTH 강연 자료이고, 논문 본문은 $z/p$가 커야 강건 제어가 가능하다는 서술까지만 한다.
그림 3의 능선이 그 구간이다. 시속 3.6km에서 하한이 4.85, 시속 7.2km에서 7.33까지 오르고 $z/p = 1.1$이면 21이다. 반대로 시속 36km까지 올리면 $z/p$가 6.58이 되어 하한이 1.36으로 내려온다 — 그제야 설계 여지가 생긴다.
그러니까 뒷바퀴 조향 자전거는 아주 느리거나 아주 빠를 때만 탈 만하다. 그런데 정지에서 시속 20km로 가려면 그 사이를 반드시 지나야 한다. 출발할 때도 멈출 때도 이 대역을 관통할 수밖에 없으니, 탈 만한 구간에 도달할 길이 애초에 없다.
미국 정부가 만든, 아무도 못 탄 오토바이
여기까지는 종이 위의 이야기다. 그 하한이 실제 기계에서 어떻게 나타나는지는 아직 확인하지 않았다. 그런데 1970년대 말에 그 확인이 예산까지 붙은 프로젝트로 이루어진 적이 있다.
미국 도로교통안전국이 뒷바퀴 조향 오토바이 제작을 발주했다. 앞바퀴가 브레이크와 조향을 함께 맡는 구조가 위험하니 둘을 나누면 안전해지리라는 발상이었다. 프로젝트 책임자 Robert Schwarz는 제작 전에 이미 계산을 마쳤다. 오토바이는 자전거와 질량 배치가 달라 극 값 자체가 다르고, 앞에서 쓴 2차 근사와 달리 실기 고차 모델에서는 극이 속도에 따라 움직인다. 불안정 극의 실수부가 속도 3~50 m/s 구간에서 4~12 rad/s로 나왔고, 사람이 되잡기에는 너무 빠르다는 결론이었다.
발주처는 그대로 밀어붙였다. 오토바이는 예정대로 제작됐고 시험 주행까지 갔다. 그렇게 나온 물건을 두고 Bicycling Science의 저자들은 이렇게 적었다.
예상 못 한 방식으로 안전했다(safe in an unexpected way).
Whitt & Wilson, *Bicycling Science* — Åström 외(2005) 재인용아무도 그 오토바이를 탈 수 없었다는 뜻이다. 실험은 보조 바퀴를 단 채로만 진행됐다. 필름을 분석해 얻은, 두 바퀴만으로 버틴 최장 시간이 약 2.5초였다. 시속 5.5km 근처를 지날 때 식 4의 하한이 수십으로 치솟으니 그 구간에서는 라이더가 무엇을 하든 외란이 되돌아오는 쪽이 더 빨랐다. 이론이 예언한 불가능을 정부 예산으로 만든 실물이 그대로 재현한 셈이다.
같은 계산이 반대로도 쓰인다. 자전거 한 대를 못 타게 만들 수 있다면, 같은 식으로 탈 수 있게 만드는 길도 읽어낼 수 있다. 뒷바퀴 조향을 포기하지 않고도 그런 길이 있는지가 남은 질문이다.
부등식과 싸우지 않고 계를 바꾼다
식 4에는 협상의 여지가 없다. 그런데 이 부등식이 정하는 것은 $z$와 $p$가 저 자리에 있을 때의 이야기다. 자리를 옮기면 하한도 따라 옮겨 간다.
가장 확실한 방법은 입력을 하나 더 넣는 것이다. 자전거를 조종하는 입력은 핸들만이 아니다 — 라이더가 안장 위에서 상체를 기울이는 것도 계에 힘을 넣는 조작이다. 조향과 몸 기울이기, 입력이 둘이 되어 계의 모든 방향을 밀 수 있게 되면(풀랭크, full rank) 앞의 영점(불변 영점, invariant zero)이 사라지고, 실제로 상체 기울이기를 제2 입력으로 넣은 모델에서는 RHP 영점이 식에서 지워진다. 앞바퀴 자전거를 사람이 쉽게 타는 이유가 여기에도 있다.
파라미터를 미는 방법도 있다. $z/p = (V/a)\sqrt{h/g}$라 분자와 분모 양쪽에 손댈 자리가 남아 있다. 상체를 앞으로 숙여 질량중심을 앞바퀴 쪽으로 옮기면 $a$가 줄고, 그만큼 $z$가 커진다. 속도를 올려도 같은 방향으로 움직이고, 몸을 세워 식 2의 $J$를 키우면 $p$가 내려간다. 셋 다 타기 불가능 대역 바깥으로 나가는 조작이고, 라이더는 그걸 이름도 모른 채 매일 한다.
Wilbur Wright는 1900년대에 이 동작을 정확히 관찰해 기록으로 남겼다. 자전거 가게를 운영하며 사람들이 좌회전 직전에 무엇을 하는지 지켜본 결과였고, 논문의 저자들은 그 관찰이 라이트 형제의 비행 제어 설계로 이어졌다고 본다. 방향타와 날개 뒤틀림을 함께 쓰는 그 조작 역시 입력 하나로 안 되는 문제를 입력을 늘려 푼 사례다.
제어기를 다듬어서 갈 수 있는 곳은 식 4가 그어 놓은 선까지다. 그 앞에서 설계자가 아직 쥐고 있는 것은 영점과 극의 위치다. 입력을 하나 늘리거나 질량중심을 앞으로 조금 옮기면 그 위치가 움직인다. 아무도 못 탄 오토바이와 오늘 아침 누군가 아무 생각 없이 몰고 나간 자전거를 가른 것이 그 한 뼘이다.
더 읽기
- Åström, K. J.; Klein, R. E.; Lennartsson, A. "Bicycle Dynamics and Control: Adapted Bicycles for Education and Research." IEEE Control Systems Magazine, 25(4):26–47, 2005. https://lucris.lub.lu.se/ws/files/4692388/625565.pdf
- Åström, K. J. "Bicycle Dynamics and Control." KTH 강연 자료, 2006 — 민감도 하한·"도달 불가능"·$z/p$ 대역 슬라이드의 출전. http://archive.control.lth.se/media/Staff/KarlJohanAstrom/Lectures/BikeTalkKTH2006.pdf
- Whitt, F. R.; Wilson, D. G. Bicycling Science. MIT Press — 뒷바퀴 조향 오토바이 일화의 원 출전.