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

v3.5.0

1년 전 API 개편 이후 가장 큰 규모의 업데이트입니다. 3.5.0 버전에서는 통합된 3D 수학 레이어, Minverse 완벽한 Minverse , 타입이 지정된 이벤트 스트림, 완전한 설정 API, 그리고 더 간결해진 HTTP 인터페이스가 도입되었으며, 지난 1년간의 버그 수정 및 사용 편의성 개선 사항도 함께 포함되었습니다.

주요 내용

  • 통합 3D 수학 레이어 — 장치 기준(프레임), 마운트 변환, 작업 공간 변환 및 내비게이션 변환을 위한 일류 프리미티브를 갖춘 조합 가능한 변환 파이프라인으로, 로컬, 세션, 애플리케이션 및 내부 공간 간의 명시적 변환 기능을 제공합니다.
  • 버블 내비게이션 — 속도 매핑된 속도 제어, 히스테리시스 감지 충돌 감지, 선택적 커서 방향 이동 기능을 통해 형상 구역(SDF 프리미티브) 내에서 대규모 가상 작업 공간을 탐색합니다. HTTP 및 WebSocket을 통해 앱-공간 왕복 통신으로 완벽하게 구성 가능합니다.
  • 유형 지정 이벤트 스트림 — 기기 수명 주기, 안전 경고, 보정, 배터리, 제어 속도 경고 및 지원 중단 알림을 위한 전용 WebSocket 이벤트 채널입니다.
  • 설정 API — HTTP CRUD, 타입 힌트, 범위 제약 조건 및 설명을 지원하는 완벽한 키-값 설정 시스템으로, 기존의 중첩된 설정 파일을 대체합니다.
  • 일관된 장치 구성 — 모든 장치에 대해 하나의 HTTP 경로 세트: basis, mount, preset, transform, filters, handedness, torque_scaling, gravity_compensation, home_return.
  • Minverse 동기화 Minverse 펜 보정 — 이제 기기와 펜이 함께 보정되며, 그립이 물리적으로 장착될 때까지 보정 상태가 유지됩니다.
  • 생활의 질(QoL) HTTP — 인덱스 기반 디바이스 선택기(ID 없이 인덱스로 디바이스를 지정), WebSocket과 공유되는 통합된 요청/응답 형식, 옵트인 {ok, error, data} 봉투 (?format=json), 와일드카드 세션 선택자.

새로운 기능

디바이스

  • Minverse — 이번 릴리스에 포함된 공식 지원 기능: 감지, 준비 시퀀스, 안전 알림 및 동기화된 보정 워크플로.
  • 루코와 킹피셔가 공식 그립 제품 유형으로 인정받았습니다.
  • 장치 시뮬레이터 지원 — 실제 하드웨어와 함께 소프트웨어로 시뮬레이션된 장치를 감지하고 통신합니다.
  • 연결 루프 보호 — 문제가 있는 포트는 자동으로 차단됩니다. 다음 명령어로 재설정하세요. POST /ports/{port}/reset.
  • 펜 부착 시 심박수 감지 — 데바운스 기능을 통한 안정적인 그립 부착/분리 감지.

세션, 명령어 및 WebSocket

  • 세션 프로필 필터링 및 지속성 — 세션은 프로필 이름과 필수 SDK 버전을 선언하며, 서비스는 재연결 시에도 이를 기억합니다. 클라이언트와 모니터링 도구는 해당 프로필을 기준으로 세션을 필터링하고 타겟팅할 수 있습니다.
  • 세션별 명령어 버퍼 — 이제 한 세션의 처리 속도가 느려져도 다른 세션의 진행이 더 이상 지연되지 않습니다.
  • 명시적 configure 일회성 명령어용 매핑basis, preset, mount, force_gate, damping 기기당, 그리고 profile 그리고 basis 회당, 이제 모두 configure — 출력 구성 맵과 일치하므로, 전송한 데이터와 수신한 데이터가 서로 일치합니다.
  • 사용자 정의가 가능한 기기 거치대 — 기본 제공 작업 공간 사전 설정을 선택하세요 (defaults, arm_front, arm_front_centered, led_front, led_front_centered) 또는 명시적인 변환을 전송하거나; 수동 마운트 변경 시 사전 설정이 자동으로 custom.
  • 명명된 명령 필드position, vector, angles, torques 일반적인 것을 대체하다 values 배열.
  • set_angular_torques 바꾸다 set_angular_torque (단수형은 더 이상 사용되지 않습니다).
  • 세션 프레임 확장 — v3.0 및 v3.1 세션 프레임은 이제 확장 가능한 config, statestatus 개체; 새로운 출력 필드에는 다음이 포함됩니다 current_cursor_force, current_cursor_position, current_angular_torques, current_angular_position, control_domain, control_mode, transform, transform_velocity, 더 풍부한 config.*status.safety (기본적으로 숨김).
  • 부분 변환 업데이트 — 변경하려는 하위 필드만 전송하십시오 (position, rotation, scale) 마운트, 작업 공간 변환 및 탐색 모양에 대해.

