본문으로 건너뛰기

보행 및 유상 다리 제어

대각 트로트​

보행은 어떤 발이 몸을 지지하고 어떤 발이 공중에서 움직이는지를 정합니다. 이 시리즈에서는 주기가 400ms인 고정 대각 트로트를 사용합니다.

A 단계에서는 전좌측과 후우측 발이 지지합니다. 반대쪽 대각선 발은 유상 상태입니다. B 단계에서는 두 쌍의 역할이 바뀝니다.

제어 주파수가 40Hz이므로 각 단계는 8개 제어 스텝 동안 지속됩니다. 따라서 제어기는 QP를 구성하기 전에 모든 예측 스텝의 접지 상태를 알고 있습니다.

접지 상태에 따른 힘​

지지 발은 지면 반력을 낼 수 있지만 유상 발은 낼 수 없습니다. 유상 발에는 다음을 적용합니다.

fi,k=0.\mathbf{f}_{i,k} = \mathbf{0}.

지지 발의 수직력은 음수가 아니어야 합니다.

fi,k,z≥0.f_{i,k,z} \geq 0.

수평력은 마찰 한계 안에 있어야 합니다.

fi,k,x2+fi,k,y2≤μfi,k,z.\sqrt{f_{i,k,x}^2 + f_{i,k,y}^2} \leq \mu f_{i,k,z}.

QP는 3부에서 설명한 네 변 피라미드 근사를 사용합니다. 접지 일정이 고정되어 있으므로 시간에 따라 제약 행만 바뀌며, 별도의 이산 최적화 변수가 추가되지는 않습니다.

고정 타이밍을 사용하는 이유​

고정 일정은 최적화 문제를 작고 볼록하게 유지합니다. 또한 발이 지면을 떠나거나 닿기 전에 힘 전달을 미리 계획할 수 있게 합니다.

대신 지형 적응성은 줄어듭니다. 지형이 매우 거칠어도 고정 트로트는 새로운 접지 시간을 선택하지 못합니다. 접지 상태를 적응적으로 추정하면 이 문제를 개선할 수 있지만, 별도의 의사결정 계층이 추가됩니다.

유상 다리 궤적​

MPC는 지지 발의 힘을 계획합니다. 별도의 데카르트 제어기가 유상 발을 다음 착지점으로 이동시킵니다. 원하는 발 힘은 다음과 같습니다.

Fides=Kp(pides−pi)+Kd(p˙ides−p˙i).\mathbf{F}_i^{\mathrm{des}} = K_p(\mathbf{p}_i^{\mathrm{des}} - \mathbf{p}_i) + K_d(\dot{\mathbf{p}}_i^{\mathrm{des}} - \dot{\mathbf{p}}_i).

야코비안 전치를 사용하면 관절 토크를 얻을 수 있습니다.

τi=Ji⊤Fides.\boldsymbol{\tau}_i = \mathbf{J}_i^\top \mathbf{F}_i^{\mathrm{des}}.

이 토크에 중력 보상과 같은 모델 기반 항을 더할 수 있습니다. 역할을 분리하면 MPC는 지면 반력으로 몸을 안정화하고, 유상 제어기는 발을 원하는 위치에 배치합니다.

수평 발 궤적​

ss를 이륙 시점의 0에서 착지 시점의 1까지 변하는 시간 변수라고 하겠습니다. 간단한 수평 궤적은 다음과 같습니다.

pi,xydes(s)=(1−s)pi,xylift+spi,xytarget.\mathbf{p}_{i,xy}^{\mathrm{des}}(s) = (1-s)\mathbf{p}_{i,xy}^{\mathrm{lift}} + s\mathbf{p}_{i,xy}^{\mathrm{target}}.

시간 매개변수화를 부드럽게 만들면 발이 작은 속도로 이륙하고 착지하도록 할 수 있습니다.

발의 지면 간격​

수직 궤적은 착지 전에 발을 지면보다 높이 들어 올립니다. 이차 베지에 궤적은 다음과 같습니다.

pi,zdes(s)=(1−s)2pi,zlift+2(1−s)shclear+s2pi,ztarget.p_{i,z}^{\mathrm{des}}(s) = (1-s)^2p_{i,z}^{\mathrm{lift}} + 2(1-s)s h_{\mathrm{clear}} + s^2p_{i,z}^{\mathrm{target}}.

hclearh_{\mathrm{clear}}는 지형과 발 사이에 필요한 간격을 결정합니다. 이 식을 미분하면 원하는 수직 속도를 얻을 수 있습니다.

착지점 예측​

몸이 앞으로 움직일 때 다음 착지점은 현재 몸의 위치보다 앞에 있어야 합니다. 1차 예측은 다음과 같습니다.

pitarget=piref+12vCoMΔtswing.\mathbf{p}_i^{\mathrm{target}} = \mathbf{p}_i^{\mathrm{ref}} + \frac{1}{2}\mathbf{v}_{\mathrm{CoM}}\Delta t_{\mathrm{swing}}.

여기서 1/21/2는 유상 단계 전체에 최고 속도가 유지된다고 가정하지 않고 평균 속도를 사용하는 계수입니다.

참조 운동​

원하는 몸 위치는 명령 속도를 적분하여 얻습니다.

pk+1ref=pkref+vkcmdΔt.\mathbf{p}^{\mathrm{ref}}_{k+1} = \mathbf{p}^{\mathrm{ref}}_k + \mathbf{v}^{\mathrm{cmd}}_k\Delta t.

원하는 방향도 같은 방식으로 적분합니다.

ψk+1ref=ψkref+ωzcmdΔt.\psi^{\mathrm{ref}}_{k+1} = \psi^{\mathrm{ref}}_k + \omega_z^{\mathrm{cmd}}\Delta t.

포화 범위는 선형화 모델의 유효 범위를 벗어나지 않도록 참조 운동을 제한합니다.

두 단계 제어​

제어기는 서로 다른 시간尺度를 가진 두 계층으로 구성됩니다.

계층주요 역할일반적인 주파수
MPC균형과 지지력 계획40Hz
유상 제어기발 궤적 추종더 높은 관절 서보 주파수

두 계층은 착지점과 몸 상태 정보를 주고받지만 역할은 분리되어 있습니다. 덕분에 제어기를 분석하기 쉽고, 볼록 QP는 몸의 안정성에 집중할 수 있습니다.

다음 5부에서는 솔버 시간, 수치 조건화, 실용적인 튜닝을 설명합니다.