주요 콘텐츠로 건너뛰기
버전: 3.5.x

튜토리얼

각 튜토리얼은 Inverse Service의 특정 기능을 보여주는 독립 실행형 프로그램입니다. 세 가지 언어 버전이 함께 제공되므로, 각 언어의 특징을 비교하고 프로젝트에 적합한 스택을 선택할 수 있습니다:

  • 파이썬 — 가장 짧고 쉬운 진입점 (websockets + json)
  • C++ (nlohmann/json) — 이식 가능한 C++11, 런타임 파싱 JSON
  • C++ (Glaze) — 컴파일 시점 리플렉션과 할당 없는 파싱 기능을 갖춘 최신 C++20으로, 실시간 햅틱 루프에 권장됩니다

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

  • haply — 각 튜토리얼마다 하나의 디렉터리가 있으며, 여기에는 nlohmann/json(C++11)과 Glaze(C++20) 두 가지 버전이 모두 포함되어 있습니다. 빌드 대상에는 -glz Glaze 변형에 대한 접미사.
  • haply — 튜토리얼마다 하나의 디렉터리가 있습니다.

Inverse Service의 각 릴리스는 두 저장소 모두에 일치하는 태그를 지정합니다: 다음을 따르세요 release/<version> 이 문서와 일치하는 버전을 유지하려면 브랜치를 변경하세요.

전제 조건

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

튜토리얼 목록

#이름디바이스변형배울 내용
00장치 목록어떤파이 · C++ · C++ 글레이즈HTTP 장치 검색, 세션 범위 쿼리
01Inverse3 인쇄Inverse3파이 · C++ · C++ 글레이즈웹소켓 상태 스트리밍, 제로포스 키프얼라이브, 첫 메시지 핸드셰이크
02VerseGrip 인쇄와이어드 VG파이 · C++ · C++ 글레이즈오리엔테이션 생중계, probe_orientation keepalive, 쿼터니언 → 오일러
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, 그리고 실행 시간 configure.mount 오버라이드; 프리셋과 마운트 간의 상호 배제
08원격 설정 (출시 예정)어떤파이HTTP를 통한 원격 장치 구성; 프로필별 세션 검색
10이벤트파이 · C++ · C++ 글레이즈포트 10020의 이벤트 스트림 리스너, 레벨/이름 필터링

팁 — 햅틱 루프 벤치마킹하기

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

# 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