Unitree G1 / H1-2 휴머노이드 로봇을 위한 GUI 기반 제어 애플리케이션입니다.
unitree_sdk2py를 기반으로 고수준 자율 제어부터 저수준 관절 직접 제어까지 지원합니다.
| 기능 | 설명 |
|---|---|
| 연결 관리 | 네트워크 인터페이스 및 ROS_DOMAIN_ID 설정, 마지막 설정 자동 저장 |
| AI 모드 | 자율 균형 유지 + 버추얼 조이스틱으로 이동 / 회전 |
| 팔 동작 | 하이파이브, 포옹, 손흔들기 등 14가지 프리셋 동작 |
| 디버그 모드 | 29개 전체 관절에 직접 목표 각도 지정 및 정현파 운동 테스트 |
| 센서 모니터 | 실시간 IMU(Roll/Pitch/Yaw) + 카메라 피드 |
| 오디오/LED | 볼륨 조절, 한국어 TTS, RGB LED 색상 제어 |
| 비상 정지 | 항상 상단에 고정된 E-STOP 버튼 |
g1/
├── gui/
│ ├── main.py # 메인 진입점 (Tkinter GUI)
│ ├── g1_service.py # SDK 클라이언트 싱글톤 래퍼
│ ├── requirements.txt # Python 의존성
│ ├── config.json # 마지막 연결 설정 자동 저장
│ └── frames/ # GUI 패널 구성요소
│ ├── connection.py # 네트워크 연결 설정
│ ├── mode_panel.py # AI / 디버그 모드 전환
│ ├── loco_control.py # 이동 제어 (버추얼 조이스틱)
│ ├── arm_actions.py # 팔 동작 프리셋
│ ├── audio_led.py # 오디오 / LED 제어
│ ├── sensor_monitor.py # IMU + 카메라
│ ├── joint_control.py # 저수준 관절 제어
│ ├── command_log.py # 명령 이력 로그
│ └── estop.py # 비상 정지 버튼
├── high_level/ # 고수준 SDK 예제 스크립트
├── low_level/ # 저수준 SDK 예제 스크립트
└── audio/ # 오디오 관련 예제 스크립트
unitree_sdk2py— Unitree 공식 Python SDK
pip install psutil opencv-python Pillow numpy gttsgit clone https://github.com/unitreerobotics/unitree_sdk2_python.git ~/unitree_sdk2_python
cd ~/unitree_sdk2_python
pip install -e .pip install -r ~/g1_ws/src/g1/gui/requirements.txtpython3 ~/g1_ws/src/g1/gui/main.py- Network Interface 드롭다운에서 로봇과 연결된 네트워크 인터페이스 선택 (예:
enp4s0) - ROS_DOMAIN_ID 설정 (기본값:
0) - 연결 버튼 클릭 → SDK 클라이언트 초기화
마지막 연결 설정은 gui/config.json에 자동 저장됩니다.
- GUI 연결 전, 리모컨으로 레디 모드 → 스탠드 모드 전환이 선행되어야 합니다.
- 스탠드 모드 진입 후 GUI에서 AI 모드를 활성화하세요.
- 로봇이 자율적으로 균형을 유지합니다.
- 버추얼 조이스틱으로 전/후/좌/우 이동 및 회전 슬라이더로 제자리 회전을 제어합니다.
- 팔 동작 프리셋 사용 가능합니다.
- 29개 관절에 직접 목표 각도를 입력합니다.
- 500Hz 제어 루프가 활성화됩니다.
- 정현파 운동(진폭, 주파수 설정)으로 관절 특성을 테스트합니다.
- 반드시 로봇을 공중에 고정한 상태에서 사용하세요.
- 상단 바의 빨간 E-STOP 버튼을 클릭하면 즉시 모든 관절 제어가 중단됩니다.
- 두 모드 모두에서 언제든 사용 가능합니다.
| 그룹 | 인덱스 | 관절명 |
|---|---|---|
| 왼쪽 다리 | 0–5 | LeftHipPitch/Roll/Yaw, LeftKnee, LeftAnklePitch/Roll |
| 오른쪽 다리 | 6–11 | RightHipPitch/Roll/Yaw, RightKnee, RightAnklePitch/Roll |
| 허리 | 12–14 | WaistYaw, WaistRoll, WaistPitch |
| 왼쪽 팔 | 15–21 | LeftShoulder(Pitch/Roll/Yaw), LeftElbow, LeftWrist(Roll/Pitch/Yaw) |
| 오른쪽 팔 | 22–28 | RightShoulder(Pitch/Roll/Yaw), RightElbow, RightWrist(Roll/Pitch/Yaw) |
하이파이브, 포옹, 손흔들기, 키스, 박수, X-RAY 자세, 양손 들기, 거절 등 14가지 동작.
대부분의 동작은 실행 후 2초 뒤 자동으로 릴리즈됩니다.
- 볼륨: 슬라이더로 0–100% 조절
- TTS: 텍스트 입력 후 전송 → 로봇 스피커로 한국어 음성 재생 (Google TTS)
- LED: 색상 선택기로 RGB 값 설정
센서 모니터의 카메라 피드를 사용하려면 G1 로봇에 SSH 접속 후 퍼블리셔를 먼저 실행해야 합니다.
# G1 로봇에 SSH 접속
ssh unitree@192.168.123.164
# 카메라 퍼블리셔 실행
cd test_ws/camera
python cam_pub.py실행 후 GUI의 센서 모니터 패널에서 카메라 토픽이 자동으로 연결됩니다.
- DDS (Data Distribution Service) —
unitree_sdk2py내장 - 주요 토픽:
rt/lowstate— 모터 피드백 구독 (IMU, 관절 상태)rt/lowcmd— 모터 명령 발행 (저수준 모드)
idl/unitree_go— Go2 / B2 / H1 / B2w / Go2w 로봇용idl/unitree_hg— G1 / H1-2 로봇용 (본 프로젝트)