Skip to content

WeGo-Robotics/g1-gui-controller

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

G1 Robot Controller GUI

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/                   # 오디오 관련 예제 스크립트

의존성

SDK

Python 패키지

pip install psutil opencv-python Pillow numpy gtts

설치 및 실행

1. unitree_sdk2py 설치

git clone https://github.com/unitreerobotics/unitree_sdk2_python.git ~/unitree_sdk2_python
cd ~/unitree_sdk2_python
pip install -e .

2. 의존성 설치

pip install -r ~/g1_ws/src/g1/gui/requirements.txt

3. 실행

python3 ~/g1_ws/src/g1/gui/main.py

사용법

연결

  1. Network Interface 드롭다운에서 로봇과 연결된 네트워크 인터페이스 선택 (예: enp4s0)
  2. ROS_DOMAIN_ID 설정 (기본값: 0)
  3. 연결 버튼 클릭 → SDK 클라이언트 초기화

마지막 연결 설정은 gui/config.json에 자동 저장됩니다.


운영 모드

AI 모드 (기본 권장)

  • GUI 연결 전, 리모컨으로 레디 모드 → 스탠드 모드 전환이 선행되어야 합니다.
  • 스탠드 모드 진입 후 GUI에서 AI 모드를 활성화하세요.
  • 로봇이 자율적으로 균형을 유지합니다.
  • 버추얼 조이스틱으로 전/후/좌/우 이동 및 회전 슬라이더로 제자리 회전을 제어합니다.
  • 팔 동작 프리셋 사용 가능합니다.

디버그 모드 (크레인/하네스 필수)

  • 29개 관절에 직접 목표 각도를 입력합니다.
  • 500Hz 제어 루프가 활성화됩니다.
  • 정현파 운동(진폭, 주파수 설정)으로 관절 특성을 테스트합니다.
  • 반드시 로봇을 공중에 고정한 상태에서 사용하세요.

비상 정지 (E-STOP)

  • 상단 바의 빨간 E-STOP 버튼을 클릭하면 즉시 모든 관절 제어가 중단됩니다.
  • 두 모드 모두에서 언제든 사용 가능합니다.

관절 구성 (29개)

그룹 인덱스 관절명
왼쪽 다리 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초 뒤 자동으로 릴리즈됩니다.


오디오 / LED

  • 볼륨: 슬라이더로 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_hgG1 / H1-2 로봇용 (본 프로젝트)

About

g1 저수준, 고수준 제어를 위한 gui 프로그램

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages