본문으로 이동

튜토리얼

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

  • 파이썬 — 가장 짧고 간단한 진입점 (websockets + json)
  • C++ (nlohmann/json) — C++11 호환, 실행 시 JSON 분석
  • C++ (Glaze) — C++20 기반의 최신 사양으로, 컴파일 시 반사 기능과 할당 없는 분석을 지원하며, 실시간 햅틱 루프에 권장됩니다.

소스 코드는 두 개의 공개 예제 저장소에 게시되어 있습니다:

  • haply — 튜토리얼별로 하나의 디렉터리가 제공되며, nlohmann/json(C++11) 및 Glaze(C++20) 변형이 포함되어 있습니다. 컴파일 대상 파일 이름에는 접미사가 붙습니다. -glz 글레이즈 버전의 경우.
  • haply-inverse-python-samples — 튜토리얼마다 하나의 디렉터리.

Inverse Service의 각 버전은 두 저장소에 해당 태그를 지정합니다. 해당 브랜치를 팔로우하세요. release/<version> 이 문서에 해당하는 버전을 계속 사용하려면.

선행 조건​

  • 역 서비스 실행 중입니다 (via Haply Hub ou via le 독립형 설치 프로그램) 항구에서 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). Le CMakeLists.txt 예제 저장소의 최상위 레벨에서 가져옵니다 libhv, nlohmann/json et glaze FetchContent를 통해: 종속성에 대한 수동 설정은 필요하지 않습니다.

튜토리얼 목록​

#Nom기기변형배울 내용
00기기 목록Tous파이 · C++ · C++ 글레이즈HTTP 장치 탐색, 세션 내 요청 제한
01표시 Inverse3Inverse3파이 · C++ · C++ 글레이즈WebSocket 상태 확산, 무부하 연결 유지, 첫 번째 메시지 시 초기 교환
02VerseGrip 디스플레이유선 VG파이 · C++ · C++ 글레이즈방향의 확산, 다음과의 연결 유지 probe_orientation, 쿼터니언에서 오일러 표기법으로
03무선 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 et configure.mount ; 사전 설정과 편집 간의 상호 배제
08HTTP 원격 구성Inverse3파이 · C++ · C++ 글레이즈HTTP 전용 세션 간 구성기: 프로필별 세션 검색 후, REST를 통해 POST 방식으로 기본값/사전 설정/마운팅을 대화형으로 전송
09WS 리모컨Inverse3파이 · C++ · C++ 글레이즈실시간 작업 공간 탐색기: HTTP 세션 및 기기 탐색 후, set_transform WebSocket을 통해 매 사이클마다
10행사—파이 · C++ · C++ 글레이즈포트 10020의 이벤트 스트림 수신기, 레벨 및 이름별 필터링

팁 — 햅틱 루프의 성능 측정하기​

튜토리얼 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