RoboticsUpdated 2025-04-01
4족 보행 패턴 생성 및 LangGraph 보행 에이전트 상세 가이드
Quadruped Gait Generation × LangGraph AI Agent — STM32H743 × CtrlPlus
uadrupedGaitGenerationLangGraphAI-AgentSTM32H743CtrlPlusESP32-S3PlatformIOFreeRTOS
1. 개념 (Concept)
1.1 4족 보행 로봇이란?
4개의 다리로 이동하는 로봇으로, 바퀴 로봇 대비 불규칙 지형 적응력이 높다. 각 다리는 Hip(고관절) · Thigh(대퇴) · Calf(종아리) 3개 관절 = 총 12축 서보.
다리 4개 × 관절 3개 = 12축 동시 제어
LF (Left-Front) · RF (Right-Front)
LH (Left-Hind) · RH (Right-Hind)
1.2 보행 핵심 용어
- Stance Phase: 발이 지면에 닿아 추진력을 내는 구간
- Swing Phase: 발이 공중에서 앞으로 이동하는 구간
- Duty Factor: 한 주기 중 Stance 비율 (0~1) — 높을수록 안정적
- Stride Period (T): 한 발이 두 번 지면에 닿는 사이의 전체 주기
- Phase Offset (φ): 각 다리의 시작 위상 차 — Gait 패턴을 결정
- Gait Frequency: 초당 stride 횟수 (Hz)
- CoM (Center of Mass): 무게 중심 — 안정성 판단 기준
- Support Polygon: Stance 발들이 만드는 다각형 — CoM이 내부에 있어야 정적 안정
1.3 보행 패턴(Gait) 분류
2. 상세 내용 (Details)
2.1 보행 패턴별 위상 다이어그램
각 Gait의 Phase Offset (φ) 정의 — 0.0 = 주기 시작, 1.0 = 주기 끝.
2.2 다리 궤적 생성 (Foot Trajectory)
각 다리의 발 끝점 궤적을 Stance(직선)와 Swing(포물선)으로 구성한다.
2.3 다리 역기구학 (3DOF per Leg)
2.4 안정성 판단 — Support Polygon & ZMP
2.5 IMU 자세 추정 (MPU6050)
2.6 보행 패턴 파라미터 비교
| 파라미터 | Walk | Trot | Bound | Pronk |
|---|---|---|---|---|
| Duty Factor | 0.75 | 0.50 | 0.40 | 0.30 |
| Phase LF | 0.00 | 0.00 | 0.00 | 0.00 |
| Phase RF | 0.25 | 0.50 | 0.50 | 0.00 |
| Phase LH | 0.50 | 0.50 | 0.00 | 0.00 |
| Phase RH | 0.75 | 0.00 | 0.50 | 0.00 |
| 속도 범위 | 0.1~0.5 m/s | 0.5~2.0 m/s | 2.0~4.0 m/s | 점프 |
| 안정성 | 매우 높음 | 높음 | 중간 | 낮음 |
| 에너지 효율 | 낮음 | 높음 | 중간 | 낮음 |
3. LangGraph 보행 에이전트
3.1 왜 LangGraph인가?
3.2 LangGraph StateGraph 구조
3.3 AgentState 정의
Python
3.4 Gait 에이전트 핵심 노드 구현
Python
3.5 FastAPI SSE 스트리밍 엔드포인트
4. 구조 설명 (Architecture)
4.1 CtrlPlus 4족 로봇 전체 시스템
4.2 STM32H743 보행 제어 FreeRTOS 구조
4.3 보행 상태 머신 (GaitTask)
4.4 MQTT 토픽 네임스페이스 (4족 로봇)
4.5 XYFlow 4족 보행 파이프라인 노드
4. 응용 (Applications)
4.1 CtrlPlus 4족 로봇 전체 적용 맵
4.2 지형별 에이전트 결정 흐름
4.3 낙상 감지 및 복구 시퀀스
4.4 Next.js Three.js 보행 애니메이션
4.5 에너지 효율 & 보행 전략
부록. 빠른 참조
보행 파라미터 치트시트
[Walk — 정적 안정 보행]
duty_factor = 0.75 phase: LF=0.00, RF=0.25, LH=0.50, RH=0.75
frequency = 0.8~1.2 Hz
step_height = 40~60 mm (험지: 60~90mm)
stride_length= 100~150 mm
body_height = 180~200 mm
[Trot — 대각선 동기 보행]
duty_factor = 0.50 phase: LF=0.00, RF=0.50, LH=0.50, RH=0.00
frequency = 1.5~2.5 Hz
step_height = 45~60 mm
stride_length= 150~220 mm
body_height = 180~200 mm
[Bound — 앞뒤 쌍 보행]
duty_factor = 0.40 phase: LF=RF=0.00, LH=RH=0.50
frequency = 2.5~4.0 Hz
step_height = 50~80 mm
stride_length= 200~350 mm
서보 배치 및 관절 범위
[Hip — 좌우 측면 관절]
DS3218 (20kg·cm) 범위: ±40° (외전/내전)
[Thigh — 전후 대퇴 관절]
DS3225 (25kg·cm) 범위: -100° ~ +20° (전/후 회전)
[Calf — 무릎 관절]
MG996R (11kg·cm) 범위: -150° ~ -20° (무릎 굽힘)
※ 무릎은 역방향 굽힘 (개의 무릎 구조)
[전원]
12V / 8A 이상 (피크 전류: 12× 2A = 24A)
별도 전원 분리 필수 (MCU와 서보 전원 분리)
LangGraph 에이전트 MQTT 토픽 치트시트
[명령 발행 — 서버 → 로봇]
ctrl/{robot_id}/gait 보행 파라미터 QoS 2
ctrl/{robot_id}/cmd 즉시 명령 (stop/stand/sit) QoS 2
ctrl/{robot_id}/body 몸체 자세 QoS 2
[상태 수신 — 로봇 → 서버]
sensor/{robot_id}/imu 자세 + 가속도 100ms
sensor/{robot_id}/joints 12관절 각도 100ms
sensor/{robot_id}/status 보행 상태 + 배터리 Retain
XYFlow 4족 보행 프리셋 복합키
| 프리셋 | 복합키 | 용도 |
|---|---|---|
| 기본 보행 파이프라인 | ctrlMotion::worker::control::quadruped-basic | Walk/Trot 기본 |
| LangGraph 에이전트 | ctrlMotion::manager::ai::gait-agent | AI 자율 보행 |
| 지형 적응 보행 | ctrlMotion::manager::control::terrain-adaptive | 험지 자동 조정 |
| 낙상 복구 파이프라인 | ctrlMotion::manager::control::fall-recovery | 안전 복구 |