From foot contact
to body velocity.
관절값에서 body velocity를 어떻게 얻고, 그걸 걸음 내내 쌓으면 경로가 어떻게 만들어지는지 직접 움직여 봅니다.
관절값에서 body velocity까지 — kinematics
자세(R)를 몰라도, 관절값만으로 body-frame 속도가 나온다.
각 관절 각도 q·각속도 q̇와 몸통 각속도 ω로부터 발 속도(= −ᴮv)를 구하는 한 사이클입니다. Space·→로 스텝을 하나씩 넘기고(← 이전), 궁금한 곳에서 멈춰 휠로 확대하거나 슬라이더로 관절을 움직여 보세요. 클릭해서 선택 → 방향키
실제 적용 — 경로를 그리고, gait별로 비교
내가 그린 경로를 GO2가 걷고, 각 gait의 관절-추정 경로가 참값에서 얼마나 벌어지는지 나란히 본다.
왼쪽 캔버스에 마우스로 경로를 대충 그리면 부드럽게 다듬어 명령 경로(참값)가 됩니다. GO2가 그 길을 걷고, 각 발의 관절 움직임에서 ᴮv를 되읽어 적분한 경로가 쌓여요. 아래에서 5가지 gait가 같은 경로를 걸었을 때 어느 걸음이 참값에서 가장 크게 드리프트하는지 비교하세요. 캔버스를 클릭해서 선택 → Space로 걷기
각 칸: 같은 경로를 그 gait로 걸었을 때 관절-추정 경로(색) vs 참값(회색). 접촉이 적거나 비행(bound·pronk)이 많을수록 heading이 더 새 드리프트가 커집니다.
실제 적용 — IMU 융합으로 드리프트 잡기 (EKF)
dead-reckoning의 heading 드리프트를 IMU와 융합해 보정한다.
— 재설계 예정 —
One zero unlocks the estimate.
When a foot is firmly planted, its world-frame velocity is approximately zero. The encoder-measured joint angles tell us how that foot moves relative to the body—so the body must move the opposite way.
Contact
The zero-velocity constraint is valid only while the selected foot is in firm contact.
Kinematics
Link lengths and encoder angles map joint rates into Cartesian foot velocity through the Jacobian.
Reality
Slip, compliance, bad contact detection, and encoder noise all leak directly into the estimate.
GO2 geometry: Unitree robot description (Apache-2.0). Motion: Kine2Go solo8_walk, retargeted from cassi/Solo8 (BSD-3-Clause). Dataset