XM10 Extension Module SDK v2.1.1¶
릴리즈 날짜: 2026-04-04 | 대상 HW: Rev1.1 / Rev2.0 | KIT H10 FW: v2.3.0+
Highlights¶
- 새 부트로더(
AGR_Bootloader) 최초 도입 — PhAI Studio 로 USB 를 통해 펌웨어를 업로드 - 듀얼 HW 리비전 SDK 동시 배포 — Rev1.1과 Rev2.0 SDK를 단일 릴리즈에 포함
- 예제 44개 — 입문부터 고급 제어(Impedance, CPG, ILC, MRAC, DOB 등)까지 완전한 학습 경로
- PhAI Studio 연동 강화 — Total Data Packet 자동 전송 + User Custom 채널
- xm_api_freertos 신규 — 백그라운드 태스크 API
- 디버깅 완전 지원 — Live Expression · 브레이크포인트가 정상 동작
다운로드¶
SDK (레포에 포함)¶
| 항목 | 경로 | 설명 |
|---|---|---|
| SDK Rev1.1 | XM10_SDK/Rev1.1/Extension_Module/ |
PCB Rev1.1 전용 프로젝트 |
| SDK Rev2.0 | XM10_SDK/Rev2.0/Extension_Module/ |
PCB Rev2.0 전용 프로젝트 (ETH, PSRAM, RTC 추가) |
Release 첨부 파일¶
| 파일 | 설명 | 비고 |
|---|---|---|
AGR_Bootloader.bin |
XM10 부트로더 바이너리 (v1.1.0) | 0x08000000에 프로그래밍 |
SUIT_CM_APP_X_X_X.bin |
KIT H10 CM 펌웨어 | H10 FW 업데이트 가이드 참조 |
SUIT_SAM10_APP_X_X_X.bin |
KIT H10 MD(SAM10) 펌웨어 | 동일 가이드 참조 |
SUIT_ESP32_FW_X_X_X.bin |
KIT H10 ESP32 펌웨어 | 동일 가이드 참조 |
ContentsFiles.zip |
SD카드 Contents 파일 (FSM/MotionMap/RobotSetting) | 별도 업데이트 |
도구¶
| 도구 | 링크 |
|---|---|
| PhAI Studio (FW Upload, 센서 모니터링) | studio.onephai.com |
| STM32CubeProgrammer (부트로더 최초 설치) | st.com |
v2.0.1 대비 전체 변경 사항¶
신규 기능¶
새 부트로더 (신규)¶
- PhAI Studio 로 USB 를 통해 펌웨어 업로드 (USB FTP)
- 자동 백업 + 롤백 (3회 부팅 실패 시 이전 버전으로 자동 복원)
- CRC-32 펌웨어 무결성 검증
- Rev1.1 / Rev2.0 단일 부트로더 바이너리 (보드 리비전을 자동으로 구별)
- 상세 가이드: docs/bootloader/README.md
듀얼 HW 리비전 SDK¶
XM10_SDK/Rev1.1/— PCB Rev1.1 전용 (CAN-FD only)XM10_SDK/Rev2.0/— PCB Rev2.0 전용 (CAN-FD + Ethernet + PSRAM + RTC)- 각 SDK는 자체 완결형 STM32CubeIDE 프로젝트 (Import 후 바로 빌드 가능)
xm_api_freertos — 백그라운드 태스크 API (신규)¶
XM_BgTask_Create()— 1kHz 제어 루프를 방해하지 않고 무거운 연산을 별도 태스크에서 실행- 이 태스크는 제어 루프보다 낮은 우선순위로 돌기 때문에 제어 루프에 영향이 없습니다
- 백그라운드 태스크에서
XM_SetAssistTorque등 제어 API 호출 금지 (데이터 공유는 volatile)
빌드 마무리 자동화¶
- STM32CubeIDE 로 빌드하면 마무리 단계가 자동으로 실행되어 업로드용 파일을 만듭니다 (Python 필요)
- 최종 출력:
XM10_X_X_X_X.bin(PhAI Studio 업로드용 패키징 바이너리)
예제 대규모 확장 (20개 → 44개)¶
- Physical AI 토크 제어 시리즈 (Ex.20~33): Impedance, Gravity Comp, CPG, Gait Phase Adaptive, Virtual Constraint, Stance Stiffness, ILC, MRAC, Admittance, Bilateral, FF/FB Hybrid, Friction DOB, GRF Gait Intent, Kinesthetic Teaching
- MSC 로깅 시리즈 (Ex.10~10c): Basic → Custom Struct → Advanced (Rolling, Markers)
- Gait Analysis 로깅 (Ex.34): H10 보행 데이터 자동 수집 + Python 디코더
- Ex.35 MultiLayer Transparent Control — 다층 투명 제어 (신규)
- Ex.36 OnDevice Kinesthetic Learning — 온디바이스 동작 학습 (신규)
PhAI Studio 연동 강화¶
- Total Data Packet (Module ID 0x20, 365B): 시스템이 1kHz 로 자동 전송
- User Custom 채널 (Module ID 0xF0~0xFE):
XM_SetUsbCustomMeta()+XM_SendUsbDataWithId() - Auto-Stream: USB 연결 시 자동 스트리밍 시작 (별도 시작 명령 불필요)
개선 사항¶
Total Data Packet¶
- CAN-FD 채널 1·2 의 통신 상태 진단 값이 각각 들어갑니다
timestamp_ms→xm_loop_count변경 (제어 루프 실행 횟수 — 루프가 막히면 알 수 있음)
빌드 시스템¶
- 디버깅 정상 동작: 디버그 심볼이 들어간
libXM_Lib.a로 Live Expression 과 브레이크포인트가 정상 동작합니다 (Rev1.1: 66MB, Rev2.0: 88MB) - Flash 바이너리 크기에는 영향이 없습니다 (디버그 심볼은
.elf에만 포함) - 링커 설정 복원: v2.0.1 에서 고친 실행 중 메모리 손상 문제가 v2.1.0 에서 다시 생겼던 것을 바로잡았습니다 (CubeIDE 프로젝트와
CMakeLists.txt모두 반영) - CMakeLists.txt 정리: 쓰지 않는 경로 제거, 폴더 이름 대소문자 수정 (
Xsens→XSENS) - 새 CubeMX(6.13 이상)로 만든 프로젝트와도 호환되도록 시작 코드 보강
예제 튜닝¶
- Ex.11 Passive Mode / Ex.12 Active Assist Mode: Homing 가속도 4→2 deg/s², IVectorKpKd (6,1)→(6,6), PVectorReset 추가
KIT H10 FW 변경 사항 (v2.3.0 기반)¶
H10 CM 펌웨어 주요 수정: - BLE 앱 모드 동기화: BLE 앱에서 모드를 바꾸면 H10 의 CM 이 즉시 따라갑니다 - XM10 ↔ CM CAN-FD 동기화 개선 - 보행 분석 카운터 추가: 보행 분석 후처리 횟수 값을 외부에서 읽을 수 있게 했습니다 - 왼쪽 IMU 데이터 수정: 왼쪽 IMU 데이터가 잘못 연결되던 오류를 고쳤습니다
H10 FW 업데이트 방법: docs/kit-h10-firmware/README.md 참조
삭제¶
user_app.c루트 복사본 삭제 (XM_Apps/User_Algorithm/에서만 관리)
호환성 매트릭스¶
| 컴포넌트 | 최소 버전 | 권장 버전 | 비고 |
|---|---|---|---|
| XM10 FW (이 SDK) | v2.1.1 | v2.1.1 | Rev1.1/Rev2.0 별도 libXM_Lib.a |
| XM10 부트로더 | v1.1.0 | v1.1.0 | 단일 바이너리 (Rev1.1/Rev2.0 공통) |
| KIT H10 CM | v2.3.0 | v2.3.0+ | BLE 동기화 수정 포함 |
| KIT H10 ESP32 | v2.3.0 | v2.3.0+ | |
| KIT H10 SAM10/MD | v2.3.0 | v2.3.0+ | |
| ContentsFiles | 2025.02 | 최신 | SD카드 업데이트 |
| STM32CubeIDE | v1.13.2 | v1.14.1+ | GCC 13.3 필요 |
| Python | 3.8+ | 3.12+ | 빌드 마무리 단계용 |
| PhAI Studio | — | 최신 | studio.onephai.com |
빠른 시작 가이드¶
1. 부트로더 설치 (최초 1회)¶
- STM32CubeProgrammer로 Full Chip Erase
AGR_Bootloader.bin을0x08000000에 프로그래밍
2. SDK 프로젝트 열기¶
- Releases 에서 본인 보드 Rev 의 ZIP (
Rev1.1.zip/Rev2.0.zip) 을 다운로드 후 압축 해제 - STM32CubeIDE에서 Import → Existing Projects into Workspace
- 압축 해제한 폴더 (
.project파일이 있는 곳) 선택 - Build (Ctrl+B) — 빌드 마무리 단계가 자동으로 실행됩니다
3. 펌웨어 업로드¶
- 개발 중: STM32CubeIDE Debug (F11) — SWD, Start address
0x08040000 - 배포 시: PhAI Studio → FW Upload →
XM10_X_X_X_X.bin선택
4. KIT H10 FW 업데이트¶
첨부된 H10 FW 바이너리를 USB 메모리에 복사 후 H10에 연결하여 업데이트합니다.
알려진 이슈¶
- Rev1.1 SDK 는 일부 메모리 영역 사용량이 98.65% 에 달합니다. 대용량 버퍼를 만들 때는 주의가 필요합니다.
- 빌드 후
version.h의 버전이 릴리즈 버전과 같은지 확인하세요 (버전은 현재 폴더의 git tag 를 기준으로 정해집니다). - 빌드 마무리 단계에서 Python 이 PATH 에 있어야 합니다. STM32CubeIDE 재시작 후에도 인식되지 않으면 시스템 환경변수를 확인하세요.
libXM_Lib.a는 디버그 심볼 때문에 66~88MB 이지만, 최종 Flash 바이너리 크기에는 영향이 없습니다.
v2.1.0 (Pre-Release) 사용자 안내¶
v2.1.0에서 발견된 2가지 문제가 v2.1.1에서 수정되었습니다: 1. 링커 설정 누락 → 실행 중 메모리가 손상될 수 있었음 2. 디버그 심볼이 없는 빌드 → Live Expression, 브레이크포인트 미동작
반드시 v2.1.1을 사용하세요.
이 릴리즈는 Angel Robotics의 Physical AI 플랫폼 XM10 Extension Module을 위한 것입니다.