유니트리 공식 문서의 slam services interface 내용입니다
https://support.unitree.com/home/en/G1_developer/slam_navigation_services_interface
위 주소 내용에서 확인할 수 있듯 내부 온보드(pc1)에서 slam service가 작동하고 있고 unitree_sdk2 api 호출을 통해 서비스를 확인할 수 있습니다.
Unitree G1 3D LiDAR SLAM 분석
핵심 구조
이 패키지는 SLAM 알고리즘 자체를 포함하고 있지 않습니다. G1 로봇 내부에서 이미 돌아가고 있는 SLAM 서비스에 클라이언트로 접속하여 명령을 보내고 결과를 받는 데모 코드입니다.
아키텍처
동작 흐름 (API ID 기준)
SLAM 파이프라인 상세
- 매핑 (Mapping) 단계
- startMappingPlFun() 호출 시 로봇 내부 SLAM 노드가 3D LiDAR 데이터 수집 시작
- RViz 토픽: /unitree/slam_mapping/points (PointCloud2) — 실시간 포인트클라우드
- RViz 토픽: /unitree/slam_mapping/odom (Odometry) — 로봇 위치 추정
- 로봇을 수동으로 이동시키며 환경을 스캔
- endMappingPlFun() 호출 시 3D 포인트클라우드 맵을 PCD 파일로 저장
- 재위치화 (Relocalization) 단계
- 저장된 .pcd 맵 파일을 로드
- 초기 위치 (x, y, z, 쿼터니언)를 기반으로 현재 LiDAR 스캔과 저장된 맵을 매칭
- RViz 토픽: /unitree/slam_relocation/points — 현재 스캔
- RViz 토픽: /unitree/slam_relocation/global_map — 저장된 전역 맵
- RViz 토픽: /unitree/slam_relocation/odom — 추정된 위치
- 내비게이션 (Navigation) 단계
- ROBOT_API_ID_POSE_NAV_PL(1102) — 목표 pose(위치+방향)를 전달
- rt/slam_info 토픽에서 실시간 currentPose 수신
- rt/slam_key_info 토픽에서 task_result (도착 여부) 수신
- 도착하면 다음 웨이포인트로 이동, 리스트 끝에 도달하면 역순으로 반복 (순환 패트롤)
추정되는 내부 알고리즘
로봇 내부의 실제 SLAM 알고리즘 소스는 공개되어 있지 않지만, PCD 파일 기반 3D LiDAR SLAM이라는 점에서:
- 매핑: LiDAR Odometry + 3D 포인트클라우드 누적 (LOAM 계열 또는 FAST-LIO 계열 추정)
- 재위치화: 저장된 PCD 맵 대비 현재 스캔의 3D 포인트클라우드 매칭 (ICP/NDT 기반 추정)
- 내비게이션: 3D 맵 기반 경로 계획 + 장애물 회피
요약
이 패키지는 G1 로봇 내장 SLAM 서비스의 클라이언트 API 데모입니다. 실제 SLAM 알고리즘(특징점 추출, 스캔 매칭, 그래프 최적화 등)은 로봇 내부 slam_operate 서비스에 구현되어 있으며, 이 코드에서는
unitree_sdk2를 통한 DDS 통신으로 매핑/재위치화/내비게이션 명령을 원격 제어하는 역할만 합니다.

