본문으로 바로 가기

튜토리얼

각 튜토리얼은 Inverse Service의 기능을 보여주는 독립적인 프로그램입니다. 세 가지 언어 버전이 나란히 제공되므로, 각 언어의 관용구를 비교하고 프로젝트에 적합한 스택을 선택할 수 있습니다:

  • 파이썬 — 가장 짧고 쉬운 시작 방법 (websockets + json)
  • C++ (nlohmann/json) — C++11에서 호환되며, JSON은 실행 시 파싱됩니다.
  • C++ (Glaze) — C++20을 활용한 최신 기술, 컴파일 시점 리플렉션 및 메모리 할당 없는 파싱, 실시간 햅틱 루프에 권장

소스 코드는 두 개의 공개 예제 저장소에 게시됩니다:

  • haply — 튜토리얼별로 하나의 디렉터리가 있으며, 여기에는 nlohmann/json(C++11) 및 Glaze(C++20)용 변형 버전이 포함되어 있습니다. Glaze 변형의 빌드 대상에는 접미사가 붙습니다. -glz.
  • haply-inverse-python-samples — 튜토리얼마다 하나의 디렉터리.

Inverse Service의 모든 버전은 두 저장소 모두에 해당 태그를 지정합니다. 해당 브랜치를 따르세요. release/<version>, 이 문서에 맞는 버전을 계속 사용하도록 하십시오.

필수 조건​

  • Der 역 서비스 실행됩니다 (다음 중 하나를 통해 Haply Hub 또는 그 독립형 설치 프로그램) 포트 10001.
  • 최소 한 대의 Haply 기기가 감지됩니다. 각 튜토리얼은 특정 기기 제품군을 대상으로 합니다. 아래 표를 참조하십시오.
  • 파이썬 튜토리얼: pip install websockets (튜토리얼 04, 05, 06, 07, 08 및 09를 진행하려면 추가로 keyboard, 리눅스에서는 관리자 권한이 필요합니다. 또한 튜토리얼 08과 09에서는 requests).
  • C++ 튜토리얼: nlohmann 변형의 경우 CMake 3.15 이상 및 C++11 컴파일러, Glaze 변형의 경우 C++20 컴파일러 (-glz). Die CMakeLists.txt 예제 저장소의 최상위 레벨에서 로드합니다 libhv, nlohmann/json 그리고 glaze FetchContent에 관하여 — 종속성을 수동으로 설정할 필요가 없습니다.

튜토리얼 목록​

#이름기기변형배울 내용
00장비 목록임의의파이 · C++ · C++ 글레이즈HTTP 장치 식별, 세션 기반 쿼리
01호 Inverse3Inverse3파이 · C++ · C++ 글레이즈WebSocket 상태 스트리밍, 무부하 Keepalive, 첫 번째 메시지를 통한 핸드셰이크
02VerseGrip 호VG (유선)파이 · C++ · C++ 글레이즈오리엔티에이션 스트리밍, Keepalive를 통한 probe_orientation, 쿼터니언 → 오일러
03Wireless VG 호WVG파이 · C++ · C++ 글레이즈버튼, 배터리, 홀 센서
04안녕하세요, 보덴Inverse3파이 · C++ · C++ 글레이즈첫 번째 촉각 효과 — 장력 스프링 위 set_cursor_force
05위치 제어Inverse3파이 · C++ · C++ 글레이즈제어 방식: set_cursor_position, 무작위 목표(C++) 또는 키를 누른 상태에서의 WASD 이동(Python)
06결합Inverse3 WVG파이 · C++ · C++ 글레이즈다중 장치용 루프, 쿼터니언-방향 변환을 통한 커서 제어
07베이스 및 마운트Inverse3파이 · C++ · C++ 글레이즈configure.basis, configure.preset 그리고 다음을 통한 만기일 재설정 configure.mount; 프리셋과 마운트의 상호 배타성
08HTTP 원격 구성Inverse3파이 · C++ · C++ 글레이즈HTTP 전용: 세션 간 구성 도구 — 프로필을 기반으로 세션을 찾고, REST(POST)를 통해 기본값/사전 설정/마운트를 대화형으로 설정
09WS 원격 제어Inverse3파이 · C++ · C++ 글레이즈실시간 워크스페이스 내비게이터: HTTP 세션 및 기기 감지 후 스트리밍 set_transform WebSocket을 통한 Takt
10이벤트—파이 · C++ · C++ 글레이즈포트 10020의 이벤트 스트림 수신기, 레벨/이름별 필터링

Tipp — 촉감 루프의 벤치마크​

튜토리얼 10(이벤트)은 다른 모든 튜토리얼과 병행하여 진행할 수 있도록 구성되어 있습니다. 만약 --no-hide-rate 이 기능이 활성화되어 있으면, 해당 이벤트가 발생합니다. system-rate-report 실제 장치 클럭 속도를 포함하는 서비스의 값을 확인하십시오. 동일한 튜토리얼의 Python / C++ (nlohmann) / C++ (Glaze) 변형들의 속도를 비교하여, 약 4 kHz의 제어 루프에 대한 직렬화 오버헤드의 영향을 확인해 보십시오.

# Terminal 1 — pick a tutorial variant
./04-haply-inverse-hello-floor # C++ nlohmann
./04-haply-inverse-hello-floor-glz # C++ Glaze
python 04-haply-inverse-hello-floor.py # Python

# Terminal 2 — watch the rate
./10-haply-inverse-events --no-hide-rate