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 보행 패턴 파라미터 비교

파라미터WalkTrotBoundPronk
Duty Factor0.750.500.400.30
Phase LF0.000.000.000.00
Phase RF0.250.500.500.00
Phase LH0.500.500.000.00
Phase RH0.750.000.500.00
속도 범위0.1~0.5 m/s0.5~2.0 m/s2.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-basicWalk/Trot 기본
LangGraph 에이전트ctrlMotion::manager::ai::gait-agentAI 자율 보행
지형 적응 보행ctrlMotion::manager::control::terrain-adaptive험지 자동 조정
낙상 복구 파이프라인ctrlMotion::manager::control::fall-recovery안전 복구