HTTP

  • GET / — 서비스 버전.
  • GET/POST/DELETE /settings 그리고 /settings/* — 전체 키-값 설정 API.
  • GET /sessions/{session} 그리고 GET/POST/DELETE /sessions/{session}/profile.
  • GET /devices?session=<selector> — 장치 좌표를 지정된 세션의 애플리케이션 좌표계로 변환합니다.
  • 인덱스 기반 장치 선택기 — ID를 알지 못하더라도 인덱스를 통해 모든 기기를 대상으로 지정할 수 있습니다 (/inverse3/0/... 첫 번째 Inverse3를 위해; /inverse*/*/... (모든 Inverse 계열 기기에 해당).
  • 통합 요청/응답 형식 — POST/GET 본문은 동일한 command_data JSON은 WebSocket과 유사한 형태를 띠며, 한 전송 프로토콜을 위해 작성된 코드는 다른 프로토콜에서도 작동합니다.
  • 수신 동의 봉투 출처: ?format=json 어떤 노선에서든; /settings* 그리고 GET /home_return 기본값으로 {ok, error, data}. 사용 ?format=plain 원본 형상에 대해.
  • 세션 선택자 와일드카드* (어떤 순서든) 그리고 ? 프로필 이름에 (한 글자)가 포함되어 있습니다.
  • 퍼센트 해독 선택자%2A, %3A등은 라우팅 전에 디코딩됩니다.

이벤트

  • 전용 WebSocket 이벤트 스트림 활성화 communication/events/port.
  • 기기 수명 주기, 안전(전자식 브레이크, 이물질 감지, 스톨), 보정 실패, 배터리 경고, 세션 경고, 낮은/비정상적인 제어 속도, 입력 유효성 검사, 비추천 기능 알림 등 총 24가지 유형의 이벤트 범주.

가시성

  • 프로파일링 시 Tracy로 전달되는 로그 메시지에 레벨별 색상이 적용됩니다.
  • Tracy는 모든 HTTP 핸들러를 모니터링합니다.
  • 메인 루프 타이밍 통계 이벤트.
  • 로그 디렉터리와 서버 호스트명을 설정할 수 있습니다(Docker 호환).

3.6 버전에서 제공될 예정입니다

  • SDF Haptic Effects(SDF HFX) — 3.5 버전에서 기반 기능(모듈, 라이프사이클, 모듈에서 제공하는 명령어/상태 직렬화)이 구현되었으며, 공개 API는 3.6 버전에서 완전한 문서와 함께 제공될 예정입니다.

개선 사항

  • 필터링된 힘 진동 — 축별 진동 감지, 8단계 단계별 복구, 히스테리시스 기능이 적용된 입력 투표, 비대칭 릴리스 윈도우.
  • 실행 시 강제 게이트 필터 — 다음을 통해 설정 가능 configure.force_gate.gain WebSocket 또는 HTTP를 통해, 지속적 연결을 기본값으로 설정하여.
  • 정밀도 요구가 높은 응용 분야를 위해 메인 루프의 최대 주파수를 32kHz로 높였습니다.
  • 더 작은 WebSocket 페이로드 — identity-default 변환 하위 필드 (position = 0, rotation = identity, scale = 1)는 기본적으로 출력에서 제외되어 페이로드 크기를 줄이고, 구형 Unity 패키지의 4KB 메시지 제한과의 호환성을 유지합니다. 두 가지 고급 설정(serialization/explicit_fields, serialization/force_complete_transforms) 필요한 모든 필드를 소비자에게 다시 제공하십시오.
  • 메인 루프 지터 감소 — JSON 파싱 및 네트워크 전송 중 WebSocket 메시지 처리가 더 이상 메인 루프 틱을 차단하지 않으며, 세션 틱 스케줄링이 응답 직렬화 단계보다 앞당겨졌습니다.
  • 서버는 기본적으로 localhost에서만 작동합니다. — 다음을 통해 네트워크 액세스 허용 communication/bind_all_interfaces 설정.
  • 장치 선택기 와일드카드는 접두사 구문을 사용합니다 (예: inverse* (Inverse 제품군의 모든 기기에 해당합니다).
  • 감쇠 명령 ~로 이사했다 configure 옆에 지도 force_gate.
  • 회전 파일 로거는 이전 버전을 대체하며, 디렉터리를 사용자 지정할 수 있습니다.
  • 모듈에서 제공하는 명령어 및 상태 — 모듈은 핵심 스키마를 변경하지 않고도 자체 명령어, 구성 필드 및 상태 출력을 WebSocket 프레임에 삽입할 수 있습니다.

수정 사항

지난 1년간의 버그 수정 내역입니다. 가장 중요한 내용은 다음과 같습니다.

  • 특정 조건에서 세션 속도가 불안정합니다.
  • 시뮬레이션이 실행 중이지 않을 때 GripHook(Verse Grip Stopper)이 제대로 해제되지 않았습니다.
  • Inverse3 설정이 너무 엄격하여 부팅 속도가 느린 기기에서 연결 끊김 현상이 반복적으로 발생했습니다.
  • Windows에서 서비스 중지 오류 — 시스템 종료 시 HTTP 서버가 항상 정상적으로 정리되지 않았습니다.
  • 서비스가 구형 펌웨어 버전에 지원되지 않는 명령을 전송했을 때 발생하는 재연결 루프.
  • 블루투스 장치 열거 작업으로 인해 블루투스 어댑터가 장착된 시스템의 로그가 넘쳐났다.
  • 서비스를 연속으로 여러 번 다시 시작하면 충돌이 발생합니다.
  • Ubuntu 노트북에서 절전 모드 후 재개 시 Wireless Verse Grip 동글이 멈추는 현상.
  • 이제 Linux 및 macOS에서 Wireless Verse Grip 핸드셰이크가 첫 번째 감지 시도가 실패할 경우 올바르게 대체 방식으로 전환됩니다.
  • MacOS 설정 파일 위치 — 설정은 이제 다음 위치에 저장됩니다. ~/Library/Application Support/ 잘못된 길 대신에.
  • Linux 및 macOS에서의 SIGSEGV 신호 처리 — 멀티스레드 크래시 캡처가 활성화된 경우, 치명적인 신호가 발생해도 프로세스가 더 이상 무한 루프에 빠지지 않습니다.
  • 세션 간 명령어 덮어쓰기 — 이전에는 한 세션의 구성 명령어가 다른 세션의 명령어로 아무런 경고 없이 대체될 수 있었으나, 이제 이러한 명령어가 필터링되어 올바르게 병합됩니다.
  • 프로브 명령어가 구성 정보를 덮어쓰고 있습니다 — 모니터링 세션(예: Haply ) 전송 probe_position 더 이상 보류 중인 기본값/사전 설정/프로필 변경 사항을 자동으로 덮어쓰지 않습니다.
  • 프로토타입 그립 표시 — 프로토타입 하드웨어가 사용자 지정 그립이 아닌 표준 그립으로 잘못 표시되었습니다.
  • 레거시 set_basis 행렬 표기법 이전을 완료하지 않은 고객들에게 다시 한 번 혜택을 제공했습니다.
  • 세션 연결이 끊어질 때 발생하는 Inverse3 킥으로 인해 잔여 힘의 급격한 상승 현상이 더 이상 발생하지 않습니다.
  • 빠른 연결/해제 주기가 반복될 때 WebSocket 연결이 끊어지는 경합 현상이 발생합니다.
  • 웹소켓 session_id 다음과 같이 연재되었다 0 일부 발신 페이로드에서.
  • Windows에서는, --log-level 이제 다음을 결합할 때 적용됩니다 --dev (이전에는 자동으로 재설정되었으나) debug).

