본문으로 건너뛰기

보행 및 유상 다리 제어

대각 트로트

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

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

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

접지 상태에 따른 힘

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

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

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

fi,k,z0.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(pidespi)+Kd(p˙idesp˙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=JiFides.\boldsymbol{\tau}_i = \mathbf{J}_i^\top \mathbf{F}_i^{\mathrm{des}}.

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

수평 발 궤적

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

pi,xydes(s)=(1s)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)=(1s)2pi,zlift+2(1s)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부에서는 솔버 시간, 수치 조건화, 실용적인 튜닝을 설명합니다.