Unitree G1 EDU SDK 시작 가이드: SDK2·ROS 2·CycloneDDS 안전한 첫 연결

Unitree G1을 개발하려면 먼저 주문한 기체가 G1 EDU인지 확인해야 합니다. Unitree 공식 제품표는 일반 G1의 Secondary Development 항목을 지원 표기 없이 ‘/’로 두고 G1 EDU에는 ‘YES’라고 적습니다. 일반 G1의 시작 가격 US $13.5K는 세금·배송을 제외한 가격이며 G1 EDU 가격은 Contact sales이므로, 저렴한 일반 모델 가격을 EDU 개발 권한과 같은 것으로 보면 안 됩니다.

ROS 2 경로는 공식 unitree_ros2 저장소가 Ubuntu 22.04와 Humble을 권장하고 로봇 측 CycloneDDS 0.10.2를 기준으로 설명합니다. 첫 성공 기준은 걷기나 관절 토크 명령이 아니라 Ethernet과 DDS를 맞춘 뒤 IMU·관절·배터리 같은 저수준 상태가 안정적으로 읽히는지 확인하는 것입니다. 모델 선택은 Unitree R1·G1·H1·H2 비교, 계약 전 가격·옵션은 Unitree 로봇 구매 가이드에서 별도로 확인할 수 있습니다.

SDK 개발용이라면 일반 G1이 아니라 G1 EDU인지 확인한다

Unitree G1 공식 제품표는 일반 G1과 G1 EDU를 같은 표에서 비교하지만 개발 관련 상태는 다르게 표시합니다. 일반 G1의 Secondary Development는 ‘/’, G1 EDU는 ‘YES’입니다. 제품명에 G1이 들어간다는 이유만으로 모든 기체에 SDK2·저수준 제어 권한과 같은 인터페이스가 열린다고 단정할 수 없습니다.

일반 G1에는 US $13.5K라는 시작 가격이 공개돼 있지만 세금과 배송은 제외됩니다. G1 EDU는 Contact sales 상태이며 손, 허리, 손목, 컴퓨팅과 개발 옵션에 따라 계약 구성이 달라질 수 있습니다. 개발팀은 주문서와 기체 라벨에서 EDU 여부, 자유도, 손 옵션, 온보드 컴퓨터, 펌웨어와 허용 인터페이스를 기록한 뒤 환경을 만들어야 합니다.

G1 EDU는 약 35kg 이상인 동력 휴머노이드이며 공식 자유도 범위는 옵션에 따라 23~43 DoF입니다. 제조사 표의 약 2시간 배터리와 18개월 보증도 모든 동작에서 일정한 작동 시간이나 모든 부품의 동일 보증을 뜻하지 않습니다. 연구용 장비라도 책상 위 센서처럼 취급하지 말고 지지 구조, 출입 통제와 정지 수단을 먼저 마련해야 합니다.

확인 항목일반 G1G1 EDU개발팀의 조치
Secondary Development공식 표에 ‘/’공식 표에 ‘YES’주문서로 개발 권한 재확인
표시 가격US $13.5K부터, 세금·배송 제외Contact salesEDU 견적을 별도로 요청
자유도구성별 확인 필요23~43 DoF 범위URDF·메시지와 실기체 관절 수 대조
첫 개발 판단가격만으로 결정 불가2차 개발 대상펌웨어·손·컴퓨팅 옵션까지 기록

SDK2, Python SDK와 ROS 2는 설치 경로가 서로 다르다

unitree_sdk2 공식 저장소는 Unitree의 C++ 통신·제어 라이브러리입니다. README가 제시하는 사전 빌드 기준은 Ubuntu 20.04 LTS, aarch64 또는 x86_64, GCC 9.4.0이며 직접 빌드에는 CMake 3.10 이상, GCC 9.4.0과 Make를 요구합니다. 이 조건은 ROS 2 Humble 권장 환경과 같은 문장이 아닙니다.

unitree_sdk2_python은 Python 3.8 이상, cyclonedds 0.10.2, NumPy와 OpenCV를 안내합니다. 빠르게 상태를 읽고 응용 로직을 시험하기 좋지만, Python이라는 이유로 로봇 제어의 시간 제약이나 안전 검증이 사라지지는 않습니다. 패키지 최신 버전을 임의로 섞기보다 공식 README의 조합으로 최소 환경을 먼저 재현해야 합니다.

unitree_ros2 공식 저장소는 Unitree DDS 메시지와 ROS 2 예제를 사용하는 별도 경로입니다. 저장소는 Ubuntu 20.04+Foxy와 Ubuntu 22.04+Humble을 테스트 조합으로 적고 Humble을 권장합니다. SDK2와 ROS 2는 같은 DDS 계열 통신을 쓰더라도 빌드 도구, 메시지, 실행 방식과 지원 범위가 자동으로 동일해지는 것은 아닙니다.