사용 중단

아직은 작동하지만, 향후 주요 버전 업데이트 시 제거될 예정입니다. 응답에는 다음이 포함됩니다. deprecation_warning 해당되는 경우 해당 필드.

사용 중단교체
POST /force_scalePOST /settings/devices/inverse*/filters/force_scale/gain
POST /gravity_compensationPOST /{device}/{id}/config/gravity_compensation
POST /torque_scalingPOST /{device}/{id}/config/torque_scaling
POST /device_handednessPOST /{device}/{id}/config/handedness
POST /serial_enablePOST /settings/communication/serial/enabled
POST /experimental/features/grip_dropped_simulation_stopper설정 API
POST /experimental/features/screensaver_enable설정 API
웹소켓 command_data.valuesposition, vector, angles, torques
웹소켓 set_angular_torqueset_angular_torques
웹소켓 probe_cursor_positionprobe_position
웹소켓 set_coordinate_originconfigure.preset
WebSocket 세션 수준 set_basisconfigure.basis

호환성 관련 참고 사항

3.4.19 버전과 비교해 호환성을 깨는 주요 변경 사항은 없습니다. 기존 통합 기능과 관련하여 두 가지 참고 사항이 있습니다:

  1. 더 이상 사용되지 않는 HTTP 엔드포인트에는 이제 deprecation_warning 응답의 해당 필드 — 응답 스키마를 엄격하게 검증하는 클라이언트는 이 추가 필드를 허용해야 합니다.
  2. 그리고 values WebSocket의 필드 command_data 이 기능은 더 이상 권장되지 않지만 여전히 구문 분석됩니다. 명명된 필드를 사용하는 것이 좋습니다.

튜토리얼 및 문서

  • 새로운 튜토리얼: 05 위치 제어, 06 복합 기능 (Inverse3 Verse Grip), 07 베이스 및 마운트, 08 HTTP 원격 구성기, 09 WebSocket 원격 제어, 10 이벤트 스트림 리스너.
  • 새로운 글레이즈 변형 모든 C++ 튜토리얼에서 (cpp-glz/) 기존 nlohmann/json 변형과 함께.
  • 모든 튜토리얼을 새로 작성했습니다 v3.1 API의 경우 (포트 10001, configure.preset, 명명된 명령 필드, print_state() (도움말).
  • 기존의 Verse Grip Stopper 튜토리얼을 삭제하고, 새로운 통합 튜토리얼로 대체했습니다.
  • SDK 가이드, API 참조 및 하드웨어 페이지 전반에 걸쳐 공개 문서가 업데이트되었습니다.