# 보행 제어·학습·시뮬레이션

조사일: 2026-10-16. 아래 라이선스는 주 코드 기준이며 모델·의존성·서브모듈에는 별도 조건이 있을 수 있다.

## 모델 기반 제어

| 프로젝트 | 역할 | 기반·요구 조건 | 라이선스 | 채택 판단 |
|---|---|---|---|---|
| [CHAMP](https://github.com/chvmp/champ) | 보행 생성·IK·ROS 연결·Gazebo | README는 ROS Kinetic/Melodic 중심, 실제 모터 인터페이스 필요 | BSD-3-Clause | 간결한 기준 제어기 참고. ROS 2 포팅 비용 고려 |
| [Cheetah-Software](https://github.com/mit-biomimetics/Cheetah-Software) | MIT Cheetah 계열 제어·시뮬레이터 | C++·플랫폼 전용 저수준 코드 | MIT | MPC·동역학·제어 구조 연구용. 하드웨어 이식 필요 |
| [OCS2](https://github.com/leggedrobotics/ocs2) | 최적 제어·MPC 도구 및 로봇 예제 | 로봇 동역학·비용함수·접촉 제약 정의 필요 | BSD-3-Clause | 자체 로봇 MPC를 개발할 때 검토 |
| [legged_control](https://github.com/qiayuanl/legged_control) | NMPC+WBC+상태 추정·실물 연결 | OCS2·ROS 1 ros-control·Gazebo | BSD-3-Clause | 공식 지원 종료. 구조 참고 또는 버전 고정 재현 |
| [Solo](https://github.com/open-dynamic-robot-initiative/solo) | Solo 로봇 저수준 인터페이스 | ODRI 보드·의존 패키지·실시간 구동 환경 | BSD-3-Clause | Solo 계열 실제 구동 연결용 |

CHAMP의 로봇 설정·URDF 지원과 실제 로봇 전체 기능 지원을 구분한다. 공개 모델만으로 모터 드라이버나 토크 대역폭까지 확보되지는 않는다. [CHAMP 로봇 구성 목록](https://github.com/chvmp/robots)

legged_control README에는 지원 종료가 명시되어 있다. OCS2는 그와 별개의 저장소이므로 동일하게 지원 종료됐다고 판단하지 않는다. [legged_control 공지](https://github.com/qiayuanl/legged_control)

## 강화학습·물리·모델

| 프로젝트 | 제공 범위 | 실행·연결 조건 | 라이선스·상태 |
|---|---|---|---|
| [MuJoCo](https://github.com/google-deepmind/mujoco) | 접촉·관절 동역학 물리 엔진, MJX 등 | MJCF 모델, 액추에이터·접촉 설정 필요 | Apache-2.0 |
| [MuJoCo Menagerie](https://github.com/google-deepmind/mujoco_menagerie) | 정리된 로봇 모델·메시·예제 장면 | 모델 폴더별 사용 조건 확인 | 공통 코드 Apache-2.0, 모델별 별도 |
| [MuJoCo Playground](https://github.com/google-deepmind/mujoco_playground) | GPU 로봇 학습·sim-to-real 예제 | JAX/MJX, 학습에 맞는 가속기·환경 필요 | Apache-2.0, 일부 텍스처 CC0 |
| [Isaac Lab](https://github.com/isaac-sim/IsaacLab) | 병렬 로봇 학습, 지형·센서·학습기 연결 | 선택한 릴리스·백엔드에 맞는 OS·GPU·의존성 필요 | 주 프레임워크 BSD-3-Clause, mimic Apache-2.0 |
| [rsl_rl](https://github.com/leggedrobotics/rsl_rl) | GPU 중심 강화학습 알고리즘 | 환경 인터페이스·PyTorch·호환 버전 필요 | 주 코드 BSD-3-Clause |
| [legged_gym](https://github.com/leggedrobotics/legged_gym) | Isaac Gym 기반 보행 학습 환경 | 구형 Python·PyTorch·Isaac Gym 조합 | 주 코드 BSD-3-Clause, 제한적 지원 |
| [Unitree ROS 2](https://github.com/unitreerobotics/unitree_ros2) | Unitree 실물 통신·제어 예제 | 대상 기종·SDK·DDS·네트워크 구성 확인 | BSD-3-Clause, 연결용 소프트웨어 |

legged_gym은 공식적으로 Isaac Lab 이관과 제한적 지원을 안내한다. 신규 시작은 Isaac Lab이나 현재 사용하는 MJX 경로를 먼저 검토하고, 논문 재현이라면 legged_gym과 당시 의존 버전을 함께 고정한다. [이관 공지](https://github.com/leggedrobotics/legged_gym#announcement-09012024)

Isaac Lab의 조사 시점 기본 브랜치는 3.0.0과 여러 백엔드를 안내한다. APM의 기존 코드는 2.3.2/Isaac Sim 5.1 조합이므로 최신 브랜치를 덮어 설치하지 않는다. Isaac Sim을 쓰는 경로의 실행 조건과 에셋 권리는 별도다. [공식 호환·라이선스 안내](https://github.com/isaac-sim/IsaacLab), [APM 기존 버전](../sim2/training/isaac/README.md)

## 제어 방식을 고르는 기준

1. **첫 걷기**: 보행 주기 → 발 궤적 → IK → 위치 PD. Pupper v1·CHAMP에서 구조를 읽는다.
2. **외란·지면 대응 연구**: 상태 추정 → 접촉 계획 → MPC → WBC → 토크+PD. Cheetah·OCS2·legged_control을 비교한다.
3. **학습 보행**: 관측·보상·종료 조건·도메인 무작위화 → 병렬 학습 → 별도 평가 → 실물 이식. Playground·Isaac Lab을 검토한다.

이 순서는 개발 제안이다. 위치 서보 로봇에 토크 제어용 정책을 그대로 넣거나, 다른 로봇용 정책을 관절 이름만 바꿔 적용하는 방식은 적절하지 않다. 질량·관성·기어비·모터 응답·관측 순서·제어 주기가 달라진다.