개발 경로공식 기준 환경첫 검증 목표섞지 말아야 할 가정
C++ SDK2Ubuntu 20.04, GCC 9.4.0공식 예제 빌드와 상태 통신Humble 환경과 요구사항이 같다는 가정
Python SDK2Python 3.8+, cyclonedds 0.10.2읽기 전용 상태와 메시지 형식최신 DDS면 항상 호환된다는 가정
unitree_ros222.04+Humble 권장, 20.04+Foxy 테스트토픽 발견과 상태 수신모든 G1 기능이 완전 지원된다는 가정

CycloneDDS 0.10.2와 실제 Ethernet 인터페이스를 맞춘다

Unitree 문서는 로봇 측 CycloneDDS 버전을 0.10.2라고 밝힙니다. Foxy 예시는 releases/0.10.x를 빌드하는 절차를 제공하고, Humble 경로에서는 별도 CycloneDDS 빌드 단계를 건너뛸 수 있다고 설명합니다. 이것은 0.10.2가 영원히 고정된다는 뜻이 아니라 2026년 8월 6일 공식 저장소에서 확인되는 호환 기준입니다.

공식 ROS 2 예시는 PC와 로봇을 Ethernet으로 연결하고 PC 유선 인터페이스에 192.168.123.99, 넷마스크 255.255.255.0을 수동 설정합니다. CYCLONEDDS_URI에는 예제의 이름을 그대로 복사하는 대신 실제 PC의 NIC 이름을 넣어야 합니다. Wi-Fi, VPN, Docker 브리지와 여러 유선 어댑터가 동시에 열려 있으면 DDS가 잘못된 인터페이스를 선택할 수 있습니다.

첫 진단은 한 대의 PC, 하나의 유선 NIC, 로봇 한 대와 격리된 로컬 네트워크로 단순하게 구성합니다. 방화벽, 멀티캐스트, 서브넷과 인터페이스 선택을 기록한 뒤에만 연구실 네트워크로 넓힙니다. DDS 발견이 되지 않는다고 QoS나 코드를 바로 바꾸기 전에 IP, 링크 상태와 CYCLONEDDS_URI를 먼저 확인하는 편이 원인 분리에 유리합니다.

점검 순서확인할 값정상 신호문제가 있을 때 먼저 볼 곳
물리 연결Ethernet 링크·케이블NIC 링크가 유지됨케이블, 포트, 전원 상태
IPv4PC 192.168.123.99/24 예시같은 서브넷에서 통신중복 IP와 잘못된 넷마스크
DDS 인터페이스CYCLONEDDS_URI의 실제 NIC예상 인터페이스로 participant 발견Wi-Fi·VPN·가상 어댑터
ROS 2 환경선택한 배포판과 workspace source토픽·메시지 타입이 보임중복 overlay와 다른 ROS_DOMAIN_ID
Unitree G1 실사진
실제 G1 외형을 보여주는 CC0 사진입니다. 사진만으로 EDU 옵션·SDK 권한·펌웨어 구성을 확인할 수는 없습니다. 출처: Sayanesy / Wikimedia Commons. 라이선스: CC0 1.0.

첫 성공은 움직임이 아니라 저수준 상태가 계속 읽히는 것이다

환경을 source한 뒤에는 먼저 ros2 topic list로 실제 펌웨어가 내보내는 토픽을 확인합니다. 인터넷 글에서 본 토픽 이름을 추정해 명령을 보내지 않습니다. 현재 unitree_ros2 저장소에는 G1 저수준 예제와 G1·H1·H1-2 계열의 read_low_state_hg, 무선 컨트롤러 예제가 있지만, 저장소 상단 소개는 Go2·B2·H1을 중심으로 적혀 있어 문서 범위가 완전히 일치하지 않습니다.

따라서 정확한 표현은 ‘공식 저장소에 G1 관련 메시지와 예제가 있다’입니다. 이를 ‘모든 G1 EDU 구성과 펌웨어의 전체 ROS 2 스택이 완전 지원된다’로 키우면 안 됩니다. 실제 상태 메시지의 관절 배열 길이, 기체 모드, IMU, 배터리, 오류 필드와 업데이트 주기를 주문 구성·개발 문서와 대조합니다.

상태를 수십 초가 아니라 충분한 시간 동안 받아 누락, 지연, 재연결과 값 범위를 기록합니다. 그다음 ROS 2 QoS의 센서·명령 설정을 점검하고, 재현 가능한 진단이 필요하면 rosbag2 기록·재생과 QoS로 상태 로그를 남깁니다. 아직 이 단계에서는 보행, 특수 동작과 토크 명령을 실행하지 않습니다.

읽기 전용 확인기록할 내용합격 기준의 예이 단계가 증명하지 않는 것
토픽 발견이름·타입·publisher재시작 후 같은 구조가 보임동작 명령의 안전성
IMU·관절 상태값 범위·주기·누락정지 상태에서 일관된 값관절 제어 권한
배터리·오류전압·잔량·상태 코드문서와 맞는 필드가 갱신약 2시간 운용 보장
재연결케이블 재연결·노드 재시작예상 절차로 상태 복귀걷기·균형 복구 성능

제어 예제 전에는 모델·모드·정지 수단을 한 장에 맞춘다

동작 시험 전 체크시트에는 정확한 G1 EDU 옵션, 관절 수와 인덱스, 펌웨어·API 버전, 현재 제어 모드, 배터리 상태, 지지 장비, 출입 금지 구역과 정지 담당자를 적어야 합니다. 공식 예제에 실행 파일이 있다는 사실은 현재 기체에서 곧바로 실행해도 안전하다는 허가가 아닙니다. 특히 저수준 토크 명령은 잘못된 배열·부호·모드가 큰 움직임으로 이어질 수 있습니다.

Unitree는 휴머노이드가 복잡하고 강한 동력을 가지므로 충분한 안전거리를 두고 주의해 사용하라고 명시합니다. 물리 비상정지, 보호정지, 원격 정지와 소프트웨어 중단을 같은 것으로 부르지 말고 로봇 비상정지와 보호정지에서 역할을 구분합니다. 시험자는 로봇의 예상 이동 범위 안에서 노트북을 조작하지 않아야 합니다.

모터를 켜는 첫 시험도 전신 보행이 아니라 지지된 상태에서 제한된 관절, 낮은 명령 범위와 짧은 시간으로 단계화해야 합니다. 명령 timeout, watchdog, 통신 단절 시 상태, 컨트롤러 충돌과 수동 복구 절차를 먼저 검증합니다. 기체 제조사의 위험 지침과 기관의 안전 절차가 갖춰지지 않았다면 읽기 전용 통신 성공에서 작업을 멈추는 것이 맞습니다.

Unitree G1 EDU SDK 시작 가이드: SDK2·ROS 2·CycloneDDS 안전한 첫 연결의 핵심 판단을 정리한 핵심 판단 카드
공식 자료를 바탕으로 피지컬 AI Lab이 재구성한 편집 카드입니다. 출처: Physical AI Lab. 라이선스: Owned original.

연구실 밖으로 연결할 때는 제어 구조와 DDS 보안을 다시 설계한다

Unitree DDS 메시지를 읽었다고 해서 표준 ros2_control 하드웨어 인터페이스가 자동으로 구성되는 것은 아닙니다. controller_manager, joint interface, 제한값과 lifecycle이 필요한 프로젝트라면 ros2_control 하드웨어 인터페이스 구조를 참고해 제조사 메시지와 상위 제어 계층 사이의 어댑터 책임을 명시해야 합니다.

격리된 유선 첫 시험과 공유 연구망·무선망 운영은 위협 모델이 다릅니다. DDS discovery가 닿는 범위, 명령 publisher 권한, 인증·암호화, 원격 접속, 업데이트와 로그 보관을 정합니다. ROS 2·DDS 로봇 보안에서 다루듯 ‘로봇과 통신된다’는 상태와 ‘허가된 노드만 명령할 수 있다’는 상태는 별개입니다.

최종적으로 첫 연결의 산출물은 화려한 걷기 영상이 아니라 재현 문서여야 합니다. 기체 구성, OS·컴파일러·ROS 2·CycloneDDS 버전, NIC와 IP, 토픽 목록, 상태 로그, 오류·복구 절차와 안전 승인자를 남깁니다. 이 기록이 있어야 다음 개발자가 환경을 복제하고, 버전 변경이나 펌웨어 업데이트 뒤 무엇이 달라졌는지 비교할 수 있습니다.

자주 묻는 질문

일반 G1에서도 SDK2와 ROS 2 개발을 할 수 있나요?

Unitree 공식 제품표는 일반 G1의 Secondary Development를 지원 표기하지 않고 G1 EDU에만 YES로 표시합니다. 개발 목적이라면 일반 G1의 시작 가격만 보고 결정하지 말고 G1 EDU 주문 구성, 펌웨어와 인터페이스 권한을 영업팀에 확인해야 합니다.

Ubuntu 22.04와 ROS 2 Humble을 사용해도 되나요?

공식 unitree_ros2 저장소는 Ubuntu 22.04+Humble을 테스트 조합이자 권장 경로로 적습니다. 다만 C++ SDK2 사전 빌드 기준은 Ubuntu 20.04와 GCC 9.4.0이므로 두 경로의 요구사항을 임의로 하나로 합치지 마세요.

G1 EDU 첫 연결에서 어떤 예제를 실행해야 하나요?

먼저 ros2 topic list와 G1·H1 계열 read_low_state_hg처럼 상태를 읽는 경로로 DDS 통신, 관절·IMU·배터리 메시지를 확인하세요. 보행·특수 동작·토크 명령은 모델, 펌웨어, 관절 수, 지지 장비와 정지 절차를 검토한 뒤 별도 시험으로 진행해야 합니다.

확인한 공식 자료

최종 확인: 2026년 8월 6일